GIS

QGIS: KDE(커널밀도추정)을 이용한 야생동물 행동권 분석

유병혁 2020. 10. 5. 15:04

안녕하세요? 이번 글은 QGIS에서 KDE(Kernel Density Estimation)을 이용한 행동권 분석(home range analysis) 방법을 정리해 보겠습니다. 행동권은 동물이 주기적으로 서식하고 이동하는 영역을 나타내며, KDE는 MCP(Minimum Convex Polygon, 최소볼록다각형)와 함께 행동권 분석의 기본이 되는 방법입니다.

 

KDE는 각 좌표(각 셀이 아님) 주위에 원형 이웃(circular neighborhood)을 그린 다음, 좌표 위치의 1에서 이웃 경계(neighborhood boundary)의 0으로 이동하는 수학 함수를 적용하는 것입니다. 각 좌표에 맞춰 아래와 같이 매끄럽게 구부러진 표면을 생각해보면 되겠습니다. 밀도 계산에서 커널의 크기는 좌표를 중심으로 하는 검색 반경(search radius)의 크기에 의해 결정됩니다. 검색 반경이 클수록 커널은 보다 평평(flatter)해집니다. 각 좌표에 커널함수를 적용하면, 각 셀의 밀도 값은 셀 중심과 중첩되는 모든 커널 표면의 값을 더하여 계산됩니다.

그림 출처:

http://www.geography.hunter.cuny.edu/~jochen/GTECH361/lectures/lecture11/concepts/Kernel%20density%20calculations.htm

 

실습 자료는 무브뱅크(Movebank)에서 내려받은 황새 이동 데이터입니다. 자세한 내용은 이전 글을 보시면 되겠습니다.

 

QGIS: MCP(최소볼록다각형)를 이용한 야생동물 행동권 분석

안녕하세요? 이번 글은 QGIS에서 MCP(Minimum Convex Polygon, 최소볼록다각형)를 이용한 야생동물 행동권(home range) 분석 방법을 정리해 보도록 하겠습니다. 행동권은 동물이 주기적으로 서식하고 이동하

blog.daum.net

동물 식별자 8885A 황새의 이동 데이터입니다.

전체 자료 중 1개월 자료만 추출해 보겠습니다. '값으로 객체 선택' 버튼을 클릭하고,

'YYYYMM' 필드값 중 '199811'로 1998년 11월 객체를 선택합니다.

객체가 선택된 상태에서 레이어 이름을 우클릭하고 '내보내기 > 선택한 객체를 다른 이름으로 저장'을 클릭해 줍니다.

아래와 같이 벡터 레이어를 다른 이름으로 저장합니다.

(참고로) 새로이 추출된 레이어 파일에 기존 레이어 스타일을 복사할 때는 '레이어 > 스타일 복사, 스타일 붙여넣기' 기능을 쓰시면 됩니다. 저는 자주 쓰는 기능이라 각각 F4, F8로 단축키 설정을 해놨는데요,

키보드 단축키 설정은 상단 메뉴 바의 '설정 > 키보드 단축키'를 클릭하시고,

'키보드 단축키 > 스타일'을 검색하시고 해당 기능에 '변경' 버튼 클릭 후 단축키를 입력하시면 됩니다.

8885A 황새의 1998년 11월 이동 데이터는 아래와 같습니다.

자, 이제 KDE를 적용해 보겠습니다. QGIS 공간 처리 툴박스에서 'kernel'을 검색해 보시면 아래와 같은 결과를 확인하실 수 있습니다. QGIS 기능 뿐만 아니라 GRASS, SAGA에서 제공하는 커널밀도추정 기능을 사용하실 수 있는데요, 여기서는 '열지도 (커널 밀도 추정)' 기능을 학습해 보겠습니다.

 

QGIS의 'Heatmap (kernel density estimation)' 사용법은 다음과 같습니다. 해당 기능의 사용자 인터페이스와 사용법을 대조해가며 이해하면 되겠습니다.

 

23.1.5. Interpolation — QGIS Documentation documentation

© Copyright 2002-now, QGIS project Last updated on Oct 05, 2020 09:19.

docs.qgis.org

실행 창은 아래와 같습니다. 일단, 포인트 레이어는 앞서 추출한 데이터를 선택해 줍니다.

탐색 반경은 30km, 셀 크기는 100m로 지정해 보겠습니다.

커널밀도 검색반경은 알고리즘으로 정의할 수도 있습니다. 관련 내용은 다음 글을 링크 드려봅니다.

 

Choosing kernel density radius

I have 3 datasets with GPS points. Two of those are GPS points that represent boating activities (two different types) and the third represents turtle observations. I would like to perform Kernel d...

gis.stackexchange.com

다음은 '고급 파라미터'를 확인해 보겠습니다.

Radius from field: 입력 레이어의 속성 필드에서 각 피처의 검색 반경을 설정할 수 있습니다.

Weight from field: 입력 레이어의 속성 필드에서 입력 피처에 가중치를 부여할 수 있습니다.

Kernel shape: 좌표로부터 거리가 증가함에 따라 좌표의 영향이 감소하는 비율을 제어합니다.

Decay ratio (Triangular kernels only): 감쇠 비율로 삼각 커널만 해당됩니다.

Output value scaling: Raw 또는 Scaled를 적용할 수 있습니다.

일반적으로 사용되는 커널 함수는 다음과 같습니다. QGIS 열지도는 기본 커널로 Quartic를 사용합니다.

Quartic(4차) 커널은 다음과 같습니다.

그림 출처:

en.wikipedia.org/wiki/Kernel_(statistics)#Kernel_functions_in_common_use

 

자, 이제 다음 이름으로 열지도를 추출해 보겠습니다!

결과는 다음과 같습니다. 한달간 이렇게 장거리를 이동한다니 놀랍습니다.

레이어 속성에서 심볼을 조정해 보겠습니다. '렌더링 유형'과 '색상 램프'를 조정해 봤습니다.

결과는 다음과 같습니다.

앞서 실습한 MCP도 함께 올려볼까요?! '최소 경계 도형'을 실행해 봅니다.

결과는 다음과 같습니다. 추후 MCP와 KDE 행동권 분석 결과를 면적으로 비교해볼 수 있겠는데요, KDE 래스터를 벡터로 변환하는 기능도 알아보겠습니다.

먼저 KDE 래스터를 단일 값 래스터로 변환합니다. 공간 처리 툴박스에서 '래스터 계산기'를 검색 실행해 봅니다. 

래스터 계산기 실행 창에서,

아래와 같이 계산 값을 1로 설정하고 실행하면,

아래와 같이 단일 값 래스터가 출력됩니다.

상단 메뉴에서 '래스터 > 변환 > 폴리곤화(래스터를 벡터로)'를 클릭해서,

해당 래스터를 벡터로 변환하면 되겠습니다. 아래는 '폴리곤화(래스터를 벡터로)' 실행 창입니다.

결과는 아래와 같습니다.

이상으로 행동권 분석의 기본이 되는 MCP, KDE를 두 개의 글로 정리해 봤습니다. KDE는 분석 목적에 따라 50%(Core kernel), 95%(Full kernel) 커널이 제시되기도 합니다. 이것은 커널밀도추정 결과값에 해당 임계치를 적용하면 되겠는데요, 관련 글은 다음 링크를 참고하시면 되겠습니다(각 좌표의 속성값에 커널밀도추정 결과값을 추가, 내림차순 정렬 후 전체 개수의 50%, 95%에 해당하는 좌표의 KDE 값을 임계치로 사용하시면 됩니다).

 

로그인 - Google 계정

하나의 계정으로 모든 Google 서비스를 Google 계정으로 로그인

accounts.google.com