如何使用GeoDataFrame生成Folium地图?

4
我使用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文件。

感谢您的帮助!


2
请注意:您可以使用 world = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres')) 替换前两行(创建数据框)。 - joris
2个回答

2

m.cholopleth()代码在@joris的答案中已经被弃用。使用新的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

1
在最近的folium版本中,您不需要将GeoDataFrame转换为geojson,而是可以直接传递它。将人口列连接到颜色多边形仍然有些棘手,需要正确处理:
m = folium.Map()
m.choropleth(world, data=world, key_on='feature.properties.name',
             columns=['name', 'pop_est'], fill_color='YlOrBr')
m

1
嗨@joris,你知道这个方法现在的状态吗?docstring提到:“此方法可能在现在一年后(2018年11月)被删除”。 - MCMZL

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接