Memilih tipe fitur ketika menggunakan ogr2ogr untuk dikonversi ke shapefile?

22

Shapefile hanya dapat memiliki satu jenis geometri, tetapi banyak format lain (kml, geojson) dapat memiliki beberapa jenis.

Ketika mengonversi ke shapefile, apakah mungkin untuk memberi tahu ogr2ogr untuk membuat beberapa shapefile, satu untuk setiap jenis?

Sepertinya opsi "-di mana" mungkin berguna tetapi halaman manual tidak menjelaskan sintaks.

Misalnya, inilah perintah yang gagal:

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

Jawaban:

21

Mencari tahu dengan membaca dokumentasi OGR SQL di http://www.gdal.org/ogr/ogr_sql.html

Ini berfungsi, menggunakan satu perintah dan satu file keluaran per jenis geometri:

$ 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
menyelinap
sumber
4

Jika outputparameternya adalah direktori alih-alih nama file, ogr2ogr akan secara otomatis mengonversi semua tipe geometri menjadi shapefile terpisah:

ogr2ogr out_dir d:\incoming\nhn_09AA001_1_0.gml

Sayangnya untuk OP ini tidak berfungsi untuk KML, tetapi ini berlaku untuk beberapa format tipe geometri multipel lainnya seperti ArcInfo Coverages dan GML. Posting di sini karena ini adalah pertanyaan pilihan tertinggi pada pemilihan tipe geometri.

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
sumber
-1

ogr2ogr: ubah satu kml menjadi shapefile:

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

ogr2ogr: konversikan banyak file kml ke shapefile:

untuk% f dalam (* .kml) lakukan ogr2ogr -f "ESRI Shapefile"% ~ nf.shp% f

Diperlukan untuk mengakses folder input.

Jorge Santos
sumber
Terima kasih, tapi itu bukan pertanyaan yang saya ajukan.
slinkp