Ошибка истечения времени ожидания соединения при геокодировании в R - PullRequest
0 голосов
/ 11 февраля 2019

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

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

Ответы [ 2 ]

0 голосов
/ 11 мая 2019

У меня возникли те же проблемы с вами, и я повторно разрешил, введя следующий код:

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 , Проблема была восстановлена ​​

0 голосов
/ 11 февраля 2019

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

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

...