GIS

QGIS 2.18: AW3D30 데이터셋을 이용한 구역 통계(zonal statistics)

유병혁 2018. 4. 27. 01:12

QGIS 2.18에서 구역 통계(zonal statistics)를 계산하는 방법을 학습해 보도록 하겠습니다.


실습에 사용할 데이터셋은 서울지역을 포함한 AW3D30 수치표면모델(DSM) 래스터입니다.

관련 글: 전세계 30m급 수치표면모델(DSM) 'AW3D30' 다운로드 소개(http://blog.daum.net/geoscience/1232)


먼저, 아래 래스터 2장을 하나로 병합하겠습니다.


상단 메뉴에서 '래스터 > 기타 사항 > 병합'을 클릭하고,


결합 창에서 입력 파일으로 아래 2개 래스터를 지정해 줍니다.

  • D:\SEOUL-QGIS\N037E126\N037E126_AVE_DSM.tif
  • D:\SEOUL-QGIS\N037E127\N037E127_AVE_DSM.tif


2개 래스터가 서로 다른 폴더에 위치할 때는 아래와 같이 콤마(,)로 연결해주시면 됩니다.

D:\SEOUL-QGIS\N037E126\N037E126_AVE_DSM.tif,D:\SEOUL-QGIS\N037E127\N037E127_AVE_DSM.tif


출력 파일은 아래와 같이 지정하고 실행해 보겠습니다.

  • D:/SEOUL-QGIS/DSM_MERGE.tif


아래와 같이 2개 래스터로 하나로 병합되었습니다.


이번에는 래스터의 구역 통계를 계산하기 위한 벡터 레이어를 확보해 보겠습니다.

서울열린데이터광장(http://data.seoul.go.kr/)에 접속하여 '법정구역 공간정보'를 검색합니다.


지리좌표계와 투영좌표계로 구분된 2개의 데이터셋이 제공되는데요, '서울시 법정구역 읍면동 공간정보 (좌표계: WGS1984) > MAP'을 선택하겠습니다.


Map 컬럼에서 'SHP 파일목록' 다운로드 버튼을 클릭합니다.


다운로드 받은 파일의 압축을 해제하면 아래와 같습니다.


'벡터 레이어 추가'를 통해 해당 레이어를 추가하였습니다. 이제 읍면동별 구역 통계를 계산해볼까요?!


상단 메뉴의 '래스터 > 구역 통계 > 구역 통계'를 선택합니다.


해당 메뉴가 안 보이시면 '플러그인 > 플러그인 관리 및 설치'에서,


'설치됨' 탭을 선택하시고 '구역 통계 플러그인'을 체크해주시면 됩니다.


자, 이제 구역 통계 창을 실행하고 아래와 같이 선택해 줍니다.

계산할 통계(Statistics to calculate)는 Mean, 중앙값(Median), 최소값, 최대값을 체크해 보겠습니다.


다음과 같이 읍면동 폴리곤의 속성 테이블에 'DSM_'로 시작하는 2개 컬럼이 추가되었습니다. 간단하죠?!


레이어 속성의 스타일을 통해 DSM 최대값을 가시화 해보겠습니다. 먼저 컬럼을 지정하고 히스토그램 탭에서 분포를 확인해 봅니다.


히스토그램을 고려하여 적절한 모드로 클래스를 분류합니다. 여기서는 내추럴 브레이크 (Jenks)를 적용하였습니다.


아래와 같이 읍면동별 수치표면고도 최대값에 대한 스타일을 적용하였습니다.


이번에는 읍면동 단위가 아닌 6각형(Hexagon) 단위로 구역 통계를 구해보겠습니다.

이를 위해 '플러그인 > 플러그인 관리 및 설치'에서 mmqgis를 검색하고 설치합니다.


상단 메뉴에서 'MMQGIS > Create > Create Grid Layer'를 선택합니다.


Shape Type에서 Hexagons을 선택하고 Extent는 읍면동 폴리곤을 지정합니다. 결과를 한 번 볼까요?!


아래와 같이 읍면동 폴리곤 영역에 맞게 6각형 격자가 생성되었습니다.


이번에는 DSM 래스터를 읍면동 폴리곤 기준으로 클리핑해 보겠습니다.

상단 메뉴에서 '공간처리 > 툴박스'를 클릭하고,


공간처리 툴박스에서 해당 기능을 의미하는 'clip' 키워드를 검색합니다.

QGIS에서 지원되는 GDAL/OGR, GQIS geoalgorithms, SAGA 기능들이 표시됩니다.


저는 여기서 'GDAL/OGR > Extraction > Clip raster by mask layer'를 선택하겠습니다.


입력 레이어는 DSM 데이터셋을, 마스크 레이어는 읍면동 폴리곤을 지정합니다.

이 때 No Data 값은 nodata를 입력하고 Crop the extent of the target dataset to the extent of the cutline을 체크해 줍니다.


아래와 같이 DSM 데이터셋이 읍면동 폴리곤으로 깨끗하게 잘려졌습니다.

이제 이 서울시 DSM 데이터셋과 6각형 폴리곤의 구역 통계를 계산해 보겠습니다.


이번에는 Mean과 표준편차를 체크하겠습니다.


6각형 폴리곤의 속성 테이블은 아래와 같습니다. 서울시 외 지역의 6각형 구역 통계는 값이 비어 있습니다.


앞서 읍면동 폴리곤과 마찬가지로 스타일을 적용해 보겠습니다.


결과는 아래와 같습니다. 같은 구역 통계라도 기준 폴리곤에 따라 다양한 표현이 가능합니다.