测试多边形的非随机重叠

机器算法验证 r 空间的 置换检验 地理信息系统
2022-03-24 08:24:01

我有两个多边形 shapefile,我想看看观察到的重叠量在多大程度上是偶然的。

我正在考虑某种排列测试,但不确定进行的最佳方式。

一种想法是将一个 shapefile 中的多边形随机重新定位到新位置,测量相交的总面积,然后重复此操作一千次左右以获得相交区域的分布。然后我可以测量观察到的区域与随机区域分布的可能性有多大。我最近有一个与这种方法有关的GIS 问题,这是对该问题的评论激发了这个问题。

另一种思路是将两个polgyon shapefile合并成一个shapefile,然后随机重新分配两种多边形的label,在新的labeling方案下测量相交的总面积,然后重复,如上。

具体的用例是这样的:一个多边形 shapefile 包含人类活动区域的多边形(几个较大的多边形)。另一个多边形 shapefile 包含岩石轮廓的多边形(许多较小的多边形)。问题是观察到的岩石排列是否由活动区域决定:人们是在他们的活动区域放置岩石还是我们只是在观察岩石的自然分布?

这两个想法中的任何一个都可以在正确的轨道上进行测试,还是我应该考虑完全不同的东西?任何见解都将受到欢迎!

1个回答

在这种情况下,您应该使用空间模式分析来识别人类活动与岩石分布之间的关系。岩石必须表示为一个点 shp 文件。为岩石分布添加另一个抽象级别(使它们成为多边形而不是点)是一种非常值得怀疑的方法,似乎对分析没有任何帮助。您将需要一个用于 R 和QGIS的spatstat包(带有很棒的教程) 。

  1. [你在寻找鬼魂吗?] 使用蒙特卡洛测试来确保你的岩石不是随机分布在研究区域中的(无论人类活动如何)。要执行它,请参阅教程的相应部分或这篇文章在这种情况下,o-win 对象(它是研究区域的边界,请参阅教程)将是您研究的整个区域。
  2. 使用蒙特卡罗测试来确定岩石是否随机分布在人类活动地点(在这种情况下,o-win 对象将是人类活动的多边形 shp 文件)。
  3. 得到岩石分布强度对到人类活动地点距离的依赖关系的经验图。如果人类确定岩石的位置,那么岩石的空间分布强度将取决于到人类活动区域的距离。使用rhohat它的功能。如果岩石的分布确实取决于人类活动地点,那么您案例中的图表应该类似于:在此处输入图像描述这里的 o-win 对象再次将是整个研究区域。distfun人类活动多边形的函数用作 中的协变量rhohat

这是我的一个项目的第三步的一些示例代码:

library(maptools)
library(rgdal)
library(spatstat)
spatstat.options(gpclib=TRUE)
gpclibPermit()

# load point shp-file for analysis
S <- readShapePoints("/dumps.shp", 
                      proj4string= CRS("your_+proj_sting_here"))
SP <- as(S, "SpatialPoints")
P <- as(SP, "ppp")

# load boundary layer and make it o-win object
Z <- readShapePoly("/boundaries.shp", 
            proj4string= CRS("your_+proj_sting_here"))
Z1 <- as(Z, "SpatialPolygons")
W <- as.owin(Z1)
P <- P[W]

# in my case covariate polygons were quite small so I loaded them as lines
# to avoid spatstat issue with polygons. You should represent your
# human activity polygons as points as will be described below
c <- readShapeLines("/ccovariate.shp", 
        proj4string= CRS("your_+proj_sting_here"))

cr <- as.psp(c)
cr <- cr[W]

# create a distance function 
сrdist <- distfun(cr)

# create and plot your graph
plot(rhohat(P, сrdist, covname="quarry"), 
         xlab= "Расстояние до карьера, м",
         legendpos = "topright", ##see help(plot.fv)
         main = NULL)

差不多就是这样。现在一些重要的细节。

  • 如果您没有岩石的点 shp 文件(在这种情况下,您应该跳过前两个步骤,因为这将毫无意义)您可以使用多边形图层重新创建它。为此使用 QGIS。转到矢量 -> 研究工具 -> 随机点。在这里选择你的岩石多边形层作为输入层,并设置单个多边形的选项之一(密度或每个多边形的点数)。
  • 如果您将人类活动多边形作为rhohat函数的协变量存在问题(spatstat有时不能很好地与多边形一起使用)。您可以按照上一段中的建议将多边形替换为点图层,但使用常规点而不是随机点。

PS您可以采取其他方法(从教程中获得灵感spatatat),但在这种情况下必须使用点模式分析,而不是岩石位置的某些多边形。