【问题标题】:Using R package 'OSRM' to find distance and travel times between two points使用 R 包“OSRM”查找两点之间的距离和旅行时间
【发布时间】:2019-01-30 07:19:40
【问题描述】:

我正在尝试使用 R 包“osrm”查找多个位置之间的距离和旅行时间。我有一个名为 coordinates 的数据框,其中包含我国 32 个地点的纬度和经度。

我需要从每个点到所有其他点的距离和旅行时间。因此,结果必须是对角线为零的 32x32 矩阵(因为从一个点到其自身的距离和旅行时间为零)。

我使用了 osrmRouteosrmTable,但由于收到以下错误消息而无法正常工作

distance<-osrmRoute(coordinates)
travelTime<-osrmTable(coordinates)

The OSRM server returned an error:
Error in names(loc) <- c("id", "lon", "lat"): 'names' attribute [3] must be 
the same length as the vector [2]

从文档中不清楚这两个函数的参数应该是什么。它提到了一个“标识符、经度和纬度的数字向量(WGS84)”,但我不知道标识符是什么。

有什么建议吗?也欢迎涉及其他 R 包的解决方案。

【问题讨论】:

    标签: r


    【解决方案1】:

    在重新阅读“osrm”包的文档并查看提供的示例后,我能够解决我的问题。我在名为 df 的数据框中将位置的名称添加为一列(所以我有 3 列:name_location、经度和纬度)。然后我使用了函数 osrmTable

    travelTime<-osrmTable(loc=df[1:32, c("name_location", "Longitude", "Latitude")], gepaf=FALSE) 
    

    结果是一个对角线为零且大致对称的方阵。我猜这不是一个对称矩阵,因为从 A 点到 B 点可能比从 B 点到 A 点花费的时间要长一些(也许 B 到 A 的道路可能不可用)。

    【讨论】:

      猜你喜欢
      • 2016-07-14
      • 2019-09-16
      • 1970-01-01
      • 2016-12-11
      • 2012-11-08
      • 2012-09-01
      • 1970-01-01
      • 2022-08-14
      • 1970-01-01
      相关资源
      最近更新 更多