PythonからQGISレイヤーをフィルターする方法?


9

QGIS 2.4 Pythonコンソールを使用して、レイヤーフィーチャのサブセットのみを表示しようとしています。両方のレイヤーから機能を取得できました:

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

そしてdataProviderから:

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

(違いがよくわかりません)。

私が今達成したいのは、これらの機能だけを表示することです。GUIからクエリビルダーを使用する場合とまったく同じです。これをレンダリングのレベルで管理する必要があるか(他の機能ではなく一部の機能をレンダリングするか)、またはデータプロバイダーのレベルで管理する必要があるか(レイヤーに提供するのは、必要なサブセット)、またはその間のどこか。


@ネイサンからの答えは正しいです。また、setSubsetString()またはquery Builderでlayer.subsetString()を使用して設定されたものを取得することもできます。空の場合、空の文字列 ''が返されます。
Zac Wang

回答:


13

あなたが探しているメソッドはsetSubsetStringと呼ばれています

layer.setSubsetString("field=4")

本当にありがとう。関数の名前は、答えに書き込むときにsetSubStringではなく、setSubsetStringです。リンクはとにかく良い機能を指しています。今後の参考のために回答を編集しました。再度、感謝します。
Jean-Philippe
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.