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

如何将含MultiPolygon的Geopandas DataFrame转换为GeoJSON?

解决Geopandas DataFrame(含MultiPolygon)转JSON/GeoJSON的问题

你遇到的问题是因为df.to_dict()返回的geometry列是Shapely的MultiPolygon/Polygon对象,这类对象不属于JSON原生可序列化类型,所以json.dumps()会报错。Geopandas本身提供了专门的方法来处理所有几何类型的GeoJSON转换,不需要手动转字典再序列化,具体方案如下:

方案1:直接生成GeoJSON字符串

使用Geopandas内置的to_json()方法,它会自动将所有几何类型(包括MultiPolygon)转换为符合GeoJSON规范的结构:

import geopandas as gpd

# 假设df是你的Geopandas DataFrame
geojson_str = df.to_json()
print(geojson_str)

方案2:获取可序列化的字典对象

如果需要先得到Python字典再处理,可以用json.loads()解析to_json()的输出:

import json

geojson_dict = json.loads(df.to_json())
# 此时geojson_dict是完全可JSON序列化的字典,可直接用json.dumps输出
print(json.dumps(geojson_dict, indent=2))

方案3:直接保存为GeoJSON文件

如果最终是要保存到文件,用to_file()方法更高效,无需手动处理序列化:

df.to_file('your_output.geojson', driver='GeoJSON')

为什么之前的方法不行?

df.to_dict(orient='records')中的geometry字段是Shapely的几何对象(而非GeoJSON格式的字典),JSON序列化器无法识别这类自定义对象。而to_json()方法内部会调用Shapely的__geo_interface__属性,将几何对象转换为包含type和coordinates的标准GeoJSON结构,从而完成序列化。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 22:52:44