Маршруты общественного транспорта

Без учёта расписания - это не прокладка, а фикция. Проложит вам маршрут в понедельник с использованием вот этого автобуса, например: http://transport.orgp.spb.ru/Portal/transport/route/5631/schedule
Который ходит только ночью по выходным. Будете неделю на остановке его прихода ждать?

есть пропозал на указание регулярности - будние/выходные/круглосуточно. service_period = *

Оно https://wiki.openstreetmap.org/wiki/Proposed_features/Differentiation_for_routes_of_public_transport

И в популярных клиентских приложениях типа OsmAnd и Maps.Me.
В 95 % случаев этого достаточно. Мы не знаем, какую компанию представляет уважаемый Перевозчик_СПБ, но основные варианты использования навигационных систем ОТ на базе ОСМ сводятся либо к подбору маршрутов городского транспорта, либо к подбору маршрутов пригородного или регионального сообщения. Первое не требует знания расписания, т.к. городской транспорт ходит не по расписанию, а через определенный интервал, который тоже, впрочем, не соблюдается :slight_smile: Так что пользователю достаточно знать номер маршрута и точки посадки/высадки. Ну и предполагаемое время в пути (по карте оценивается на глазок, навигационная система может подсчитать точно, особенно если имеет информацию о пробках), чтобы выбрать из альтернативных вариантов. Очень полезным является показ текущего положения транспортного средства выбранного маршрута на карте. Но тут все зависит от перевозчика и никто в ОСМ даже не попытался что-то подобное предложить (хотя есть проект OsMo). Для пригородных маршрутов важно знать хотя бы что ездит в то или иное село. От местных обычно можно узнать только, что на остановку “в центре” ходит автобус маршрута “какой-то” по расписанию “когда-то”. Поэтому показ на карте места остановки, номера маршрута и ссылки на сайт перевозчика уже доводит до состояния блаженства и экономит время и деньги, ибо таксисты на этом очень хорошо наживаются. Вообще говоря, есть такой тэг в свойствах маршрута - “website”, который игнорируется и маперами и клиентскими приложениями. А между тем, зная, что в какой-нибудь посёлок Кедровое ходит только автобус 103, его маршрут и расписание с сайта перевозчика уже можно планировать путешествие. Перемещение на дальние дистанции задача специфическая и уже решенная. Там действительно важно расписание, блэк-джек и проводницы, но подбор авиа- и жд билетов уже реализован и он явно не по нашей части, хотя показать какие поезда и автобусы ходят через населенный пункт конечно можно и нужно. Так что если Перевозчик_СПБ представляет не авиакомпанию и не РЖД, то мы просто обязаны внести его маршруты в ОСМ. Это может очень помочь пользователям. По себе знаю

Вы будете смеяться, но модель данных ОСМ предельно примитивна и представляет именно что “упорядоченную последовательность точек”. Сложности с маршрутами ОТ именно из-за этого. Модель данных плохо поддерживает столь сложные сущности. и это требует специфического программирования. Но реализовать их поддержку можно. Собсно уже. Реальных проблем в программировании две:
Во-первых, ввод данных из независимых источников. Тут проблема в точности задания координат и их привязке к уже внесенным в базу объектам. Т.е. импортируемая точка должна быть привязана к существующему объекту - дороге или остановке. В принципе JOSM это умеет после небольшого допиливания. Но из-за неточности ввода данных и в ОСМ и в систему перевозчика импортируемая точка может быть ошибочно размещена на дворовом проезде или пересекающей основную трассу дороге. Дальше Дикстра прокладывает маршрут по существующим дорогам и автобус, вместо того, что бы ехать по улице, начинает петлять между домами :slight_smile: Пользователь, созерцающий карту с таким маршрутом тихо фигеет и решает держаться от ОСМ подальше.
Во-вторых, отсутствие хоть какого-то версионирования и защиты данных. Т.е. допустим импорт прошел успешно. Но завтра пришел Вася Пупкин, разделил дорогу на пять частей, исправить маршруты естественно забыл, а остановку удалил и сделал новую в 50 метрах от прежней, не по стандарту ибо лень и с другим названием, потому что они там ее называют не так, как написано в документах, а “truth on the ground”. Соответственно, правильная версия данных теряется и при следующем запуске скрипт должен восстановить правильность маршрута. При этом он не может ориентироваться на прежние ID, т.к. после деления дороги будут участки с новыми ID, новая остановка будет иметь новый ID и т.д. Поэтому должен осуществить импорт заново. Прикол будет, когда Вася обнаружит, что б-гомерзкая остановка, которую он стер неделю назад появилась вновь и бросится снова ее удалять :slight_smile: Войну правок придется останавливать на международном уровне
Вот решение этих двух проблем и требует “специфического программирования”. Причем делать их должен скрипт не на сервере, а в редакторе, чтобы человек мог проверить и исправить косяки. Что конечно может отпугнуть тех же перевозчиков.

Не знаю, что такое ОРПГ, GTFS и проч. Видимо какая-то ленинградская местная служба. Которая жителю другого города, имеющего счастье посетить Ваш, а именно им карты маршрутов ОТ нужнее всего, местные и так все знают, может быть просто неизвестна. И спешу Вас уведомить, что в других городах и весях ничего этого нет и не предвидится. Есть конечно 2ГИС и Wikiroutes, которые дают более-менее точную информацию об ОТ. Но они работают не везде, а ОСМ покрывает весь мир. Поэтому мне кажется, что уважающий себя перевозчик должен прежде всего занести данные о маршрутах в 2ГИС, Гугл мэпс, Яндекс, ОСМ и Викироутес. Желательно автоматически, через предоставленный интерфейс, или обратившись в некий отдел этих компаний. Что, видимо, товарищи и пытаются сделать. За отсутствием отдела работы с клиентами в ОСМ пишут в этот форум

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

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

Нет. В OSM это последовательность остановок и последовательность сегментов дорог, что далеко не то же самое и не выводится однозначно из “упорядоченной последовательности точек”. Чтобы перейти от точек из внешней системы к сегментам дорог в OSM - нужно провести процедуру map-matching-а, что нельзя считать тривиальным действом и подвержено куче ошибок. Это даже не касаясь версионности и разрешения конфликтов, которая отдельная тема.

http://orgp.spb.ru/

https://developers.google.com/transit/gtfs/?hl=ru

Это стандартизованный формат обмена данными о маршрутах общественного транспорта. Там уже есть всё что нужно - и остановки и линии маршрутов и расписание и стоимости проезда и т.д. и т.п.

Уважающему себя перевозчику достаточно лишь предоставить открытый доступ к регулярно обновляемым данным в формате GTFS. После чего любая система (2ГИС, Гугл мэпс, Яндекс, ОСМ и Викироутес и прочие) сможет воспользоваться ими, полностью или частично. И не нужно будет тратить ресурсы на то чтобы впихнуть невпихуемое. :slight_smile:

Не может, а должен. В стране вечно розовых эльфов так оно и есть. Но IRL то пробка, то авария, то мороз, то гололед, то автобус не завелся, то “едем в парк”, то водитель уволился, то замещающая его тетенька не в настроении и едет 20 км/ч и ей плевать, что записано в этом вашем расписании :slight_smile: Поэтому лучше ориентироваться на интервал и молиться, что эта железяка таки приедет. Т.к. езжу на ОТ каждый день, то знаю, что вероятность пропуска рейса где-то 33 %, а время прибытия на конкретную остановку варьируется в пределах 40 мин. Поэтому писать программу, основываясь на расписании я точно не буду.

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

Возможен. С 7 утра до 9 вечера по крайней мере в Екатеринбурге работать будет с точностью процентов 98. С пригородными и междугородними маршрутами без расписания не обойтись, а по городу вполне. Но и за городом будет ясно как планировать поездку.

Ну так я так и делаю :slight_smile: Все равно ни одного сервиса выбирающего маршруты толкового, кроме сайта РЖД, я не знаю. Так что, все сами. Проблема в том, что в большинстве сложных случаев для выбора не хватает информации. Хотя бы примитивной транспортной карты, как в советское время. Типичный пример. Прибыл в Новороссийск. Надо добраться от автовокзала на железнодорожный. Информации никакой. Никто ничего сказать не может. Кроме таксистов: “Зачем тебе автобус? Садис давезу! 500 рублей!” Вот тут данные ОТ в ОСМ и нужны. А их нет :frowning:

В том то и дело, что модель данных ОСМ - это точки и упорядоченные точки (ways), а также отношения. Первых двух хватает для отрисовки карты и автомобильной навигации. Отношения используются для решения вспомогательных задач и считаются сложными для использования, никак не обеспечивают целостности данных и исполнения требований стандартов. специального механизма поддержки ОТ на уровне БД нет. Так же как нет поддержки справочника организаций, например. Все ответственность за реализацию переведена на клиентский уровень. Отсюда и сложности. Маперы вводят инфу в нестандартной форме,мешая вэи и остановки случайным образом, со временем она повреждается, а программеры понимают, что навигацию из этого сделать сложно, если не невозможно (по версии 1 стандарта по крайней мере). Плюс, насколько я знаю, нет опубликованных алгоритмов навигации на ОТ. Преобразовать последовательность точек в маршрут можно. Но это требует примерно 2 месяцев разработки (при использовании готовых библиотек) плюс результат преобразования должен контролировать человек. Но правда это позволит решить проблему нестандартности при вводе информации об маршрутах, которая и не дает организовать роутинг

Ну это не совсем стандартизированный формат. Чисто гугловская фича. Не ГОСТ и не ISO. Но не суть. Из того, что должно войти в подготовленный перевозчиком zip (кстати на хрена ему это делать? Стандарт прямо скажем сложноват и мало интересен транспортнику) нам нужны маршруты (routes.txt), остановки (stops.txt причем их ID не есть компетенция перевозчика, так что берем только координаты) и траектория движения (shapes.txt). Т.е. та же самая “упорядоченная последовательность точек”. Которую нам и так предложили. Зачем Вы требуете с них эту информацию в формате GTFS мне совершенно не понятно

Ну если говорить в таком ключе, то зачем мучать людей? Не скажу за 2ГИС, но чтобы занести маршрут в ОСМ и wikiroutes мне достаточно криво нарисованной секретаршей в Painte схемы и расписания в свободной форме :slight_smile: Вопрос был, как я понимаю, в том, чтобы информация вносилась в систему автоматически по запросу перевозчика, а не когда какой-нибудь мэпер соизволит зайти на этот ОРГП и обновить данные в базе. Судя по статусу ОРГП все, что хотят заносить в ОСМ перевозчики, им и так предоставляется.

Как раз он очень логичен и ориентирован на транспортников. У них вся эта информация есть, нужно просто выгрузить её в данном формате. Многие поля там, кстати, опциональны. Если соответствующей информации нет - то и выдумывать её не нужно.

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

Чтобы что-то работало автоматом - нужно чтобы кто-то этот автомат запрограммировал. Мапперы такой квалификации как правило не имеют, у перевозчика лишних ресурсов тоже нет. Плюс нерешённые вопросы по версионности и разрешению конфликтов.
А главное - это совершенно избыточно. Куда проще стороннему сервису будет не пытаться добывать информацию из OSM в урезанном виде, а импортировать и периодически обновлять напрямую из GTFS. И никаких тебе конфликтов и прочих заморочек.

Добрый день.
Рад что вопрос вызвал интересную дискуссию.

Касательно поднятых вопросов:

  1. Прокладка маршрута на данный момент не актуальна. Хочется чтобы остановка и вэй в OSM имели связь с тем маршрутом, который ходит по этому вэю и останавливается на этой остановке.
  2. Свободное использование данных. По-моему мы как-раз и хотим показать наши маршруты всем вокруг. Но увидев этот вопрос я теперь задумался.
  3. На портале ОРГП только социальные маршруты. А в OSM далеко не все даже социальные. Коммерческих совсем мало.
  4. О расписании речь пока не идет. А вот время работы маршрута (С-По) вполне можно выложить.
  5. Насколько я понял, маршруты в OSM описываются с помощью отношений Route и RouteMaster. Вы будете смеяться, но примерно так и определяют маршруты в диспетчерских системах. Только трасса может состоять как из точек, так и из точек и отрезков. У нас отрезков (вэев) нет. Тем более в кодировке OSM.

Из обсуждения я вынес, что решить нашу задачу можно ручным занесением маршрутов в OSM через соответствующее ПО. В том числе есть плагин уважаемого Bwr57. Это немного муторно, а с правками вообще кошмар.
Больше нравится вариант с выкладыванием данных в GTFS. Но найдется ли человек, или организация, который захочет взять наш GTFS и завести его в OSM? Социальные маршруты же доступны, а в OSM их (в полном объеме) нет.

Ввод данных дело добровольное, но внешняя мотивация может творить чудеса.

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

Если их диспетчерская система позволяет осуществлять выгрузку, то да. Если нет, то надо ручками набирать полтора десятка файлов на буржуйском языке строго в соответствии с форматом. Или писать прогу, которая преобразует. Думаю, что в Питере сами транспортники этим не занимаются. Они отсылают данные в указанный Вами ОРПГ, а уж те сводят ее воедино и осуществляют выгрузку в указанном формате, выступая в качестве администраторов сети.

Я понимаю, о чем Вы говорите. Да, если бы был бы единый центр, куда стекалась вся инфа от операторов и все могли ее получить было бы здорово. Рад, что в Питере такая организация есть. Проблема в том, что в других местах ее нет. В лучшем случае “Реестр маршрутов городского общественного транспорта”, публикуемый раз в год, Вам в помощь. Сами фиды GTFS Google предлагает отсылать им для публикации. Они конечно молодцы, но использование данных Google maps в ОСМ запрещено. Вот если бы был Open Public Transport Database или госорган, который выполняет его функции, тогда да (и мне не пришлось бы цельный год ездить на всех маршрутах ОТ Екатеринбурга записывая треки :))
Но

В стране вечнозеленых эльфов… В реале даже у коммерческих контор информация устаревает на полгода-год и надо ее им отсылать, а потом перезванивать: “Получили? А уже внесли? А когда?”. Тот же Гугл просит им отсылать фиды. Сам он может и запросит схему маршрутов Питера, но на какой-нибудь Ирбит ему точно ультрафиолетово. Что касается ОСМ, то тут действует принцип кинозлодея “если хочешь чего-нибудь добиться, - сделай сам и без свидетелей” :slight_smile:

Надо обдумать этот вопрос. Собственно, GTFS или просто файл с координатами проблема остается

Не понимаю я, о каких таких “сторонних сервисах” Вы говорите. Насколько я понимаю, речь идет о “pure OSM” типа openstreetmaps.org, http://openbusmap.org/, OsmAnd, Maps.Me, “7 дорог” и т.д.

ОРГП

Там по разному, кто-то сам заводит маршруты в общей системе, за кого-то это делают другие. А общая система потом обеспечивает мониторинг движения и считает транспортную работу по этим данным. И выгрузка в GTFS там работает аж с 2012 года, я сам её писал. Одно время она даже была в общем доступе, потом в комитете по транспорту кому-то что-то в голову стукнуло и они распорядились её спрятать.

О любых. Их вовсе никто не заставляет работать только на данных OSM. Тот же maps.me вполне успешно использует данные сторонних сервисов, тот же booking.com. Для osmand вроде кто-то даже делал конвертер из GTFS для показа маршрутов. Прикрутить туда роутинг по общественному транспорту с учётом расписаний - это тоже вполне решаемая задача.

Ну да, рисует отель в 600 метрах от реальности

Так это не из-за технических проблем совмещения, а из-за кривых данных.

Ну не все так плохо :slight_smile: Просто особенность ОСМ - обсуждение рисков происходит в присутствии Заказчика :slight_smile: В реальности я взглянул на данные. В Ленинграде все прилично. Остановки и маршруты вроде как введены по стандарту, по крайней мере в центре города. Так что может сработать даже автоматический (вернее полуавтоматический - программа, буде такая будет написана, строит маршрут и подбирает остановки, пользователь проверяет и нажимает Большую Зелёную Кнопку) ввод. Отдельные ошибки есть, конечно, но не будем придираться. От данных по Ё-бургу пятилетней давности отличается как небо от земли. Естественно, что инфраструктуру - дороги, рулёжки на конечных и т.д. надо смотреть отдельно. Ручной ввод маршрута в таких условиях занимает минут 15. Проблема правок существует, но реально вероятность наткнуться на то, что снесли кусок маршрута, равна 0.0001 % в год. Ну разве что какой-нибудь ремонт дорог затеют. В остальных условиях это называется вандализмом и порицается. Исправить поврежденный маршрут вручную очень легко, но опять же вопрос в трудовых ресурсах.

Этот вариант действительно наилучший в текущих условиях, если Вы не хотите осваивать редактор JOSM. Что касается ввода данных в ОСМ, то я бы их Вам ввел, но я в Ленинграде был один раз лет 30 назад и не знаю местных особенностей. Так что буду ошибаться, как та гипотетическая программа. Вот например в системе есть аж три троллейбусных остановки “Станция метро Гостиный двор” в 10 метрах друг от друга. Если Ваш автобус останавливается на одной из них, мне ее никак не выбрать. Так что лучше, чтобы кто-нибудь из питерцев.
Кстати, нашел аж два сервиса, позволяющих публиковать фиды в гугловском формате - https://transit.land и https://transitfeeds.com. Но, насколько я понял, наши ничего там не публикуют

На втором есть какая то информация по Питеру притом вроде с ежедневным обновлением :roll_eyes:

Прошу прощения.
Я Екатеринбург искал. Его нету. А Санкт Петербург второпях набрал с ошибкой на англицком :slight_smile:

Ну давайте так и запишем. ОСМ не работает с ОТ. Точка. Пользуйтесь Викироутес и Гугл мапс.
На самом деле ОСМовские данные могут быть полезны, если нужно подобрать маршрут в оффлайне или если для региона/города нет фидов, положения транспорта онлайн и т.д. Как в прочем и вся остальная информация.

По этой ссылке маршрутов много, возможно все, в том числе коммерция. Значит кто-то уже заморочился выкладыванием маршрутов в GTFS, а в OSM их при этом нет. Печально.

На безрыбье конечно может быть полезно, но куда лучше было бы иметь ровно те же данные, но в GTFS. Проблема только в том, что нет общедоступного адекватного визуального редактора GTFS и нет общего места хранения (хотя можно в github хранить). Есть несколько web-редакторов разной степени глючности, но обычный пользователь там хрен разберётся.

Ещё в 2012 году я этим заморочился и реализовал, в составе портала ОРГП.
Они тянут информацию с этого портала, там даже ссылка на источник приведена: http://transport.orgp.spb.ru/Portal/transport/internalapi/gtfs/

Проблема в том, что в ОРГП решили официально предоставлять доступ к api только по заявкам и только со статических адресов: http://transport.orgp.spb.ru/Portal/transport/userAgreementApi
Неофициально сейчас ограничений нет, но в любой момент этот доступ могут опять прикрыть.
Вот если убрать это ограничение (которое больше политическое и технически нафиг не нужно), то всем будет проще.

Ну не приспособлен OSM к таким данным, особенно если они ежедневно меняются, как в Питере.
В OSM лезет только геометрия, и то с большим скрипом.
Моё IMHO - и не нужно его ногами туда пихать, такие данные лучше держать отдельно…