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 공식 문서에 정리되어 있다.