Ich habe ein Problem / eine Frage zu Python und QGIS. Ist es möglich, die Daten eines ausgewählten Features in QGIS mit Python abzurufen, und wenn ja, wie?
In meinem Beispiel habe ich eine Ebene, die einige Parzellen für die Stadtplanung zeigt. Wenn ich jetzt eines der Pakete auswähle, möchte ich die Daten für genau dieses Paket erhalten. Diese Daten sollten von einem Python-Skript ausgelesen und dann einer automatisch erstellten PDF-Datei hinzugefügt werden. Der letzte Schritt ist einfach, aber ich habe die Daten von dieser ausgewählten Funktion nicht erhalten.
Es ist möglich, Daten von der aktiven Ebene abzurufen, aber ist es auch möglich, Daten von einem ausgewählten Merkmal dieser Ebene abzurufen?
Hoffe du kannst mir helfen. Grüße
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()
, inQGIS
Versionen verwenden>= 2.0
Sie jetzt jedoch die FunktionQgsFeature.attributes()
anstelle vonQgsFeature.attributeMap()
. Die beiden Funktionen sind nicht genau gleich:attributes()
Jetzt wird eine Liste zurückgegeben , während die alteattributeMap()
ein Wörterbuch zurückgibt . Nehmen Sie einen Moment der API - Dokumentation zu durchsuchenQgsFeature.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):
Angenommen, Sie hatten eine Ebene mit
city
Features, die jeweils eine Liste von Attributen enthalten, einschließlich einescounty
Attributs. Gehencounty
SieHelena, 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. ):Wenn Sie die Werte aller Felder in der Attributtabelle der Stadt anzeigen möchten, verwenden Sie einfach:
quelle
Ich möchte der Antwort von J. Taylor etwas Nützliches hinzufügen und darauf hinweisen, dass die derzeit akzeptierte Antwort aus dem Jahr 2012 nicht mehr korrekt ist:
Das QgsFeature-Objekt unterstützt nützliche
__geo_interface__
Attribute, die ein Wörterbuch von einem bestimmten Feature zurückgeben. Das Wörterbuch befindet sich tatsächlich in einem GeoJSON-Standard, sodass alle Attribut-Wert-Paare und die Geometrie enthalten sind. Die Funktion existiert bereits seit einiger Zeit und wurde erstmals 2012 von Sean Gillies beschrieben. Ein Beispiel hierfür ist die Verwendung . Ich konnte keine Informationen finden, von welcher Version von QGIS es verfügbar ist, und ich habe QGIS 3 noch nicht ausprobiert, war aber sicherlich ab mindestens QGIS 2.14 verfügbar.TL; DR:
quelle