我正在尝试根据重叠区域的标准拼接42个遥感rasterstacks(250个波段),应该采用具有最低天视角的像素
除了我的rasterstacks,我还有42个栅格(每个堆栈一个),每个像素具有相应的视角。
知道如何解决这个问题吗?
我尝试将视角栅格包含在堆栈中,并使用与
类似的东西mosaic(a,b,fun=function(x)(min(x[[251]]))
但那不起作用......
有什么建议吗?
提前致谢,
R上。
答案 0 :(得分:2)
在询问这样的R问题时,您应该设置一个带代码的简单示例,以更好地说明您的问题并使其更容易回答。
这是问题
library(raster)
r <- raster(ncol=100, nrow=100)
r1 <- crop(r, extent(-10, 11, -10, 11))
r2 <- crop(r, extent(0, 20, 0, 20))
r3 <- crop(r, extent(9, 30, 9, 30))
# reflectance values
r1[] <- 1:ncell(r1)
r2[] <- 1:ncell(r2)
r3[] <- 1:ncell(r3)
set.seed(0)
# nadir values
n1 <- setValues(r1, runif(ncell(r1)))
n2 <- setValues(r2, runif(ncell(r2)))
n3 <- setValues(r3, runif(ncell(r3)))
您的问题是如何基于n中的值合并/镶嵌r(当存在具有值的重叠单元格时,使用具有最高对应值n(i)的r(i)的值)。
以下是解决问题的一般方法:
r <- list(r1, r2, r3)
n <- list(n1, n2, n3)
whichmax <- function(x, ...) {
ifelse(all(is.na(x)), NA, which.max(x))
}
n$fun <- whichmax
# which layer has the highest nadir value?
m <- do.call(mosaic, n)
q <- list()
for (i in 1:length(r)) {
y <- r[[i]]
x <- crop(m, y)
y[x != i] <- NA
q[i] <- y
}
M <- do.call(merge, q)