Добавление всплывающего окна к слою geojson в folium

У меня есть следующий код, который использует этот файл geojson в качестве входных данных.

import folium
markers_geojson='volcanoes_json.geojson'  
map=folium.Map(location=[0,0],zoom_start=6,tiles='Mapbox bright')
map.add_child(folium.GeoJson(data=open(markers_geojson),name='Volcano').add_child(folium.Popup("A plain pop up string")))    
map.save(outfile='test5.html')

Приведенный выше код создает карту-буклет с маркерами. Проблема в том, что в настоящее время во всплывающем сообщении отображается статическая строка (например, «Простая всплывающая строка»). Я не знаю, как показать значение из свойств geojson (например, свойства STATUS).

Кто-нибудь знает, как это реализовать?


person multigoodverse    schedule 03.07.2016    source источник


Ответы (1)


Вам нужно просмотреть файл в цикле. Упомянутый ниже файл представляет собой простой файл, содержащий три столбца: широту, долготу и высоту.

Если вы создаете простой текстовый файл в этом формате, этот код просматривает файл и добавляет их. Он получает столбцы, у которых есть широта, длина, высота, и во всплывающем окне создает динамическое всплывающее окно.

data = pandas.read_csv("Volcanoes.txt")
lat = list(data["LAT"])
lon = list(data["LON"])
elev = list(data["ELEV"])

# make a color code for elevation
def color_producer(elevation):
    if elevation < 1000:
        return 'green'
    elif 1000 <= elevation < 3000:
        return 'orange'
    else:
        return 'red'

# set the base map
map = folium.Map(location=[47.0, -122.5], zoom_start=12)

# add an additional tile layer
map.add_tile_layer("Stamen Toner")

fgv = folium.FeatureGroup(name="Volcanoes")

# loop through and plot everything
for lt, ln, el in zip(lat, lon, elev):
    fgv.add_child(folium.CircleMarker(location=[lt, ln], radius = 6, popup=str(el)+" m",
    fill_color=color_producer(el), fill=True,  color = 'grey', fill_opacity=0.7))

fgp = folium.FeatureGroup(name="Population")

# add a map of shading by population
fgp.add_child(folium.GeoJson(data=open('world.json', 'r', encoding='utf-8-sig').read(),
style_function=lambda x: {'fillColor':'green' if x['properties']['POP2005'] < 10000000
else 'orange' if 10000000 <= x['properties']['POP2005'] < 20000000 else 'red'}))



# add the layers
map.add_child(fgv)
map.add_child(fgp)
map.add_child(folium.LayerControl())
person Bryan Butler    schedule 10.10.2018