对栅格时间序列进行排名

Ranking a raster time-series

我有一个栅格时间序列,我想根据 TS 中的位置对单个像素值进行排名。 例如:时间序列(5 年)值:3,5,2,8,7 所以第 1 年是 4,第 2 年是 3,第 3 年是 5,依此类推。 输出将是一个堆栈,每年将具有如上计算的像素值

我已经能够对栅格值进行排序并创建一个从高值到低值的新 TS,但我要寻找的不是排名值而是位置。这看起来不正确

library(raster)
r <- raster(ncol=10, nrow=10)
r <- stack(lapply(1:5, function(i) setValues(r, runif(100, -0, 1000))))
names(r)<-c(1:nlayers((r)))
plot(r)


r_ord <- calc(r, fun=function(x,na.rm) x[order(x,decreasing=T)])
r_ord
plot(r_ord)

有什么建议吗? 谢谢

原始像素值正在 return 编辑,因为您在此处使用命令索引原始像素值 x[order(x,decreasing=T)],这实际上是 sort 函数 [=18] =]秒。使用此代码 return 命令:

library(raster)
r <- raster(ncol=10, nrow=10)
r <- stack(lapply(1:5, function(i) setValues(r, runif(100, -0, 1000))))
names(r)<-c(1:nlayers((r)))
plot(r)

res <- calc(r,function(x) order(x,decreasing=T))
plot(res)