ArcGIS Server – сравнение маршрутов
Вопрос
У меня есть список точек и маршрут, созданный внешним поставщиком через эти точки.
Я хотел бы создать маршрут, используя ту же точку с моей собственной дорожной сетью.
Затем я хочу иметь возможность определить, есть ли существенная разница между этими двумя маршрутами.
Одно из предложений состоит в том, что для двух маршрутов мы выясним, по каким сегментам дороги они проходят, и сравним список сегментов дороги?
Это правильный подход?Как нам получить список сегментов дороги по заданному маршруту?
Я использую сервер ArcGis 9.3 с Java 5 и Oracle 10g.Я использую функции ST и NetworkAnalyst через Java API.
Спасибо.
Решение
Рассчитайте маршрут, используя свои точки и дорожную сеть.Затем буферизируйте полученный маршрут в многоугольник (радиус буфера должен соответствовать вашему «допуску»).Затем обрежьте внешний маршрут, используя свой полигон.Если полученная полилиния не пуста, значит, имеется отклонение за пределы допуска.
Этот метод не учитывает какие-либо «значительные» отклонения, такие как возврат назад, развороты или выезд на близлежащую параллельную дорогу.
Альтернативно, вы можете сравнить полученные «направления» и проверить наличие отклонений, в частности, используя названия улиц.Это избавит вас от необходимости проверять каждый участок дороги.Если у вас есть отклонения в названиях дорог, то проверьте отдельные участки дороги каждого участка.
Другие советы
Я только что реализовал нечто подобное в своем приложении.У меня есть список координат широты и долготы с устройства GPS, и мне нужно создать маршрут на основе этих данных.
Я начал с сопоставления каждой позиции GPS с узлом в моей уличной сети.Затем я удалил «последовательно повторяющиеся» узлы, чтобы отфильтровать те последовательные позиции, которые находятся в одном и том же узле.Затем я начал «прогуливаться» по своей уличной сети, начиная с первого узла.Я проверил первый узел и второй узел и проверил наличие общего сегмента улицы.Если я найду его, отлично.Если нет, я создаю кратчайший путь между двумя узлами и вместо этого использую эти дороги.Я продолжаю делать это, пока не исследую все узлы.В конце этого процесса у меня есть список сегментов дороги, по которым проехал автомобиль, а также порядок, в котором они проезжали.
К сожалению, я использую другую карту, другой язык программирования и другую базу данных.Таким образом, обмен кодом вам вообще не поможет.Надеюсь, описанный выше процесс поможет вам выполнить вашу задачу.