Saya hanya ingin memposting beberapa pembaruan pada jawaban sebelumnya mengingat perubahan pada QGIS Python API sejak versi 2.0 .
Seperti sebelumnya, Anda akan mendapatkan daftar fitur yang dipilih iface.activeLayer().selectedFeatures()
, namun dalam QGIS
versi >= 2.0
Anda sekarang menggunakan fungsi QgsFeature.attributes()
bukan QgsFeature.attributeMap()
. Dua fungsi tidak persis sama: attributes()
sekarang mengembalikan daftar , sedangkan yang lama attributeMap()
mengembalikan kamus . Luangkan waktu untuk menelusuri dokumentasi API untuk QgsFeature.attributes()
, QgsAttributes
, dll untuk memahami bagaimana atribut disimpan / diakses.
Jika Anda tertarik, Anda dapat membaca tentang beberapa alasan di balik perubahan API pada utas milis ini: [Qgis-developer] fitur vektor api pilih baru . Secara singkat (dalam kata-kata pengembang QGIS Martin Dobias):
Akses ke atribut: tidak ada f.attributeMap()
lagi, karena atribut sekarang disimpan dalam vektor (Python:), list
bukan peta (Python:) dict
. QgsFeature
class mengemulasi objek python container
4 sehingga Anda dapat mengakses atribut seolah-olah QgsFeature
instance adalah daftar atau kamus, dengan kunci berupa indeks bidang atau nama bidang:
f[0]
... atribut pertama
f["type"]
... atribut bernama "type"
Masih mungkin untuk mendapatkan semua atribut: f.attributes()
mengembalikan daftar nilai.
Jadi sebagai contoh spesifik apa yang Anda tanyakan bagaimana melakukan (mendapatkan data untuk satu fitur yang telah Anda pilih), misalkan Anda memiliki lapisan city
fitur yang masing-masing memiliki daftar atribut, termasuk county
atribut. Untuk mendapatkan county
nilai untuk kota tertentu yang telah Anda pilih (katakan Helena, AR
), lakukan hal berikut di konsol Python:
city = iface.activeLayer().selectedFeatures()[0]
city["county"]
# OUTPUTS: u'Phillips'
Jika Anda ingin nilai dari semua bidang dalam tabel atribut kota, maka Anda cukup menggunakan:
cityData = city.attributes()