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

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

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

r raster spatial terra r-stars
1个回答
0
投票

您是否可以将栅格转换为多边形并使用

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
向量包含零存在问题,因此将其删除。

© www.soinside.com 2019 - 2024. All rights reserved.