バージョン2.0以降のQGIS Python APIの変更に照らして、以前の回答に対するいくつかの更新を投稿したかっただけです。
以前と同様に、選択した機能のリストをで取得しますがiface.activeLayer().selectedFeatures()
、QGIS
バージョンで>= 2.0
はのQgsFeature.attributes()
代わりに関数を使用しますQgsFeature.attributeMap()
。二つの機能はまったく同じではありません。attributes()
今すぐ返すリストは古いが、一方で、attributeMap()
返された辞書を。以下のためのAPIドキュメントを閲覧する時間を取るQgsFeature.attributes()
、QgsAttributes
属性が格納されているか/アクセスを理解することなど、。
興味がある場合は、このメーリングリストのスレッドでAPIの変更の背後にある根拠について読むことができます:[Qgis-developer]新しいベクターAPI選択機能。簡潔に(QGIS開発者Martin Dobiasの言葉で):
属性へのアクセス:f.attributeMap()
属性はlist
マップ(Python:)ではなくベクター(Python:)に格納されるようになったため、もうありませんdict
。QgsFeature
クラスはpythonコンテナーオブジェクト4をエミュレートする
ため、QgsFeature
インスタンスがリストまたは辞書であるかのように属性にアクセスでき、キーはフィールドインデックスまたはフィールド名のいずれかです。
f[0]
...最初の属性
f["type"]
...「type」という名前の属性
すべての属性を取得することも可能f.attributes()
です。値のリストを返します。
そのため、具体的にどのように実行するか(選択した単一の機能のデータを取得する)の例として、city
属性を含む属性のリストを持つ機能を含むレイヤーがあるとしcounty
ます。county
選択した特定の都市の値(たとえばHelena, AR
)を取得するには、Pythonコンソールで次のようにします。
city = iface.activeLayer().selectedFeatures()[0]
city["county"]
# OUTPUTS: u'Phillips'
都市の属性テーブルのすべてのフィールドの値が必要な場合は、次のように使用します。
cityData = city.attributes()