मैं संस्करण 2.0 के बाद से QGIS पायथन एपीआई में परिवर्तन के प्रकाश में पिछले उत्तर के लिए कुछ अपडेट पोस्ट करना चाहता था ।
पहले की तरह, आपको चयनित सुविधाओं की एक सूची मिल जाएगी iface.activeLayer().selectedFeatures()
, हालांकि QGIS
संस्करणों में >= 2.0
अब आप QgsFeature.attributes()
इसके बजाय फ़ंक्शन का उपयोग करते हैं QgsFeature.attributeMap()
। दो कार्य वास्तव में समान नहीं हैं: attributes()
अब एक सूची लौटाता है , जबकि पुराने attributeMap()
ने एक शब्दकोश लौटाया है । के लिए API दस्तावेज़ ब्राउज़ करने के लिए कुछ समय निकालें QgsFeature.attributes()
, QgsAttributes
, आदि को समझने के लिए गुण संग्रहीत / पहुंचा जा सकता है।
यदि आप रुचि रखते हैं, तो आप इस मेलिंग सूची थ्रेड पर एपीआई परिवर्तनों के पीछे कुछ औचित्य के बारे में पढ़ सकते हैं: [क्यूजीस-डेवलपर] नई वेक्टर एपी चुनिंदा विशेषताएं । संक्षेप में (क्यूजीआईएस डेवलपर मार्टिन डोबियास के शब्दों में):
विशेषताओं तक पहुंच: f.attributeMap()
अब और नहीं है, क्योंकि विशेषताओं को अब list
एक नक्शे (पायथॉन:) के बजाय एक वेक्टर (पायथन:) में संग्रहीत किया जाता है dict
। QgsFeature
वर्ग पायथन कंटेनर ऑब्जेक्ट 4 का अनुकरण करता है
ताकि आप उन विशेषताओं तक पहुंच सकें जैसे कि QgsFeature
उदाहरण एक सूची या शब्दकोश था, जिसमें कुंजियाँ या तो फ़ील्ड इंडेक्स या फ़ील्ड नाम होती हैं:
f[0]
... पहली विशेषता
f["type"]
... "प्रकार" नाम की विशेषता
सभी विशेषताओं को प्राप्त करना अभी भी संभव है: f.attributes()
मूल्यों की सूची लौटाता है।
इसलिए विशेष रूप से एक उदाहरण के रूप में कि आपने क्या करने के लिए कहा है (आपके द्वारा चुनी गई एकल सुविधा के लिए डेटा प्राप्त करें), मान लीजिए कि आपके पास city
विशेषताओं वाली एक परत है जिसमें प्रत्येक में एक विशेषता सहित कई विशेषताओं की सूची है county
। county
आपके द्वारा चुने गए एक विशिष्ट शहर के लिए मान प्राप्त करने के लिए Helena, AR
, पायथन कंसोल में निम्न कार्य करें:
city = iface.activeLayer().selectedFeatures()[0]
city["county"]
# OUTPUTS: u'Phillips'
यदि आप शहर की विशेषता तालिका के सभी क्षेत्रों के मान चाहते हैं, तो आप इसका उपयोग करेंगे:
cityData = city.attributes()