Поиск кратчайшего маршрута c помощью Road graph для QGIS

Материал из GIS-Lab
Версия от 12:47, 6 января 2012; Stopa85 (обсуждение | вклад) (Добавлен скриншот с направлением движения по дорогам)
Перейти к навигации Перейти к поиску

Road graph — расширение QGIS, позволяющее осуществлять поиск кратчейшего маршрута на заданном графе дорог. Входит в состав QGIS, начиная с r15068 (0a76ab4212), автор модуля - Сергей Якушев (stopa85).

Установка

При использовании более-менее актуальной версии QGIS никаких дополнительных действий по установке модуля выполнять не нужно, так как Road graph является расширением ядра QGIS. Достаточно установить QGIS со всеми зависимостями (подробнее) и в Менеджере модулей (Модули - Управление модулями) активировать модуль Road graph.

Roadgraph-01.png

После активации модуль добавляет свою панель в левой части окна QGIS и создает вложенный элемент в меню Вектор.

Работа с расширением

Основные возможности расширения:

  • расчет маршрута, его протяженности и времени пути
  • оптимизация по критерию расстояния или времени
  • экспорт маршрута в векторный слой
QGIS c подсветкой направления дорог

В версиях QGIS 1.6, 1.7 присутствует возможность подсветки направления движения дорог (работает медленно, чаще всего используется в целях проверки настроек). Начиная с 1.8 неподдерживается. Эффекта подсветки направления можно легко добиться настраивая стиль отображения слоя.


В качестве слоя дорог можно использовать любой линейный векторный слой в формате, поддерживаемом QGIS. Две линии, имеющие общую точку считаются связанными между собой. Внимание: при редактировании слоя дорог в качестве СК проекта необходимо использовать СК слоя. Это вызвано тем, что при пересчете координат между разными СК возникают погрешности, что может приводить к появлению разрывов даже при включенном «прилипании».

В атрибутивной таблице слоя могут присутствовать и задействоваться следующие поля:

  • скорость движения по участку дороги — числовое поле
  • направление движения — любой тип, приводимый к строке. Прямое и обратное направления соответствуют односторонней дороге, оба направления — двусторонней.

Если значение какого-либо поля не задано, или поле отсутствует — используется значение по умолчанию, изменить которое можно в настройках расширения.

Выбор начальной и конечной точек маршрута выполняется при помощи соответствующих кнопок возле полей ввода. Координаты выбранных точек будут отображены в полях ввода.

Нажатие на кнопку «Calculate» запустит поиск кратчайшего маршрута с использованием критерия оптимизации, заданного выпадающим списком «Criterion». Кнопка «Export» служит для экспорта построенного маршрута в новый векторный слой, а при помощи кнопки «Clear» выполняется очистка полей с координатами начальной и конечной точек, а также из области карты удаляются сами точки и построенный маршрут.

Настройки модуля

При использовании слоя дорог, в котором присутствуют артефакты в виде небольших разрывов между вершинами полилиний, необходимо установит «топологическую толерантность». Топологическая толерантность — это расстояние между двумя соседними вершинами, при котором они интерпретируются как одна и та же вершина графа. Эта величина должна быть как можно меньше (чем меньше — тем лучше).

Модуль может правильно обрабатывать дороги с разным характером движения: одностроннее или двустороннее. Для этого необходимо, чтобы в атрибутивной таблице слоя присутствовало поле с указанием типа дороги. Его нужно выбрать в выпадающем списке «Поле направления» с настройках модуля и задать значения для прямого, обратного и двустроннего движения. Под прямым направлением понимается движение в порядке создания точек линии, от первой точки до последней. Соответственно, обратное направление это движение от последней точки линии к первой. Эти два варианта задают односторонние дороги.

Рассмотрим настройку на примере данных OpenStreetMap. В качестве поля направления выбираем "oneway", тогда двусторонней дороге будет соответствовать значение "no", прямому направлению односторонней дороги будет соответствовать значение "yes", a обратному — какое-либо другое значение, например "123". На вкладке «По умолчанию» для поля «Направление» выбираем «Двустороннее направление», чтобы дороги, не подпадающие под описанную выше схему трактовались как двусторонние. Все, теперь модуль будет различать дороги и строить маршруты с учетом характера движения по дорогам.

Библиотека QGIS network-analysis

В настоящее время, в экспериментальных версиях QGIS базовый функционал плагина вынесен в отдельную библиотеку QGIS network-analysis library. Библиотека позволяет использовать алгоритмы сетевого анализа в своих расширениях, а также из Консоли Python QGIS.