QGIS 파이썬 콘솔에서 벡터 레이어를 제어하는 방법을 학습해 보도록 하겠습니다.
출처: http://www.qgistutorials.com/en/docs/getting_started_with_pyqgis.html
먼저, 실습을 위해 국립공원 문화자원 벡터 레이어를 아래와 같이 추가해 보도록 하겠습니다.
이 데이터는 공공데이터 포털에서 조회하시고 바로 받아보실 수 있습니다.
공공데이터포털에서 국립공원 공간데이터 다운로드 방법
http://blog.daum.net/geoscience/737
아래와 같이 포인트 타입의 벡터 레이어를 추가하고, 상단 메뉴에서 '플러그인 > Python 콘솔'을 실행시키겠습니다.
먼저, 현재 활성화된 레이어를 layer라고 정의해 보겠습니다.
layer = iface.activeLayer()
여기서 iface는 QgisInterface 클래스(Class)의 객체(Object)입니다.
클래스, 객체는 모두 객체 지향 프로그래밍(Object-based Programming)의 개념인데요, 아래 글을 참고하시기 바랍니다.
객체 지향 프로그래밍 | 출처: 위키백과
http://ko.wikipedia.org/wiki/%EA%B0%9D%EC%B2%B4_%EC%A7%80%ED%96%A5_%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D
QgisInterface 클래스의 구조는 아래 글을 참조하시기 바랍니다.
http://qgis.org/api/2.6/classQgisInterface.html
이번에는 layer 객체가 가지고 있는 속성(attribute)을 살펴보도록 하겠습니다.
dir(layer)
https://docs.python.org/2.7/library/functions.html?highlight=dir#dir
dir()은 파이썬에서 import 명령 없이 바로 사용할 수 있는 내장 함수(Builit-in Function)입니다.
참고로, 파이썬 2.7 버전의 내장 함수 목록은 아래와 같습니다.
https://docs.python.org/2/library/functions.html
앞서 소개드린 코딩 2줄을 실행한 결과입니다.
현재 선택된 레이어를 layer로 지정하고, layer의 속성 목록을 살펴봤습니다.
이번에는 벡터 레이어의 각 포인트 피처들을 반복문을 통해 접근해 보도록 하겠습니다.
파이썬의 for문과 print함수를 이용하는데요, 결과는 아래와 같습니다.
파이썬 for문
https://docs.python.org/2/tutorial/controlflow.html
파이썬 print 함수
https://docs.python.org/2/whatsnew/2.6.html#pep-3105-print-as-a-function
getFeatures는 QgsVectorLayer 클래스의 함수입니다.
http://qgis.org/api/classQgsVectorLayer.html
이제 벡터 레이어의 각 피처에 접근할 수 있게 되었는데요,
이번에는 각 피처의 속성에서 특정 필드값들을 조회해 보도록 하겠습니다.
문화자원 벅터 레이어 중 자원명(KOR_NM)과 지구명(DSTRC_NM) 필드를 출력해 보겠습니다.
아래와 같이 print 함수를 변경하여 원하는 필드값을 출력하였습니다.
이번에는 좌표값을 출력해 보도록 하겠습니다.
위도, 경도 중 하나만 적용하는 방법은 아래와 같습니다. 간단하죠?!
'콘솔 지우기' 버튼을 누르고,
이번에는 필드값과 좌표값을 한 번에 출력해 보도록 하겠습니다.
앞서 조회된 결과를 파이썬 내장 함수 open을 이용하여 별도 txt 파일로 추출해 보겠습니다.
파이썬의 인코딩(encoding)과 관련해서는 아래 글을 참조하시기 바랍니다.
https://docs.python.org/2/library/codecs.html#codecs.IncrementalEncoder
텍스트 파일을 열어본 결과입니다.