使用GeoPandas explore绘制MultiPolygon时遇JSON序列化错误求助
解决GeoPandas explore函数MultiPolygon序列化错误的方案
问题根源
你的geometry列存储的是字符串格式的WKT(Well-Known Text),而非真正的Shapely MultiPolygon对象——这才是导致序列化错误的核心原因。你之前用shapely.geometry.mapping+json.dumps转换,反而把几何对象转成了JSON字符串,破坏了GeoPandas对几何列的识别,所以出现矛盾的警告和报错。
分步解决
检查几何列类型
先确认当前geometry列的类型:print(df['geometry'].dtype)如果输出是
object,说明确实是字符串格式的WKT。将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)确认GeoDataFrame的几何列设置
确保GeoPandas识别到正确的几何列:# 显式设置几何列 df = gpd.GeoDataFrame(df, geometry='geometry') # 或者原地设置:df.set_geometry('geometry', inplace=True)验证转换结果
检查几何对象是否有效:print(df.geometry.is_valid.value_counts())若存在无效几何,可尝试修复:
df['geometry'] = df['geometry'].buffer(0)调用explore函数绘图
现在再执行绘图命令:df.explore()
补充说明
- 你的GeoPandas 0.12.2和folium 0.14.0版本组合是兼容的,无需升级版本。
- 避免手动序列化几何对象:GeoPandas的
explore函数会自动处理Shapely几何对象,不需要额外转JSON。
内容的提问来源于stack exchange,提问作者wikenator
相关产品推荐
相关产品推荐

