如何使用GDAL正确修复/重建ESRI Shapefile的.shx文件?
修复缺失.shx文件的正确GDAL命令
错误原因分析
你当前的命令将输入和输出指定为同一个file.shp,结合-overwrite参数时,GDAL在处理过程中会因图层名称重复(输入输出图层同名)触发校验错误,虽然.shx文件能被重建,但会抛出你看到的-nln参数必须与单个源图层名称或-sql语句结合使用,且名称需与现有图层不同提示。
正确修复方法
方法一:用ogrinfo直接重建(最简便)
无需额外输出文件,直接让GDAL读取损坏的shapefile并修复.shx:
ogrinfo --config SHAPE_RESTORE_SHX YES file.shp -sql "SELECT * FROM file"
执行后,缺失的.shx会自动生成在原文件目录下。
方法二:用ogr2ogr通过临时文件中转
避免输入输出同名的冲突,步骤如下:
- 将修复后的shapefile输出到临时文件:
ogr2ogr -f "ESRI Shapefile" --config SHAPE_RESTORE_SHX YES temp_file.shp file.shp
- 替换原文件(根据操作系统选择命令):
- Windows系统:
move /Y temp_file.* file.*
- Linux/macOS系统:
mv temp_file.* file.*
内容的提问来源于stack exchange,提问作者ASRodrigo
相关产品推荐
相关产品推荐

