Рекомендации по ручному редактированию линии маршрута в MnogoTrop

Фото Илья Ромашков 20 июля 2016г.
Илья Ромашков
активный велобайкер и автор множества веломаршрутов

При работе с маршрутами в MnogoTrop возникает необходимость внесения локальных изменений в нитку маршрута. Поводов может быть много. Рассмотрим 2 наиболее частых сценария и рекомендации в каждом случае.

Краткое описание возможностей системы по редактированию маршрутов приведено здесь. В этой статье я привожу рекомендации на основе своего опыта работы с системой.

Корректировка маршрута, созданного из трека  в тех местах, где произошел сбой gps-данных

При генерации маршрута из трека автора, записанного мобильным приложением, часто бывает необходимо внести корректировки в линию движения в тех местах, где по каким-то причинам произошел сбой записи gps-данных. Обычно на таких участках реальная линия движения бывает потеряна и при отображении замещается отрезком прямой. Разумеется, добросовестно оформленный маршрут  не должен содержать таких участков. Все такие участки необходимо отредактировать вручную на сайте, используя функцию редактирования линии движения маршрута.

Сразу сделаю важное замечание. Часто встречается случай, когда интервал [А; Б] достаточно длинный, содержит много подробностей прохождения линии маршрута, а изменения требуется внести лишь на ограниченной его части. В этом и подобных случаях перерисовка маршрута на всем протяжении участка [А; Б] может вызвать потерю ценных маршрутных данных на участке, где изменения не были нужны. Для подобных случаев хорошим решением является предварительное создание вспомогательных маршрутных точек, ограничивающих участок маршрута, нуждающийся в редактировании. Это предохранит остальные участки от нежелательного редактирования. По окончании внесения изменений вспомогательные маршрутные точки следует аккуратно удалить.     

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

  1. В режиме редактирования маршрута кликаем мышкой на линии маршрута в том месте, где мы бы хотели поменять линию движения - возникает новая маршрутная точка Ц.
  2. Теперь тащим эту нашу новую точку Ц в ее новое место и отпускаем - точка закрепляется на новом месте. Это действие вызывает перерисовку маршрута на всем протяжении от точки А до нового местоположения точки Ц, а также далее от Ц до точки Б. Весь остальной маршрут, за пределами участка [А; Б] остается неизменным.

Может так случиться, что результат перерисовки маршрута после шагов 1) и 2) не полностью удовлетворит нас на одном (или даже на обоих) из вновь образованных участков: [А; Ц] и [Ц; Б]. Тогда шаги 1) и 2) надо будет повторить для не удовлетворившего нас интервала. Эту операцию (измельчая таким образом редактируемый интервал) следует проделывать до тех пор, пока полученный в результате маршрут не будет проведен именно там, где мы этого хотим.

Создание маршрута непосредственно на сайте с использованием алгоритма OSRM

Другой вариант, при котором может понадобиться ручное редактирование локального участка маршрута, - это создание маршрута непосредственно на сайте методом последовательного задания положения маршрутных (контентных) точек с использованием механизма маршрутизации (routing) по велосипедным путям (OSRM).

В этом случае пользователь задает линию движения, указывая вручную местоположение последовательных маршрутных точек, а алгоритм маршрутизации OSRM достраивает линию движения между ними на свое усмотрение (в соответсвии с внутренней базой данных путей маршрутизации и выбранных разработчиками параметров). Управлять результатом такой маршрутизации можно, варьируя частоту задания маршрутных точек на том или ином участке и добиваясь таким образом от алгоритма OSRM “понимания” того, по какому именно из возможных вариантов пользователь хотел бы провести линию движения.

Хотя режим OSRM очень удобен и делает за нас массу работы, тем не менее он применим далеко не всегда:

  • На карте есть много мест, где OSRM не работает, или работает не вполне корректно. Это связано с тем, что маршрутизация (routing) происходит по специальной базе данных велосипедных путей, версия которой может отставать от версии карты OSM, используемой приложением Mnogotrop. А в некоторых местах данные маршрутизации могут просто отсутствовать. Например, при пересечении крупных магистралей в сельской местности или на территориях с особым (или неопределенным статусом), таких как территории с ограниченным доступом и тому подобное.  
  • Часто бывает, что участок маршрута необходимо провести вручную по местности, где на карте отсутствуют какие-либо дороги или тропинки, например, ориентируясь по картографическим объектам, не являющимся путями. Т.е. на местности дороги могут присутствовать, а на текущей версии карты - еще нет. В этом случае без режима OSRM=Off не обойтись.
  • Очень часто встречается случай, когда тропинки или неосновные дороги на карте пересекаются (соединяются), а маршрутизатор этого как бы “не видит”, “отказывается” проводить маршрут по явно видному на карте перекрестку. Такое “поведение” связано, как правило, не с проблемой маршрутизатора OSRM, а с некорректным вводом картографической информации в самой карте OSM.

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

При этом необходимо помнить, что в процессе создания нового маршрута, добавляя очередную новую точку в его конец в режиме OSRM=Off, весь участок маршрута от предыдущей точки до новой будет проведен по прямой. При внесении изменений в уже существующий маршрут передвижение вновь созданной вспомогательной или одной из уже существующих на маршруте точек в режиме отключенного маршрутизатора (OSRM=Off) вызовет перерисовку по прямым сразу двух участков маршрута: от предыдущей точки до передвигаемой и от передвигаемой точки до следующей за ней по порядку.

Для того чтобы избежать изменений линии маршрута в нежелательных местах, рекомендуется применять технику изолирования интервала редактирования через создание вспомогательных точек, как описано в первом сценарии.

Илья Ромашков

Комментарии

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