使用GeoPandas读取.shx文件遇WktVersion.WKT2_2019报错的解决方法
解决GeoPandas读取Shapefile时的WKT版本错误
问题分析
报错信息看似矛盾(提示无效的WktVersion.WKT2_2019却又将其列在支持列表中),本质是GDAL/OGR版本与GeoPandas依赖不匹配,或是目标Shapefile的空间参考WKT格式存在兼容性问题,也可能是误读了索引文件(.shx)而非主Shapefile文件(.shp)。
解决步骤
优先确认读取的文件类型:Shapefile由.shp(主文件)、.shx(索引)、.dbf(属性)等多文件组成,GeoPandas应读取
.shp文件而非.shx。尝试替换路径为对应的.shp文件:import geopandas as gpd gdf = gpd.read_file("your_file.shp")显式指定兼容的WKT版本:在读取时通过
ogr_kwargs传递WKT版本参数,强制使用GDAL支持的格式,比如指定WKT2_2015:gdf = gpd.read_file("your_file.shp", ogr_kwargs={"options": ["WKT_VERSION=WKT2_2015"]})也可尝试其他支持的版本,比如
WKT1_ESRI或WKT2_2018。检查并升级GDAL版本:GeoPandas依赖GDAL处理空间数据,旧版本GDAL可能对WKT2_2019支持不完善。先检查当前GDAL版本:
from osgeo import gdal print(gdal.__version__)若版本低于3.0,建议升级GDAL(可通过
pip install --upgrade gdal或conda渠道安装对应版本),同时确保GeoPandas版本与GDAL兼容。修复Shapefile的空间参考:如果文件的WKT格式存在异常,用GDAL工具转换修复:
- 使用命令行工具
ogr2ogr重新生成Shapefile,指定标准空间参考:ogr2ogr -f "ESRI Shapefile" fixed_shapefile.shp problematic_shapefile.shp -a_srs "EPSG:4326" # 替换为文件实际的EPSG代码 - 或用Python代码修复空间参考:
from osgeo import ogr, osr # 打开目标文件(可写模式) ds = ogr.Open("problematic_shapefile.shp", 1) layer = ds.GetLayer() srs = layer.GetSpatialRef() # 转换为ESRI兼容的WKT格式 srs.MorphToESRI() layer.SetSpatialRef(srs) # 保存修改并关闭 ds = None
修复后再用GeoPandas读取新生成的文件。
- 使用命令行工具
内容的提问来源于stack exchange,提问作者SergeNYC
相关产品推荐
相关产品推荐

