Как создать матрицу расстояний с помощью google-distance-matrix? - PullRequest
0 голосов
/ 17 января 2019

Я знаю, как получить расстояние между двумя точками, используя

 var distance = require("google-distance-matrix");
 distance.key('API-KEY');
 distance.mode('driving');
 distance.units('imperial');
 var origins = [platlong.toString()];
 var destinations = [dlatlong.toString()];
 distance.matrix(origins, destinations, function(err,Data){
         console.log(Data.rows[0].elements[0].distance.value);
 }};

Но как получить матрицу стоимости расстояния из 3 или более местоположений

[
    [0, 2, 3],
    [2, 0, 4],
    [3, 4, 0]
]

Для использования алгоритма VRP мне нужна матрица стоимости расстояния, указанная выше.

Существует только один способ, которым я знаю, для создания матрицы Дистанционного расстояния - это цикл m x n раз, то есть для 3 местоположений 3 x 3 = 9 раз.

В сценарии в реальном времени для 15 местоположений я должен повторить цикл 15 x 15 = 225 раз

Так что мне нужно предоставить API-ключ для 225 раз, что будет очень дорого.

Можно ли как-нибудь дешево найти Матрицу затратного расстояния вместо того, чтобы зацикливаться m x n раз с помощью матрицы расстояний Google

Ответы [ 2 ]

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

Разместите свой собственный движок маршрутизации, я часто его использую https://github.com/Project-OSRM/osrm-backend

Эта опция полезна только тогда, когда нет необходимости в живых данных.

0 голосов
/ 17 января 2019

Вы можете уменьшить количество просмотров в предположении, что расстояние A-> B - это то же самое, что B-> A, и не делать циклы A-> A. Это означает, что для 15 локаций вы можете уйти с 15 * 14/2 = 105. Это все еще довольно много, но меньше половины, чем раньше.

...