노는게 제일 좋습니다.

QGIS 벡터레이어 : 도형 생성/병합/분리 본문

그 외

QGIS 벡터레이어 : 도형 생성/병합/분리

노는게 제일 좋습니다. 2021. 4. 2. 00:34

참고 : bis-gis라는 사이트의 QGIS게시판이 거의 유일한 한국 커뮤니티인 것 같다. 우선 QGIS에서 제공하는 문서를 모두 살펴보고, 해결이 안되거나 짬바가 필요한 경우는 bis-gis를 살펴보자. 여기서 해결이 안되면 스택익스체인지 같은 곳을 찾아나서자. 

 

pyqgis 개발자 쿡북 docs.qgis.org/3.16/en/docs/pyqgis_developer_cookbook/intro.html

pyqgis API qgis.org/pyqgis/3.0/index.html

 

목차

목적과 개요

레이어 편집과 도형그리기

도형 병합

멀티파트를 싱글파트로

멀티파트 스플릿 플러그인

 

 

목적과 개요


이미 도형/레이어 병합을 거쳐 완성되어있는 shp확장자의 벡터레이어가 있다. QGIS상에서 병합을 모두 풀어 실제 '도형'의 숫자를 세고 싶다. QGIS GUI로 먼저 해결하며 과정을 살펴보고, 이를 pyqgis 스크립트로  간단하게 레이어 내 도형의 숫자를 세어보고자 한다.

 

QGIS 백터 레이어 위에 도형(Geometry)을 그릴 수 있다. 이 때,

  • 기본적으로 한 개 도형은 한 개의 객체(Object)로 세어진다.
  • 여러 도형들을 '도형 병합(merge)'기능을 사용해 하나의 객체로 묶어낼 수 있다.
  • 도형 병합되어 상황에 따라 여러 레이어로 나뉠 수도 있는데, 이 레이어들을 병합할 수도 있다.

반대 과정의 작업도 QGIS툴을 이용하면 할 수 있다.

 

레이어 편집과 도형그리기


(좌) 편집모드 전환 과정 / (우) 편집모드가 적용된 레이어

레이어에 무언가 변화를 가하려면 현재 그 레이어가 '편집 모드'여야 한다. 편집모드로 진입하려면 아래 과정을 따른다.

해당 레이어 [우클릭] - [편집 모드 전환]

전환된 뒤에는 레이어 이름 왼쪽에 연필같은 그림이 나타난다. 뷰어로 돌아가려면 같은 방법으로 토글할 수 있다.

 

그 다음 상단 메뉴의 [편집]을 펼쳐보면 폴리곤/원/직사각형/정다각형/타원 항목이 활성화되어있음을 확인할 수 있다.

폴리곤이든 원이든 원하는 영역이 잘 지정되었으면, [마우스 우클릭]-[엔터]를 통해서 도형을 레이어에 얹을 수 있다.

도형 그리기를 취소하고자 할 때에는, [편집]-[선택]-[객체(들) 선택]을 하면 선택모드로 전환되며 문제가 해결된다.

 

도형 병합


병합 과정
병합이 완료된 도형. 영역이 겹친다면 서로를 구분짓던 선이 사라진다.

  병합할 도형을 선택하고 [편집]=[선택한 객체 병합]으로 병합할 수 있다. 이제 사진에서 선택된 4개의 원은 마치 하나의 도형처럼 동작한다. 객체로는 1개로 센다.

  현재 상태의 도형을 'multipart 도형'이라고 한다. 원래 따로따로 존재하던 도형은 'single part 도형'이라고 한다.

 

멀티파트 스플릿


4개의 원이 하나의 객체로 묶였고, 이 중에서 오른쪽 2개의 원은 아예 하나의 싱글파트가 되어버렸다. 이 상황에서 3개의 싱글파트로 분리하고자 한다.

상단의 [툴박스]-[벡터도형]-[다중부분을 단일부분으로]를 통해 3개의 싱글파트로 분리해낼 수 있다. 조랭이떡처럼 붙어버린 저건.. 이 방법으로는 답이없다.

 

멀티파트 스플릿 플러그인


  매번 툴박스를 까서 레이어를 만들고, 본래 레이어와 병합하는 과정을 거치기에는 너무 번거롭다. 해당 레이어에서 직접 멀티파트를 스플릿할 수 있는 스크립트가 있으면 좋겠다. 직접짜긴 귀찮으므로 이미 잘 쓰이고있는 플러그인을 이용한다.

 

위와 같은 과정을 통해 multipart split 플러그인을 설치한다. 설치하고 나면 상단의 [편집] 메뉴 아래에 'Split Feature(s) Parts'가 추가된다.

 

스플릿하고자 하는 multi part 도형을 선택하고, 해당 플러그인을 동작시키면 해당 레이어에 직접 single part 도형들을 그린다. 기존의 multi part 도형은 사라진다.

Comments