从R中CSV中的坐标计算路线距离
Calculating route distance from coordinates in CSV in R
我想从 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,但也遇到了连接问题。我怀疑这是工作场所防火墙问题。我会调查并 post 结果。
事实上,我在阻止访问 OSRM 的防火墙后面。为了解决这个问题,我通过RStudio Cloud.
运行一个R的实例
我想从 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,但也遇到了连接问题。我怀疑这是工作场所防火墙问题。我会调查并 post 结果。
事实上,我在阻止访问 OSRM 的防火墙后面。为了解决这个问题,我通过RStudio Cloud.
运行一个R的实例