Bagaimana cara menyaring lapisan QGIS dari python?

9

Menggunakan konsol python QGIS 2.4, saya mencoba menampilkan hanya sebagian dari fitur lapisan. Saya sudah berhasil mendapatkan fitur-fiturnya baik dari layer:

featuresIterator = layer.getFeatures(QgsFeatureRequest().setFilterExpression ( u'"field"=4'))

dan dari Penyedia data:

featuresIterator = layer.dataProvider().getFeatures(QgsFeatureRequest().setFilterExpression ( u'"field"=4'))

(Saya tidak yakin untuk memahami perbedaannya).

Yang ingin saya capai sekarang adalah hanya menampilkan fitur-fitur ini. Dengan cara yang sama persis seperti yang akan dilakukan dengan menggunakan pembuat kueri dari GUI. Saya tidak tahu apakah ini harus dikelola pada tingkat render (yang akan membuat beberapa fitur dan bukan yang lain), atau pada tingkat penyedia data (yang hanya akan memberikan layer dengan tampilan pada data yang hanya berisi bagian yang diinginkan), atau di suatu tempat di antaranya.

Jean-Philippe
sumber
Jawaban dari @Nathan benar. Kita juga bisa mendapatkan apa yang diatur oleh setSubsetString () atau Query Builder menggunakan layer.subsetString (). Jika kosong, maka string kosong '' dikembalikan.
Zac Wang

Jawaban:

13

Metode yang Anda cari disebut setSubsetString

layer.setSubsetString("field=4")
Nathan W
sumber
Terima kasih banyak. Nama fungsi ini bukan setSubString saat Anda menuliskannya di jawaban Anda, tetapi setSubsetString. Tautan menunjuk ke fungsi yang baik. Saya telah mengedit jawaban Anda untuk referensi di masa mendatang. Terima kasih lagi.
Jean-Philippe