QGIS를 사용한 래스터 클러스터링


10

분류 된 래스터를 각 클래스 내의 공간 클러스터를 기반으로 다각형으로 변환하는 방법을 찾고 있습니다. 클러스터가 유효한 것으로 간주 되려면 클래스 중 하나의 최소 백분율 셀로 구성해야합니다.

예를 들어, "1"클래스의 70 % (또는 그 이상) 셀로 구성된 영역은 다른 클래스에 속하는 30 % 셀과 혼합되어 있어도 "1"클래스의 클러스터로 간주됩니다. 따라서 군집 분석은 동일한 클래스의 셀 간 거리를 기반으로해야합니다.

또 다른 옵션은 최대 검색 영역의 정의와 함께 특정 클래스 내의 최소 셀 수를 기반으로 클러스터링을 수행하는 것입니다.

예를 들어 : 지정된 영역 내에 "클래스 1"의 100 개의 셀이 있어야 클러스터로 간주됩니다.  

클러스터링과 관련된 대부분의 도구는 벡터에서만 작동하는 것 같습니다. SAGA 도구 클러스터 분석을 살펴 봤지만 실제로는 내 목적에 맞지 않았습니다. 이 문제를 해결하기위한 아이디어 나 도움이 될만한 다른 도구가 있습니까?


래스터를 벡터로 변환하고 벡터 클러스터링 도구를 사용할 수 있습니다.
csk

그것은 옵션이지만 가능하다면 래스터 형식으로 분석하는 것이 훨씬 쉽다고 생각합니다. 벡터로의 변환은 아마도 래스터 셀의 결합에서 많은 디테일이 손실되거나 너무 많은 점이 처리하는 다각형을 생성 할 것입니다 (큰 데이터 세트).
Spiran

3
나는 이것이 QGIS 솔루션이 아니라는 것을 알고 있지만 파이썬이나 R을 사용하여 이웃 함수를 만들 수 있으므로 각 셀을 보는 새로운 래스터를 만들고 이웃의 셀 중 70 % 이상이 클래스에 속하는 경우 해당 셀이 해당 클래스로 다시 분류됩니까?
Liam G

감사합니다! 나는 Python을 처음 사용하지만 시도해 볼 가치가 있습니다.
Spiran

답변:


5

"래스터 논리"에서이 문제를 해결하려면 몇 가지 필터를 고려해야합니다. 최선의 선택은 "배경"값 내에서 각 클래스의 픽셀의 공간 분포에 따라 다르지만 다음과 같은 두 가지 솔루션이 있습니다.

제거하려는 패치가 비교적 큰 경우 "sieve"(QGIS 3.2의 래스터> 분석> 시브 (gdal_sieve.py 기반))를 사용해야합니다.

gdal_sieve.py 스크립트는 제공된 임계 값 크기 (픽셀)보다 작은 래스터 다각형을 제거하고 가장 큰 인접 다각형의 픽셀 값으로 대체합니다. 결과를 기존 래스터 밴드에 다시 쓰거나 새 파일로 복사 할 수 있습니다.

"소금과 후추"효과 (다른 클래스의 많은 분리 된 픽셀이지만 작은 경로당 몇 개의 픽셀)와 같은 것이 있다면 대다수 필터를 사용해야합니다 (예 : GRASS> raster> r의 추가 도구로 이동). 이웃> "모드"옵션 선택)이 필터는 경계에 약간 영향을 미칩니다.

r.neighbors-각 셀 범주 값을 주변 셀에 할당 된 범주 값의 함수로 만들고 출력 래스터 맵 계층에 새 셀 값을 저장합니다

원하는 경우 SAGA 도구 (SAGA> 래스터 필터)에서 동일한 파일러 (주요 필터, 체질 클래스) 및 다른 파일러 (모폴로지)를 찾을 수 있습니다.


이것은 실제로 내가 어떻게 해결했는지 거의 비슷했습니다. 기본적으로 잔디 주변 분석 도구를 측면에서 일부 계산과 함께 사용합니다. 그래도 솔루션 게시를 잊어 버렸습니다. 입력 radouxju에 감사드립니다.
Spiran
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.