首页 GIS基础理论 OGR2OGR转换格式报错?常见参数有哪些?

OGR2OGR转换格式报错?常见参数有哪些?

作者: GIS研习社 更新时间:2025-12-04 09:00:03 分类:GIS基础理论

“ERROR 1: Failed to create layer”——别慌,90%的OGR2OGR报错我都踩过

你是不是刚敲完ogr2ogr -f "GeoJSON" output.geojson input.shp,结果终端蹦出一串红色ERROR?别急着重启电脑——我在参与全国国土变更调查项目批量转换Shapefile时,也曾在凌晨三点被这类报错支配。今天我就带你把OGR2OGR的常见坑一次性填平,顺便把那些藏在官方文档角落的实用参数掏出来。

OGR2OGR转换格式报错?常见参数有哪些?

报错不是玄学:先搞懂OGR2OGR的“翻译官”本质

想象OGR2OGR是个精通多国语言的翻译官:左手拿着Shapefile(英语),右手要输出GeoJSON(法语)。但翻译官有三大原则:①不能无中生有(字段类型不匹配)②不能超字数限制(目标格式长度限制)③必须遵守语法(坐标系/几何类型规范)。90%的报错都源于违反这三条——比如用GeoJSON输出时包含Z坐标,就像让法语翻译官处理中文成语,直接崩溃。

实战血泪:某次给环保局转换污染源数据,因原始Shapefile含非法几何(自相交多边形),导致批量脚本中断。后来加了-skipfailures参数才保住进度——这个救命稻草我稍后详解。

高频报错急救包:对症下药三步走

遇到报错别瞎试,按这个流程排查:

  1. 看错误代码:ERROR 1通常是层创建失败(检查输出路径/权限),ERROR 6多是字段映射问题
  2. 查输入数据:用ogrinfo -so -al yourfile.shp快速诊断几何类型和字段结构
  3. 选对参数组合:下面这张表是我整理的“报错-参数”对照表,收藏等于省下2小时谷歌时间
报错现象核心原因救命参数
ERROR 1: Geometry type not supported目标格式不支持当前几何类型(如CSV存不了Polygon)-nlt PROMOTE_TO_MULTI-nlt CONVERT_TO_LINEAR
ERROR 6: Field 'XXX' already exists字段名冲突或长度超限-lco ENCODING=UTF-8 + -unsetfieldtype
乱码或中文变问号字符编码未指定-lco ENCODING=GBK(Windows)或UTF-8(Linux/Mac)

进阶玩家必备:五个让你效率翻倍的隐藏参数

除了基础的-f-t_srs,这些参数才是老手的秘密武器:

  • -progress:显示实时进度条(处理百万级点数据时的心理安慰剂)
  • -sql "SELECT field1,field2 FROM layer WHERE...":直接在转换时过滤/重命名字段,避免中间文件
  • -dim XY:强制降维(处理带Z坐标的无人机轨迹转KML时救命)
  • -overwrite:自动覆盖同名文件(配合批处理脚本使用)
  • -dsco SPATIAL_INDEX=YES:为输出文件创建空间索引(提升后续查询速度)
# 实战案例:带条件筛选+重投影+进度显示的复合操作
ogr2ogr -f "GPKG" -t_srs EPSG:4547 -progress 
-sql "SELECT name,population FROM cities WHERE population>1000000" 
output.gpkg input.shp

终极心法:建立你的“参数检查清单”

经过上百次转换实战,我总结出这个万能检查清单——每次运行前默念三遍:

  1. 输出路径是否存在且有写入权限?
  2. 目标格式是否支持源数据的几何类型?(查GDAL官方驱动说明)
  3. 字段名是否超过10字符?(尤其Shapefile)
  4. 是否需要显式指定编码?(中文用户必检项)
  5. 大文件是否加了-skipfailures防崩?

记住:OGR2OGR不是黑箱,它的每个报错都在教你GIS数据模型的本质。下次再看到红色ERROR时,不妨把它当作系统在给你发“学习邀请函”。

你在用OGR2OGR时踩过最奇葩的坑是什么?或者有什么私藏参数没在本文提到?评论区等你来Battle——点赞最高的三个留言,我会抽空录个视频详解解决方案!

相关文章