🖥️ IT, 컴퓨터/🐍 Python

[Python] PyQGIS란? :: QGIS를 자동화하는 파이썬 도구

김 홍시 2025. 3. 27.
반응형

 


PyQGIS란? QGIS를 자동화하는 강력한 파이썬 도구!

QGIS와 PyQGIS의 차이점

QGIS는 오픈소스 GIS 프로그램으로, 누구나 무료로 공간 데이터를 시각화하고 분석할 수 있는 툴입니다. 하지만 반복 작업이 많거나 복잡한 처리가 필요할 경우, 단순 클릭으로는 한계가 있습니다.

여기서 등장하는 것이 바로 PyQGIS입니다.
**PyQGIS(Python + QGIS)**는 QGIS의 기능을 파이썬 코드로 제어할 수 있도록 해주는 API입니다. 즉, QGIS를 자동화하고, 반복 작업을 효율적으로 처리할 수 있게 해줍니다.


PyQGIS 설치 방법

QGIS에서 기본 내장

QGIS를 설치하면 PyQGIS도 함께 설치됩니다. 별도의 설치 과정 없이 QGIS의 Python Console을 열거나 Processing Toolbox > Scripts를 통해 바로 사용할 수 있습니다.

외부 IDE에서도 사용하려면?

PyCharm, VSCode 등 외부 IDE에서도 PyQGIS를 사용하려면 환경 세팅이 필요합니다.
예시 (Windows 기준):

set PYTHONPATH=C:\Program Files\QGIS 3.28\apps\qgis\python
set PATH=C:\Program Files\QGIS 3.28\bin;%PATH%

PyQGIS 기본 코드 예제

레이어 불러오기

layer = QgsVectorLayer("C:/data/seoul_gu.shp", "서울 자치구", "ogr")
if layer.isValid():
    QgsProject.instance().addMapLayer(layer)

속성값 필터링

exp = QgsExpression("\"gu_name\" = '강남구'")
request = QgsFeatureRequest(exp)
for feature in layer.getFeatures(request):
    print(feature["gu_name"])

공간 필터링 (예: 특정 폴리곤 내부 포인트 추출)

polygon = [f for f in polygon_layer.getFeatures()][0]
for point in point_layer.getFeatures():
    if polygon.geometry().contains(point.geometry()):
        print(point.id())

PyQGIS를 활용한 자동화 예시

  • 대량의 shp 파일을 한 번에 불러오고 병합하기
  • 필드 계산기 기능을 파이썬으로 자동 실행하기
  • 공간 조인, 클립, 버퍼 등의 공간 분석 작업을 자동화
  • 반복적인 지도 스타일 적용

PyQGIS를 배워야 하는 이유

  1. 반복 업무의 자동화
    예: 100개의 레이어를 하나씩 처리하는 대신, 10줄의 코드로 해결
  2. 데이터 처리 속도 향상
    GUI 클릭보다 코드 실행이 훨씬 빠름
  3. QGIS 플러그인 개발의 기반
    PyQGIS는 QGIS 플러그인 개발의 핵심 언어입니다
  4. 다른 파이썬 라이브러리와 연동 가능
    pandas, geopandas, matplotlib 등과 함께 쓰면 분석력 극대화

PyQGIS 학습 팁 & 추천 자료

  • 공식 문서: PyQGIS Developer Cookbook
  • PyQGIS 관련 GitHub 예제
  • QGIS 커뮤니티 포럼 및 Reddit
  • 나의 블로그에서 다룰 예정인 실전 예제 시리즈

마무리: PyQGIS로 GIS 업무 효율 극대화하자!

PyQGIS는 공간 데이터를 다루는 누구에게나 필수적인 도구입니다. 특히 GIS 분석가, 도시계획 전문가, 공간 빅데이터 분석가라면 꼭 익혀야 할 무기입니다.


주요 키워드 정리

  • PyQGIS
  • QGIS 자동화
  • PyQGIS 예제
  • PyQGIS 설치 방법
  • QGIS Python 콘솔
  • QGIS 파이썬 자동화
  • 공간 분석 자동화
  • QGIS 플러그인 개발

 

 

 

 

반응형

댓글