使用ogr2ogr将GeoPackage转GeoJSON失败求助
解决GeoPackage转GeoJSON时的"database disk image is malformed"错误
问题详情
执行转换命令:
ogr2ogr -f GeoJSON out.json BGRI2021_0706.gpkg
返回核心错误:
ERROR 1: database disk image is malformed FAILURE: Unable to open datasource `BGRI2021_0706.gpkg' with the following drivers.
已确认的基础信息:
- 文件存在且路径正确:
ll BGRI2021_0706.gpkg -h -rw-r--r-- 1 joao joao 1,1M nov 28 18:07 BGRI2021_0706.gpkg
- GDAL支持GeoPackage格式:
ogrinfo --formats | grep GPKG GPKG -raster,vector- (rw+vs): GeoPackage
- 当前GDAL版本:3.3.2
解决步骤
1. 修复损坏的GeoPackage文件
GeoPackage基于SQLite数据库,错误提示说明文件已损坏,用SQLite工具检查并修复:
- 先检查文件完整性:
sqlite3 BGRI2021_0706.gpkg "PRAGMA integrity_check;"
- 若检查出错误,生成修复后的文件:
sqlite3 BGRI2021_0706.gpkg ".recover" > repaired_BGRI2021_0706.gpkg
- 使用修复后的文件重新执行转换:
ogr2ogr -f GeoJSON out.json repaired_BGRI2021_0706.gpkg
2. 验证文件完整性
如果修复无效,大概率是文件在下载或传输过程中损坏,重新获取原始文件,必要时对比文件哈希值确认完整性。
3. 指定具体图层转换
部分GeoPackage包含多个图层,直接指定图层可能绕过问题:
- 先查看文件内的图层列表:
ogrinfo BGRI2021_0706.gpkg
- 假设目标图层名为
BGRI2021,执行指定图层的转换命令:
ogr2ogr -f GeoJSON out.json BGRI2021_0706.gpkg BGRI2021
4. 更新GDAL版本
当前使用的GDAL 3.3.2发布于2021年,对部分新的GeoPackage特性支持可能存在缺陷,更新到较新版本(如3.8及以上)后重试转换操作。
内容的提问来源于stack exchange,提问作者João Pimentel Ferreira
相关产品推荐
相关产品推荐

