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

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

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

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

ИЗМЕНИТЬ идеальным конечным результатом будет файл CSV следующего вида:

node_1, node_2, distance, travel_time
node_n, node_m, distance, travel_time

person dassouki    schedule 02.08.2009    source источник


Ответы (1)


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

alert(gdir.getDistance().meters);

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

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

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

person bdonlan    schedule 02.08.2009
comment
Знаете ли вы какие-либо другие способы, которыми я могу создать матрицу расстояний? - person dassouki; 04.08.2009