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

使用GeoPandas explore绘制MultiPolygon时遇JSON序列化错误求助

解决GeoPandas explore函数MultiPolygon序列化错误的方案

问题根源

你的geometry列存储的是字符串格式的WKT(Well-Known Text),而非真正的Shapely MultiPolygon对象——这才是导致序列化错误的核心原因。你之前用shapely.geometry.mapping+json.dumps转换,反而把几何对象转成了JSON字符串,破坏了GeoPandas对几何列的识别,所以出现矛盾的警告和报错。

分步解决

  1. 检查几何列类型
    先确认当前geometry列的类型:

    print(df['geometry'].dtype)
    

    如果输出是object,说明确实是字符串格式的WKT。

  2. 将WKT字符串转换为Shapely几何对象
    用GeoPandas自带的方法批量转换:

    import geopandas as gpd
    from shapely import wkt
    
    # 转换WKT字符串为几何对象
    df['geometry'] = gpd.GeoSeries.from_wkt(df['geometry'])
    # 或者用shapely的方法:df['geometry'] = df['geometry'].apply(wkt.loads)
    
  3. 确认GeoDataFrame的几何列设置
    确保GeoPandas识别到正确的几何列:

    # 显式设置几何列
    df = gpd.GeoDataFrame(df, geometry='geometry')
    # 或者原地设置:df.set_geometry('geometry', inplace=True)
    
  4. 验证转换结果
    检查几何对象是否有效:

    print(df.geometry.is_valid.value_counts())
    

    若存在无效几何,可尝试修复:

    df['geometry'] = df['geometry'].buffer(0)
    
  5. 调用explore函数绘图
    现在再执行绘图命令:

    df.explore()
    

补充说明

  • 你的GeoPandas 0.12.2和folium 0.14.0版本组合是兼容的,无需升级版本。
  • 避免手动序列化几何对象:GeoPandas的explore函数会自动处理Shapely几何对象,不需要额外转JSON。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 23:18:30