我尝试使用 Google Maps 和 R 来计算起点和终点之间每次过境的旅行时间。
搜索指南可在以下位置找到:https ://developers.google.com/maps/documentation/directions/#TravelModes
当我将起点和终点的纬度和经度作为文字提交时,一切正常。
例如,以下 R 代码正确执行,我们获得了距离和行程持续时间(搜索的输出为 JSON 格式,并使用 fromJSON 转换为 R 对象)
library(rjson)
library(gooJSON)
route <- url('http://maps.googleapis.com/maps/api/directions/json? origin=51.13854,4.384575&destination=51.13156,4.387118®ion=be&sensor=false&mode=transit&departure_time=1372665319')
route_file <- file("route_file.json")
L <- readLines(route,-1)
writeLines(L, route_file)
close(route)
routesR_zone1_to_zone20 <- fromJSON( file = route_file )
routesR_zone1_to_zone20$routes[[1]][[3]][[1]]$distance$value/1000
routesR_zone1_to_zone20$routes[[1]][[3]][[1]]$duration$value/60
但是,我真正感兴趣的是对数千个起点-目的地对重复此操作。始发地和目的地的经度和纬度则成为变量。
例如:
> lat_or
[1] 51.13854
> long_or
[1] 4.384575
> lat_des
[1] 51.13156
> long_des
[1] 4.387118
> route <- url('http://maps.googleapis.com/maps/api/directions/json? origin=lat_or,long_or&destination=lat_des,long_des®ion=be&sensor=false&mode=transit&departure_time=1372665319')
> route_file <- file("route_file.json")
> L <- readLines(route,-1)
> writeLines(L, route_file)
> close(route)
> routesR_zone1_to_zone20 <- fromJSON( file = route_file )
> routesR_zone1_to_zone20
$routes
list()
$status
[1] "NOT_FOUND"
因此,虽然坐标与前面的示例相同,但这次没有找到路线。
我想问题在于,当访问 url 时,lat_or 等没有在相应的数值中“翻译”,并且 Google 尝试计算文字“lat_or,long_or”和“lat_des,long_des”之间的路线。
有没有人有关于如何规避问题的建议?