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 QGISversi >= 2.0Anda 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:), listbukan peta (Python:) dict. QgsFeatureclass mengemulasi objek python container
4 sehingga Anda dapat mengakses atribut seolah-olah QgsFeatureinstance 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 cityfitur yang masing-masing memiliki daftar atribut, termasuk countyatribut. Untuk mendapatkan countynilai 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()