r-计算Delaunay三角剖分中2个点之间的最短距离

时间:2019-11-01 10:15:56

标签: r shortest-path dijkstra delaunay

当前,我正在处理空间数据,并在数据点上应用了Delaunay三角剖分。我还为三角测量中的每个边(2个点之间的连接)计算了WGS84椭球上的测地距离。现在,我将搜索生成的图形中每2个点之间的最短路径,并计算路径距离。因此,最短距离应计算为所有边缘距离的总和。

下面是一个最小的工作示例:

library(deldir)

set.seed(31)
x <- runif(100)
y <- runif(100)
d <- deldir(x, y)  #preforms tesselation & Delaunay triangulation

#Calculate edge distances (for reasons of simplicity I calculate here Euclidean distances)
geodists <- NULL
for (i in 1:nrow(d$delsgs)) {
  geodists[i] <- sqrt((x[d$delsgs[i,5]] - x[d$delsgs[i,6]])^2 + (y[d$delsgs[i,5]] - y[d$delsgs[i,6]])^2)
}

#Plot data
plot(d, wlines="triang")

但是,我不知道如何对创建的deldir对象执行最短路径搜索。因此,如果您能为我的问题提供一些解决方案,我将非常高兴:

  1. 如何确定A点和B点之间的最短路径涉及哪些边缘?
  2. 然后如何有效计算路径距离矩阵?

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

有一些寻路算法。其中之一是A *(Wikipedia Link) 也许这对您有帮助。 您可以用点集合中的delaunay点替换欧几里得度量标准中的规则点。 然后,总是去最接近终点的下一个邻居。