如何使用Python向Folium中的每个GeoJSON多边形添加唯一的弹出窗口

问题描述 投票:1回答:1

我正在尝试用建筑物创建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
python leaflet popup geojson folium
1个回答
1
投票

如果我的理解正确,您希望每个建筑物都提供一个弹出窗口,显示其地址(我想是街道)。

此代码似乎可以满足您的要求:

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

例如,您得到:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.