Shapefile只能具有一种几何类型,但是许多其他格式(kml,geojson)可以具有多种类型。

转换为shapefile时,是否可以告诉ogr2ogr创建多个shapefile,每个对应一个类型?

似乎“ -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)


#1 楼

通过阅读http://www.gdal.org/ogr/ogr_sql.html上的OGR SQL文档,可以弄清楚这一点。

每个几何类型使用一个命令和一个输出文件即可。

$ 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


#2 楼

如果output参数是目录而不是文件名,则ogr2ogr会自动将所有几何类型转换为单独的shapefile:

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


#3 楼

ogr2ogr:将单个kml转换为shapefile:

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


ogr2ogr:将多个kml文件转换为shapefile:

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


必须访问输入文件夹。

评论


谢谢,但这不是我问的问题。

– slinkp
2012年6月4日19:08