2015-12-21 129 views
12

我试图使用函数库中的geocode函数来获取特定位置的坐标。到目前为止,我可以使用这个功能。增加ggmap的地理编码功能(R中)的api限制

我遇到的问题是我想将我的每日限额从2,500增加到100,000。官方Google documentation 表示,如果您对该项目启用记帐功能,我很乐意这样做。当您继续此过程时,Google Developers Console会为您提供个性化的API密钥。

但是,geocode函数没有选项来放入此个性化的API密钥。相反,它要求client(商业用户的客户端ID)和signature(商业用户的签名),这就是Google Maps API for Work客户如何访问API。我得到的,这也是一种选择,但是,这似乎是一个非常实用的情况下,由于工作谷歌地图API似乎是专为大型企业帐户:

每日配额开始在每24小时100,000个请求,基于年度合同购买。

所以我的问题归结为:我可以使用geocode功能从ggmapsR ping到谷歌地图API地理编码?

回答

4

我没有找到一种方法,使用现有的geocode功能(从ggmap库)来回答这个问题,所以我刚刚创建了一个新的功能,只是这样做使用现有getURL功能(从RCurl库自己)和fromJSON函数(来自RJSONIO库)。

写入新功能:

library(RJSONIO) 
library(RCurl) 

getGeoData <- function(location){ 
    location <- gsub(' ','+',location) 
    geo_data <- getURL(paste("https://maps.googleapis.com/maps/api/geocode/json?address=",location,"&key=**[YOUR GOOGLE API KEY HERE]**", sep="")) 
    raw_data_2 <- fromJSON(geo_data) 
    return(raw_data_2) 
} 

测试: getGeoData("San Francisco")

这给了你,在为所产生的名单完全相同的格式几乎(但不完全)相同的数据列表geocode("San Francisco")

5

感谢您的支持!它极大地帮助了我。 你的解决方案非常具体,所以我想包括我对你的功能进行的改编。它抛出了错误,因为raw_datageo_data_list未定义。我猜这些是特定于您当地的环境。

对于我来说,输入位置并返回纬度,经度与这工作:

getGeoData <- function(location, api_key){ 
    location <- gsub(' ','+',location) 
    geo_data <- getURL(paste("https://maps.googleapis.com/maps/api/geocode/json?address=",location,sprintf("&key=%s",api_key), sep="")) 
    geo_data <- fromJSON(geo_data) 
    return(geo_data$results[[1]]$geometry$location) 
} 

您可以修改return语句索引geo_data得到比纬度经度不同的属性了。

希望这可以帮助别人。

[R

8

我已经写了包googleway访问谷歌地图API,你可以指定你的API密钥。

例如

library(googleway) 

key <- "your_api_key" 

google_geocode(address = "San Francisco", 
       key = key) 

# $results 
# address_components 
# 1 San Francisco, San Francisco County, California, United States, SF, San Francisco County, CA, US, locality, political, administrative_area_level_2, political, administrative_area_level_1, political, country, political 
# formatted_address geometry.bounds.northeast.lat geometry.bounds.northeast.lng geometry.bounds.southwest.lat 
# 1 San Francisco, CA, USA      37.92977      -122.3279      37.69313 
# geometry.bounds.southwest.lng geometry.location.lat geometry.location.lng geometry.location_type 
# 1      -123.1661    37.77493    -122.4194   APPROXIMATE 
# geometry.viewport.northeast.lat geometry.viewport.northeast.lng geometry.viewport.southwest.lat 
# 1       37.812      -122.3482       37.7034 
# geometry.viewport.southwest.lng     place_id    types 
# 1      -122.527 ChIJIQBpAG2ahYAR_6128GcTUEo locality, political 
# 
# $status 
# [1] "OK" 
7

2.7或更高版本(ggmap版本12月13日,中尚未公布的克兰,但你可以devtools::install_github("dkahle/ggmap")安装,你只需要运行register_google(key = 'LONG KEY STRING'),然后你可以调用任何的ggmap函数,如geocodemutate_geocode并使用您的API密钥。