공간 분석/공간 분석 기초

QGIS Python으로 Clip 자동화하기

Data Jun 2026. 2. 28. 16:52

QGIS에서 Clip(클립) 분석은
한 레이어를 다른 레이어의 범위로 잘라내는 공간 연산입니다.

 

이번 예시는 Python 콘솔을 활용해

  • Clip 자동 실행
  • 메모리 레이어 출력
  • 벡터 레이어 객체 생성

까지 수행한 사례입니다.

 

1. 작업 개요

현재 구조는 다음과 같습니다.

  • INPUT: 원형(circles) 레이어
  • OVERLAY: 1000m 격자(grid) 레이어
  • OUTPUT: 격자 영역 안에 포함된 결과

즉,
격자 범위에 해당하는 원형 객체만 남긴 작업입니다.

 

실행 화면 예시

2. Clip 실행 코드 구조

# buffer
import processing
import os
import time

# 실행 시간 확인 
start = time.time()

# 인풋 경로
shpPath_input = r'C:\Users\wnsgu\Downloads\강의자료_ver.2\Section.01&03\SHP\02.clip&intersect\circles.shp'
shpPath_overlay = r'C:\Users\wnsgu\Downloads\강의자료_ver.2\Section.01&03\SHP\02.clip&intersect\grid_1000m.shp'

# 일시 산출물
output_clip = 'memory:output_clip'

# 클립 파라미터
clipParams = {'INPUT':shpPath_input, 'OVERLAY': shpPath_overlay, 'OUTPUT': output_clip}

# 클립 실행
clip = processing.run('native:clip', clipParams)

# 클립 결과 추가 및 완료 메시지
layer_grid=QgsVectorLayer(shpPath_overlay, 'grid')
QgsProject.instance().addMapLayer(layer_grid)
layer_circle=QgsVectorLayer(shpPath_input, 'circles')
QgsProject.instance().addMapLayer(layer_circle)
QgsProject.instance().addMapLayer(clip['OUTPUT'])
print('클립 완료 :', time.time()-start)

INPUT → 잘릴 대상

OVERLAY → 자르는 기준

OUTPUT → 결과 저장 위치

 

3. 일시 산출물 설정

output_clip = 'memory:output_clip'

여기서 'memory:'는

  • 디스크에 저장하지 않음
  • RAM에만 생성
  • QGIS 종료 시 삭제

즉, 테스트용 임시 결과 레이어입니다.

분석 반복 과정에서는 매우 효율적입니다.

 

4. QgsVectorLayer 코드 의미

layer_grid = QgsVectorLayer(shpPath_overlay, 'grid')

이 코드는

  • shp 파일을
  • 'grid'라는 이름으로
  • 벡터 레이어 객체로 불러오는 역할을 합니다.

파일을 단순 경로로 쓰는 것이 아니라
QGIS 내부에서 사용할 수 있는 레이어 객체로 변환하는 과정입니다.

이후

QgsProject.instance().addMapLayer(layer_grid)

로 지도에 추가됩니다.

 

5. 정리

 

  • memory:는 임시 결과 저장 방식
  • QgsVectorLayer()는 파일을 백터 레이어 객체로 생성
  • native:clip은 공간 자르기 기본 연산
  • addMapLayer()는 결과를 화면에 표시

QGIS Python 콘솔에서 native:clip을 활용하면 격자 기준 공간 자르기를 자동화할 수 있으며, 'memory:' 출력과 QgsVectorLayer()는 임시 분석과 레이어 객체 생성의 핵심 요소입니다.