【发布时间】:2018-09-17 03:55:19
【问题描述】:
我有一个包含 364 层的栅格堆栈,其中 NDVI 值的每日变化率。
如果正从 0 到 1,如果负从 -1 到 0,我想在每个单元格中缩放这些值。到目前为止,我只找到了一个在单层中缩放值的解决方案(参见此处:Replace specific value in each band of raster brick in R)和不是沿着多层物体的单元格。此外,在整个时间序列中,我有相当数量的 NA 单元格,我也不太确定如何处理这个事实。
我从前面提到的帖子中获取了代码,并试图让它解决我的问题:
norm <- function(x){-1+(x-min)*((1-(-1))/(max-min))}
for(j in 1:ncell(tif)){
if(is.na(sum(tif[j]))){
NULL
} else {
cat(paste("Currently processing layer:", j,"/",ncell(tif), "\n"))
min <- cellStats(tif[j],'min')
max <- cellStats(tif[j],'max')
#initialize cluster
#number of cores to use for clusterR function (max recommended: ncores - 1)
beginCluster(31)
#normalize
tif[j] <- clusterR(tif[j], calc, args=list(fun=norm), export=c('min',"max"))
#end cluster
endCluster()
}
}
我不太确定这是否会产生所需的输出。很感谢任何形式的帮助!
【问题讨论】: