R使用runifpoint函数生成带条件的点

问题描述

我正在尝试在矩形中生成随机分布的点。

为了在矩形中创建 50 个随机点,我使用了

i=50
  pp<-runifpoint(i,win=owin(c(0,19.5),c(0,3.12))

如果我在随机生成点之前在坐标上添加条件,

例如0.24

最终目标是在矩形中生成除灰色阴影区域外的点,如下图

enter image description here

解决方法

这是一个关于 R 包 spatstat 的问题。

参数 win 指定将在其中生成点的空间区域。在您的示例中,您已将此区域指定为矩形。你只需要用你想要生成点的区域替换这个矩形。

您可以通过多种方式构建空间区域(owin 类的对象)。请参阅 help(owin)help(spatstat) 了解概览。

在您的示例中,您可以通过形成几个矩形的联合来构建形状。例如制作一个简单的十字形,我可以写

require(spatstat)
A <- owin(c(-1,1),c(-4,4))
B <- owin(c(-4,4),c(-1,1))
U <- union.owin(A,B)
plot(U)

另一种方法是指定多边形的角并使用 W <- owin(poly=p),其中 p = list(x,y) 包含角的坐标,按逆时针顺序列出,不重复。请参阅help(owin)

the spatstat book 的第 3.5 节也涵盖了这一点。您可以免费下载第 3 章。