17.21. 모델을 생성하기 위해 모델 생성기 전용 도구 사용하기

참고

이 강의에서는 모델 생성기(modeler)에서만 사용할 수 있는 몇몇 알고리즘을 사용해서 어떻게 모델에 추가 기능을 제공할 수 있는지 알려줄 것입니다.

이 강의의 목표는 모델 생성기를 사용해서 보간된 래스터 레이어를 생성하기 위해 현재 선택 집합을 입력받아 선택한 객체들만이 아니라 해당 선택 집합의 영역을 사용하는 보간 알고리즘을 생성하는 것입니다.

보간 처리는 이전 강의에서 설명한 대로 두 단계로 이루어집니다: 포인트 레이어를 래스터화한 다음 래스터화된 레이어에 나타나는 NODATA 값을 채우는 것이죠. 포인트 레이어에 선택 집합이 있는 경우 선택된 포인트만 사용할 것이지만, 산출 범위를 자동 조정되도록 설정했다면 레이어 전체 영역을 사용할 것입니다. 즉 레이어 영역은 언제나 모든 객체의 전체 영역으로 간주되지 선택된 객체들만으로 계산된 영역으로 간주되지는 않는다는 뜻입니다. 우리 모델에 추가 도구 몇 개를 사용해서 이 문제를 해결해보도록 하겠습니다.

모델 생성기를 열고 필수 입력물을 추가해서 모델을 실행하십시오. 이 경우 (포인트만으로 제한된) 벡터 레이어 하나와, 래스터화 작업에 사용할 값들을 가진 해당 레이어의 속성이 필요합니다.

../../../_images/inputs.png

그 다음 선택된 객체들의 영역을 계산해야 합니다. 이때 Vector layer bounds 라는 모델 전용 도구를 사용할 수 있습니다. 먼저 해당 선택 객체들의 영역을 가진 레이어를 생성해야 합니다. 그 다음 이 레이어에 도구를 사용하면 됩니다.

입력 포인트 레이어의 볼록 껍질을 계산하면 선택 객체들의 영역을 가진 레이어를 쉽게 생성할 수 있습니다. 이 과정에서 선택된 포인트들만 사용하기 때문에 볼록 껍질과 선택 집합의 경계 상자는 동일할 것입니다. 그 다음 볼록 껍질을 입력 받는 Vector layer bounds 알고리즘을 추가하면 됩니다. 모델 생성기 캔버스에서 다음과 같이 보일 것입니다:

../../../_images/convexhull_and_extent.png

Vector layer bounds 가 산출하는 결과물은 숫자값 4개를 가진 집합과 영역 객체 하나입니다. 이 예제에서는 숫자값 산출물과 영역 둘 다 사용할 것입니다.

../../../_images/extent_outputs.png

이제 Vector layer bounds 알고리즘의 산출물을 입력 받아 벡터 레이어를 래스터화하는 알고리즘을 추가할 수 있습니다.

이 알고리즘의 파라미터를 다음과 같이 채워 넣으십시오:

../../../_images/rasterize2.png

이제 캔버스가 다음과 같이 보일 것입니다:

../../../_images/canvas_rasterize.png

마지막으로 Close gaps 알고리즘을 사용해서 래스터 레이어의 NODATA 값을 채우십시오.

../../../_images/close_gaps1.png

이제 알고리즘을 저장하고 툴박스에 추가할 준비가 끝났습니다. 이 알고리즘을 실행하면 입력 레이어에서 선택된 포인트들을 보간한 래스터 레이어를 생성할 것입니다. 이 산출 레이어는 입력된 선택 집합과 동일한 영역을 가지고 있을 겁니다.

이제 이 알고리즘을 향상시켜 봅시다. 우리는 방금 예제에서 래스터화 도중 셀 크기 값을 직접 입력했습니다. 이 값은 이번 입력 레이어에 대해서는 괜찮았지만, 다른 경우에도 괜찮을 거란 보장은 없습니다. 사용자가 새 파라미터를 추가해서 적당한 값을 직접 입력해도 되지만, 이 값을 자동적으로 계산하게 하는 것이 더 나은 방법이겠죠.

모델 생성기 전용 계산기를 사용해서 영역 좌표로부터 이 값을 계산하면 됩니다. 예를 들면 계산기에 다음과 같은 공식을 사용하면 레이어를 고정 너비 100픽셀로 생성할 수 있습니다.

../../../_images/calculator1.png

이제 직접 입력한 값이 아니라 계산기가 산출한 값을 사용하도록 래스터화 알고리즘을 편집해야 합니다.

최종 알고리즘은 다음처럼 보일 것입니다:

../../../_images/final.png