r - 在 R 中进行地理编码时获取连接超时错误

标签 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 毫秒后超时”

我有数千个地址需要进行地理编码,因此如果有人能在这里提供帮助,我将不胜感激。

最佳答案

在花了几乎一整天的时间之后,我很高兴能够解决这个问题:) 因此发布了答案。
如果您遇到我上面列出的连接超时错误,您应该检查的第一件事是您是否在防火墙后面(如果您在办公室工作,很可能防火墙阻止您访问 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/

相关文章:

r - 模拟抛硬币

ruby-on-rails - 带参数的复杂 if 条件

ios - 如何使用 Apple Map Kit 实现地址自动完成

php - 对很长的列表进行地理编码

javascript - 使用地理编码服务无法显示 Google map

Android Geocoder getFromLocation 为有效位置返回 0 个结果

r - ggplot2 每个主要中断的次要中断的整数倍

正则表达式在 Rmarkdown 中搜索数据表

r - 使用lubridate库的问题

jquery - 使用geocomplete jquery插件,如何将类型限制为仅机场