Надо ещё где-то расписать, как эти маршруты обозначать, и больной вопрос решить, где ставить остановки трамвая – на рельсах или на месте ожидания трамвая, чтобы были остановки для каждого маршрута в нужную сторону.
* way - тр. средство едет туда-обратно
* way - forward - едет по направлению вея
* way - backward - против
* node - stop_<number> - устаревшая форма, не использовать. менять на stop и выстраивать *stop в нужном порадке
* node - forward_stop_<number> - аналогично
* node - backward_stop_<number> - аналогично
* node - stop - на остановке останавливается по пути "туда" и "обратно"
* node - forward_stop - не правильно
* node - backward_stop - не правильно
* node - forward:stop - остановка по пути "туда"
* node - backward:stop - остановка по пути "обратно"
shadowjack упомянул в irc-канале, что рисование маршрутов - это только начальный этап.
Дальше будет планирование маршрута на общественном транспорте с учетом расписаний и возможных пересадок.
Это сообщение пишу, чтобы зафиксировать, что удалось найти по этой теме и стимулировать интерес других
Название темы: Intermodal Journey Planning, Intermodal Journey Planner
Точное время посадки, это для особо одаренных европейцев нам тако не надь. А вот сквозные маршруты, это здорово! Спасибо, vvoovv, за доклад из ирки. Реально интересные вещи вы там выдумываете.
Еще несколько добавлений по поводу планнера для общественного транпорта.
Указанный выше проект SITI сделан на основе проекта Graphserver, причем за год, прошедший с выхода прототипа SITI, Graphserver ушел далеко вперед.
С Graphserver можно работать на питоне, а ruby больше не поддерживает.
В Graphserver также можно загружать OSM и GTFS
Странно, я думал что это более продвинутый вариант. В Потлатче, например, нет возможности менять порядок следования членов. Да и вообще в XML вроде как порядок следования элементов ничего не значит, если нет соответствующего тега.
Как рисовать остановки? На рельсах или по месту расположения, как автобус, справа по ходу движения?
Как перечислять остановки? На линейных маршрутах только в одну сторону или в обе? На кольцевых? На полукольцевых (когда половина маршрута линейная, а другая половина – кольцевая?
В XML порядок тегов, конечно, значит. Атрибутов - нет. Члены отношения описываются xml-тегами. С API 0.6 гарантируется сохранение порядка членов в отношении (осмовских тегов - не гарантируется). Раз в Потлатче нельзя менять порядок членов, значит - нужно использовать Josm для этой задачи.
Я думаю, остановки ставить также, как и у автобусов - на месте ожидания и/или посадки-высадки. Перечислять - если остановки две (слева и справа от маршрута), то естественно, в обе стороны. Если одна на рельсах/дороге - наверное, один раз (я так понимаю, stop как раз для этого). Но по-моему, это немного бредово, и было бы логично перечислять все остановки в порядке следования. forward:stop использовать до конечной, backward:stop - после. Хотя эта схема мне тоже не нравится… Нужно еще как-то обозначать остановки с только посадкой и только высадкой, остановки по требованию…
Если для маршрута А линия 12345 включена с ролью forward, значит этот маршрут едет по этой линии по её (линии) направлению. Если для маршрута Б линия 12345 включена с ролью backward, значит, этот маршрут едет по этой линии против её направления.
Если линия включена в маршрут без роли, то это интерпретируется так, что маршрут проходит по ней в обе стороны.
То есть роль forward/backward для линий - это не “маршрут туда/обратно”, а “в какую сторону едет на этой линии”.
По сути, мы составляем из линий обычное кольцо без указания конечных пунктов.
А уже остановки указываются stop’ами.
Есть в этой системе логическая нестройность. forward задаёт направление относительно текущего вея, а forward:stop - относительно всего маршрута. Может случиться, что на backward находятся остановки forward:stop, что сбивает с толку.
Есть. :3
Может. Но я, например, для уменьшения путаницы сначала размещаю в релейшене кольцо из линий, а потом отдельно - натыкиваю по порядку остановок. Мухи отдельно, котлеты отдельно, все довольны.
Единственное, что неудобно - приходится рвать круги (junction = roundabout) и создавать аналогичный релейшн (type = junction, junction = roundabout, кажется, так). А он пока что пропозальный.
Получается, система неполная. Роутинг никак не узнает, какая из двух остановок соответствует нужному направлению движения, и посадит на автобус не в ту сторону.
API 0.6 может гарантировать что угодно, но мне кажется (я с хмл знаком очень поверхностно) не каждый парсер обязан вытаскивать элементы именно в таком порядке, как они записаны… Поэтому указание stop_1 … stop_N мне кажется более универсальным способом…
Разумеется. Но как раз здесь-то (если перпендикуляр упадет на вей, где автобус едет и туда, и обратно) в общем случае неясно, с какой остановки (из пары) в какую сторону можно уехать. :3
И если, например, маршрут в обе стороны - одна и та же линия (без backward/forward), то нельзя понять, остановку с какой стороны дороги нужно использовать. Из здравого смысла можно предположить, что остановки обходятся против часовой стрелки (в странах с правосторонним движением), но наверняка сказать никогда нельзя.