我正在使用ggmap的地理编码来查找不同城市的纬度和经度。它昨天完全没问题,但是今天只有一个请求后我得到了一个超额的限制。
事实上,如果我只是加载库并运行geocode,它会抛出OVER QUERY LIMIT错误:
> library(ggmap)
> geocode("Paris")
Information from URL : http://maps.googleapis.com/maps/api/geocode/json?address=Paris&sensor=false
lon lat
1 NA NA
Warning message:
geocode failed with status OVER_QUERY_LIMIT, location = "Paris"
我在stackoverflow上检查了不同的主题,但似乎没有人遇到同样的问题。 我试着看看我是否超过2500限制(非常不可能,但我是新编码,所以也许我做错了...)并且geocodeQueryCheck()读取2498然后再次重置它每次运行库(ggmap)
十五分钟前,当我重新启动Rstudio时,它已经工作了,但现在它不再起作用了,我完全迷失了!
有没有人知道可能是什么问题?
PS:我是stackoverflow的新手,所以如果你有任何评论,请告诉我!
答案 0 :(得分:31)
我在一批地点使用ggmap::geocode()
时遇到了类似问题,其中大约20%的地点发出了OVER QUERY LIMIT错误,即使geocodeQueryCheck()
会显示剩余的地理编码查询足够多,并且错误偶尔散布在整个地点,而不仅仅是最后的20%。如果我重新尝试第一次失败的位置子集,那么大多数都会工作,所以我不得不迭代更小的子集,直到它们都有地理编码。
ggmap v2.7允许用户通过register_google()
功能指定Google Maps API密钥。 v2.7尚未在CRAN上,因此您必须使用devtools::install_github("dkahle/ggmap")
进行安装。更新到该版本并设置我的API密钥register_google(key = "my_api_key")
后,同一批次按预期在一次运行中工作。
Google Maps API密钥很容易获得: https://developers.google.com/maps/documentation/geocoding/get-api-key
答案 1 :(得分:15)
如果您想确定配额,可以获得Google Maps API key,然后在我的googleway
包中使用
library(googleway)
key <- "your_api_key"
google_geocode(address = "Paris", key = key)
# $results
# address_components
# 1 Paris, Paris, Île-de-France, France, Paris, Paris, Île-de-France, FR, locality, political, administrative_area_level_2, political, administrative_area_level_1, political, country, political
# 2 Paris, Lamar County, Texas, United States, Paris, Lamar County, TX, 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 Paris, France 48.90214 2.469921 48.81557
# 2 Paris, TX, USA 33.73838 -95.435455 33.61185
# geometry.bounds.southwest.lng geometry.location.lat geometry.location.lng geometry.location_type
# 1 2.225193 48.85661 2.352222 APPROXIMATE
# 2 -95.627928 33.66094 -95.555513 APPROXIMATE
# geometry.viewport.northeast.lat geometry.viewport.northeast.lng geometry.viewport.southwest.lat geometry.viewport.southwest.lng
# 1 48.90214 2.469921 48.81557 2.225193
# 2 33.73838 -95.435455 33.61185 -95.627928
# place_id types
# 1 ChIJD7fiBh9u5kcRYJSMaMOCCwQ locality, political
# 2 ChIJmysnFgZYSoYRSfPTL2YJuck locality, political
#
# $status
# [1] "OK"
答案 2 :(得分:9)
试图注册api_key,看起来像付费服务。
source =“ dsk” 似乎是唯一的解决方法:
geocode(“巴黎”,源=“ dsk”)
查看它是否适合您。
答案 3 :(得分:7)
从2018年6月11日起Google changed对Google API的访问。
现在您需要为您的帐户设置信用卡,以获取使用API的权限。它有一个免费帐户,不会对您的信用卡收取任何费用,而且您可以进行的查询数量受到一些限制(就像我们在此更改之前所做的一样)。
如果您需要more queries,则应将帐户更改为普通帐户,这将在您使用API时向您收取更多的免费限额。
答案 4 :(得分:4)
请求不使用密钥,这意味着:您与同一服务器上托管的所有页面共享配额(相同的IP地址/可能是域名)。
因为该库似乎只支持业务用户提供凭据的选项。
有一个feature-request from 2014,但只要它没有实现,我担心当您使用此库时,您无法做任何事情(作为非商业用户)(除了你修改图书馆,但我不熟悉R所以我无法提供进一步的帮助。