在 R 中进行地理编码时获取连接超时错误
Getting connection timed out error while GeoCoding in R
我必须在 R 中对几个地址进行地理编码,但出现 "Timeout was reached: Connection timed out after 10000 milliseconds" 错误。我在办公室防火墙后面,所以也尝试使用代理,但仍然遇到同样的错误。
这在我将源用作 "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 Whosebug 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 毫秒后超时
我有数千个地址需要进行地理编码,如果有人能提供帮助,我将不胜感激。
在花了将近一整天的时间后,我很高兴我能够解决这个问题 :) 因此发布了答案。
如果你收到我上面列出的连接超时错误,你应该检查的第一件事是你是否在防火墙后面(如果你在办公室工作,很可能防火墙阻止你访问 google api。在家里你可以简单地关闭防火墙)。显然,当您位于防火墙后面时,您需要对以下代码进行地理编码甚至访问 google apis.
library(httr)
set_config(
use_proxy(url="Proxy_Add_Here", port=8080, username="username_here",password="password_here")
)
确保在您的地理编码代码之前添加此代码。
注意:请注意 Google 地图 API 不是免费服务。每月可免费拨打 40,000 次地理编码 API(尽管每天的最大请求数上限为 2500 次),超过此次数则每次收费 0.005 美元。
PS: 按照以下步骤操作,如果您不确定您的代理添加....
打开 Internet Explorer-->工具-->Internet 选项-->连接-->LAN 设置
用户名和密码仅是您的 windows 凭据
我和你遇到了同样的问题,我通过以下代码重新编辑:
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
如果returns状态如200,问题已解决
我必须在 R 中对几个地址进行地理编码,但出现 "Timeout was reached: Connection timed out after 10000 milliseconds" 错误。我在办公室防火墙后面,所以也尝试使用代理,但仍然遇到同样的错误。
这在我将源用作 "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 Whosebug 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 毫秒后超时
我有数千个地址需要进行地理编码,如果有人能提供帮助,我将不胜感激。
在花了将近一整天的时间后,我很高兴我能够解决这个问题 :) 因此发布了答案。
如果你收到我上面列出的连接超时错误,你应该检查的第一件事是你是否在防火墙后面(如果你在办公室工作,很可能防火墙阻止你访问 google api。在家里你可以简单地关闭防火墙)。显然,当您位于防火墙后面时,您需要对以下代码进行地理编码甚至访问 google apis.
library(httr)
set_config(
use_proxy(url="Proxy_Add_Here", port=8080, username="username_here",password="password_here")
)
确保在您的地理编码代码之前添加此代码。
注意:请注意 Google 地图 API 不是免费服务。每月可免费拨打 40,000 次地理编码 API(尽管每天的最大请求数上限为 2500 次),超过此次数则每次收费 0.005 美元。
PS: 按照以下步骤操作,如果您不确定您的代理添加....
打开 Internet Explorer-->工具-->Internet 选项-->连接-->LAN 设置
用户名和密码仅是您的 windows 凭据
我和你遇到了同样的问题,我通过以下代码重新编辑:
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
如果returns状态如200,问题已解决