अजगर से QGIS परत को कैसे फ़िल्टर करें?


9

QGIS 2.4 python कंसोल का उपयोग करके, मैं केवल लेयर विशेषताओं का सबसेट प्रदर्शित करने का प्रयास कर रहा हूं। मैं परत से दोनों विशेषताओं को प्राप्त करने में कामयाब रहा:

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

और डेटा सर्वर से:

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

(मुझे फर्क समझ में नहीं आ रहा है)।

अब मैं जो हासिल करना चाहता हूं वह केवल इन सुविधाओं को प्रदर्शित करना है। ठीक उसी तरह से जैसे कोई GUI से क्वेरी बिल्डर का उपयोग करेगा। मुझे नहीं पता कि यह रेंडर के स्तर पर प्रबंधित किया जाना है (जो कुछ सुविधाओं को प्रस्तुत करेगा और अन्य को नहीं), या डेटा प्रदाता के स्तर पर (जो केवल डेटा वाले दृश्य पर परत प्रदान करेगा चाहता था), या कहीं बीच में।


@ नथन से जवाब सही है। हम यह भी पा सकते हैं कि setSubsetString () या क्वेरी बिल्डर द्वारा layer.subsetString () का उपयोग करके क्या सेट किया गया है। यदि यह खाली है, तो एक खाली स्ट्रिंग '' वापस आ गया है।
Zac

जवाबों:


13

जिस विधि की आप तलाश कर रहे हैं उसे सेटसबसेटस्ट्रिंग कहा जाता है

layer.setSubsetString("field=4")

बहुत बहुत धन्यवाद। फ़ंक्शन का नाम सेटबस्ट्रिंग नहीं है जैसा कि आप इसे अपने उत्तर में लिखते हैं, लेकिन सेटस्सेटिंग स्ट्रिंग। लिंक वैसे भी अच्छे कार्य की ओर इशारा करता है। मैंने भविष्य के संदर्भ के लिए आपके उत्तर को संपादित कर दिया है। एक बार फिर धन्यवाद।
जीन-फिलिप
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.