Come filtrare il livello QGIS da Python?


9

Utilizzando la console Python di QGIS 2.4, sto provando a visualizzare solo un sottoinsieme delle funzionalità di un livello. Sono riuscito a ottenere entrambe le funzionalità dal livello:

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

e dal fornitore di dati:

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

(Non sono sicuro di capire la differenza).

Quello che voglio ottenere ora è visualizzare solo queste funzionalità. Proprio come si farebbe usando il generatore di query dalla GUI. Non so se questo debba essere gestito a livello di rendering (che renderebbe alcune funzionalità e non altre) o a livello del fornitore di dati (che fornirebbe al layer solo una vista sui dati che contengono solo il sottoinsieme desiderato), o da qualche parte nel mezzo.


La risposta di @Nathan è corretta. Possiamo anche ottenere ciò che è impostato da setSubsetString () o Query Builder utilizzando layer.subsetString (). Se è vuoto, viene restituita una stringa vuota ''.
Zac Wang,

Risposte:


13

Il metodo che stai cercando si chiama setSubsetString

layer.setSubsetString("field=4")

Grazie mille. Il nome della funzione non è setSubString mentre scrivi in ​​te la tua risposta, ma setSubsetString. Il collegamento punta comunque alla buona funzione. Ho modificato la tua risposta per riferimento futuro. Grazie ancora.
Jean-Philippe,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.