User:Trolleway/Ввод маршрутов ОТ

From OpenStreetMap Wiki
Jump to navigation Jump to search

Постановка проблемы

Фрагмент схемы отрендреной openptmap.org

В наше время научно-технической революции остаётся нерешенными часть задач в области городского транспорта. В частности при поездках в другие города, возникает проблема: "Где взять схему городского транспорта"? Традиционно наши транспортные организации схемы не публикуют. Их рисуют любители транспорта, и выкладывают на свои сайты. У схем с фанатских сайтов недостаток в том, что они публикуются в растре. Соответственно, их может обновить только автор. Сами авторы схем своими произведениями пользуются мало, потому что и так всё запоминают во время рисования. Соответственно они не расчитывают их вёрстку на то, что их будут печатать на бытовых принтерах. Порог вхождения в CorelDraw достаточно высок, поэтому иногда попадаются ужасы вроде схем нарисованых в Paint и сжатых в jpg.

Способом преодоления этих неудобств является использование OpenStreetMap. Неограниченое количество пользователей вносят в общую базу данных остановки и прокладывают по улицам маршруты. Эти данные хранятся в векторном виде, и в любой момент могут быть запрошены вместе с геометрией уличной сети и всеми остальными географическими данными. В этом состоит отличие OSM от карт Яндекса и Гугла. Далее есть различные варианты использования этих данных.

Чем OSM поможет любителям транспорта

Сейчас функционируют несколько серверов, которые рендрят схему линий и регулярно её обновляют.

Интервалы обновлений на разных сайтах время от времени меняются, тут они написаны по состоянию на май 2016.

По ним могут ориентироватся владельцы коммуникаторов с доступом к сети. Эти карты могут использовать в качестве картографической подложки различные интернет-сайты, например они уже используются на http://transpoto.ru, http://busphoto.ru, http://phototrans.eu . Возможно поднять сервис, который будет раз в сутки скачивать с них тайлы и склеивать удобный для печати pdf. К сожалению, на них не подписываются стрелочки у односторонних маршрутов, зато у некоторых под названиями остановок подписываются проходящие маршруты.

Второй способ - это отрендрить маршруты самому. Для этого я написал скрипт: https://github.com/trolleway/osmot. Он открывает локальную базу данных PostGIS, в которую импортирован дамп маршрутов, и создаёт отдельные пространственные таблицы с точками конечных и подписями со стрелочками для односторонних маршрутов. Далее эти данные можно подать в QGIS, Nextgis.com или mapnik.

Используя векторные данные можно значительно ускорить собственноручное создание карт.

  • Простой способ: экспортировать сетку улиц с остановками и нужными маршрутами программой QGIS затем в нём же расставить подписи маршрутов.
  • Воспользоваться скриптом [1], который обрабатывает дамп загруженный в PostGIS, генерируя слои подписей маршрутов со стрелочками и конечными. Эти слои рендрятся в QGIS, Mapnik, или NextGIS.com.
  • Поднять openptmap на Ubuntu.
  • По таким данным возможно сделать автоматический роутинг. Пока этого ещё никто не сделал, потому что маршрутов мало ввели.


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

Ввод остановок

Маршруты в базе хранятся в форме отношений (читайте остальную вики). В них входят участки дорог и остановки, но в принципе, остановки можно не включать. Дорожная сеть в базе есть почти вся, а вот остановок ещё мало. Для начала можно начать с указания остановок, это просто. Работать будем в основном редакторе JOSM. В Potlach в маршруты лезть не следует, он не рассчитан на такую сложную работу, и может их испортить.

  1. Читаем в этой вики основные понятия, раздел RU:Beginners_Guide и RU:Map_Making_Overview
  2. Запускаем Josm, и скачиваем область, где будем ставить остановки. Для него нужна Java.
  3. Включаем подложку Bing, и сдвигаем её так, что бы контуры зданий на слое данных совпадали с контурами зданий на уровне земли(не крыш) на снимке.
  4. Для автобусов и троллейбусов ставим точку рядом с дорогой, можно на линию тротуара. Как вы знаете, пользоватся бумажными картами, гуглом и яндексом нельзя. Зато можно пользоватся панорамами на яндекс-картах, можно проехаться по всем улицам и снять координаты остановок GPS-навигатором, или можно проехатся с распечаткой карты, и отметить остановки ручкой. Точку остановки лучше ставить на место павильона (при его наличии) и указать при этом shelter=yes и/или bench=yes. Крышу павильона часто можно разглядеть в Бинге.
  5. Назначаем точке теги public_transport=platform, name=*.
  6. Собственно всё, данные можно закачивать на сервер.

Примечание. Трамвайные остановки отмечаются точкой на пути с тегом railway=tram_stop. В некоторых городах двухпутная линия нарисована одной линией, в некоторых - двумя. Так вот, лучше сначала трамвай одвухпутить, а потом рисовать маршруты, потому что одвухпучивать с разделением маршрутов очень трудоёмко. Обратитесь к какому-нибудь более опытному любителю трамваев

Ввод маршрутов

Здешние пользователи с 4 раза согласовали подробную схему (стандарт), как вводить маршруты: RU:Общественный_транспорт. Это длинная статья в вики, где написано, какие теги чему назначать. Схема очень гибкая, то есть туда можно завести наверное любой маршрут без костылей. Но поэтому она избыточная, полное её понимание приходит не сразу. К счастью, маршруты можно вводить используя только минимальное число тегов.

Подразумевается, что сейчас вы знакомы с интерфейсом JOSM и особенно с кнопочками в окне редактирования отношений.


  • Скачиваем (фрагментами) область вдоль всей трассы маршрута
  • В JOSM включаем панель фильтров, добавляем три фильтра
    • stop | platform
    • motorway | trunk | primary | secondary | tertiary | unclassified | bus_stop | public_transport | highway=residential | highway=service
    • place
    • living_street

Два последних фильтра в списке активируем (положение checkbox-ов: true, true, false). У длинного фильтра выставляем три checkbox-а в true. Эта операция уберёт с экрана всё, что нам не понадобится. Фильтром stop | platform при необходимости будем включать и выключать отображение всего кроме остановок.

JOSM с отстойно-разворотной площадкой и окном фильтров
  • Создаём новое отношение. У него обязательно должны быть 4 тега:
    • type=route
    • route=bus|trolleybus|tram|share_taxi
    • ref=25
    • name=Автобус №25: Нагорный бульвар – Красная площадь (от пункта "А" до пункта "Б).

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

  • Идём на конечную А, с зажатым Ctrl кликаем по порядку на все сегменты дорог входящие в маршрут. Их список попадает в правый список в окно, жмём на кнопку, и он попадает в левый. Добавляем, пока не доходим до пункта "Б".
  • Если в выделение попадутся точки - выкидываем их. Скорее всего линии не будут разрезаны на некоторых перекрёстках. Тогда что бы разделить линию выделите узел, и нажмите клавишу P
  • В левом списке, справа от названий улиц есть столбец с вертикальной линией. Так обозначается непрерывность маршрута. Маршрут должен быть непрерывный, в нём не должно быть дырок. Если в столбце заметите разрыв - найдите крайние сегменты разрыва, и вставьте в отношение нужные сегменты между ними.
  • Теперь хорошо бы добавить остановки. Нам нужны точки или линии стоящие на обочине, с тегами highway=bus_stop или public_transport=platform. По порядку выделяем их, и добавляем В НАЧАЛО ОТНОШЕНИЯ с ролью platform. (сегменты дорог добавлялись с пустой ролью).
Окно редактирования отношений
  • Отношение готово. Закрываем его, и создаём другое - для направления от пункта "Б" к пункту "А". Ставим ему такие же теги, а тег name=Автобус №25: Красная площадь - Нагорный бульвар. Наполняем отношение аналогично предыдущему пункту.

Bus-route-2.gif


  • Создаём отношение, которое обьединит оба направления:
    • type=route_master
    • route_master=bus
    • name=Автобус №25: Нагорный бульвар - Красная площадь.
  • Добавляем в него два отношения: маршрут (Автобус №25: Нагорный бульвар - Красная площадь) и маршрут (Автобус №25: Красная площадь - Нагорный бульвар)
  • Вот и всё, данные можно закачивать. Через час линию можно будет посмотреть на http://latlon.org/pt

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

Ещё есть более подробное руководство по вводу от пользователя Stud. В нём более подробно изложено описание действий в интерфейсе JOSM. Оно писалось давно, и рекомендуемые в нём теги устарели. Участки дорог заносятся с пустой ролью, остановки с ролью platform, и если маршрут не кольцевой а обыкновенный, то нужно не забыть route_master.

Заготовка с тегами для JOSM от iav

Она добавляет в меню "Заготовки" пункт "Общественный транспорт" c кнопками для добавления остановок и отношений маршрутов. Использование этого инструмента заметно упрощает ввод тегов для остановок и маршрутов. Зайдите в "Настройки" -> "Параметры проекции карты и отображения данных" -> "Заготовки с тегами", и добавьте заготовку с URL http://josm.openstreetmap.de/josmfile?page=Presets/PublicTransportWMasterRoute&preset

Поставьте точку или линию на платформу где останавливается транспорт, и нажмите пункт "Место посадки". Откроется окно, где можно будет указать все нужные для остановки теги щёлкая мышкой, а не вводя ключи с клавиатуры. Для создания маршрута не выделяйте ничего, выберите пункт "Маршрут", введите в нём все нужные названия, и нажмите большую кнопку посредине.