У меня есть список из 36 местоположений, для которых мне нужно получить матрицу расстояний от каждого местоположения до любого другого местоположения, то есть матрицу 36x36. Используя помощь по другим вопросам по этой теме на этом форуме, я смог собрать базовый код (продемонстрированный только в четырех местах) следующим образом:
library(googleway)
library(plyr)
key <- "VALID KEY" #removed for security reasons
districts <- c("Attock, Pakistan",
"Bahawalnagar, Pakistan",
"Bahawalpur, Pakistan",
"Bhakkar, Pakistan")
#Calculate pairwise distance between each location
lst <- google_distance(origins=districts, destinations=districts, key=key)
res.lst <- list()
lst_elements <- for (i in 1:length(districts)) {
e.row <- rbind(cbind(districts[i], distance_destinations(lst),
distance_elements(lst)[[i]][['distance']]))
res.lst[[i]] <- e.row
}
# view results as list
res.lst
# combine each element of list into a dataframe.
res.df <- ldply(res.lst, rbind)
#give names to columns
colnames(res.df) <- c("origin", "destination", "dist.km", "dist.m")
#Display result
res.df
Этот код отлично работает для небольшого количества запросов; то есть, если местоположений мало, например 5 за один раз. Для чего-то большего я получаю ошибку «Over-Query-Limit» с сообщением: «Вы превысили ограничение скорости для этого API», хотя я не достиг лимита 2500. Я также подписался на платежную опцию «Оплата при использовании», но я продолжаю получать ту же ошибку. Интересно, это вопрос количества запросов в секунду (т. Е. Скорости)? И если да, могу ли я изменить свой код для решения этой проблемы? Даже без ключа API этот код не запрашивает более 2500 запросов, поэтому я должен быть в состоянии сделать это, но я озадачен, как решить эту проблему даже с включенным биллингом.