【问题标题】:Getting OVER QUERY LIMIT after one request with geocode使用地理编码的一次请求后超过查询限制
【发布时间】:2023-03-20 04:14:01
【问题描述】:

我正在使用 ggmap 的地理编码来查找不同城市的纬度和经度。昨天它工作得很好,但今天只有一个请求后我得到了 OVER QUERY LIMIT。

事实上,如果我只是加载库并运行地理编码,它会引发 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 但每次我运行 library(ggmap) 时它都会再次重置.

十五分钟前我重新启动 Rstudio 时它工作过一次,但现在它不再工作了,我完全迷失了!

有人知道可能是什么问题吗?

PS:我是stackoverflow的新手,所以如果您对任何事情有任何意见,请告诉我!

【问题讨论】:

  • Google 很可能阻止了您的查询。如果是这种情况,除了等待一段时间直到 G 决定接受您的查询之外,不要认为您可以做很多事情。请记住,geocodeQueryCheck() 只返回一个内部计数器,而不是您剩下的实际查询数。另请参阅:developers.google.com/maps/documentation/geocoding/…
  • 谢谢,我就是这么做的,第二天就完美了!

标签: r google-maps geocode


【解决方案1】:

我在使用 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

【讨论】:

  • 也许这只是因为MS教程here? :)
  • 自 2018 年 7 月 16 日起,Google API 系统似乎发生了变化。您现在需要一个帐户和一张信用卡,尽管您仍然可以免费获得一些服务。
  • 我不得不使用googleway 来解决这个问题(参见@SymbolixAU 的回答)
【解决方案2】:

如果你想确定你的配额,你可以得到一个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"

【讨论】:

  • 谢谢!这对我有用。使用 ggmap 我不断收到 OVER_QUERY_LIMIT 错误。
【解决方案3】:

尝试注册 api_key,看起来像是付费服务。

source = “dsk” 似乎是唯一的解决方法:

geocode("巴黎", source = "dsk")

看看它是否适合你。

【讨论】:

  • 它变成了付费服务,但它有一些免费查询。虽然您没有将帐户更改为付费帐户,但您不会从所需的信用卡上收取任何费用。
  • 谢谢高斯。我上面有同样的问题。 “dsk”解决了它。
  • 欢迎您@astronomerforfun。如果您遇到其他替代方案,请随时通知我们。
【解决方案4】:

从 2018 年 6 月 11 日起Google changed 访问 Google API。

现在您需要为您的帐户设置一张信用卡才能获得使用 API 的权限。这是一个免费帐户,不会对您的信用卡收取任何费用,但您可以执行的查询数量有一些限制(就像我们在此更改之前所做的那样)。

如果您需要more queries,您应该将您的帐户更改为普通帐户,当您使用 API 时会收取更多免费限制。

【讨论】:

    【解决方案5】:

    请求不使用密钥,这意味着:您与托管在同一台服务器上的所有页面共享配额(相同的 IP 地址/可能是数百个域)。

    这个库似乎只支持业务用户提供凭据的选项。

    有一个 feature-request from 2014 ,但只要它没有实现,恐怕你在使用这个库时(作为非商业用户)无能为力(除了你修改库,但我'不熟悉R,所以我无法提供进一步的帮助)。

    【讨论】:

    • 自 2018 年 6 月 11 日以来的错误答案。
    猜你喜欢
    • 2016-08-19
    • 2016-09-21
    • 2012-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-11
    • 1970-01-01
    相关资源
    最近更新 更多