ogr2ogrを使用して属性でフィーチャを選択しますか?


17

何らかの処理の後にシェープファイルを作成しています。ただし、最後の手順では、シェープファイルの属性による選択を行う必要があります。

コマンドが動作するときにPythonスクリプトで使用することを目的として、シェルでコマンドを使用しています。

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

エラーメッセージが表示されます。

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

何が間違っているのでしょうか?


それは本当にそのコマンドの正確なメッセージですか?
ブラッドハーズ

回答:


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 -where "ID = '1'" output.shp input.shp
user2757128

このコードを使用するにはどうすればよいですか?ogr2ogr -sql "SELECT * FROM infile WHERE ID = '1'" outfile.shp infile.shp "python?
Shiuli Pervin

1
@ShiuliPervinを使用すると、Pythonでステートメントを使用できますos.system('''ogr2ogr ... ''') 。必ずimport osPythonスクリプトの一番上に
-geoeye

@ afalciano、ogr2ogr -sql "SELECT * FROM infile WHERE ID='1'" outfile.shp infile.shpID = 1の代わりにステートメントに対して、代わりにベクトルまたは数値のセットを提供する方法がありogr2ogr -sql "SELECT * FROM infile WHERE ID IN ['1','5','29']" outfile.shp infile.shpますか?
hlm

@afalcianoもう1つ...別のshpファイルを書き出す代わりに、選択したIDポリゴンの座標を取得する方法はありますか?
hlm
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.