Sürüm 2.0'dan bu yana QGIS Python API'sindeki değişiklikler ışığında önceki cevaba bazı güncellemeler göndermek istedim .
Daha önce olduğu gibi, seçili özelliklerin bir listesini alırsınız iface.activeLayer().selectedFeatures()
, ancak QGIS
sürümlerde >= 2.0
artık işlevi QgsFeature.attributes()
yerine kullanıyorsunuz QgsFeature.attributeMap()
. İki işlev tam olarak aynı değildir: attributes()
şimdi bir liste döndürürken , eski attributeMap()
bir sözlük döndürdü . API belgelerine göz atmak için biraz zaman ayırın QgsFeature.attributes()
, QgsAttributes
vb nitelikler / saklanan erişilen anlamak için.
İlgileniyorsanız, bu posta listesi iş parçacığında API değişikliklerinin arkasındaki mantık hakkında bilgi edinebilirsiniz: [Qgis-developer] new vector api select features . Kısaca (QGIS geliştiricisi Martin Dobias'ın sözleriyle):
Özniteliklere erişim: f.attributeMap()
artık yok, çünkü öznitelikler artık list
bir harita (Python:) yerine bir vektörde (Python:) saklanmaktadır dict
. QgsFeature
sınıf piton konteyner nesnesi emüle
4 sanki özelliklerini erişebilmesi için QgsFeature
örnek bir liste veya sözlüktü tuşları ya saha indeksleri veya alan adları olmak üzere:
f[0]
... ilk özellik
f["type"]
... "type" adlı özellik
Tüm nitelikleri almak hala mümkündür: f.attributes()
bir değer listesi döndürür.
Özellikle nasıl yapılacağını sorduğunuza bir örnek olarak (seçtiğiniz tek bir özellik için veri alma), city
her biri bir özellik de dahil olmak üzere bir county
özellik listesine sahip bir özellik katmanı bulunduğunu varsayalım . Seçtiğiniz county
(örneğin Helena, AR
) belirli bir şehrin değerini öğrenmek için Python konsolunda aşağıdakileri yapın:
city = iface.activeLayer().selectedFeatures()[0]
city["county"]
# OUTPUTS: u'Phillips'
Şehrin öznitelik tablosundaki tüm alanların değerlerini istiyorsanız, sadece şunu kullanırsınız:
cityData = city.attributes()