You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python Folium绘制分级统计图出现missing geometries错误如何解决?

问题描述

用户使用如下来源的国家GeoJSON数据:

country_geodf = gpd.read_file("https://datahub.io/core/geo-countries/r/countries.geojson")

将其与Kaggle 2021年机器学习与数据科学调研数据结合,用Folium绘制分级统计地图时,遇到无法处理缺失几何数据的报错,Folium本身支持处理普通缺失值,但不支持缺失几何数据的渲染。

问题原因

你遇到的Cannot render objects with any missing geometries报错,核心原因不是真的存在缺失的几何数据,而是Folium对直接传入的GeoDataFrame格式兼容性不好,再加上参数配置错误导致的。

解决方案

步骤1:清理无效数据

在完成GeoJSON和调研数据的合并后,先过滤掉存在空几何、空ISO3编码的无效行:

# 合并完成后执行清理
country_df = country_df.dropna(subset=['geometry', 'ISO_A3'])

步骤2:修正Choropleth配置

你现在的配置有三个错误:

  1. Highlight参数首字母大写不符合规范,应该改为小写highlight
  2. 直接传GeoDataFrame给geo_data兼容性差,需要先转成GeoJSON字典
  3. 用国名做关联键容易出现拼写不匹配的问题,改用ISO3编码做关联更稳妥

修正后的代码如下:

country_map = folium.Map(location=[40, 0], zoom_start=1.5)
# 先转成GeoJSON字典
country_geojson = country_df.to_json()

Choropleth(
    geo_data=country_geojson,
    data=country_df,
    columns=['ISO_A3',"Q3"],
    key_on="feature.properties.ISO_A3",
    fill_color='YlOrRd',
    fill_opacity=1,
    line_opacity=0.2,
    legend_name="响应占比",
    smooth_factor=0,
    highlight= True,
    bins=3,
    line_color = "#0000",
    name = "响应占比",
    show=True,
    overlay=True,
    nan_fill_color = "White"
).add_to(country_map)

步骤3:修正 hover 组件的传参

后续的GeoJson组件也要用转换好的GeoJSON字典,不要直接传入GeoDataFrame:

# 其余样式、高亮函数的代码保持不变
NIL = GeoJson(
    data = country_geojson,
    style_function=style_function, 
    control=False,
    highlight_function=highlight_function, 
    tooltip=GeoJsonTooltip(
        fields=['ADMIN',"Q3"],
        aliases=['国家名称',"响应占比(%)"],
        style=("background-color: white; color: #333333; font-family: arial; font-size: 12px; padding: 10px;") 
    )
)
country_map.add_child(NIL)
country_map.keep_in_front(NIL)

可选校验步骤

如果修改完还有问题,可以先校验国家编码的匹配度:

# 查看GeoJSON和调研数据的ISO3编码差异
geo_iso = set(country_geodf['ISO_A3'].unique())
survey_iso = set(country_codes.values())
# 输出调研数据里有、GeoJSON里没有的编码
print(survey_iso - geo_iso)

如果有不一致的编码,可以手动做映射修正即可。


内容的提问来源于stack exchange,提问作者Kayvan Shah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 03:06:04