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

2024-05-13 06:42:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试创建一个有建筑物的对开本地图。我想根据每个建筑对应的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

Tags: thetoimportaddjsondatajsfeature
1条回答
网友
1楼 · 发布于 2024-05-13 06:42:17

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

此代码似乎满足了您的需求:

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

相关问题 更多 >