Module contributed by Matteo Ghetta - funded by Scuola Superiore Sant’Anna
QGIS 내부의 처리 과정에서 R 스크립트를 입력하고 실행할 수 있습니다.
경고
R has to be installed on your computer and the PATH has to correctly set up. Moreover Processing just calls the external R packages, it is not able to install them. So be sure to install external packages directly in R. See the related chapter in the user manual.
주석
패키지 관련 문제가 발생할 경우, sp, rgdal 및 raster 같은 처리 과정이 필수적으로 갖춰야 하는 패키지들이 없기 때문일 수도 있습니다.
스크립트를 추가하는 일은 매우 간단합니다. 처리 과정 툴박스를 열고 R ‣ Tools ‣ Create new R script 메뉴를 클릭하기만 하면 됩니다.
주석
처리 과정에 R이 안 보일 경우, Processing ‣ Options ‣ Providers 메뉴에서 활성화시켜야 합니다.
스크립트 편집 창 이 열리는데, 여기에 스크립트 자체를 추가하기 전에 몇몇 파라미터들을 설정해줘야 합니다.
이번 예제에서 벡터 레이어 항목의 **상자 모양 그래프**를 생성할 것입니다.
Open the r_intro.qgs QGIS project.
편집기를 실행해서 첫 부분부터 입력을 시작하십시오.
스크립트 자체를 입력하기 전에 몇몇 파라미터들을 설정 해야 합니다.
여러분이 스크립트를 입력해야 할 그룹의 명칭은 다음과 같습니다.
##plots=group
따라서 처리 과정 툴박스의 plots 그룹에서 여러분의 스크립트를 찾을 수 있습니다.
처리 과정에게 여러분이 그래프를 표출하고 싶다고 (다음 예시와 같이) 해줘야 합니다.
##showplots
이렇게 하면 처리 과정의 Result Viewer 에서 그래프를 볼 수 있습니다.
또 여러분이 작업하고 있는 데이터가 어떤 유형인지도 처리 과정에게 알려줘야 합니다. 이번 예제에서는 벡터 레이어의 항목으로부터 그래프를 생성하려 하기 때문에,
##Layer=vector
처리 과정이 입력물이 벡터라는 사실을 알고 있습니다. Layer 라는 이름은 중요하지 않습니다. 중요한 것은 바로 벡터 파라미터입니다.
마지막으로, 여러분이 그래프를 그리려 하는 벡터 레이어의 입력 항목을 설정해야 합니다.
##X=Field Layer
따라서 처리 과정은 여러분이 X 를 Field Layer 라고 명명한 사실을 알게 되었습니다.
이제 스크립트의 *표제(heading)*를 설정했으니, 함수를 추가할 수 있습니다.
boxplot(Layer[[X]])
데이터셋으로 Layer 를, 데이터셋 항목으로 X 를 호출하는 R 함수 자체의 명칭이 boxplot 이라는 사실을 기억하십시오.
경고
파라미터 X 는 쌍대괄호 [[]] 안에 있습니다.
최종 스크립트는 다음과 같이 보일 겁니다.
##Vector processing=group
##showplots
##Layer=vector
##X=Field Layer
boxplot(Layer[[X]])
처리 과정이 제안하는 기본 경로에 스크립트를 저장하십시오. 여러분이 명명한 명칭이 처리 과정 툴박스에 표출되는 스크립트의 명칭이 될 것입니다.
주석
다른 경로에 스크립트를 저장할 수도 있지만, 처리 과정이 자동적으로 불러올 수 없기 때문에 사용자가 수동으로 모든 스크립트를 업로드해야 합니다.
이제 편집 창 최상단에 있는 버튼을 클릭해서 스크립트를 실행해보십시오.
다른 방법으로는 편집 창을 종료한 다음 처리 과정의 텍스트 상자를 통해 여러분의 스크립트를 찾을 수도 있습니다.
이제 처리 과정 알고리듬 창에서 필요한 파라미터를 입력할 수 있습니다.
Layer 에 sample points 를 선택하십시오.
X 항목을 value 파라미터로 채우십시오.
Run 버튼을 클릭하십시오.
Result window 가 자동적으로 열릴 텐데, 열리지 않을 경우 Processing ‣ Result Viewer... 메뉴를 클릭하면 됩니다.
여러분이 보게 될 최종 산출물은 다음과 같습니다.
주석
그래프를 오른쪽 클릭하면 이미지를 열 수도, 복사할 수도, 저장할 수도 있습니다.
R 스크립트를 통해 QGIS에서 벡터를 생성해서 자동적으로 불러올 수도 있습니다.
다음 예제는 R ‣ Tools ‣ Download R scripts from the on-line collection 메뉴를 통해 온라인 아카이브에서 다운로드할 수 있는 Random sampling grid 스크립트로 만든 것입니다.
The aim of this exercise is to create a random point vector in a layer extent using the spsample function of the sp package.
이전과 마찬가지로 스크립트 자체를 입력하기 전에 몇몇 파라미터들을 설정해줘야 합니다.
specify the name of the group in which you want to put your script, for example Point pattern analysis:
##Point pattern analysis=group
무작위 포인트를 담게 될 레이어를 설정하십시오.
##Layer=vector
생성될 포인트의 개수를 설정하십시오.
##Size=number 10
주석
기본값은 10개입니다. 이 숫자를 변경하거나, 기본 숫자 없이 파라미터를 내버려둘 수도 있습니다.
산출물을 벡터 레이어로 설정하십시오.
##Output= output vector
이제 함수 자체를 추가할 수 있습니다.
spsample 함수를 실행하십시오.
pts=spsample(Layer,Size,type="random")
this way the function takes the extent of the Layer, the number of points is taken from the Size parameter and the point generation is random
산출물의 파라미터들을 담고 있는 명령어 라인을 입력하십시오.
Output=SpatialPointsDataFrame(pts, as.data.frame(pts))
최종 스크립트는 다음처럼 보일 것입니다.
스크립트를 저장한 다음 Run 버튼을 클릭해서 실행하십시오.
새 창에서 정확한 파라미터들을 입력하십시오.
Run 버튼을 클릭합니다.
맵 캔버스에 산출된 포인트들이 표출됩니다.
처리 과정이 R로부터 결과를 얻기 위해 몇몇 특수한 문법을 사용한다는 사실을 유념하십시오.
명령어 앞에 >lillie.test(Layer[[Field]]) 처럼 > 를 삽입하는 것은 결과를 R 산출물(Result viewer)로 보내야 한다는 의미입니다.
그래프 뒤에 + 를 써서 다른 그래프를 겹치게 할 수 있습니다. 예를 들면 plot(Layer[[X]], Layer[[Y]]) + abline(h=mean(Layer[[X]])) 처럼 함수를 입력할 수 있습니다.