You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按栅格单元值采样对应数量点?泊松转Log-Cox栅格

泊松过程栅格转Log-Cox过程点集

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对矢量数据支持按几何要素采样多个点,但对栅格仅支持固定数量的全局采样。

解决方案

可以通过将栅格转换为矢量多边形,再利用矢量要素的采样特性实现需求:

library(terra)
set.seed(42)
make_pois_raster <- function(x,y){rast(matrix(rpois(x*y, 2), x, y))}
r25 <- make_pois_raster(5,5)

# 将栅格转为矢量多边形,保留原单元计数值
r_poly <- as.polygons(r25, dissolve = FALSE)

# 按每个多边形的单元计数值采样对应数量的点
sample_points <- spatSample(r_poly, size = values(r25, mat=FALSE), as.points=TRUE)

# 可视化验证结果
plot(r25)
plot(sample_points, add=TRUE)

原理说明

  • 先把栅格的每个单元转为独立的多边形矢量要素,同时保留原单元的计数值属性
  • 利用spatSample对矢量要素的支持:可以为每个要素单独指定采样数量,这样就能实现每个原栅格单元内采样对应数量的点,最终得到符合Log-Cox过程的点集

内容的提问来源于stack exchange,提问作者dmi3kno

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 22:13:32