Stars对象的加权聚合

xe55xuns  于 2023-11-14  发布在  其他
关注(0)|答案(1)|浏览(77)

我想知道是否可以调整以下代码,使aggregate()函数考虑stars对象中定义的每个 * 像素 * 与用于计算重叠的“单元格”之间的重叠区域。
举例来说:

# load packages
library(stars)
#> Loading required package: abind
#> Loading required package: sf
#> Linking to GEOS 3.11.2, GDAL 3.7.2, PROJ 9.3.0; sf_use_s2() is TRUE

# define two grids starting from a general polygon
gpoly <- st_sfc(st_polygon(list(rbind(c(0, 0), c(1, 0), c(1, 1), c(0, 1), c(0, 0)))))
grid1 <- st_sf(data.frame(x = 1:9), geometry = st_make_grid(gpoly, n = c(3, 3)))
grid2 <- st_make_grid(gpoly, n = c(2, 2))

# convert the first grid into stars format and plot them. 
st1 <- st_as_stars(grid1)
plot(st1, reset = FALSE)
plot(st_boundary(grid2), col = "red", add = TRUE, lwd = 3)

字符串
x1c 0d1x的数据
现在我想使用grid2聚合st1定义的值(即上图中的红色单元格)。下面的代码执行这样的聚合,但每个新值都是通过对与给定单元格相交的像素值进行简单平均来计算的(因为合并是使用join = st_intersects执行的)。

aggregate(
  st1, 
  by = grid2, 
  FUN = mean 
) 
#> stars object with 1 dimensions and 1 attribute
#> attribute(s):
#>    Min. 1st Qu. Median Mean 3rd Qu. Max.
#> x     3   4.125      6    6   7.875    9
#> dimension(s):
#>          from to point
#> geometry    1  4 FALSE
#>                                                                 values
#> geometry POLYGON ((0 0, 0.5 0, 0.5...,...,POLYGON ((0.5 0.5, 1 0.5,...


是否可以调整前面的代码,使计算均值时考虑到像素和单元格重叠的面积?就像加权均值,其中权重是重叠的面积。
创建于2023-10-25使用reprex v2.0.2

xqk2d5yq

xqk2d5yq1#

您应该使用st_interpolate_aw,如

st_interpolate_aw(st1, grid2, extensive = FALSE)

字符串

相关问题