使用ogr2​​ogr通过属性选择特征?


17

经过一些处理后,我正在编写一个shapefile。但是,在最后一步中,我需要根据shapefile中的属性进行选择。

我正在外壳程序中使用该命令,目的是在工作时在Python脚本中使用它。

ogr2ogr -f "ESRI Shapefile" -select * where ID="1" outfile.shp infile.shp

我收到错误消息:

FAILURE: 
Unable to open datasource `Downloads' with the following drivers.

我可能做错了什么?


那真的是该命令的确切信息吗?
BradHards

Answers:


30

您之前错过了一个负号,where并且这select不是必需的,因此应为:

ogr2ogr -where ID="1" outfile.shp infile.shp

或者如果您必须对输入数据进行更复杂的查询:

ogr2ogr -sql "SELECT * FROM infile WHERE ID='1'" outfile.shp infile.shp

如果ID是整型,替补的场ID='1'ID=1

笔记:

  1. -f "ESRI Shapefile"不必要,因为"ESRI Shapefile"它是ogr2ogr默认输出格式;
  2. 要选择所有字段时,跳过-select和直接使用-where子句很方便。

1
非常感谢它的工作。我正在使用:ogr2ogr-其中“ ID ='1'” output.shp input.shp
2013年

如何使用此代码:python中的ogr2ogr -sql“ SELECT * FROM infile WHERE ID ='1'” outfile.shp infile.shp“
Shiuli Pervin

1
@ShiuliPervin您可以通过使用python中的语句os.system('''ogr2ogr ... ''') 。确保import os在python脚本的顶部
geoeye '16

@afalciano,对于语句ogr2ogr -sql "SELECT * FROM infile WHERE ID='1'" outfile.shp infile.shp而不只是ID = 1,有没有办法提供向量或一组数字,例如ogr2ogr -sql "SELECT * FROM infile WHERE ID IN ['1','5','29']" outfile.shp infile.shp
hlm

@afalciano还有另一件事...代替写出另一个shp文件,有没有办法只获取所选ID多边形的坐标?
hlm
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.