确定哪些点位于R中不规则形状的数据足迹之外?

我在“足迹”形状非常不规则的区域中有一系列点:

《确定哪些点位于R中不规则形状的数据足迹之外?》

我想确定足迹顶点内的所有坐标.最终目标是确定哪些数据点位于此足迹之外.

有没有人有一个有效的方法来做这个?

我最好接近这个是基于绿色区域的顶点绘制多边形然后使用所述多边形的坐标来确定“异常点”(但是,我不知道如何做到这一点 – 一次一步!).

然而,当我尝试创建一个convex hull时,由于我的绿色空间形状不规则,它显然会产生问题. [有谁知道创建CONCAVE船体的方法?]

或者,有没有办法使用“点击图形”类型方法手动绘制多边形?

…再次,如果你有一个比使用多边形更好的解决我的问题的方法,请务必建议解决方案!

最佳答案

Alternatively, is there a way to draw polygons manually using a ‘click
the graph’ type method?

这是一个想法.首先,一些随机点:

library(manipulate)
library(sp)
set.seed(1)
par(pch = 19, cex=.5)
x <- runif(1000)
y <- runif(1000)

现在,绘制并捕获多边形:

coords <- data.frame()
manipulate({
  plot(y~x)
  res <- manipulatorMouseClick()
  coords <<- rbind(coords, data.frame(x=res$userX, y=res$userY))
  if (length(coords)) lines(coords)
})

《确定哪些点位于R中不规则形状的数据足迹之外?》

并确定哪些点位于其内部/外部(请参阅?point.in.polygon):

res <- point.in.polygon(x, y, coords$x, coords$y)!=0 

plot(y~x, col = res + 1L)
lines(coords)

《确定哪些点位于R中不规则形状的数据足迹之外?》

点赞