使用基于 R terra 中的多边形字段的向量或值矩阵更新栅格值

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

这里我有一种方法可以用新值更新栅格的选定部分(来自this question

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",]
r[lux] <- 3

但是现在我想用一个值向量而不是一个值来更新栅格:

len <- nrow(r[lux]) 
r[lux] <- 1:len
# Error: [`[`] value is too long

我不确定如何解释错误,但我认为这意味着我将错误的数据类型传递给

r[lux]
。有什么建议吗?

r spatial terra
1个回答
0
投票

lux
的长度是四。

length(lux)
[1] 4

因此您可以用四个新值替换单元格值。

r[lux] <- 11:14

我知道您想用不同的数字替换

lux
覆盖的所有单元格。这种类型的更换无法做到这一点。

如果你的栅格不是很大,你可以用这样的东西来实现

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, rast(r))
d <- as.data.frame(x, cells=TRUE)
x[d$cell] <- 1:nrow(d)

rr <- cover(x, r)
© www.soinside.com 2019 - 2024. All rights reserved.