Достижение лимита запросов в Google Distance Matrix API на R - PullRequest
0 голосов
/ 04 мая 2018

У меня есть список из 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 запросов, поэтому я должен быть в состоянии сделать это, но я озадачен, как решить эту проблему даже с включенным биллингом.

Ответы [ 2 ]

0 голосов
/ 05 мая 2018

Для тех, кто все еще борется с этой проблемой; Я смог решить это с помощью цикла while. Так как я был ниже предела 2500 запросов, это была проблема скорости, а не проблема достижения лимита запросов. С помощью цикла while я разбил местоположения на куски (выполняя запросы расстояния для 2x36 за раз) и перебирая все данные, чтобы получить нужные мне 36x36.

0 голосов
/ 05 мая 2018

Свободная квота составляет 2500 элементов .

Каждый запрос, отправляемый в API матрицы расстояний, ограничен количеством разрешенных элементов , , где число отправителей, умноженное на количество пунктов назначения, определяет количество элементов .

Стандартные пределы использования
Пользователи стандартного API:

2500 свободных элементов в день, рассчитывается как сумма запросов на стороне клиента и на стороне сервера. Максимум 25 отправителей или 25 пунктов назначения на запрос.

запрос 36x36 будет 1296 элементов. После 2 вы будете вне квоты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...