如何使用 Python 向 Folium 中的每个 GeoJSON 多边形添加独特的弹出窗口
How to add unique popups to each GeoJSON polygon in Folium using Python
我正在尝试创建包含建筑物的 Folium 地图。我想根据相应的 openbare_ruimte
属性 向每个建筑物添加一个弹出窗口。但是,我编写的代码向所有建筑物添加了相同的弹出窗口。
我就此问题咨询了多个线程 (#1023, #1060, #popups, #popups2),但一直无法正常工作。
有谁知道如何将每个建筑物的 openbare_ruimte
属性 添加到其弹出窗口中?
import json
import requests
import folium
url = "http://geodata.nationaalgeoregister.nl/bag/wfs?service=wfs&version=2.0.0&request=GetFeature&outputFormat=json&count=25&srsName=epsg:4326&typeName=bag:verblijfsobject&cql_filter=%28bag:woonplaats=%27Groningen%27%29"
js_data = json.loads(requests.get(url).text)
m = folium.Map(location=[53.2193835, 6.5665018], zoom_start=13)
fg = folium.map.FeatureGroup(name='Buildings').add_to(m)
#Add the polygons features to the FeatureGroup layer
for feature in js_data['features']:
fg.add_child(folium.GeoJson(feature['properties']['pandgeometrie']))
#Add popups to the FeatureGroup layer
for feature in js_data['features']:
fg.add_child(folium.Popup(feature['properties']['openbare_ruimte']))
folium.LayerControl().add_to(m)
m
如果我没理解错的话,您希望每个建筑物都提供一个显示其地址(我想是街道)的弹出窗口。
这段代码似乎可以满足您的需求:
import json
import requests
import folium
url = "http://geodata.nationaalgeoregister.nl/bag/wfs?service=wfs&version=2.0.0&request=GetFeature&outputFormat=json&count=25&srsName=epsg:4326&typeName=bag:verblijfsobject&cql_filter=%28bag:woonplaats=%27Groningen%27%29"
js_data = json.loads(requests.get(url).text)
m = folium.Map(location=[53.2193835, 6.5665018], zoom_start=13)
fg = folium.map.FeatureGroup(name='Buildings').add_to(m)
for feature in js_data['features']:
b = folium.GeoJson(feature['properties']['pandgeometrie'])
b.add_child(folium.Popup(feature['properties']['openbare_ruimte']))
fg.add_child(b)
folium.LayerControl().add_to(m)
m
你会得到,例如:
我正在尝试创建包含建筑物的 Folium 地图。我想根据相应的 openbare_ruimte
属性 向每个建筑物添加一个弹出窗口。但是,我编写的代码向所有建筑物添加了相同的弹出窗口。
我就此问题咨询了多个线程 (#1023, #1060, #popups, #popups2),但一直无法正常工作。
有谁知道如何将每个建筑物的 openbare_ruimte
属性 添加到其弹出窗口中?
import json
import requests
import folium
url = "http://geodata.nationaalgeoregister.nl/bag/wfs?service=wfs&version=2.0.0&request=GetFeature&outputFormat=json&count=25&srsName=epsg:4326&typeName=bag:verblijfsobject&cql_filter=%28bag:woonplaats=%27Groningen%27%29"
js_data = json.loads(requests.get(url).text)
m = folium.Map(location=[53.2193835, 6.5665018], zoom_start=13)
fg = folium.map.FeatureGroup(name='Buildings').add_to(m)
#Add the polygons features to the FeatureGroup layer
for feature in js_data['features']:
fg.add_child(folium.GeoJson(feature['properties']['pandgeometrie']))
#Add popups to the FeatureGroup layer
for feature in js_data['features']:
fg.add_child(folium.Popup(feature['properties']['openbare_ruimte']))
folium.LayerControl().add_to(m)
m
如果我没理解错的话,您希望每个建筑物都提供一个显示其地址(我想是街道)的弹出窗口。
这段代码似乎可以满足您的需求:
import json
import requests
import folium
url = "http://geodata.nationaalgeoregister.nl/bag/wfs?service=wfs&version=2.0.0&request=GetFeature&outputFormat=json&count=25&srsName=epsg:4326&typeName=bag:verblijfsobject&cql_filter=%28bag:woonplaats=%27Groningen%27%29"
js_data = json.loads(requests.get(url).text)
m = folium.Map(location=[53.2193835, 6.5665018], zoom_start=13)
fg = folium.map.FeatureGroup(name='Buildings').add_to(m)
for feature in js_data['features']:
b = folium.GeoJson(feature['properties']['pandgeometrie'])
b.add_child(folium.Popup(feature['properties']['openbare_ruimte']))
fg.add_child(b)
folium.LayerControl().add_to(m)
m
你会得到,例如: