Ошибка геокодирования с использованием ggmap и Google Geocoding API в R;за брандмауэром компании - PullRequest
0 голосов
/ 10 апреля 2019

Я пытаюсь геокодировать адреса в R, используя функцию geocode() в пакете ggmap. Я сделал это на своем персональном компьютере относительно легко и хочу попробовать это на своем рабочем компьютере. Обычно я должен зарегистрироваться в 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 / порт, указанный в сообщении об ошибке, на url port ###, поскольку я думаю, что это относится к моему компьютеру.

У меня такое чувство, что это связано с моей рабочей сетью. Подобные вопросы настроили некоторую конфигурацию с помощью пакета httr, но эти решения не сработали для меня. Возможно, я ввел неверную информацию. Любая помощь?

Ответы [ 2 ]

1 голос
/ 11 апреля 2019

Попробовав каждое из решений здесь , и ни одно из них не сработало, я выяснил проблему методом проб и ошибок.В конечном итоге мой прокси и порт оказались не правы.В моем примере я следовал инструкциям в ссылке, чтобы найти свой прокси с помощью IE -> Сервис -> Свойства обозревателя -> вкладка Подключения -> Параметры локальной сети.Однако прокси несколько отличался от того, что использовал мой компьютер.Таким образом, надежный метод состоял в том, чтобы использовать пакет 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
1 голос
/ 10 апреля 2019

У меня была похожая проблема в моей работе, которую мне удалось решить, добавив одну строку кода с функцией из библиотеки httr.

Я сделал:

library(httr)
set_config(use_proxy(url="http://proxy.mycompanyname.com", port=****))

Просто вставьте прокси, через который компьютер в сети вашей компании подключается к Интернету, и к порту, который необходимо открыть. Обычно используемые порты веб-прокси-сервера: 3128, 8080, 6588 и 80.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...