簡體   English   中英

Folium:在 geojson 彈出窗口中顯示熊貓數據框信息

[英]Folium: Display pandas dataframe info in geojson popup

我在 Folium 中為多邊形創建彈出窗口時遇到問題。 我有一個世界上所有國家的 GeoJSON 文件,對於每個國家,我想顯示一個彈出窗口。 但是,我的問題是我在彈出窗口中需要的信息包含在單獨的 Pandas 數據框中。

我在這里下載了一個包含世界所有國家/地區的 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)

這是輸出映射: 地圖輸出

單擊藍色小標記會顯示正確的彈出窗口,但理想情況下,我希望葉綠素層本身的多邊形為我提供彈出窗口,因為每個國家/地區只需要一個彈出窗口。

有誰知道是否有一種方法可以渲染我的地圖,以便標記可以以某種方式連接到葉綠體 geojson 層,以便每個國家/地區多邊形都有一個彈出窗口? 樣品在這里:

國家多邊形彈出窗口

真的很感激任何和所有的幫助! 非常感謝。

由於您沒有使用 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM