如何使用 GeoDataFrame 生成 Folium 地图?

How to generate Folium map using GeoDataFrame?

我已经创建了一个 geoDataFrame 使用,并想创建一个 Folium 地图,绘制每个国家的人口吃。我必须创建 Json 文件,还是可以直接使用 geoDataFrame 文件?

import folium
import fiona
import geopandas as gpd

world = fiona.open(gpd.datasets.get_path('naturalearth_lowres'))
world = gpd.GeoDataFrame.from_features([feature for feature in world])
world = world[(world.pop_est > 0) & (world.name != "Antarctica")]

我使用了 folium.map 和 geojson 函数,但未能创建正确的 JSON 文件。 感谢您的帮助!

在最新版本的folium中,您不需要将GeoDataFrame转换为geojson,而是可以直接传递。连接人口列为多边形着色仍然有些棘手:

m = folium.Map()
m.choropleth(world, data=world, key_on='feature.properties.name',
             columns=['name', 'pop_est'], fill_color='YlOrBr')
m

@joris 答案中的 m.cholopleth() 代码现已弃用。以下代码使用新的 folium.Chloropleth() 函数产生相同的结果:

m = folium.Map()
folium.Choropleth(world, data=world, 
                  key_on='feature.properties.name',
                  columns=['name', 'pop_est'], 
                  fill_color='YlOrBr').add_to(m)

folium.LayerControl().add_to(m)

m