【发布时间】:2018-11-10 20:34:20
【问题描述】:
我有两个时间点(t1 和 t2)的两个栅格地图,每个时间点有两个土地覆盖类别(LC1,LC2)。我想强加一个规则,即 t1 中的 LC2 单元不能在 t2 中更改为 LC1 单元,即只有 LC1 可以随时间更改为 LC2,反之则不行。我很难在 R 中想出一个规则。我想到的是这样的:
#create test rasters
r <- raster(nrows=25, ncols=25, vals=round(rnorm(625, 3), 0)) #land-use/cover raster
r[ r > 2 ] <- 2
r[ r < 1 ] <- 1
r2 <- r
plot(r2) #r2 is t2
r <- raster(nrows=25, ncols=25, vals=round(rnorm(625, 3), 0)) #land-use/cover raster
r[ r > 2 ] <- 2
r[ r < 1 ] <- 1
plot(r) #r is t1
r_fix <- overlay(r, r2, fun = function(x, y) {
if (x[ x==2 ] & y[ y==1 ]) { #1 is LC1, 2 is LC2
x[ x==2 ] <- 1 }
return(x)
})
但它返回一个错误(因为我使用带有栅格的 if 语句?):
(函数 (x, fun, filename = "", recycle = TRUE, forcefun = FALSE, : 不能用这个公式,可能是没有向量化的原因
我想知道是否有一种简单的方法来实现与栅格类似的东西?提前谢谢你。
【问题讨论】:
标签: r if-statement raster