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 QGIS
Versionen verwenden >= 2.0
Sie 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()
, QgsAttributes
usw. 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 :) list
anstelle einer Karte (Python :) gespeichert werden dict
. QgsFeature
Die Klasse emuliert das Python-Containerobjekt
4, sodass Sie auf Attribute zugreifen können, als wäre die QgsFeature
Instanz 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 city
Features, die jeweils eine Liste von Attributen enthalten, einschließlich eines county
Attributs. Gehen county
Sie Helena, AR
in 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()