0

我有一个具有 10 个点和 2 个属性(i_1、i_2)的 SpatVector。我需要在一个覆盖这 10 个点的网格单元上总结我的 SpatVector,并认为 terra::rasterize 是最合适的功能。rasterize 的输出需要考虑 SpatVector 的两个属性。但是,我只是不知道如何将属性传递给函数。例如,使用这个奇函数:

fn <- function(i_1, i_2,...) {
   out <- mean(i_1*i_2, na.rm = T)
   return(out)
}

terra::rasterize(points, raster, fun = fn(i_1, i_2))

返回具有 1 行和 1 列(我想要的)但值为 1 的栅格,而如果我这样做:

fn(points$i_1, points$i_2)

我得到了我应该得到的。

要么我错过了如何将 SpatVector 的属性传递给 terra::rasterize 中的函数,要么此函数无法处理此分析。

4

1 回答 1

0

在我看来,您可以在使用之前组合这两个字段rasterize

 points$i_12 <- points$i_1 * points$i_2
 out <- rasterize(points, raster, "i_12", fun = mean, na.rm=TRUE)

同样的原则适用于更复杂的功能。首先应用函数,然后光栅化。除非函数在某种意义上是复杂的,例如,它取每个变量的平均值并将它们相加。在这种情况下,您需要逐步进行光栅化。

于 2022-02-28T18:05:30.047 回答