¿Cuál es el comportamiento previsto de -skipfailures en ogr2ogr?

9

Estoy tratando de ejecutar ogr2ogr para convertir algunos geojson en shapefile. Todo está bien hasta que cualquiera de las características de Geojson tenga una geometría no válida (por ejemplo, la matriz de coordenadas de la geometría del punto está vacía).

Incluí el indicador -skipfailures, pero ogr2ogr se cierra tan pronto como llega a la primera función no válida. ¿No estoy haciendo algo mal aquí?

Ejemplo de llamada ogr2ogr:

ogr2ogr -skipfailures -f "ESRI Shapefile" myshape.shp mygeojson.geojson
usuario890
fuente

Respuestas:

4

Intente agregar -nlt geometrya su script ogr:

ogr2ogr -skipfailures -f "ESRI Shapefile" myshape.shp mygeojson.geojson -nlt geometry

He experimentado el problema que usted describe usando ogr2ogr para traducir conjuntos de datos que contienen características tanto de una sola parte como de varias partes en la misma capa; por ejemplo, POINT y MULTIPOINT, LINE Y MULTILINE, y POLYGON y MULTIPOLYGON.

De manera predeterminada, OGR quiere que obedezca las convenciones y use solo un tipo de característica por conjunto de datos. Si infringe la regla, OGR arrojará un error genérico y recomendará la -skipfailuresbandera. Esto puede ser engañoso si el problema real son las geometrías mixtas / combinadas en la misma capa.

Dado que el archivo de forma ESRI permite características de una o varias partes en la misma capa, debe tener en cuenta que OGR puede arrojar este error incluso si tiene geometrías válidas. En ese escenario, tiene dos opciones: 1) Convertir características multiparte en una sola parte (que ogr puede hacer a través de la -explodecollectionsbandera), o 2) usar la -nltbandera y especificar GEOMETRYcomo opción. La -nlt GEOMETRYopción le permite combinar una combinación de tipos de entidades en la misma capa. Por supuesto, como consecuencia, OGR no protegerá las mejores prácticas.

Si su archivo GeoJSON "comenzó su vida" como un archivo de forma ESRI, es posible que tenga las características POINT y MULTIPOINT contenidas en ese conjunto de datos, en cuyo caso es posible que encuentre este problema incluso con puntos válidos.

elrobis
fuente
2
 -skipfailures: Continue after a failure, skipping the failed feature.

Una explicación del comportamiento que está experimentando podría ser que todas las funciones en su archivo geoJSON están rotas. ¿Ha probado su validez, por ejemplo, utilizando QGIS "Verificar la validez de la geometría"?

bajo oscuro
fuente
Todas las otras características son válidas. Si reparo la geometría de un punto descrita en mi publicación original, todos los otros puntos geojson se agregan al archivo de forma de salida.
user890
1

En mi opinión, el comportamiento previsto es que si se encuentra una característica no válida, se omitirá y la conversión continuará con la siguiente característica válida en lugar de detenerse.

Parece que estás haciendo todo correctamente, ¡así que no sé qué pasa! ¿Has intentado ir a un formato diferente solo para ver si eso funciona?

Darren Cope
fuente