GeoPandas读取GPX生成GeoDataFrame后导出CSV仅生成表头报错如何解决
问题原因
- 报错是Fiona(GeoPandas底层用于空间数据读写的依赖库)的CSV驱动设计特性导致的:Fiona的CSV驱动默认将传入的路径视为存放图层文件的目录,而非直接的CSV文件路径,因此直接传入
gps.csv作为路径时会触发非目录数据源报错。 - 指定目录后仅生成空表头文件的核心原因是Fiona CSV驱动默认不会自动序列化几何列,需要显式开启WKT几何写入配置;如果你的GeoDataFrame包含非标量类型的列(比如GPX导入时自带的
extensions嵌套字段),也会触发静默写入失败。
解决方案
方案1:使用Pandas原生CSV导出(更简单,推荐)
GeoDataFrame完全兼容Pandas的to_csv方法,只需要提前把几何列转为WKT字符串即可:
from shapely import wkt # 先处理非标量列,比如GPX的extensions嵌套列 if 'extensions' in gdf.columns: gdf['extensions'] = gdf['extensions'].astype(str) # 几何列转WKT格式 gdf['geometry'] = gdf['geometry'].apply(wkt.dumps) # 直接导出CSV gdf.to_csv("gps.csv", index=False, encoding="utf-8")
后续需要重新读取带空间信息的CSV时,只需要对geometry列执行wkt.loads即可恢复几何对象。
方案2:使用GeoPandas to_file的CSV驱动
如果必须使用to_file方法,需要按照Fiona驱动要求配置参数:
- 提前创建用于存放CSV的空目录,比如
gpx_output - 执行导出时开启WKT写入配置:
gdf.to_file( "gpx_output", driver="CSV", layer="gps", engine="fiona", **{"WRITE_WKT": "YES"} )
导出的gps.csv文件会生成在gpx_output目录下。
内容的提问来源于stack exchange,提问作者user3439702
相关产品推荐
相关产品推荐

