Làm cách nào để lọc lớp QGIS khỏi python?


9

Sử dụng bảng điều khiển python QGIS 2.4, tôi đang cố gắng chỉ hiển thị một tập hợp con của các tính năng lớp. Tôi đã quản lý để có được các tính năng cả hai từ lớp:

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

và từ DataProvider:

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

(Tôi không chắc chắn để hiểu sự khác biệt).

Những gì tôi muốn đạt được bây giờ là chỉ hiển thị các tính năng này. Theo cách chính xác giống như người ta sẽ sử dụng trình tạo truy vấn từ GUI. Tôi không biết liệu điều này có phải được quản lý ở cấp độ kết xuất hay không (sẽ kết xuất một số tính năng chứ không phải các tính năng khác) hoặc ở cấp độ của nhà cung cấp dữ liệu (chỉ cung cấp lớp cho chế độ xem dữ liệu chỉ chứa tập hợp con mong muốn), hoặc một nơi nào đó ở giữa.


Câu trả lời từ @Nathan là đúng. Chúng ta cũng có thể lấy những gì được thiết lập bởi setSubsetString () hoặc Query Builder bằng layer.subsetString (). Nếu nó trống, thì một chuỗi trống '' được trả về.
Zac Wang

Câu trả lời:


13

Phương thức bạn đang tìm kiếm được gọi là setSubsetString

layer.setSubsetString("field=4")

Cám ơn rất nhiều. Tên của hàm không phải là setSubString khi bạn viết nó trong câu trả lời của bạn, mà là setSubsetString. Các liên kết chỉ đến các chức năng tốt anyway. Tôi đã chỉnh sửa câu trả lời của bạn để tham khảo trong tương lai. Cảm ơn một lần nữa.
Jean-Philippe
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.