【发布时间】:2016-01-22 17:31:47
【问题描述】:
我有一个像下面这样的点云
df <- data.frame(x=c(2,3,3,5,6,2,6,7,7,4,3,8,9,10,10,12,11,12,14,15),
y=c(6,5,4,4,4,4,3,3,2,3,7,3,2,3,4,6,5,5,4,6))
plot(df,xlab="",ylab="",pch=20)
将它们视为动物运动的 gps 坐标。我想找到点(动物)所覆盖的空间区域。最明显的解决方案是产生这个的凸包:
df1 <- df[chull(x = df$x,y=df$y),]
polygon(x = df1$x,df1$y)
但这不是我想要的结果。运动区域不是一个封闭的几何形状,而是一种回旋镖的形状。凸包覆盖了动物未覆盖的许多区域,从而高估了该区域。我正在寻找这样的东西:
当然,这是一个提供想法的模拟数据集。原始数据集在点云中有更多的点和不同的几何形状。我一直在考虑 DBSCAN 或最小跨度网络,但它们不太有效。
我不知道如何用几何或数学来描述这一点。如果有人对如何解决这个问题有任何想法(即使它不是一个完整的解决方案),我将非常感激。如果有人对这个问题有更好的标题,那也很好:-) 谢谢。
更新 ---------------------------------- ------------------
(最小生成树)MST 图。我认为这可能是正确的方向。
library(ape)
d <- dist(df)
mstree <-mst(d)
plot(mstree, x1 = df$x, x2 = df$y)
【问题讨论】:
-
原来这个问题是关于计算一组点的最佳凹壳。这是一个python实现。 blog.thehumangeo.com/2014/05/12/drawing-boundaries-in-python
标签: r polygon area point-clouds convex-hull