我正在尝试使用R包“ osrm”查找多个位置之间的距离和行驶时间。我有一个名为 coordinates 的数据框,其所在国家的32个位置的经度和纬度。
我需要从每个点到所有其他点的距离和旅行时间。因此,结果必须是对角线为零的32x32矩阵(因为从点到自身的距离和传播时间为零)。
我使用了 osrmRoute 和 osrmTable ,但是由于收到以下错误消息
而无法使其正常工作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软件包的解决方案。
答案 0 :(得分:0)
重新阅读'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点的另一条路可能不可用)。