поиск кратчайших путей с использованием карт Google для большого количества узлов

StackOverflow https://stackoverflow.com/questions/1218048

Вопрос

Я пытаюсь провести сетевой анализ для клиента.Предоставленный слой ГИС дорожной сети имеет плохое качество;поэтому мне приходится прибегать к картам Google, чтобы предоставить мне кратчайший путь между 200 точками и создать матрицы времени и расстояния между каждой точкой.

Есть ли способ ввести слой как набор точек KML, чтобы получить выходные данные о расстоянии и времени между этими точками?

если это возможно через API, есть ли у вас какие-либо подсказки или предложения о том, как написать такой сценарий?

РЕДАКТИРОВАТЬидеальным конечным результатом был бы файл CSV следующей формы:

node_1, node_2, distance, travel_time
node_n, node_m, distance, travel_time
Это было полезно?

Решение

Я не буду писать за вас весь скрипт, но это можно сделать с помощью API карт.Открыть песочница карт и добавьте в функцию onGDirectionsLoad:

alert(gdir.getDistance().meters);

Вы можете найти документацию здесь - также доступен метод getDuration().Затем все, что вам нужно сделать, это отправить новый запрос после его завершения, получив указания для каждой пары начальной и конечной точек.

Однако учтите, что если вы планируете получить пути размером 200*200, Google может в какой-то момент принять решение ограничить вас по скорости.Используйте этот метод на свой страх и риск и с задержкой между запросами.

Обратите также внимание, что Google встроенная поддержка KML похоже, не поддерживает предоставление вам списка точек - это имеет смысл, поскольку у клиента могут быть только те, которые в данный момент отображаются на экране.Возможно, вам придется написать собственный загрузчик KML, если вы хотите использовать KML в качестве входного формата.Или используйте более простой формат, например этот пример.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top