openrouteservice строит матрицу расстояний из нескольких запросов для более чем 50 локаций
У меня есть список из 101 координаты местоположения, для которого я хочу рассчитать матрицу расстояний. Я хочу использовать API матрицы расстояний openrouteservice, чтобы найти матрицу расстояний 101x101. Однако я могу указать только до 50 местоположений за один вызов, чтобы определить расстояние между ними. Поэтому я решил разделить локации на группы по 25 локаций и отправить 10 запросов, которые дадут мне расстояния для всех пар.
Locations = [[first pair of 25 locations],[2nd pair of 25],[3rd - 25],[4th - 25],[101th location]]
и использовал функцию комбинаций (), чтобы получить результат 10 уникальных комбинаций из 5 вышеупомянутых наборов, которые я затем использовал для вызова API openrouteservice. Следовательно, у меня есть 10 результирующих матриц с повторяющимися значениями, которые я хочу добавить к окончательной матрице 101x101.
def orsapilocs(coord):
output1 = []
# Make rate limit compliant lists of 25 locations each
output1 = [coor[i:i + 25] for i in range(len(coord), 0, -25)]
output1[0].extend([coord[0]])
return(output1)
def orsapiformat(q):
a = list(combinations(q,2))
flat = [[item for c in combi for item in c] for combi in a]
return flat
matrix = []
for i in orsapiformat(q):
matrix.append(client.distance_matrix(
locations=i,
profile='driving-car',
metrics=['distance'],
validate=False,
units="km"
))
Любые идеи о том, как я могу достичь этого, не выбирая вручную части различных результирующих матриц для помещения в основную матрицу 101x101? Я хочу автоматизировать это так, чтобы независимо от количества мест, он автоматически выбирал необходимые части для включения в окончательную матрицу.
Как выглядит пример ответа API в формате JSON:
{
"distances": [[ 0, 140.86,2434.68],
[139.77,0,2386.15],
[10212.84,10164.9,0]]
}