소개

이 문서는 튜토리얼과 레퍼런스 가이드를 겸하고 있습니다. 모든 사용 사례를 목록에 포함시킬 수는 없지만 이 문서는 주요 기능들의 좋은 개요를 제공할 것입니다.

QGIS는 0.9 릴리즈 버전부터 파이썬 언어를 이용하여 스크립팅을 지원합니다. 스크립팅을 위해 가장 인기있는 언어들 중 하나인 파이썬을 결정하였습니다. PyQGIS 바인딩은 SIP와 PyQt4에 의존하고 있습니다. 보다 광범위하게 사용되는 SWIG 대신 SIP을 이용한 이유는 QGIS 코드가 Qt 라이브러리에 의존적이기 때문입니다. Qt (Pyqt)를 위한 파이썬 바인딩도 SIP가 사용되고 있어, PyQt와 함께 PyQGIS를 완벽하게 통합하고 있습니다.

TODO:
Getting PyQGIS to work (Manual compilation, Troubleshooting)

QGIS 파이썬 바인딩을 이용하기 위한 여러가지 방법은 다음의 섹션에서 상세하게 다룹니다.

  • QGIS에 포함된 파이썬 콘솔의 명령어 다루기

  • 파이썬에서 플러그인 생성과 사용

  • QGIS API 기반의 사용자 정의 응용프로그램 생성

QGIS 라이브러이의 클래스는 complete QGIS API reference 에 문서화되어 있습니다. 파이썬 QGIS API는 C++의 API와 거의 동일합니다.

There are some resources about programming with PyQGIS on QGIS blog. See QGIS tutorial ported to Python for some examples of simple 3rd party apps. A good resource when dealing with plugins is to download some plugins from plugin repository and examine their code. Also, the python/plugins/ folder in your QGIS installation contains some plugin that you can use to learn how to develop such plugin and how to perform some of the most common tasks

파이썬 콘솔

스크립트를 처리하는데 있어서 통합된 파이썬 콘솔에서 많은 이점을 얻을 수 있습니다. 파이썬 콘솔은 Plugins ‣ Python Console 메뉴에서 열 수 있습니다. 콘솔은 모달리스 유틸리티 창으로 열립니다:

../../_images/console.png

QGIS 파이썬 콘솔

위의 스크린샷은 레이어 목록에서 현재 선택된 레이어를 어떻게 가져오고 레이어의 ID를 어떻게 표시하는 지를 보여줍니다. 레이어가 벡터 레이어이면 피쳐의 수를 보여줍니다. QGIS 환경과 상호작용하기 위한 QgsInterface 인스턴스인 iface 변수가 있습니다. 이 인터페이스는 맵 캔버스, 메뉴, 툴바, QGIS 응용프로그램의 다른 부분들에 접근하는 것을 가능하게 합니다.

For convenience of the user, the following statements are executed when the console is started (in future it will be possible to set further initial commands)

from qgis.core import *
import qgis.utils

이 콘솔을 자주 이용한다면 단축키를 설정하는 것이 유용할 것입니다 (:menuselection:`Settings –> Configure shortcuts... 메뉴에서 설정할 수 있습니다)

파이썬 플러그인

QGIS는 플러그인을 이용하여 기능을 확장시킬 수 있습니다. 원래는 C++ 언어만 가능했습니다. QGIS에서 파이썬을 추가적으로 지원하면서 파이썬으로 작성된 플러그인 이용이 가능하게 되었습니다. C++ 플러그인 보다 파이썬 플러그인의 장점은 (플랫폼 별 컴파일 없이) 간단하게 배포하고 쉽게 개발할 수 있다는 점입니다.

파이썬 지원이 소개된 이후에 다양한 기능을 포함하는 많은 플러그인이 작성되었습니다. 플러그인 인스톨러는 사용자가 수월하게 파이썬 플러그인을 다운로드, 업그레이드, 삭제할 수 있도록 해줍니다. 다양한 플러그인 소스는 Python Plugin Repositories 페이지를 보십시오.

파이썬에서 플러그인을 생성하는 것 매우 간단합니다. 자세한 내용은 Developing Python Plugins 를 보십시오.

파이썬 응용프로그램

종종 동일한 작업을 반적으로 수행하는 대신 작업과정을 자동화하는 약간의 스크립트를 작성하면 편리할 겁니다. PyQGIS를 이용하여 이 작업을 완벽하게 수행할 수 있습니다. qgis.cor 모듈을 임포트하면 초기화가 이루어지고 처리하기 위한 준비가 완료됩니다.

또는 일부 GIS 기능 -일부 데이터의 측정, PDF로 지도 내보내기 또는 다른 기능 등-을 사용하는 대화형 응용프로그램을 만들고 싶을 수 있습니다. The qgis.gui module additionally brings various GUI components, most notably the map canvas widget that can be very easily incorporated into the application with support for zooming, panning and/or any further custom map tools.

사용자 정의 응용프로그램에서 PyQGIS 이용하기

주의: qgis.py 를 테스트 스크립트의 이름으로 *사용하지 마십시오 *. Python will not be able to import the bindings as the script’s name will shadow them.

First of all you have to import qgis module, set QGIS path where to search for resources — database of projections, providers etc. When you set prefix path with second argument set as True, QGIS will initialize all paths with standard dir under the prefix directory. Calling initQgis() function is important to let QGIS search for the available providers.

from qgis.core import *

# supply path to where is your qgis installed
QgsApplication.setPrefixPath("/path/to/qgis/installation", True)

# load providers
QgsApplication.initQgis()

Now you can work with QGIS API — load layers and do some processing or fire up a GUI with a map canvas. The possibilities are endless :-)

When you are done with using QGIS library, call exitQgis() to make sure that everything is cleaned up (e.g. clear map layer registry and delete layers):

QgsApplication.exitQgis()

사용자 정의 응용프로그램 실행하기

You will need to tell your system where to search for QGIS libraries and appropriate Python modules if they are not in a well-known location — otherwise Python will complain:

>>> import qgis.core
ImportError: No module named qgis.core

This can be fixed by setting the PYTHONPATH environment variable. In the following commands, qgispath should be replaced with your actual QGIS installation path:

  • 리눅스에서는: export PYTHONPATH=/qgispath/share/qgis/python

  • 윈도우즈에서는: set PYTHONPATH=c:\qgispath\python

The path to the PyQGIS modules is now known, however they depend on qgis_core and qgis_gui libraries (the Python modules serve only as wrappers). Path to these libraries is typically unknown for the operating system, so you get an import error again (the message might vary depending on the system):

>>> import qgis.core
ImportError: libqgis_core.so.1.5.0: cannot open shared object file: No such file or directory

이 문제를 해결하려면 QGIS 라이브러리가 있는 디렉토리를 동적 링커의 경로에 추가하십시오.

  • 리눅스에서는: export LD_LIBRARY_PATH=/qgispath/lib

  • 윈도우즈에서는: set PATH=C:\qgispath;%PATH%

이러한 명령어는 스타트업을 처리하는 부트스트랩 스크립트에 넣어 둘 수 있습니다. PyQGIS를 이용하는 사용자 정의 응용프로그램을 배포할 때 대게 두 가지 방법이 가능합니다.

  • 응용프로그램을 설치하기 전에 사용자에게 사용자의 플랫폼에 맞는 QGIS 설치를 요구하는 방법입니다. 응용프로그램 인스톨러는 QGIS 라이브러리의 기본 위치를 찾아야 되지만, 만약 디폴트 위치가 없다면 사용자에게 경로를 설정하도록 해야 합니다 ?????. 이 방법은 간단하다는 장점이 있지만, 사용자에게 더 많은 과정을 하도록 요구합니다.

  • 응용프로그램과 함께 QGIS를 패키지하는 방법입니다. 응용프로그램을 릴리즈 하는데 많은 노력이 필요하고 패키지가 커지게 될 겁니다. 그러나 사용자는 추가적으로 소프트웨어를 다운로드하고 설치하는 부담이 줄어 들게 될 겁니다.

이 두 배포 모델을 결합시킬 수 있습니다. 윈도우와 Mac OS X에서는 독립형 응용프로그램dmfh 배포합니다. 리눅스에서는 QGIS 설치를 사용자와 패키지 관리자에게 맡깁니다.