Jak odfiltrować warstwę QGIS z Pythona?


9

Korzystając z konsoli python QGIS 2.4, próbuję wyświetlić tylko podzbiór funkcji warstwy. Udało mi się uzyskać funkcje zarówno z warstwy:

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

i od dataProvider:

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

(Nie jestem pewien, czy rozumiem różnicę).

Chcę teraz wyświetlić tylko te funkcje. Dokładnie tak samo, jak przy użyciu konstruktora zapytań z GUI. Nie wiem, czy trzeba to zarządzać na poziomie renderowania (który renderowałby niektóre funkcje, a nie inne), czy na poziomie dostawcy danych (który zapewniałby tej warstwie jedynie widok danych zawierających tylko poszukiwany podzbiór) lub gdzieś pomiędzy.


Odpowiedź od @Nathan ma rację. Możemy również uzyskać to, co jest ustawione przez setSubsetString () lub Query Builder za pomocą layer.subsetString (). Jeśli jest pusty, zwracany jest pusty ciąg „”.
Zac

Odpowiedzi:


13

Metoda, której szukasz, nazywa się setSubsetString

layer.setSubsetString("field=4")

Dzięki wielkie. Nazwą funkcji nie jest setSubString, gdy piszesz ją w swojej odpowiedzi, ale setSubsetString. Link i tak wskazuje na dobrą funkcję. Zredagowałem twoją odpowiedź na przyszłość. Dzięki jeszcze raz.
Jean-Philippe,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.