Выбор типов объектов при использовании ogr2ogr для преобразования в шейп-файл?

22

Шейп-файлы могут иметь только один тип геометрии, но многие другие форматы (kml, geojson) могут иметь несколько типов.

Можно ли при преобразовании в шейп-файлы указать ogr2ogr создать несколько шейп-файлов, по одному для каждого типа?

Кажется, что опция "-where" может быть полезна, но страница руководства не объясняет синтаксис.

Например, вот команда, которая терпит неудачу:

$ 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
источник

Ответы:

21

Разобрался с этим, прочитав документацию по OGR SQL по адресу http://www.gdal.org/ogr/ogr_sql.html.

Это работает, используя одну команду и один выходной файл для каждого типа геометрии:

$ 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
источник
4

Если outputпараметр является каталогом, а не именем файла, ogr2ogr автоматически преобразует все типы геометрии в отдельные шейп-файлы:

ogr2ogr out_dir d:\incoming\nhn_09AA001_1_0.gml

К сожалению, для OP это не работает для KML, но оно работает для некоторых других форматов с несколькими типами геометрии, таких как ArcInfo Coverages и GML. Размещать здесь, потому что это вопрос с наибольшим количеством голосов при выборе типа геометрии.

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: преобразовать один kml в shapefile:

ogr2ogr -f "Шейп-файл ESRI" C: \ kml \ LJ0047.shp C: \ kml \ LJ0047_.kml

ogr2ogr: конвертировать несколько файлов kml в shapefiles:

для% f в (* .kml) выполните ogr2ogr -f «Шейп-файл ESRI»% ~ nf.shp% f

Необходимо войти в папку ввода.

Хорхе Сантос
источник
Спасибо, но это не тот вопрос, который я задал.
slinkp