基于 R terra 中的多边形字段更新栅格值

问题描述 投票:0回答:1

我有一个空间范围相同的栅格和矢量。栅格的所有值 = 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,但它没有,这意味着我显然有错误的想法。

也许其他人有更好的主意。

r spatial terra
1个回答
0
投票

示例数据

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
© www.soinside.com 2019 - 2024. All rights reserved.