Почему я продолжаю получать сообщение об ошибке MAX_ELEMENTS_EXCEEDED, если не превышаю ежедневное количество бесплатных запросов? - PullRequest
0 голосов
/ 01 июня 2019

Итак, я разработал код, в котором я читаю файл с некоторыми местоположениями (15, если быть более точным), где первое - это депо, а остальные 14 - это места, где автобус должен пройти, чтобы собрать пациентов. Для этого я использую ключ API Карт Google, чтобы собрать реальные расстояния и в конце записать их в файл .txt.

import pandas as pd
import googlemaps
from itertools import tee
import numpy as np

#Read CSV file into data frame named 'df'
#change seperator (sep e.g. ',') type if necessary
df = pd.read_csv("D:/Utilizadores/Documents/FEUP/2018-2019/1º Semestre/PDI/Relatório/locais2.txt", sep='\\t',
                       engine='python', skiprows=[0], names=["address", "latitude", "longitude"])

lat = np.expand_dims(np.array(df["latitude"]), 1)
lon = np.expand_dims(np.array(df["longitude"]), 1)
coordinates = np.concatenate((lat, lon), axis=1)

coordinates = list(coordinates)
coordinates = [list(coor) for coor in coordinates]


#Perform request to use the Google Maps API web service
#API_key = 'AIzaSyCi8DDz_CCiVwW2JtvT6i-XpJYiEwxFryI'
API_key = 'AIzaSyCpumDcRbbteV64xlGOUQ5_Bah8Ja5gdJ4'
gmaps = googlemaps.Client(key=API_key)

result = gmaps.distance_matrix(coordinates, coordinates, mode='driving')["rows"]
distance_matrix = np.zeros((len(result), len(result)))

for i in range(len(result)):
    for j in range(len(result)):
        distance_matrix[i, j] = result[i]["elements"][j]["distance"]["value"]

np.savetxt("D:/Utilizadores/Documents/FEUP/2018-2019/1º Semestre/PDI/Relatório/locais_output.txt", distance_matrix, delimiter=",", fmt='%d')
print(distance_matrix)

Расстояния, которые я хочу, находятся от одного места до каждого места, поэтому я хочу получить матрицу 15х15, где диагональ заполнена нулями. Но он продолжает печатать эту ошибку:

"googlemaps.exceptions.ApiError: MAX_ELEMENTS_EXCEEDED".

Единственный способ избежать ошибки - установить ограничение на чтение файла в 10 местах, включая хранилище:

result = gmaps.distance_matrix(coordinates[0:10], coordinates[0:10], mode='driving')["rows"]

Почему это? Кто-нибудь?

1 Ответ

0 голосов
/ 01 июня 2019

от документация

MAX_ELEMENTS_EXCEEDED указывает, что произведение отправителей и пунктов назначения превышает ограничение для каждого запроса .

из «использование и выставление счетов» :

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

Другие ограничения использования
Хотя вы больше не ограничены максимальным количеством элементов в день (EPD), для API матрицы расстояний все еще действуют следующие ограничения использования:

Максимум 25 отправителей или 25 пунктов назначения на запрос.
Максимум 100 элементов на запрос на стороне сервера.
Максимум 100 элементов на запрос клиента.
1000 элементов в секунду (EPS), рассчитывается как сумма запросов на стороне клиента и на стороне сервера.

15 x 15 = 225, что превышает максимально допустимое значение (100)

То, что вы не хотите или не нуждаетесь в некоторых ответах, не имеет значения.

...