¿Seleccionar tipos de características cuando se usa ogr2ogr para convertir a shapefile?

22

Los archivos de forma solo pueden tener un tipo de geometría, pero muchos otros formatos (kml, geojson) pueden tener varios tipos.

Al convertir a shapefiles, ¿es posible decirle a ogr2ogr que cree múltiples shapefiles, uno para cada tipo?

Parece que la opción "-where" podría ser útil, pero la página del manual no explica la sintaxis.

Por ejemplo, aquí hay un comando que falla:

$ wget http://a841-tfpweb.nyc.gov/jackson-heights/wp-content/themes/tfp/kml/transit.kml
$ ogr2ogr -f "ESRI Shapefile" transit.shp transit.kml
Warning 6: Normalized/laundered field name: 'Description' to 'Descriptio'
ERROR 1: Attempt to write non-linestring (POINT) geometry to ARC type shapefile.
ERROR 1: Terminating translation prematurely after failed
translation of layer Transit (use -skipfailures to skip errors)
slinkp
fuente

Respuestas:

21

Lo descubrí leyendo la documentación de OGR SQL en http://www.gdal.org/ogr/ogr_sql.html

Esto funciona, usando un comando y un archivo de salida por tipo de geometría:

$ ogr2ogr -where "OGR_GEOMETRY='Point'" -f "ESRI Shapefile" transit_points.shp transit.kml
$ ogr2ogr -where "OGR_GEOMETRY='LineString'" -f "ESRI Shapefile" transit_linestrings.shp transit.kml
slinkp
fuente
4

Si el outputparámetro es un directorio en lugar de un nombre de archivo, ogr2ogr convertirá automáticamente todos los tipos de geometría en archivos de forma separados:

ogr2ogr out_dir d:\incoming\nhn_09AA001_1_0.gml

Desafortunadamente para el OP, esto no funciona para KML, pero sí para algunos de los otros formatos de tipo de geometría múltiple como ArcInfo Coverages y GML. Publicando aquí porque esta es la pregunta más votada sobre la selección del tipo de geometría.

D:\>dir /s/b converted\*.shp

D:\converted\NHN_HD_ISLAND_2.shp
D:\converted\NHN_HD_MANMADE_0.shp
...
D:\converted\NHN_TO_NAMEDFEA_0.shp
D:\converted\NHN_WORKUNIT_LIMIT_2.shp
wilkie mate
fuente
-1

ogr2ogr: convierte un solo kml en shapefile:

ogr2ogr -f "ESRI Shapefile" C: \ kml \ LJ0047.shp C: \ kml \ LJ0047_.kml

ogr2ogr: convierte múltiples archivos kml a shapefiles:

para% f en (* .kml) do ogr2ogr -f "ESRI Shapefile"% ~ nf.shp% f

Es necesario acceder a la carpeta de entrada.

Jorge Santos
fuente
Gracias, pero esa no es la pregunta que hice.
slinkp