我必须在 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 毫秒后超时”
我有数千个地址需要进行地理编码,因此如果有人能在这里提供帮助,我将不胜感激。
最佳答案
在花了几乎一整天的时间之后,我很高兴能够解决这个问题:) 因此发布了答案。
如果您遇到我上面列出的连接超时错误,您应该检查的第一件事是您是否在防火墙后面(如果您在办公室工作,很可能防火墙阻止您访问 google api .在家里你可以简单地关闭防火墙)。显然,当您位于防火墙后面时,以下代码是您进行地理编码甚至访问 google apis 所需要的。
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 凭据
关于r - 在 R 中进行地理编码时获取连接超时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54624278/