【发布时间】:2019-07-08 23:14:56
【问题描述】:
我想从 OSRM 计算坐标到坐标的路线距离(尽管我对其他服务开放)。
例如,一行会有一个“from”和“to”坐标,而不是获取点到点的距离,而是使用路由来更准确地了解行进的距离。
我已经尝试了此处提供的脚本的每一次迭代,并将我的数据减少到 25 行。
https://www.rdocumentation.org/packages/osrm/versions/3.3.0/topics/osrmTable
# Set the working directory
setwd("C:/Users/...")
# Load libraries
library(dplyr)
library(osrm)
library(geosphere)
# Bring in the data
mydata <- read.csv("coordinates.csv", stringsAsFactors=FALSE)
# Check and eliminate the rows that don't have location information
mydata <- mydata[!is.na(mydata$fromlat),]
mydata <- subset(mydata, fromlat!=0)
mydata <- mydata[!is.na(mydata$tolat),]
mydata <- subset(mydata, tolat!=0)
# Create date for route
src <- mydata[c(7,10,9)]
dst <- mydata[c(7,12,11)]
# Travel time matrix with different sets of origins and destinations
route <- osrmTable(src = src, dst = dst, exclude = NULL,
gepaf = FALSE, measure = "distance")
理想情况下,我希望使用路由将一个新列放入具有两个坐标之间距离的数据中。
我已经确定了点对点距离,但我在路由方面遇到了困难。
我在运行脚本后收到此消息:
The OSRM server returned an error:
Error in function (type, msg, asError = TRUE) : Failed to connect to router.project-osrm.org port 80: Timed out
更新: 我试过使用 gmapsdistance,但也遇到了连接问题。我怀疑这是工作场所的防火墙问题。我会调查并发布结果。
【问题讨论】:
-
连接到 Internet 时出现错误。您是否位于阻止访问的防火墙后面?
-
很可能是这样。运行我自己的实例,如下所示:github.com/Project-OSRM/osrm-backend 解决这个问题吗?还是我应该尝试其他服务?