R语言 对栅格中的每个像元进行采样,采样点数等于像元值

b1payxdu  于 2023-09-27  发布在  其他
关注(0)|答案(1)|浏览(79)

TLDR:我有一个泊松过程栅格,我想将其转换回Log-Cox过程栅格
我有一个光栅,它是一个细胞计数的积累。我需要采样尽可能多的点在每个单元格中的光栅值。
我可以从每个单元格中采样1个观察结果(希望如此):

library(terra)
#> terra 1.7.46
set.seed(42)
make_pois_raster <- function(x,y){rast(matrix(rpois(x*y, 2), x, y))}
r25 <- make_pois_raster(5,5)
plot(r25)
spatSample(r25, size=25, as.points=TRUE) |> plot(add=TRUE)
#> Warning: [is.lonlat] assuming lon/lat crs

我真正想做的是这样的事情(目前不工作)

spatSample(r25, size=values(r25, mat=FALSE), as.points=TRUE)

spatSample如果从矢量采样,则可以对每个几何体的多个点进行采样,但对于光栅,只能对固定数量的点进行采样。
创建于2023-09-13带有reprex v2.0.2

nszi6y05

nszi6y051#

您是否可以将光栅转换为多边形,并使用size参数从中采样?

# convert raster to polygons
v <- terra::as.polygons(r25, aggregate = FALSE)

# remove polygons having value 0
v <- terra::subset(v, v$lyr.1 > 0)

plot(v)

spatSample(x, size = unlist(terra::values(v))) |> plot(add = TRUE)

请注意,在转换为多边形时使用aggregate = FALSE,并且spatSample()size向量中包含零时存在问题,因此将其删除。

相关问题