17.8. 외부 알고리듬 실행

참고

이 강의에서 제3자 응용 프로그램에 의존하는 알고리듬의 사용법을 배울 것입니다. 특히 주요 알고리듬 제공자 가운데 하나인 SAGA에 대해 배워보겠습니다.

우리가 지금까지 실행했던 알고리듬은 모두 공간처리 프레임워크의 일부였습니다. 그러니까, 플러그인에서 시행되어 마치 플러그인 자체를 실행하는 것처럼 QGIS가 실행하는 자체(native) 알고리듬입니다. 하지만, 공간처리 프레임워크의 가장 훌륭한 기능 가운데 하나가 외부 응용 프로그램으로부터 알고리듬을 사용해서 해당 응용 프로그램의 가능성을 확장시킬 수 있다는 점입니다. 이런 알고리듬들은 잘 포장되어 툴박스에 포함되어 있으므로 QGIS에서 쉽게 쓸 수 있으며, QGIS 데이터를 사용해 실행할 수 있습니다.

단순 뷰에서 볼 수 있는 알고리듬 중 일부를 사용하려면 제3자 응용 프로그램을 사용자 시스템에 설치해야 합니다. 이 가운데 특히 관심을 기울여야 할 알고리듬 제공자가 SAGA(System for Automated Geospatial Analysis)입니다. 먼저, QGIS가 제대로 SAGA를 호출할 수 있도록 모든 것을 설정해야 합니다. 그렇게 어려운 일은 아니지만, SAGA가 어떻게 작동하는지 이해하는 것이 중요합니다. 외부 응용 프로그램은 각각 자신만의 설정을 가지고 있으며, 이 교재의 이후 부분에서 다른 응용 프로그램에 대해서도 배우겠지만, SAGA가 주요 백엔드(backend)가 될 것이므로 여기에서는 SAGA에 대해 이야기하겠습니다.

윈도우 시스템의 경우 외부 알고리듬 작업을 위한 가장 좋은 방법은 단독 실행 인스톨러를 통해 QGIS를 설치하는 것입니다. 이렇게 하면 SAGA를 포함해 필요한 모든 의존성을 설치해주기 때문에 이 인스톨러를 사용했다면 아무것도 할 필요가 없습니다. 설정 대화 창을 열고 Providers/SAGA 그룹을 찾으십시오.

../../../_images/saga_config.png

이미 SAGA 경로가 설정되어 SAGA가 설치된 폴더를 가리키고 있을 것입니다.

단독 실행 인스톨러를 통해 QGIS를 설치하지 않았다면, (사용자가 개별적으로 설치해야만 하는) SAGA 설치 경로를 입력해야 합니다. SAGA 2.1 [버전은 SAGA 배포판에 따라 달라집니다] 버전이 필요합니다.

리눅스 시스템의 경우, 공간처리 설정에서 SAGA 설치 경로를 설정할 필요가 없습니다. 그 대신 SAGA를 설치한 다음, 콘솔에서 SAGA를 호출할 수 있도록 SAGA 폴더가 PATH 에 포함되었는지 확인하십시오. (콘솔을 열고 saga_cmd 를 입력해 확인하면 됩니다.) 리눅스에서도 2.1 버전이 필요하지만, (OSGeo Live DVD 같은) 몇몇 설치의 경우 2.0.8 버전밖에 사용할 수 없을지도 모릅니다. 사용자가 쓸 수 있는 2.1 버전 패키지가 몇 개 있기는 하지만 일반적인 방법으로 설치하기도 어렵고 문제가 생길 수도 있으므로, 좀 더 일반적이고 안정적인 2.0.8 버전을 사용하고 싶다면 설정 대화 창의 SAGA 그룹에 있는 2.0.8 호환성을 활성화하면 됩니다.

../../../_images/enable208.png

SAGA 설치가 완료되면 다른 알고리듬과 마찬가지로 알고리듬 명칭을 더블클릭해서 실행할 수 있습니다. 단순 인터페이스를 사용하고 있기 때문에 어떤 알고리듬이 SAGA 혹은 다른 외부 응용 프로그램을 기반으로 하고 있는지 알 수 없지만, 우연히 그런 알고리듬을 더블클릭했는데 상응하는 응용 프로그램이 설치되지 않았을 경우 다음과 같은 메시지 창을 보게 됩니다.

../../../_images/missing_saga.png

SAGA를 제대로 설치하고 설정했다면 이 메시지 창을 볼 일이 없습니다. 그 대신 다음과 같은 파라미터 대화 창을 보게 될 것입니다.

그러면 Split shapes layer randomly 라는 SAGA 기반 알고리듬을 실행해봅시다.

../../../_images/split.png

이 강의에 해당하는 프로젝트의 포인트 레이어를 입력으로 설정하고 다른 파라미터 값을 그대로 둘 경우 다음과 비슷한 결과를 얻게 됩니다. (분리 작업(split)이 임의로 일어나므로 사용자의 결과는 다를 수도 있습니다.)

../../../_images/split_layer1.png

입력 레이어가 각각 동일한 개수의 포인트를 담은 레이어 두 개로 분리되었습니다. SAGA가 계산한 이 산출물을 QGIS가 가져와 QGIS 프로젝트에 추가한 것입니다.

모든 작업이 잘 이루어졌다면 이전에 실행했던 다른 알고리듬과 이 SAGA 기반 알고리듬이 뭐가 다른지 구분하기 힘들 겁니다. 그러나 어떤 이유에서인지 SAGA가 결과물을 생산하지 못 해 QGIS가 기대하고 있던 파일을 생성하지 못 할 수도 있습니다. 이럴 경우 결과물을 QGIS 프로젝트에 추가하는 과정에서 문제가 발생, 다음과 같은 메시지를 보게 될 것입니다.

../../../_images/missing_result.png

SAGA가 (또는 공간처리 프레임워크가 호출하는 어떤 다른 응용 프로그램이든) 제대로 설치되었다 하더라도 이런 문제가 발생할 수 있기 때문에, 이런 문제에 대응하는 법을 아는 것이 중요합니다. 이런 오류 메시지를 나타나게 해봅시다.

Create graticule 알고리듬을 실행하고 다음과 같은 값들을 사용하십시오.

../../../_images/create_graticule.png

설정된 범위보다 큰 높이 및 너비 값을 사용했기 때문에 SAGA가 어떤 산출물도 생산하지 못 합니다. 다시 말하면 파라미터 값이 잘못되었는데도 SAGA가 이 값을 받아서 격자선을 계산하려 할 때까지 값을 확인하지 않는다는 뜻입니다. SAGA가 결과를 생성하지 못 하므로, 기대했던 레이어를 생산하지 못 하게 되고, 앞에 나왔던 오류 메시지를 띄우게 됩니다.

참고

SAGA 2.2.3 이상 버전의 경우, 명령어가 잘못된 입력 데이터를 자동으로 조정할 것이기 때문에 오류가 발생하지 않을 겁니다. 오류를 발생시키려면 나눗셈에 음의 값을 사용하십시오.

이런 유형의 문제를 이해하면 해당 문제를 해결하고, 어떤 일이 일어나고 있는지에 대한 설명을 찾는 데 도움이 됩니다. 오류 메시지에서 볼 수 있듯이 SAGA와의 연결이 제대로 작동하고 있는지 확인하기 위한 테스트를 수행했다는 사실은 알고리듬이 실행된 방식에 문제가 있을지도 모른다는 것을 암시하고 있습니다. 이 사실은 SAGA뿐만이 아니라 다른 외부 응용 프로그램들에도 동일하게 적용됩니다.

다음 강의에서 공간 알고리듬이 실행하는 명령어에 대한 정보를 저장하는 공간처리 로그를 소개하겠습니다. 앞에서 본 것과 같은 문제가 발생했을 때, 어떻게 더 자세한 정보를 얻을 수 았는지 배울 것입니다.