2017-10-06 1 views
0

일부 분류 된 래스터 레이어가 범주 형 랜드 커버 맵으로 사용됩니다.래스터 범주 맵에서 클래스 이름에 액세스하는 방법

comp <- raster("C:/workingDirectory4R/rasterproject/2005marsh3.rst") 
ref <- raster("C:/workingDirectory4R/rasterproject/2013marsh3.rst") 

"comp"가있다 :이 같은 래스터 기능을 사용하여 메모리에로드하지만 그들은 서로 다른 시점 (예를 들어, 2005 년 및 2015 년) 에서있다 : 정확히 같은 범주를 가진 모든 레이어 ("water", "Trees", "Urban","bare soil" 말할 수 있습니다) 시간이 이고 시간이 t 인 경우 "ref" 일 때 comparison mapreference map입니다. 그런 다음 crosstab 함수를 사용하여 confusion table을 생성했습니다. 이 표는 시간 간격을 통한 카테고리의 변경 사항을 탐색하는 데 사용할 수 있습니다.

contingency.Matrix <- crosstab(comp, ref) 

결과는 rowscolumn"ref"에서 "comp" 카테고리와 matrix 형식이다. 숫자가 1 to 4columnrow 이름이 있습니다.

이제 2 가지 질문이 있으며 해결 방법에 대한 도움을 정말로 받으실 수 있습니다.

1- 이해를 돕기 위해 matrix의 열과 행에 카테고리 이름을 지정하고 싶습니다.

2- 이제 나는이 내가 두 confusion tables 2005에서 2010 사이에 하나 2010-2015 다른 하나가된다는 의미입니다 2005 년, 2010 년 및 2015 년 세 raster layers가 있다고 가정 해 보자. 최소 상호 작용이있는 이 프로세스를 자동화하는 가장 좋은 절차는 무엇입니까?

사용자에게 래스터 레이어를로드 한 다음 코드를 목록에 저장하도록 요청한 것으로 생각했습니다. 그런 다음 사용자로부터 몇 년 동안 벡터를 요청하지만 문제는 어떻게 래스터 레이어와 연도의 순서가 동일한 지 확인할 수 있습니까? 그리고 이것을하는 더 우아한 방법이 있습니다.

감사합니다.

답변

0

첫 번째 질문에 부분적으로 대답했습니다. 범주 형지도가 "한 .rst"의 확장자 TerrSet (IDRISI) 소프트웨어에서 생성되는 경우,이 같은 범주 이름을 추출 할 수 있습니다 :

comp <- raster("C:/rasterproject/2005subset.rst") 
attributes <- data.frame([email protected]@attributes) 
categories <- as.character(attributes[,8]) 

나는 범주의 이름을 가진 벡터를 얻을. 그러나 래스터 레이어가 다른 확장자로 작성되면 코드가 작동하지 않습니다. 예를 들어 ENVI에서 래스터를 만들면 코드의 세 번째 줄이 다음과 같이 바뀌어야합니다.

categories <- as.character(attributes[,2]) 
관련 문제