【发布时间】:2017-10-29 10:09:18
【问题描述】:
根据这个问题 (Find second highest value on a raster stack in R),如何才能找到对于每个栅格堆栈 xy 坐标的具有第二高值的图层的名称?
我可以使用“which.max()”函数找到包含最大值的层的名称(层号):
set.seed(123)
require(raster)
r1 <- raster(nrows = 10, ncols = 10)
r2 <- r3 <- r4 <- r1
r1[] <- runif(ncell(r1))
r2[] <- runif(ncell(r1)) + 0.2
r3[] <- runif(ncell(r1)) - 0.2
r4[] <- runif(ncell(r1))
rs <- stack(r1, r2, r3, r4)
which.max.na <- function(x, ...) ifelse(length(x) == sum(is.na(x)), 0, which.max(x))
m1 <- calc(rs, which.max.na)
plot(m1)
但是,如何获得名称(图层编号)包含第二高值的栅格?
我在 (How to find second highest value and corresponding layer name in a raster stack in R) 中尝试了解决方案:
m2 <- calc(rs, fun=function(x, na.rm) x[order(x, decreasing=T)[2]]) & calc(rs, fun=function(x, na.rm) order(x, decreasing=T)[2])
plot(m2)
但没有成功,如plot(m2) 所示..
【问题讨论】: