R中的GeoCoding导致连接超时错误

时间:2019-02-11 05:09:46

标签: r geocoding google-geocoder reverse-geocoding google-geocoding-api

我必须对R中的几个地址进行地理编码,但收到“超时:连接在10000毫秒后超时”错误。我在办公室防火墙后面,因此也尝试使用代理,但仍然出现相同的错误。

当我将源代码用作“ dsk”但无法对大多数地址进行地理编码,因此想使用“ google”作为源代码时,此方法就可以使用。

下面是我使用的代码。

library(ggmap)
library(curl)

register_google(key = "Have_Entered_My_API_Key_Here")

#Used below code to use proxy...(saw it as a solution in stackoverflow only for working behind firewall..maybe I'm not doing it the correct way?)
library(httr)
set_config(use_proxy(url="10.3.100.207",port=8080))

origAddress <- read.csv("Data_for_Geocoding.csv",header = TRUE,sep = ",",stringsAsFactors = FALSE)

for(i in 1:nrow(origAddress))
{

  result <- geocode(origAddress$Add_to_GeoCode[i], output = "latlona", source = "google",sensor = TRUE)
  origAddress$LONGITUDE[i] <- as.numeric(result[1])
  origAddress$LATITUDE[i] <- as.numeric(result[2])
  # origAddress$ <- as.character(result[3])
}

运行此代码时出现以下错误。
“ curl :: curl_fetch_memory(url,handle = handle)中的错误:   达到超时:连接在10000毫秒后超时“

我需要对成千上万的地址进行地址解析,因此如果有人可以在这里提供帮助,我们将不胜感激。

2 个答案:

答案 0 :(得分:0)

花了整整一整天的时间,我很高兴能够解决问题:)从而发布了答案。

如果您收到上面列出的连接超时错误,则应该检查的第一件事是您是否在防火墙后面(如果您在办公室中使用防​​火墙,则很可能是防火墙阻止了您访问Google API)在家里,您只需关闭防火墙即可)。显然,当您处于防火墙之后时,下面的代码就是对地址​​进行地理编码甚至访问Google API所需的代码。

library(httr)
set_config(
use_proxy(url="Proxy_Add_Here", port=8080, username="username_here",password="password_here")
)

请确保在您的地理编码代码之前添加此代码。

注意:请注意,Google Maps API不是免费服务。每月可以免费使用40,000次地理编码API(尽管每天的最大请求上限为2500个),超过此上限,每个调用为$ 0.005。

PS:如果不确定代理添加,请执行以下步骤。...
打开Internet Explorer->工具-> Internet选项->连接->局域网设置
用户名和密码仅是您的Windows凭据

答案 1 :(得分:0)

我也遇到了同样的问题,我通过以下代码重新修改:

library(httr)
set_config(
  use_proxy(url="127.0.0.1", port=1080)
)
httr::GET("www.google.com")  # if it returns status like 200 ,problem has been resloved

如果返回状态为200,则问题已解决