我有一个栅格层,在当前显示SST,但只显示我知道适合物种栖息地的像素。所有其他像素都设置为NA。
现在我有了相同的栅格层,但显示了2050年的预测SST。在此光栅图层中,所有像素都有一个值(陆地表面上的NA除外)。
现在我想做以下事情:我想在第二个栅格层中搜索第一个栅格层中给出的值,并将所有其他值设置为0。因此,结果应该是一个只显示像素的光栅,这些像素的值也可以在第一个光栅中找到。
我认为正确的函数应该是if else function。
有没有办法在if else函数中使用栅格的所有值?然后,代码应该类似于以下内容:
if(raster1==raster2){
raster3 <- 1
}else{
raster3 <- 0
}发布于 2020-04-24 03:18:13
当提出问题时,总是包含一些示例数据,以便您得到一个最小的、自包含的、可重复的示例。
library(raster)
s <- r <- raster(ncol=5, nrow=5)
values(r) <- rep(c(1,NA,1,NA,1), 5)
values(s) <- 1:25您可以这样做(将s中的所有值设置为0,其中r是NA )
x <- mask(s, r, updatevalue=0)你也可以使用代数
y <- (!is.na(r)) * s实际上有一个(隐藏的) ifel方法,但效率较低。
z <- raster:::.ifel(!is.na(r), s, 0)发布于 2020-04-23 20:48:31
我找到了我问题的答案。如果有人有同样的问题:
check <- raster2<maxValue(raster1)
raster_final <- check*raster2
raster_final_2 <- mask(raster2, check, maskvalue=0)
raster_final_3 <- crop(raster_final_2, raster1)
raster_final_4 <- mask(raster_final_3, raster1)https://stackoverflow.com/questions/61382947
复制相似问题