Apakah ada cara untuk menggunakan fungsi "Select by Attribute" di QGIS menggunakan perintah python? Dalam plugin saya, pengguna harus memasukkan nilai melalui GUI dan nilai ini harus digunakan dalam fungsi yang memilih semua fitur yang memiliki atribut ini. Nama kolom ditetapkan dalam kode, fungsinya hanya mencari nilai yang benar.
Dalam solusi saya saat ini, fungsi menghubungkan QGIS ke database PostgreSQL dan menjalankan pernyataan SQL. Ini membuat tabel dari hasil dan tabel divisualisasikan sebagai Shapefile di QGIS.
Pada prinsipnya itu akan cukup untuk menyorot fitur dan tidak membuat Shapefile baru seleksi. Menggunakan fungsi "Pilih berdasarkan Atribut" juga akan melewati koneksi basis data yang tidak perlu.
Apakah ada cara untuk menggunakan fungsi "Select by Attribute" dengan python sehingga fitur-fiturnya disorot? Dengan menggunakan fungsi di QGIS, semua fitur yang tidak cocok dengan kueri bersifat sementara yang akan baik-baik saja.
Jawaban:
Iya. Anda bisa mendapatkan semua atribut melalui ikatan python dan menerapkan pemfilteran tambahan di plugin Anda sendiri. Lihat kutipan PyQGIS Coobook ini untuk ikhtisar dan beberapa contoh. Anda kemudian akan mengecualikan hasil yang tidak cocok dari kamus yang dikembalikan.
Sedangkan untuk visualisasi, Anda mungkin masih harus membuat layer lain, karena
select()
tidak memiliki argumen yang pas. Anda dapat menggunakan lapisan memori untuk menghindari keharusan membuat file fisik (lebih banyak tentang itu di buku masak).edit:
Sebenarnya, Anda dapat menggunakan
selectedFeaturesIds()
dengansetSelectedFeatures(ids)
untuk mengubah pilihan ke subset yang Anda buat. Mengutip implementasi secara langsung:sumber
Mulai dari QGIS 2.2 ini didukung dengan cara yang sangat alami. Ini dapat dilakukan melalui mesin ekspresi QGIS menggunakan
QgsFeatureRequest.setFilterExpression( unicode )
metode ini.Hal terbaik tentang itu: jika Anda memiliki versi QGIS baru-baru ini (2,10 dan yang lebih baru), ini akan disaring secara langsung dalam database sehingga jauh lebih berkinerja daripada solusi lain sementara masih sangat mudah dibaca.
sumber
sextante.runalg ('qgis: selectbylocation', "bufferarea", "rumah sakit", 1)
http://qgissextante.blogspot.in/2013/01/using-selection-algorithms.html
sumber