我有一个不同地点的几百个纬度-经度坐标对列表。我的目标是使用R获得从“家”到每个坐标对的驾车时间估计。
我已经在R中使用googleway
包取得了一些成功,但是(可以预见的)当坐标位于远离公路的位置时,例如山顶处的坐标,就会遇到问题。在这些情况下,我希望能够估算出到每个有问题的坐标对最近道路的驾车时间。
为了说明,假设我的家庭位置是:
home <- "Edinburgh, UK"
...以及我想要查找驾车时间的位置示例数据框可能是;
location <- c("place_a", "place_b", "place_c")
latitude <- c("56.87034", "57.69380", "57.36243")
longitude <- c("-4.199001", "-5.128715", "-5.104728")
df <- data.frame(location, latitude, longitude)
我可以使用类似以下的方法获取家
和地点A
之间的距离/时间等信息,以及家
和地点B
之间的信息;
(注意:您需要自己拥有Google Maps API密钥才能复制此部分...)
library(googleway)
api_key <- [insert your Google Maps api key here!]
results <- google_distance(origins = home,
destinations = list(c("56.87034,-4.199001"),
("57.69380,-5.128715")),
mode = "driving",
key = api_key,
units = "imperial")
我使用以下方式获取所需数据:
results$rows[[1]]
然而,当我们尝试获取place_c
的坐标时,会遇到问题,返回ZERO_RESULTS
;
results2 <- google_distance(origins = home,
destinations = ("57.36243,-5.104728"),
mode = "driving",
key = api_key,
units = "imperial")
我认为问题在于这些坐标是山上的中间位置,所以在这种情况下,我想要找到最近的道路而不是坐标。我希望能够通过googleway
的nearest_road
函数来解决问题,但似乎无法使其正常工作,例如以下代码无法正常运行;
df_points <- read.table(text = "lat lon
57.36243 -5.104728", header = T)
nearest_road <- google_nearestRoads(df_points, key = api_key)
有人能指导一下这里的问题吗?或者建议一个更好的解决方案?
非常感谢。
57.14743 -5.054728
才能使其工作。我在谷歌文档中也没有看到关于它必须靠近道路多近的说明。另一种方法可能是找到苏格兰道路的形状文件并使用地理空间操作,而不是使用谷歌的API。 - SymbolixAUgoogleway
的google_distance
函数来替代gmapsdistance
,解决了错误问题。 - monkeytennis