swimminginthecode DIVE!

ETC/PyQGIS

PyQGIS 02

dazz6 2025. 2. 10. 18:00

2. processAlgorithm

알고리즘의 핵심 로직을 처리하는 함수

 

processing.run()을 사용하여 QGIS 툴을 실행한다.

 def processAlgorithm(self, parameters, context, feedback):

 

각각의 인자들은 processAlgorithm(self, 사용자 입력 값들의 딕셔너리, QGIS 실행 환경 정보, 상태 메시지 등의 기능) 의 역할을 한다.

 

result = processing.run("qgis:linestopolygons", {
                    'INPUT': layer,
                    'OUTPUT': 'memory:'
                }, context=context, feedback=feedback)

 

위처럼 processing.run으로 QGIS가 제공하는 작업을 실행하고, 결과값을 변수(result)에 저장할 수 있다.

위 예제는 layer 레이어를 입력하여 linestopolygons (라인을 폴리곤으로) 작업을 실행한 뒤 메모리 레이어로 저장한다.

어떤 작업을 실행할지는 알고리즘 ID*를 기재하여 설정할 수 있다.

 

feedback.pushInfo(f"{layer.name()} 변환 완료")

 

위처럼 메시지를 출력할 수 있는데, JavaScript의 console.log()처럼 사용하면 된다.

 

* 대표적인 PyQGIS 공간 처리 알고리즘

1. 벡터 지오메트리 변환

알고리즘 ID 설명
qgis:linestopolygons 라인을 폴리곤으로 변환
qgis:polygonstolines 폴리곤을 라인으로 변환
qgis:linestringstomultilinestring 라인을 멀티라인으로 변환
qgis:multiparttosingleparts 멀티파트 피처를 싱글파트로 변환
qgis:singleparttomultipart 싱글파트 피처를 멀티파트로 변환

 

2. 공간 연산 및 분석

알고리즘 ID 설명
qgis:buffer 버퍼 생성
qgis:clip 특정 영역으로 클리핑
qgis:intersection 교차 영역 추출
qgis:difference 차집합(대칭 빼기)
qgis:union 유니온 연산(합집합)
qgis:eliminate 작은 폴리곤 제거(일정 기준 이하 면적 삭제)

 

 

3. 속성 테이블 관련

알고리즘 ID 설명
qgis:joinbyattributes 속성값을 기준으로 레이어 결합
qgis:joinbylocation 공간 위치를 기준으로 레이어 결합
qgis:addfieldtoattributetable 새로운 필드 추가
qgis:calculatefield 특정 필드 값 계산

 

4. 좌표 변환 및 투영

알고리즘 ID 설명
qgis:reprojectlayer 레이어의 좌표계를 변환
qgis:definecurrentprojection 현재 투영법을 설정
qgis:transform 좌표 변환(프로젝션 변경)


다른 알고리즘 ID는 QGIS 공식 문서에 정리되어 있다.

 

 

'ETC > PyQGIS' 카테고리의 다른 글

PyQGIS 04  (0) 2025.02.12
PyQGIS 03  (0) 2025.02.11
PyQGIS 01  (0) 2025.02.07
PyQGIS란?  (2) 2025.02.06