我想知道是否可以调整以下代码,使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
1条答案
按热度按时间xqk2d5yq1#
您应该使用
st_interpolate_aw
,如字符串