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?


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.

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.