我有一个栅格图层,显示目前的海温,但只显示我知道的适合物种栖息的像素。所有其他像素都设置为NA。
现在我有一个同样的栅格图层,但显示的是 2050 年的预测 SST。在这个栅格图层中,所有的像素都有一个值(除了陆地表面的NA)。
现在我想做以下工作。我想在第二个栅格图层中搜索第一个栅格图层中的值,并将所有其他值设为0。 所以结果应该是一个栅格图层,只显示那些在第一个栅格图层中也能找到值的像素。
我认为正确的函数应该是 if else function
.
有没有办法在if else函数中使用一个栅格的所有值?那么代码应该是类似下面的东西。
if(raster1==raster2){
raster3 <- 1
}else{
raster3 <- 0
}
解决方案:
当提出一个问题时,总是包括一些例子数据,使你得到一个最小的自足的可重复的例子。
library(raster)
s <- r <- raster(ncol=5, nrow=5)
values(r) <- rep(c(1,NA,1,NA,1), 5)
values(s) <- 1:25
你可以像这样做(将s中的所有值,其中r为NA,设置为0)。
x <- mask(s, r, updatevalue=0)
你也可以用代数
y <- (!is.na(r)) * s
其实还有一种(隐藏的)ifel方法,但这种方法效率较低
z <- raster:::.ifel(!is.na(r), s, 0)