Ошибка истечения времени ожидания соединения при геокодировании в R

Я должен геокодировать несколько адресов в 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 stackru 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 миллисекунд"

У меня есть тысячи адресов, которые мне нужно геокодировать, поэтому буду очень признателен, если кто-то может помочь здесь.

1 ответ

Решение

Потратив почти весь день на это, я счастлив, что смог разгадать проблему:), поэтому выкладываю ответ.

Если вы получаете сообщение об ошибке тайм-аута соединения, как я перечислил выше, первое, что вы должны проверить, это если вы находитесь за брандмауэром (если вы работаете над этим в офисе, скорее всего, брандмауэр блокирует вам доступ к Google API Дома можно просто отключить брандмауэр). Видимо, когда вы находитесь за брандмауэром, приведенный ниже фрагмент кода необходим для геокодирования или даже доступа к Google API.

library(httr)
set_config(
use_proxy(url="Proxy_Add_Here", port=8080, username="username_here",password="password_here")
)

Обязательно добавьте этот код перед вашим кодом геокодирования.

Примечание. Обратите внимание, что API Карт Google не является бесплатным сервисом. Существует бесплатное разрешение на 40000 вызовов API геокодирования в месяц (хотя максимальное количество запросов в день ограничено 2500), и сверх этого каждый звонок составляет 0,005 доллара США.

PS: следуйте приведенным ниже инструкциям, если вы не уверены в своем прокси-дополнении....
Откройте Internet Explorer-> Сервис -> Свойства обозревателя -> Подключения -> Параметры локальной сети.
Имя пользователя и пароль - только ваши учетные данные 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

если он возвращает статус типа 200 , проблема решена

Другие вопросы по тегам