Auswählen von Feature-Typen bei der Konvertierung in ein Shapefile mit ogr2ogr?

22

Shapefiles können nur einen Geometrietyp haben, aber viele andere Formate (kml, geojson) können mehrere Typen haben.

Ist es bei der Konvertierung in Shapefiles möglich, ogr2ogr anzuweisen, mehrere Shapefiles zu erstellen, eines für jeden Typ?

Es scheint, als ob die Option "-where" nützlich sein könnte, aber die Manpage erklärt die Syntax nicht.

Zum Beispiel ist hier ein Befehl, der fehlschlägt:

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

Antworten:

21

Lesen Sie dazu die OGR-SQL-Dokumentation unter http://www.gdal.org/ogr/ogr_sql.html

Dies funktioniert mit einem Befehl und einer Ausgabedatei pro Geometrietyp:

$ 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
schleich
quelle
4

Wenn der outputParameter ein Verzeichnis anstelle eines Dateinamens ist, konvertiert ogr2ogr automatisch alle Geometrietypen in separate Shapefiles:

ogr2ogr out_dir d:\incoming\nhn_09AA001_1_0.gml

Leider funktioniert dies für das OP nicht für KML, aber für einige der anderen Formate mit mehreren Geometrietypen wie ArcInfo Coverages und GML. Hier posten, da dies die am häufigsten gestellte Frage zur Auswahl des Geometrietyps ist.

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
Matt Wilkie
quelle
-1

ogr2ogr: Konvertiere ein einzelnes kml in ein Shapefile:

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

ogr2ogr: Konvertiert mehrere kml-Dateien in Shapefiles:

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

Es ist notwendig, auf den Eingabeordner zuzugreifen.

Jorge Santos
quelle
Danke, aber das ist nicht die Frage, die ich gestellt habe.
Slinkp