17.23. 알고리듬 반복 실행

주석

이 강의에서는 입력 벡터 레이어에 있는 피처에 대해 반복적으로 실행해서, 벡터 레이어를 사용하는 알고리듬을 실행하는 다른 방법에 대해 설명합니다.

우리는 공간처리 작업을 자동화 하는 방법 가운데 하나인 그래프 모델 작성자에 대해 벌써 알고 있습니다. 하지만 어떤 상황에서는 모델 작성자가 주어진 작업을 자동화하는 데 필요한 도구가 아닐 수도 있습니다. 그런 상황 가운데 하나를 살펴보고, 다른 기능을 이용해 해당 상황을 쉽게 해결할 수 있는 방법을 배워보겠습니다. 바로 알고리듬의 반복 실행입니다.

이 강의에 해당하는 데이터를 불러오십시오. 다음과 같이 보일 것입니다.

../../../_images/project1.png

이전 강의들에서 사용했던 DEM 및 해당 DEM에서 추출한 유역들의 집합인 것을 알 수 있습니다.이 DEM을 각 레이어가 한 유역에 상응하는 표고 데이터만 담고 있는 몇 개의 작은 레이어들로 잘라야 한다고 가정합시다. 향후 평균 표고 또는 고도분포 곡선(hypsographic curve)과 같은 각 유역과 관련된 어떤 파라미터를 계산하고자 할 때 유용할 것입니다.

이 작업은, 특히 유역의 개수가 많을 경우, 시간도 오래 걸리고 따분한 일이 될 수도 있습니다. 하지만 곧 설명할 바와 같이, 이 작업을 쉽게 자동화할 수 있습니다.

The algorithm to use for clipping a raster layer with a polygon layer is called Clip grid with polygons, and has the following parameters dialog.

../../../_images/clip3.png

유역 레이어와 DEM을 입력물로 써서 실행하면, 다음과 같은 결과를 얻게 됩니다.

../../../_images/full_clip.png

모든 유역 폴리곤이 커버하는 영역을 클리핑한 것을 볼 수 있습니다.

원하는 유역을 선택한 다음 방금처럼 알고리듬을 실행하면 DEM에서 유역 하나만 클리핑할 수 있습니다.

../../../_images/selection.png

선택한 피처만 사용하므로, 래스터 레이어에서 선택한 폴리곤의 영역만 잘라낼 것입니다.

../../../_images/selection_clip.png

모든 유역에 대해 이 작업을 반복하면 원하는 결과를 얻을 수 있겠지만, 그렇게 실용적인 방법은 아닌 것 같습니다. 그 대신, 이 선택하기 및 잘라내기 루틴을 자동화할 수 있는 방법을 살펴보겠습니다.

First of all, remove the previous selection, so all polygons will be used again. Now open the Clip grid with polygon algorithm and select the same inputs as before, but this time click on the button that you will find in the right–hand side of the vector layer input where you have selected the watersheds layer.

../../../_images/iterate_button.png

이 버튼을 클릭하면 선택한 입력 레이어를 각 피처 당 한 레이어로 나누어, 각 레이어가 폴리곤 하나를 담게 됩니다. 그 다음 알고리듬을 반복적으로 호출해서, 한 번에 이 단일 폴리곤 레이어 하나씩을 사용합니다. 이 경우, 알고리듬이 래스터 레이어 하나가 아니라 알고리듬 실행 시 생성한 각각의 래스터 레이어 집합을 산출합니다.

사용자가 설명대로 클리핑 알고리듬을 실행했을 경우의 결과물은 다음과 같습니다.

../../../_images/result_iterative.png

각 레이어의 흑백 색상표(또는 사용자의 색상표)의 최소 및 최대값은 서로 다르게 조정됩니다. 레이어 사이의 경계에서 색이 일치하지 않아 각각의 레이어를 구별할 수 있는 이유입니다. 하지만 값은 일치합니다.

산출물 파일명을 입력했다면, 결과물 파일은 그 파일명 뒤에 각 반복 작업에 해당하는 숫자를 붙여 명명됩니다.