Memilih fitur berdasarkan atribut menggunakan ogr2ogr?

17

Saya menulis shapefile setelah beberapa pemrosesan; Namun, pada langkah terakhir saya perlu melakukan beberapa seleksi dengan atribut dari shapefile.

Saya menggunakan perintah di shell dengan tujuan menggunakannya dalam skrip Python ketika berfungsi.

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

Saya menerima pesan kesalahan:

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

Apa yang bisa saya lakukan salah?

pengguna2757128
sumber
Apakah itu benar-benar pesan yang tepat untuk perintah itu?
BradHards

Jawaban:

30

Anda kehilangan tanda minus sebelumnya wheredan selectitu tidak perlu, jadi seharusnya:

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

atau jika Anda harus melakukan kueri yang lebih kompleks pada data input Anda:

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

Jika IDadalah bidang tipe Integer, gantikan ID='1'dengan ID=1.

Catatan:

  1. -f "ESRI Shapefile"tidak diperlukan karena "ESRI Shapefile"merupakan ogr2ogrformat output default;
  2. lebih mudah untuk melewati -selectdan menggunakan langsung -whereklausa ketika Anda ingin memilih semua bidang.
Antonio Falciano
sumber
1
Terima kasih banyak. Saya menggunakan: ogr2ogr -di mana "ID = '1'" output.shp input.shp
user2757128
Bagaimana saya dapat menggunakan kode ini: ogr2ogr -sql "SELECT * FROM infile WHERE ID = '1'" outfile.shp infile.shp "dalam python?
Shiuli Pervin
1
@ShiuliPervin Anda dapat menggunakan pernyataan dalam python dengan menggunakan os.system('''ogr2ogr ... ''') . pastikan untuk berada import osdi bagian atas skrip python Anda
geoeye
@afalciano, untuk pernyataan ogr2ogr -sql "SELECT * FROM infile WHERE ID='1'" outfile.shp infile.shpalih-alih hanya ID = 1 apakah ada cara untuk menyediakan vektor atau serangkaian angka saja, misalnya ogr2ogr -sql "SELECT * FROM infile WHERE ID IN ['1','5','29']" outfile.shp infile.shp?
hlm
@afalciano satu hal lain ... alih-alih menulis file shp lain, apakah ada cara untuk mendapatkan koordinat poligon ID yang dipilih?
hlm