Sélection des types d'entités lors de l'utilisation d'ogr2ogr pour convertir en fichier de formes?

22

Les fichiers de formes ne peuvent avoir qu'un seul type de géométrie, mais de nombreux autres formats (kml, geojson) peuvent avoir plusieurs types.

Lors de la conversion en fichiers de formes, est-il possible de dire à ogr2ogr de créer plusieurs fichiers de formes, un pour chaque type?

Il semble que l'option "-where" pourrait être utile, mais la page de manuel n'explique pas la syntaxe.

Par exemple, voici une commande qui échoue:

$ 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
la source

Réponses:

21

Je l'ai compris en lisant la documentation OGR SQL sur http://www.gdal.org/ogr/ogr_sql.html

Cela fonctionne, en utilisant une commande et un fichier de sortie par type de géométrie:

$ 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
la source
4

Si le outputparamètre est un répertoire au lieu d'un nom de fichier, ogr2ogr convertira automatiquement tous les types de géométrie en fichiers de formes séparés:

ogr2ogr out_dir d:\incoming\nhn_09AA001_1_0.gml

Malheureusement pour l'OP, cela ne fonctionne pas pour KML, mais c'est le cas pour certains des autres formats de types de géométrie multiples comme ArcInfo Coverages et GML. Publier ici car c'est la question la plus votée sur la sélection du type de géométrie.

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
la source
-1

ogr2ogr: convertir un seul kml en shapefile:

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

ogr2ogr: convertir plusieurs fichiers kml en fichiers de formes:

pour% f dans (* .kml), faites ogr2ogr -f "ESRI Shapefile"% ~ nf.shp% f

Il est nécessaire d'accéder au dossier d'entrée.

Jorge Santos
la source
Merci, mais ce n'est pas la question que j'ai posée.
slinkp