Ich wollte nur einige Aktualisierungen der vorherigen Antwort veröffentlichen, da Änderungen an der QGIS Python-API seit Version 2.0 vorgenommen wurden .
Nach wie vor würden Sie eine Liste ausgewählter Funktionen erhalten iface.activeLayer().selectedFeatures(), in QGISVersionen verwenden >= 2.0Sie jetzt jedoch die Funktion QgsFeature.attributes()anstelle von QgsFeature.attributeMap(). Die beiden Funktionen sind nicht genau gleich: attributes()Jetzt wird eine Liste zurückgegeben , während die alte attributeMap()ein Wörterbuch zurückgibt . Nehmen Sie einen Moment der API - Dokumentation zu durchsuchen QgsFeature.attributes(), QgsAttributesusw. zu verstehen , wie Attribute gespeichert / abgerufen.
Wenn Sie interessiert sind, können Sie einige der Gründe für die API-Änderungen in diesem Mailinglisten-Thread nachlesen : [Qgis-Entwickler] Neue Vektor-API-Auswahlfunktionen . Kurz (in den Worten des QGIS-Entwicklers Martin Dobias):
Zugriff auf Attribute: Es gibt keine f.attributeMap()mehr, da Attribute jetzt in einem Vektor (Python :) listanstelle einer Karte (Python :) gespeichert werden dict. QgsFeatureDie Klasse emuliert das Python-Containerobjekt
4, sodass Sie auf Attribute zugreifen können, als wäre die QgsFeatureInstanz eine Liste oder ein Wörterbuch, wobei die Schlüssel entweder Feldindizes oder Feldnamen sind:
f[0] ... erstes Attribut
f["type"] ... Attribut mit dem Namen "Typ"
Es ist weiterhin möglich, alle Attribute f.attributes()abzurufen : Gibt eine Liste mit Werten zurück.
Angenommen, Sie hatten eine Ebene mit cityFeatures, die jeweils eine Liste von Attributen enthalten, einschließlich eines countyAttributs. Gehen countySie Helena, ARin der Python-Konsole folgendermaßen vor, um den Wert für eine bestimmte Stadt zu erhalten, die Sie ausgewählt haben (z. B. ):
city = iface.activeLayer().selectedFeatures()[0]
city["county"]
# OUTPUTS: u'Phillips'
Wenn Sie die Werte aller Felder in der Attributtabelle der Stadt anzeigen möchten, verwenden Sie einfach:
cityData = city.attributes()