RU:Руководство для общественного транспорта (osmand2019)

From OpenStreetMap Wiki
Jump to navigation Jump to search

Leonid Eugene 16 марта, 2019
копия с блога османда. на английском

Создание маршрута общественного транспорта

Рассмотрим процесс создания маршрута в JOSM. Для этого необходимо обладать базовыми навыками использования этого редактора. Создадим простой автобусный маршрут. Для начала разметим остановки. Они состоят из двух видов объектов: непосредственно точка остановки транспорта (public transport=stop position) и место, где пассажиры ожидают прибытия транспорта (public transport=platform). Точки остановки транспорта должны находиться на линии маршрута. Им нужно задать теги: public_transport=stop_position, имя name=* (рекомендуется). Также можно воспользоваться пресетами, находящимися в Presets — Transport — Public transport.

Image 1.png

Место ожидания транспорта, как правило, расположено напротив точки остановки транспорта. Оно может быть точкой, линией или полигоном. Ему необходимо задать как минимум тег public_transport=platform, а также highway=bus_stop (для совместимости со схемой PT v1). Рекомендуется указывать имя (тег name).

Osmand pt Image 2.png

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

Убедившись, что на всём протяжении будущего маршрута остановки отмечены верно и находятся на концах сегментов пути, приступаем непосредственно к созданию отношения маршрута. Для этого в правой боковой панели находим панель Relations (если её нет, то она включается через Windows — Relations) и нажимаем кнопку «Create a new relation».

Osmand pt 3.png

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

Добавим к отношению теги:

type=route
route=bus
from=Bus stop 1
to=Bus stop 3
name=Автобус № 5: Bus stop 1 — Bus stop 3
ref=5

Также можно указать public_transport:version=2, что поможет пользователям данных, а еще плагину JOSM для заполнения некоторых ролей на основании типа объекта.

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

Добавим их в раздел Members с помощью блока кнопок, выделенных на скриншоте.

Osmand pt 4.png
Osmand pt 5.png

Теперь необходимо добавить в отношение точки public_transport=stop_position и public_transport=platform. Не закрывая окно отношения, выделяем их на карте и добавляем в отношение (выше линий!). Чтобы с ними было удобнее управляться в дальнейшем, лучше выделять их в таком порядке: stop_position 1, platform 1, stop position 2, platform 2 и т.п. Теперь наше отношение выглядит так:

Osmand pt 6.png

Обратите внимание что у некоторых участников отношения автоматически заполняется столбец Role: у stop_position роль stop, а у platformplatform. Теперь нужно изменить роли у первой и последней platform и stop_position. У точек, относящихся к первой остановке, должен быть добавлен суффикс «_entry_only» (stop_entry_only, platform_entry_only) означающий что на остановке можно только садиться в транспорт, а не выходить из него. У последней остановки маршрута, суффиксы, соответственно, должны быть «_exit_only» (stop_exit_only, platform_exit_only). Если по каким-то причинам роли автоматически не проставились, их нужно заполнить самостоятельно.

Osmand pt 7.png

Для перемещения и сортировки участников отношения предназначены блоки кнопок 1 и 2 соответственно.

Если порядок остановок в отношении неправильный, то OsmAnd не сможет построить корректный маршрут!

Обратите внимание что в блоке Members у линий справа указаны стрелочки. Они обозначают направление линий, а также по ним можно узнать непрерывен ли маршрут. Теперь наше отношение описывает маршрут, который начинается на улице Фединской на остановке Bus stop 1 и заканчивается на дороге с именем «Бывшая трасса А-108» на остановке Bus stop 3.

Теперь наше отношение описывает маршрут, который начинается на улице Фединской на остановке Bus stop 1 и заканчивается на дороге с именем «Бывшая трасса А-108» на остановке Bus stop 3.

Как правило транспорт курсирует в обоих направлениях. Поэтому создадим аналогичный маршрут для обратного направления. Для облегчения процесса можно дублировать отношение кнопкой на панели «Relations — Create copy of this relation». Также эта кнопка доступна в самом окне редактирования отношения. Чтобы не запутаться, удалим из копии отношения все stop_position и platform, оставив только линии дорог. Далее с помощью кнопки «Reverse the order of the relation members» в окне редактирования отношения обратим порядок линий и проверим их корректность для обратного направления движения. Добавим соответствующие stop_position и platform, откорректируем теги отношения.

Схема PTv2 требует чтобы все направления, варианты и описание, относящиеся к одному маршруту, были объединены отношением типа route_master. Создадим новое отношение, заполним теги:

type=route_master
route_master=bus
ref=5

В теге ref=* указывается номер маршрута.

Не закрывая окна редактирования отношения, найдем ранее созданный маршрут в панели Relations, и из контекстного меню выберем Select relation. Маршрут подсветится на карте фиолетовым цветом, а в панели «Tags / Membership» появятся его теги.

Osmand pt 8.png

В окне редактирования отношения в блоке Selection должен появиться выделенный маршрут. Добавим его в блок Members соответствующими кнопками и сохраним отношение.

Osmand pt 9.png

Чтобы обозначить автобусную станцию отметьте её точкой или полигоном, и добавьте теги amenity=bus_station + public_transport=station. Подробнее о тегах. Вы можете включить станцию в отношение маршрута либо создать отдельную остановку автобуса и добавить её.

Самые распространенные ошибки

Проверка в OSM Inspector (Data validator)

Неплохим инструментом для проверки корректности маршрутов является OSM Inspector. (Руководство на английском языке.)

Обнаружив ошибку, нажимаем на неё, и в разделе Selection справа видим информацию о ней. Если ошибок несколько на разных слоях (overlays), то появляется вертикальная полоса прокрутки. В заголовке каждой ошибки есть кнопка с буквой «J». Эта кнопка загружает область в JOSM с помощью механизма remote control.

Osmand pt 10.png

Если при попытке загрузки в JOSM выдаётся сообщение «The OSM server ‘api.openstreetmap.org’ reported a bad request. The area you tried is too big or your request was too large. Either request a smaller area or use an export file provided by the OSM community», то проще всего загрузить эту область вручную через JOSM — File — Download data — Download from Overpass API. Загрузка через Overpass API позволяет получить больше данных с сервера за один запрос, а также загрузить только требуемый тип данных.

Gap / Gap or unordered before this way

Данная ошибка означает что в отношении-маршруте имеется разрыв. Найдём в одноименной панели отношение с ошибкой и откроем окно редактирования.

Osmand pt 11.png

Здесь мы видим что путь маршрута разорвана (линии не образуют непрерывный упорядоченный маршрут). Чтобы понять в чем дело, кликнем на какой-либо сегмент пути в списке Members. Линия подсветится красным в основном окне программы.

Osmnad pt 12.png

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

Часто ошибка кроется в том, что смежная группа сегментов имеет в списке участников отношения инвертированный порядок. Чтобы это исправить, выделим в списке Members эти линии, и нажмём кнопку слева «Reverse the order of relation members». В последних версиях JOSM рядом с этой кнопкой появилась кнопка сортировки с изображением автобуса. Она автоматически исправляет простые ошибки. Теперь, когда мы разобрались с ручным исправлением ошибок такого рода, можно попробовать пользоваться ей. При этом следует контролировать корректность исправлений.

Osmand pt 13.png
Empty role for non-way object Скорее всего не задана роль у stop_position или platform. Необходимо задать роль.
Road vehicle route over non-road Маршрут проложен по дороге, тип которой подразумевает запрет проезда транспорта. Нужно проверить маршрут и внести коррективы.
Stop without proper tags На месте остановки отсутствуют теги, указывающие на вид транспорта (bus=yes, train=yes и т.п.).
Route has only stops/platforms В маршруте отсутствуют линии. Необходимо добавить их.
Trolley bus without trolley wire На дороги, по которым проходят маршруты троллейбусов, необходимо проставить теги trolley_wire=yes, обозначающий контактную электрическую сеть.
Unknown route type Тип маршрута неизвестен. Требуется уточнить его.
Unknown role Уточните тип роли.
Stop is not node Место остановки транспорта должно быть точкой.
Stop not on way Место остановки транспорта должно располагаться непосредственно на пути движения транспорта.

Проверка в JOSM (Data validator)

В JOSM есть встроенный инструмент проверки данных. Он автоматически вызывается при попытке отправить данные на сервер, а также его можно запустить вручную. Для этого найдем с правой стороны главного окна панель «Результаты проверки». Если она отсутствует, то включим её через «Окна» (Windows) — «Результаты проверки» (Validation results). Проверка всей загруженной области (если ничего не выделено) запускается по нажатию кнопки «Проверка» (Validation). При попытке отправки данных на сервер эта проверка запускается только для изменённых объектов.

Osmand pt 14.png

Рассмотрим результаты, относящиеся к общественному транспорту:

Route relation contains a ‘forward/backward/alternate’ role Схема PTv1 предполагала наличие ролей у путей, но из PTv2 это требование убрано. Необходимо убрать роли и перепроложить маршрут в случае необходимости.
Route relation contains a gap Аналогично Gap / Gap or unordered before this way в OSM Inspector.
Route scheme is unspecified. Add public_transport:version Если маршрут соответствует схеме PTv2, как описано в этой статье, то нужно добавить к отношению тег public_transport:version=2
Stop position is not part of the route Аналогично Stop not on way в OSM Inspector