【问题标题】:How to generate Folium map using GeoDataFrame?如何使用 GeoDataFrame 生成 Folium 地图?
【发布时间】:2018-10-16 19:22:37
【问题描述】:

我创建了一个 geoDataFrame,并想创建一个 Folium Map,绘制每个国家/地区的人口饮食。是一定要创建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 文件。 感谢您的帮助!

【问题讨论】:

  • 注意:您可以使用world = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres'))更改前两行(以创建数据框)

标签: python json geospatial geopandas folium


【解决方案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

【讨论】:

  • 嗨@joris,你知道这个方法的当前状态是什么吗?文档字符串提到:“此方法可能会在一年后删除(2018 年 11 月)”
【解决方案2】:

@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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-12-23
    • 2016-04-13
    • 1970-01-01
    • 1970-01-01
    • 2017-03-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多