Як відфільтрувати шар QGIS з python?


9

Використовуючи консоль python QGIS 2.4, я намагаюся відобразити лише підмножину функцій шару. Мені вдалося отримати функції як із шару:

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

і з DataProvider:

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

(Я не впевнений, що розумію різницю).

Те, що я хочу досягти зараз, - це відображати лише ці функції. Точно так само, як це можна зробити за допомогою конструктора запитів від графічного інтерфейсу. Я не знаю, чи потрібно керувати цим рівнем візуалізації (який би надав деякі функції, а не інші), або на рівні постачальника даних (який би надав лише шару уявлення лише про дані, що містять шуканий підмножина) або десь посередині.


Відповідь від @Nathan правильна. Ми також можемо отримати те, що встановлено setSubsetString () або Query Builder за допомогою слой.subsetString (). Якщо він порожній, то повертається порожній рядок ''.
Зак

Відповіді:


13

Метод, який ви шукаєте, називається setSubsetString

layer.setSubsetString("field=4")

Дуже дякую. Ім'я функції не setSubString, як ви пишете її у вашій відповіді, а setSubsetString. Посилання все одно вказує на хорошу функцію. Я відредагував вашу відповідь для подальшого ознайомлення. Знову дякую.
Жан-Філіпп
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.