मैं संस्करण 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()