【问题标题】:Folium: Display pandas dataframe info in geojson popupFolium:在 geojson 弹出窗口中显示熊猫数据框信息
【发布时间】:2020-10-05 22:47:53
【问题描述】:

我在 Folium 中为多边形创建弹出窗口时遇到问题。我有一个世界上所有国家的 GeoJSON 文件,对于每个国家,我想显示一个弹出窗口。但是,我的问题是弹出窗口中需要的信息包含在单独的熊猫数据框中。

我下载了一个包含世界上所有国家/地区here 的 GeoJSON,并将其映射到 Folium,如下所示:

# Create a Map instance
m = folium.Map(location=[40.7, -74.0], tiles = 'cartodbpositron', zoom_start=11, control_scale=True)

## add chloropleth layer
m.choropleth(
    geo_data='path-to-geojson-file-i-downloaded',
    name='Countries',
)  

接下来,我基于 pandas 数据框向我的地图添加了标记,该数据框具有国家坐标以及每个国家/地区的 html 页面作为弹出数据:

# add markers with basic information
fg = folium.FeatureGroup(name='Articles by Country')

for loc,html in zip(countries,countries_htmls):
    fg.add_child(folium.Marker(location=loc, popup=html))

m.add_child(fg)

# enable layers to be turned in or out
folium.LayerControl().add_to(m)

这是输出地图:

点击蓝色小标记会给我正确的弹出窗口,但理想情况下,我希望叶绿素层本身的多边形给我弹出窗口,因为每个国家只需要一个弹出窗口。

有谁知道是否有一种方法可以渲染我的地图,以便标记可以以某种方式连接到 chloropleth geojson 图层,以便每个国家/地区多边形都有一个弹出窗口?示例:

非常感谢任何和所有的帮助!非常感谢。

【问题讨论】:

    标签: python leaflet mapping folium


    【解决方案1】:

    由于您没有使用 Choropleth 地图来可视化数据,因此您最好使用 GeoJson 对象。在 Folium 的最新版本 (0.11.0) 中,有一个名为 GeoJsonPopup 的新功能,您可以使用它来做您想做的事情(为每个国家添加弹出窗口)。你可以这样使用它:

    import folium
    m = folium.Map(location=[40.7, -74.0], tiles = 'cartodbpositron', zoom_start=11, control_scale=True)
    folium.features.GeoJson('carto.json', name="Countries", popup=folium.features.GeoJsonPopup(fields=['name_long'])).add_to(m)
    m
    

    【讨论】:

      猜你喜欢
      • 2017-05-16
      • 2016-11-05
      • 1970-01-01
      • 2014-06-19
      • 2019-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多