버전 2.0 이후의 QGIS Python API 변경 사항을 고려하여 이전 답변에 대한 업데이트를 게시하고 싶었습니다 .
이전과 같이을 사용하여 선택한 기능 목록을 볼 수 iface.activeLayer().selectedFeatures()
있지만 QGIS
버전에서는 >= 2.0
이제 QgsFeature.attributes()
대신 기능을 사용합니다 QgsFeature.attributeMap()
. 두 함수는 정확히 동일하지 않습니다. attributes()
이제 list를 반환하고 , old attributeMap()
는 dictionary를 반환했습니다 . 에 대한 API 문서를 찾아 잠시 시간을내어 QgsFeature.attributes()
, QgsAttributes
등이 속성은 저장 / 접근하는 방법을 이해하기를.
관심이 있으시면이 메일 링리스트 스레드에서 API 변경 사항에 대한 이론적 근거에 대해 읽어보십시오 : [Qgis-developer] 새로운 벡터 API 선택 기능 . 간단히 (QGIS 개발자 Martin Dobias의 말로) :
속성에 대한 액세스 : f.attributeMap()
이제 속성이 list
맵 (Python :) 대신 벡터 (Python :)에 저장되므로 더 이상 존재하지 않습니다 dict
. QgsFeature
클래스는 파이썬 컨테이너 객체 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()