Saya memiliki masalah / pertanyaan tentang python dan QGIS. Apakah mungkin untuk mendapatkan data dari satu fitur yang dipilih di QGIS menggunakan python, dan jika ya, bagaimana?
Dalam contoh saya, saya memiliki lapisan yang menunjukkan beberapa bidang untuk perencanaan kota. Jika saya sekarang memilih salah satu paket saya ingin mendapatkan data untuk paket ini. Data ini harus dibaca oleh skrip python dan kemudian ditambahkan ke file PDF yang dibuat secara otomatis. Langkah terakhir mudah, tetapi saya tidak mendapatkan data dari fitur yang dipilih ini.
Dimungkinkan untuk mendapatkan data dari lapisan aktif, tetapi apakah mungkin juga untuk mendapatkan data dari satu fitur yang dipilih dari lapisan ini?
Semoga Anda bisa membantu saya. Salam
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 dalamQGIS
versi>= 2.0
Anda sekarang menggunakan fungsiQgsFeature.attributes()
bukanQgsFeature.attributeMap()
. Dua fungsi tidak persis sama:attributes()
sekarang mengembalikan daftar , sedangkan yang lamaattributeMap()
mengembalikan kamus . Luangkan waktu untuk menelusuri dokumentasi API untukQgsFeature.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):
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, termasukcounty
atribut. Untuk mendapatkancounty
nilai untuk kota tertentu yang telah Anda pilih (katakanHelena, AR
), lakukan hal berikut di konsol Python:Jika Anda ingin nilai dari semua bidang dalam tabel atribut kota, maka Anda cukup menggunakan:
sumber
Saya ingin menambahkan sesuatu yang bermanfaat untuk jawaban yang diberikan oleh J. Taylor dan menunjukkan bahwa jawaban yang diterima saat ini dari 2012 tidak benar lagi:
Objek QgsFeature mendukung
__geo_interface__
atribut yang berguna , yang mengembalikan kamus dari fitur yang diberikan. Kamus ini sebenarnya dalam standar GeoJSON, sehingga Anda memasukkan semua pasangan atribut-nilai dan geometri. Fitur ini ada untuk beberapa waktu sekarang, pertama kali dijelaskan oleh Sean Gillies sekitar tahun 2012, dengan contoh penggunaan di sini . Saya tidak dapat menemukan informasi dari versi QGIS mana itu tersedia dan saya belum mencoba QGIS 3, tetapi pasti tersedia dari setidaknya QGIS 2.14.TL; DR:
sumber