Selezione dei tipi di funzione quando si utilizza ogr2ogr per convertire in shapefile?


22

Gli Shapefile possono avere solo un tipo di geometria, ma molti altri formati (kml, geojson) possono avere più tipi.

Durante la conversione in shapefile, è possibile dire a ogr2ogr di creare più shapefile, uno per ciascun tipo?

Sembra che l'opzione "-where" potrebbe essere utile, ma la pagina man non spiega la sintassi.

Ad esempio, ecco un comando che non riesce:

$ 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)

Risposte:


21

L'ho capito leggendo la documentazione OGR SQL su http://www.gdal.org/ogr/ogr_sql.html

Funziona utilizzando un comando e un file di output per tipo di geometria:

$ 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

4

Se il outputparametro è una directory anziché un nome di file, ogr2ogr convertirà automaticamente tutti i tipi di geometria in shapefile separati:

ogr2ogr out_dir d:\incoming\nhn_09AA001_1_0.gml

Sfortunatamente per l'OP questo non funziona per KML, ma per alcuni degli altri formati di più tipi di geometria come ArcInfo Coverages e GML. Pubblicare qui perché questa è la domanda più votata sulla selezione del tipo di geometria.

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

-1

ogr2ogr: converte un singolo kml in shapefile:

ogr2ogr -f "File di forma ESRI" C: \ kml \ LJ0047.shp C: \ kml \ LJ0047_.kml

ogr2ogr: converte file kml multipli in shapefile:

per% f in (* .kml) esegui ogr2ogr -f "File di forma ESRI"% ~ nf.shp% f

È necessario accedere alla cartella di input.


Grazie, ma non è questa la domanda che ho posto.
slinkp
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.