在 R 中使用 ggmap 和 Google 地理编码 API 进行地理编码失败;在公司防火墙后面
Failure to geocode using the ggmap and Google Geocoding API in R; behind company firewall
我正在尝试使用 ggmap
包中的 geocode()
函数对 R
中的地址进行地理编码。我已经在我的个人计算机上相对轻松地完成了此操作,并想在我的工作计算机上尝试此操作。一般来说,我应该注册 Google,库 ggmap
包,读入我的安全密钥,然后我可以使用 geocode()
功能。但我得到错误。见下文:
# Library package
library(ggmap)
# Set key file
gmAPI <- "key_file.txt"
# Read-in Google API key
gmAPIKey <- readLines(gmAPI)[1]
# Register key
register_google(key = gmAPIKey)
# Geocode Waco, TX
geocode("waco, texas", output = "latlona")
我没有生成地理编码输出,而是收到:
Source : https://maps.googleapis.com/maps/api/geocode/json?address=waco,+texas&key=xxx.txt
Error in curl::curl_fetch_memory(url, handle = handle) :
Failed to connect to maps.googleapis.com port 443: Timed out
或有时:
Source : https://maps.googleapis.com/maps/api/geocode/json?address=waco,+texas&key=xxx.txt
Error in curl::curl_fetch_memory(url, handle = handle) :
Failed to connect to url port ###: Connection refused
注意:我将错误消息中发布的实际 url/port 替换为 url port ###
,因为我认为这是特定于我的计算机。
我感觉这与我的工作网络有关。 Similar questions 已经使用 httr
包设置了一些配置,但这些解决方案对我不起作用。我可能输入了错误的信息。有帮助吗?
我在工作中遇到了类似的问题,我确实设法解决了添加一行代码和 httr
库中的函数的问题。
我做到了:
library(httr)
set_config(use_proxy(url="http://proxy.mycompanyname.com", port=****))
只需插入贵公司网络中的一台计算机连接到互联网的代理和需要打开的端口即可。常用的网络代理服务器端口有3128、8080、6588和80。
希望对您有所帮助!
在尝试了每个解决方案 here 并且其中 none 可行之后,我通过反复试验找出了问题所在。最终,我的代理和端口是错误的。在我的示例中,我按照 link 中的说明通过 IE -> 工具 -> Internet 选项 -> 连接选项卡 -> 局域网设置找到我的代理。但是,代理与我的计算机使用的有所不同。因此,一个万无一失的方法是使用 curl
包并使用 ie_get_proxy_for_url()
函数以编程方式执行此操作。当我使用 ie_get_proxy_for_url()
函数的输出时,@Lennyy 的解决方案有效(因此被记入)。见代码:
library(curl)
library(ggmap)
library(httr)
# Get proxy and port
proxyPort <- ie_get_proxy_for_url()
# Split the string to feed the proxy and port arguments
proxyURL <- strsplit(proxyPort, ":")[[1]][1]
portUsed <- as.integer(strsplit(proxyPort, ":")[[1]][2])
# Set configuration
set_config(use_proxy(url=proxyURL, port = portUsed), override = TRUE)
# Geocode Waco, TX
geocode("waco, texas", output = "latlona")
# Output commented below:
# A tibble: 1 x 3
# lon lat address
# <dbl> <dbl> <chr>
# 1 -97.1 31.5 waco, tx, usa
我正在尝试使用 ggmap
包中的 geocode()
函数对 R
中的地址进行地理编码。我已经在我的个人计算机上相对轻松地完成了此操作,并想在我的工作计算机上尝试此操作。一般来说,我应该注册 Google,库 ggmap
包,读入我的安全密钥,然后我可以使用 geocode()
功能。但我得到错误。见下文:
# Library package
library(ggmap)
# Set key file
gmAPI <- "key_file.txt"
# Read-in Google API key
gmAPIKey <- readLines(gmAPI)[1]
# Register key
register_google(key = gmAPIKey)
# Geocode Waco, TX
geocode("waco, texas", output = "latlona")
我没有生成地理编码输出,而是收到:
Source : https://maps.googleapis.com/maps/api/geocode/json?address=waco,+texas&key=xxx.txt
Error in curl::curl_fetch_memory(url, handle = handle) :
Failed to connect to maps.googleapis.com port 443: Timed out
或有时:
Source : https://maps.googleapis.com/maps/api/geocode/json?address=waco,+texas&key=xxx.txt
Error in curl::curl_fetch_memory(url, handle = handle) :
Failed to connect to url port ###: Connection refused
注意:我将错误消息中发布的实际 url/port 替换为 url port ###
,因为我认为这是特定于我的计算机。
我感觉这与我的工作网络有关。 Similar questions 已经使用 httr
包设置了一些配置,但这些解决方案对我不起作用。我可能输入了错误的信息。有帮助吗?
我在工作中遇到了类似的问题,我确实设法解决了添加一行代码和 httr
库中的函数的问题。
我做到了:
library(httr)
set_config(use_proxy(url="http://proxy.mycompanyname.com", port=****))
只需插入贵公司网络中的一台计算机连接到互联网的代理和需要打开的端口即可。常用的网络代理服务器端口有3128、8080、6588和80。
希望对您有所帮助!
在尝试了每个解决方案 here 并且其中 none 可行之后,我通过反复试验找出了问题所在。最终,我的代理和端口是错误的。在我的示例中,我按照 link 中的说明通过 IE -> 工具 -> Internet 选项 -> 连接选项卡 -> 局域网设置找到我的代理。但是,代理与我的计算机使用的有所不同。因此,一个万无一失的方法是使用 curl
包并使用 ie_get_proxy_for_url()
函数以编程方式执行此操作。当我使用 ie_get_proxy_for_url()
函数的输出时,@Lennyy 的解决方案有效(因此被记入)。见代码:
library(curl)
library(ggmap)
library(httr)
# Get proxy and port
proxyPort <- ie_get_proxy_for_url()
# Split the string to feed the proxy and port arguments
proxyURL <- strsplit(proxyPort, ":")[[1]][1]
portUsed <- as.integer(strsplit(proxyPort, ":")[[1]][2])
# Set configuration
set_config(use_proxy(url=proxyURL, port = portUsed), override = TRUE)
# Geocode Waco, TX
geocode("waco, texas", output = "latlona")
# Output commented below:
# A tibble: 1 x 3
# lon lat address
# <dbl> <dbl> <chr>
# 1 -97.1 31.5 waco, tx, usa