【发布时间】:2019-05-06 23:23:37
【问题描述】:
我想计算参考线(或如果单个点有助于可能的解决方案,则为参考点)和长/纬点数据帧之间的道路网络距离。我有以下数据框:
Latitude Longitude
1 40.66858 22.88713
2 40.66858 22.88713
3 40.66858 22.88713
4 40.66858 22.88713
5 40.66858 22.88714
6 40.66857 22.88715
7 40.66858 22.88716
8 40.66858 22.88717
9 40.66859 22.88718
10 40.66861 22.88719
以及以下带有开始/结束坐标的参考线:
22.88600 40.66885
22.88609 40.66880
(如果我们想要在线中间的单个参考点(而不是整条线),它的坐标是:22.88602844465866,40.66883357487465)
这是绘制点和线后来自谷歌地球的屏幕截图:
我尝试通过以下方式计算每个点与参考线的距离:
dist2Line(points, line, distfun=distHaversine) #from geosphere package
计算的距离(例如,对于第一个点)是以下屏幕截图中带有黄线的距离。想要的那个是红色的 线(路网距离)。我该如何解决这个问题?我想计算所有点的道路网络距离! 先感谢您!
【问题讨论】:
-
您需要计算从一个点到下一个点的所有单独距离并将它们全部加起来。
-
在我看来,您正在尝试评估曼哈顿距离而不是哈弗辛距离。后者计算两点之间的最短距离,而前者计算沿直角轴测量的距离。如果是这样,您是否尝试过使用
stats::dist()函数?示例:stats::dist(data.frame(Latitude = c(40.66858,40.66885), Longitude = c(22.88713,22.88600)), method = "manhattan") -
注意:使用 geosphere 包时,函数期望第一列是经度而不是纬度。