Ошибка истечения времени ожидания соединения при геокодировании в 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 , проблема решена