【发布时间】:2022-01-05 18:23:32
【问题描述】:
我有三个栅格。
library(raster)
a <- raster(ncol=100, nrow=100)
set.seed(2)
values(a) = runif(10000, min=-1, max=1) # define the range between -1 and 1
b <- raster(ncol=100, nrow=100)
set.seed(2)
values(b) = runif(10000, min=0.97, max=0.99)
c <- raster(ncol=100, nrow=100)
set.seed(2)
values(c) = runif(10000, min=0, max=1)
现在我想根据多个条件创建一个新栅格。条件是这样的
当 a
当 a > 0.5 时,新的光栅像素值应为 1.85;
当 0.2
# create empty copy
E <- raster(a)
E[(a < 0.2)] <- NA
E <- cover(E, c)
E[(a >= 0.2) & (a <= 0.5)] <- NA
E <- cover(E, b)
E[a > 0.5] <- 1.85
这样做是否是正确的方法?或者有比这种方法更好的替代方法。
【问题讨论】:
-
你的代码能做到你想要的吗?您是在问这是否有效,或者这是否是最好的方法?如果您使栅格更小(小得多),则可以更容易地判断您的代码是否正常工作,因此您可以通过查看输出栅格是否符合预期来判断。也许从 4x4 栅格开始?
-
在您的文本中您说“当 a > 0.5 时,新的光栅像素应该具有 1.85 的值”但您的代码看起来像
E[a > 0.5] <- 0.99- 0.99 应该是 1.85 吗? -
在你的文本中你说“当 0.2 E <- cover(E, b) 那么您的意思是“光栅 b 中的值”吗?
-
抱歉那些错误,我已经纠正了这个问题。有没有更好的方法来做到这一点?