2014-04-15 9 views
1

각 시간 간격 (불규칙)에서 바이오 매스를 나타내는 래스터 레이어의 시계열을 포함하는 큰 RasterBrick 개체가 있습니다. 내가 필요한 것은 두 개의 연속 된 기간 (difference in biomass = current biomass layer - last weeks biomass layer) 사이의 바이오 매스의 차이에 대한 시계열입니다. 내 생각에 루프를 사용하거나 적용 함수 중 하나를 사용하여 RasterBrick을 수행하고 각 RasterLayer에는 시계열의 앞부분에있는 빼기 함수를 적용하십시오. RasterBrick은 실제 시간 소인이 반드시 중요하지 않도록 주문됩니다. 예제를 찾으려고 노력했지만 진전을 이루지 못했습니다. 모든 포인터는 매우 감사하겠습니다.순차 레이어 간의 차이를 계산하는 RasterBrick을 통한 루프

나는 다음에 내 상황의 빠른 예를 제공하고 있습니다 :

library(raster) 

임의 설정 (10)의 래스터 레이어를 RasterStack

에 이제
r <- raster(ncol=10, nrow=10) 
;b <- brick(sapply(1:10, function(i) setValues(r, rnorm(ncell(r), i, 3)))) 

내가 가진 RasterBrick 포함 9 층 필요

에 대한 결과

바이오 매스 = 현재 바이오 매스 층 - 지난 주 바이오 매스 층의 차이.

+0

무엇이 wbout 부분 집합 (r, 2 : nlayers (r)) - 부분 집합 (r, 1 : (nlayers (r) -1)) – mdsumner

+0

@mdsumner. 너무 간단! 훌륭하게 일했다. 시간 내 줘서 고마워. – doncarlos

+0

r <- brick (r1, r2, r3 ... rn); rasdiff <- calc (r, fun = diff) – Arihant

답변

3

이렇게해야합니다.

subset(r, 2:nlayers(r)) - subset(r, 1:(nlayers(r)-1)) 

편리한 Ops는 래스터 오브젝트에만 적합하므로 편리하게 고레벨 도구로 올바른 오브젝트 쌍을 만들 수 있습니다.

데이터 값 및 볼륨에 따라 다른 방법이 필요할 수 있습니다.