26 votos

¿Selección de tipos de características al utilizar ogr2ogr para convertir a shapefile?

Los Shapefiles sólo pueden tener un tipo de geometría, pero muchos otros formatos (kml, geojson) pueden tener varios tipos.

Al convertir a shapefiles, ¿es posible indicar 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 de 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)

27voto

user7939 Puntos 26

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

Esto funciona, utilizando 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

4voto

Greg Puntos 1756

Si el output es un directorio en lugar de un nombre de archivo, ogr2ogr convertirá automáticamente todos los tipos de geometría en shapefiles 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 geometría múltiple como ArcInfo Coverages y GML. Publicar aquí porque esta es la pregunta más votada en la selección de 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

-2voto

John Sinclair Puntos 11

ogr2ogr: convertir un único kml a shapefile:

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

ogr2ogr: convertir archivos kml múltiples en shapefiles:

for %f in (\*.kml) do ogr2ogr -f "ESRI Shapefile" %~nf.shp %f

Es necesario acceder a la carpeta de entrada.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X