我有一个空间范围相同的栅格和矢量。栅格的所有值 = 1.
我想要的是根据它们所在的多边形更改栅格中的值。
library(terra)
## terra 1.7.19
f <- system.file("ex/lux.shp", package="terra")
p <- vect(f)
p
r <- rast()
ext(r) <- ext(p)
r
values(r) <- 1
values(r)[p$NAME_1 == "Luxembourg",] <- 2
我真的希望这段代码能让被称为“卢森堡”的地区的价值= 2,但它没有,这意味着我显然有错误的想法。
也许其他人有更好的主意。
示例数据
library(terra)
p <- vect(system.file("ex/lux.shp", package="terra"))
r <- rast(p, res=0.01)
values(r) <- 1
经典方法
lux <- p[p$NAME_1 == "Luxembourg",]
x <- rasterize(lux, r, 2, update=TRUE)
你也可以做最后一步
r[lux] <- 3
所以你离得不远。它是这样工作的:
r[p[p$NAME_1 == "Luxembourg",]] <- 4