2017-01-05 2 views
1

Я связывался, чтобы получить расстояние между списком домашних почтовых индексов и списком школьных почтовых индексов для примерно 2000 студентов. Я использую пакет gmapsdistance внутри R, чтобы получить это из API-интерфейсов Матрицы расстояний Google Maps. Я поместил действующий ключ API и просто заменил его в следующем коде по соображениям безопасности.Расчет расстояния пешком с помощью Google Maps в R

library(gmapsdistance) 
set.api.key("valid API key") 

results <- gmapsdistance(origin = school$HomePostcode, 
         destination = school$SchoolPostcode, 
         mode = "walking", 
         shape = "long") 

Однако это дает следующий код ошибки.

Ошибка в функции (тип, сообщ, asError = TRUE): Неизвестная ошибка протокола SSL в связи с maps.googleapis.com:443

Глядя на веб-сайте Google APIs, это выглядит он не выполнил запрос для всех данных, он говорит, что было всего 219 запросов. Я знаю, что я ограничен, сколько запросов я могу сделать за один день, но предел равен 2500, и это даже не позволяет мне приблизиться к этому.

Я пробовал использовать код на одном наборе почтовых индексов, как показано ниже;

test <- gmapsdistance(origin = "EC4V+5EX", 
         destination = "EC4V+3AL", 
         mode = "walking", 
         shape = "long") 

Что дает следующее, как и следовало ожидать.

$Time 
[1] 384 

$Distance 
[1] 497 

$Status 
[1] "OK" 

Мои данные выглядят примерно так, я анонимизировал данные и удалил все переменные, которые не нужны. Есть 1 777 наборов почтовых индексов.

head(school) 
    HomePostcode SchoolPostcode 
1  EC4V+5EX   EC4V+3AL 
2  EC2V+7AD   EC4V+3AL 
3  EC2A+1WD   EC4V+3AL 
4  EC1V+3QG   EC4V+3AL 
5  EC2N+2PT   EC4V+3AL 
6  EC1M+5QA   EC4V+3AL 

ответ

3

Я не хватает репутации комментировать, но вы пытались установить параметр combinations в "pairwise". Если установлено значение "all", тогда он будет вычислять все комбинации между одним источником и всеми получателями.

library(gmapsdistance) 

from <- c("EC4V+5EX", "EC2V+7AD", "EC2A+1WD", "EC1V+3QG", "EC2N+2PT", "EC1M+5QA") 
to <- c("EC4V+3AL", "EC4V+3AL", "EC4V+3AL", "EC4V+3AL", "EC4V+3AL", "EC4V+3AL") 

test <- gmapsdistance(origin=from, 
         destination=to, 
         combinations="pairwise", 
         key="YOURAPIKEYHERE", 
         mode="walking") 

test$Distance 

     or  de Distance 
1 EC4V+5EX EC4V+3AL  497 
2 EC2V+7AD EC4V+3AL  995 
3 EC2A+1WD EC4V+3AL  2079 
4 EC1V+3QG EC4V+3AL  2492 
5 EC2N+2PT EC4V+3AL  1431 
6 EC1M+5QA EC4V+3AL  1892 

С помощью этой небольшой набор из 6 направлений он работает, у меня есть ключ API, если вы пришлете мне больше набора я могу попробовать.

Другой вариант - использовать пакет googleway, он также позволяет установить ключ API. Пример:

library(googleway) 

test <- google_distance(origins = from, 
         destinations = to, 
         mode = "walking", 
         key="YOURAPIKEYHERE") 
Смежные вопросы