当前,我正在处理空间数据,并在数据点上应用了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对象执行最短路径搜索。因此,如果您能为我的问题提供一些解决方案,我将非常高兴:
非常感谢您的帮助!
答案 0 :(得分:1)
有一些寻路算法。其中之一是A *(Wikipedia Link) 也许这对您有帮助。 您可以用点集合中的delaunay点替换欧几里得度量标准中的规则点。 然后,总是去最接近终点的下一个邻居。