17.15. 래스터 레이어 자르기 및 합치기

주석

이 강의에서는 계속 실재 세상의 시나리오 안에서 지리 알고리듬을 사용해서 공간 데이터를 준비하는 또다른 예제를 풀어볼 것입니다.

이 강의에서는, 단일 폴리곤으로 이루어진 벡터 레이어로부터 도시 지역을 둘러싼 영역의 경사도 레이어를 계산해보겠습니다. 기본 DEM은 래스터 레이어 두 개로 나뉘어져 있습니다. 이 두 레이어를 함께 표출해야만 우리가 작업하고자 하는 도시 주변 영역보다 더 넓은 영역을 커버하게 됩니다. 이 강의에 해당하는 프로젝트를 열어보면, 다음과 같은 화면을 보게 될 것입니다.

../../../_images/medfordarea.png

이 레이어들은 두 가지 문제점을 가지고 있습니다.

  • 우리가 원하는 것보다 (우리의 관심 지역은 도심을 둘러싼 좁은 영역입니다) 너무 넓은 지역을 커버하고 있습니다.

  • 서로 다른 파일 두 개로 되어 있습니다. (도시의 범위는 래스터 레이어 가운데 하나에 들어가지만, 앞에서 언급했듯이 더 넓은 범위를 원합니다.)

적합한 알고리듬을 사용한다면 두 문제점 모두 쉽게 해결할 수 있습니다.

먼저, 우리가 원하는 영역을 정의하는 사각형을 생성하십시오. 이를 위해 도시 지역의 경계를 나타내는 경계 범위(bounding box)를 담고 있는 레이어를 생성하고, 꼭 필요한 것보다 조금 더 넓은 영역을 커버하는 래스터 레이어를 얻기 위한 버퍼를 부여하십시오.

경계 범위를 계산하는 데 Polygon from layer extent 알고리듬을 사용할 수 있습니다.

../../../_images/bbox.png

버퍼를 부여하려면 Fixed distance buffer 알고리듬을 실행하고 다음과 같이 파라미터 값을 설정하십시오.

../../../_images/buffer_dialog.png

이 파라미터 값을 통해 다음과 같은 경계 범위 결과물을 얻을 수 있습니다.

../../../_images/buffer1.png

모서리가 둥근 사각형이지만, 이 레이어에 Polygon from layer extent 알고리듬을 실행해서 동등한 직각 사각형 경계 범위를 쉽게 얻을 수 있습니다. 먼저 도시 범위에 버퍼를 부여한 다음 범위 사각형을 계산해서 한 단계를 생략할 수도 있습니다.

../../../_images/buffer_squared.png

래스터와 벡터의 투영체가 다르다는 사실을 알 수 있을 것입니다. 따라서 다음 단계를 진행하기 전에 Warp (reproject) 도구를 이용, 재투영해야 합니다.

../../../_images/warp1.png

우리가 얻고자 하는 래스터 레이어의 경계 범위를 담고 있는 레이어를 써서 두 래스터 레이어를 잘라낼 수 있습니다. Clip Grid with Polygons algorithm 을 이용하십시오.

../../../_images/clip1.png

레이어를 잘라낸 다음, Merge raster layers 알고리듬을 써서 두 레이어를 합칠 수 있습니다.

../../../_images/merge1.png

합쳐진 레이어를 위한 셀 크기가 필요합니다. 입력 레이어와 동일한 셀 크기를 사용하겠습니다. 알고리듬을 호출하기 전에 셀 크기를 알아야 할 필요는 없습니다. Cell Size 텍스트 란 오른쪽에 있는 버튼을 클릭하면 간단한 수학 공식을 입력하거나, 자주 사용하는 값의 목록, 그리고 사용 가능한 모든 레이어들의 셀 크기 및 범위 좌표를 선택할 수 있는 대화 창이 뜰 것입니다.

주석 : 합치기를 먼저 하고 자르기를 하면 클리핑 알고리듬을 두 번 호출할 필요가 없어 시간을 절약할 수 있습니다. 하지만 합쳐야 할 레이어가 두 개 이상인데 용량이 큰 편일 경우, 합치기를 먼저 하면 나중에 처리하기 어려워질 수가 있습니다. 이런 경우 클리핑 알고리듬을 몇 번 호출해야만 해서 시간이 걸릴 수도 있지만, 곧 이런 작업을 자동화할 수 있는 추가 도구들을 소개할 것이므로 걱정하지 마십시오. 이 예제에서는 레이어 두 개뿐이므로 이런 상황에 대해 걱정할 필요는 없습니다.

합치기 작업으로 결국 원하는 DEM을 얻게 되었습니다.

../../../_images/finaldem.png

이제 경사도 레이어를 계산할 시간입니다.

Slope, Aspect, Curvature 알고리듬으로 경사도 레이어를 계산할 수 있지만, 이 마지막 단계에서 얻은 DEM의 표고 값은 미터 단위인데 셀 크기가 미터 단위가 아니기 때문에 (해당 레이어는 지리 좌표를 쓰는 CRS를 사용합니다) 입력 레이어로 적합하지 않습니다. 즉 재투영해야 합니다. 래스터 레이어를 재투영하는데에도 Warp (reproject) 알고리듬을 쓸 수 있습니다. SAGA 또는 GDAL을 통해 미터 단위를 쓰는 (3857 같은) CRS로 재투영해서 경사를 정확하게 계산할 수 있습니다.

다음이 재투영된 DEM입니다.

../../../_images/warpeddem.png

이 새 DEM을 써서 경사를 계산할 수 있습니다.

../../../_images/slope.png

다음이 결과물인 경사도 레이어입니다.

../../../_images/slopereproj.png

Slope, Aspect, Curvature 알고리듬이 생산한 경사는 라디안 단위로 되어 있습니다. 그러나 도 단위가 더 실용적이고 자주 쓰입니다. Metric conversions 알고리듬으로 단위를 변환할 수 있습니다. (다만 이 알고리듬의 존재를 모를 경우, 이전에 사용했던 래스터 계산기를 사용하면 됩니다.)

../../../_images/metricconversions.png

이렇게 변환한 경사도 레이어를 :guilabel:`Reproject raster layer`를 써서 다시 원래대로 재투영하면, 우리가 원했던 최종 레이어를 얻게 됩니다.

경고

할 일 : 이미지 추가

재투영 과정에서 최종 레이어가 초기 단계에서 계산했던 경계 범위 바깥의 값을 가지게 됩니다. 기본 DEM을 얻기 위해 했던 것과 동일한 방법으로 다시 클리핑하면 이 문제를 해결할 수 있습니다.