我有几个GPS的坐标,我想知道它们是在高速公路,主干道路还是小路上,如果我能识别道路名称,它会更大。我使用R小册子绘制地图,我可以看到OpenStreetMap不同类型的道路颜色不同,我想知道如何提取这些信息。如果它能解决我的问题,那么使用谷歌地图不是问题。
我将不胜感激。
答案 0 :(得分:5)
您可以使用revgeocode()
中的ggmap
:
library(ggmap)
gc <- c(-73.596706, 45.485501)
revgeocode(gc)
给出了:
#[1] "4333 Rue Sherbrooke O, Westmount, QC H3Z 1E2, Canada"
注意:根据评论中提到的,此方法使用的是Google Maps API,而不是OpenStreetMap。您每天最多可以查询2500个查询。您始终可以使用geocodeQueryCheck()
从包文档中:
使用Google地图反向对经度/纬度位置进行地理编码。注意 在大多数情况下,通过使用此功能,您同意 Google Maps API服务条款 https://developers.google.com/maps/terms
<强>更新强>
如果您需要更详细的信息,请使用output = "all"
并提取您需要的组件:
lst <- list(
g1 = c(-73.681069, 41.433155),
g2 = c(-73.643196, 41.416240),
g3 = c(-73.653324, 41.464168)
)
res <- lapply(lst, function(x) revgeocode(x, output = "all")[[1]][[1]][[1]][[2]])
给出了:
#$g1
#$g1$long_name
#[1] "Highway 52"
#
#$g1$short_name
#[1] "NY-52"
#
#$g1$types
#[1] "route"
#
#
#$g2
#$g2$long_name
#[1] "Carmel Avenue"
#
#$g2$short_name
#[1] "US-6"
#
#$g2$types
#[1] "route"
#
#
#$g3
#$g3$long_name
#[1] "Wakefield Road"
#
#$g3$short_name
#[1] "Wakefield Rd"
#
#$g3$types
#[1] "route"