поиск кратчайших путей с помощью карт Google для большого количества узлов - PullRequest
0 голосов
/ 02 августа 2009

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

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

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

EDIT идеальный конечный результат - файл CSV следующей формы:

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

1 Ответ

2 голосов
/ 02 августа 2009

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

alert(gdir.getDistance().meters);

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

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

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

...