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]]
}

0 ответов

Другие вопросы по тегам