Это тот самый маршрут с кольцом, который ты предложил рисовать одной линией.
Если он кольцевой, то почему на сайте он нарисован как двусторонний? На сайте ошибка, выходит, потому что нет направления «обратно».
Рассматривая ÖPNV-Karte, заметил интересную вещь. Он не поддерживает роли *:stop, зато поддерживает *_stop, об этом написано и на соответствующей вики-странице: http://wiki.openstreetmap.org/wiki/%C3%96pnvkarte
Такие же роли *_stop указаны в русском (а также немецком и французском) описании отношения: http://wiki.openstreetmap.org/wiki/RU:Relation:route
А вот в английской вики роли *:stop: http://wiki.openstreetmap.org/wiki/Relation:route
Информация об использовании этих ролей (привязка к линии или направлению маршрута) тоже противоречивая — в одном месте одно, в другом другое. ÖPNV-Karte поддерживает вариант привязки к направлению маршрута.
Как разгребать весь этот бардак с этими forward и backward?
Попытался откорректировать под ÖPNV-Karte и навигацию городские маршруты по Щёлково:
http://www.openstreetmap.org/browse/relation/962843
http://www.openstreetmap.org/browse/relation/962835
http://www.openstreetmap.org/browse/relation/962904
http://www.openstreetmap.org/browse/relation/962840
Обращаю внимание на этот маршрут:
http://www.openstreetmap.org/browse/relation/962844
Его сделать нормально не вышло, т.к. разные рейсы идут разными путями, но это один маршрут. Как тут правильнее обозначить — не представляю.
Подчеркивание (_) уже deprecated, разве нет?
вот так.
В Германии все рисуют по этой схеме, и openbusmap (ÖPNV-Karte) отлично поддерживает.
Хватит изобретать велосипед, всё-таки.
Причём тут эта схема? Не нашёл там ответа на вопрос по данному случаю, когда разные рейсы идут разными улицами. Вот расписание: http://www.mostransavto.ru/?page=rasp&code=1686&ak=40&n=2&com= (часть рейсов через Площадь, часть через Пенсионный фонд)
нарисовать разными отношениями, в теги отношения вбить description, opening_hours и что ещё придумаешь
нарисовать разными отношениями, в теги отношения вбить description, opening_hours и что ещё придумаешь
Номер-то один, значит и маршрут один. Я ещё понимаю, если б трассы сильно различались. А так, если перевозчик продлит один рейс на одну остановку — ради этого тоже создавать ещё один маршрут, дублируя информацию?
эх. Ваша Москва, вы и мучайтесь потом.
(если продлят рейс, продлите два из существующих отношений. Если добавит ещё одну трассу — сделаете новые, благо copy-paste в плагине public_transport).
Если он кольцевой, то почему на сайте он нарисован как двусторонний? На сайте ошибка, выходит, потому что нет направления «обратно».
Он не кольцевой. Он линейный, но кусок его представляет из себя кольцо. И ошибка у тебя в понимании. Формальный конец этого маршрута на петле есть.
Вот так выглядит этот маршрут. Даже если рассматривать его как два направления, они будут между собой пересекаться в точке перехода кольца в линию. И никакого смысла сливать их в одну линию разделяя всё остальное нет - никто так не должен ехать, и навигатор не должен так предлагать. Не надо придумывать нелепые причины для объединения направлений в одно.
Сама по себе идея разделить маршрут на два направления неплоха. Но только при условии, что любой маршрут делится на два изолированных направления. При этом вовсе необязательно делать два релейшна и даже необязательно делать направление ролью. Можно, например, вставить в нужном месте точку-разделитель с соответствующей ролью.
Маршрут, который я нарисовал выше, не делится на изолированные направления. Однако он, тем не менее, делится на два пересекающихся направления. Если бы адепты деления были последовательны, они бы его так бы и делили.
Ну, не любой маршрут делится на два направления, конечно.
И при чём здесть «изолированные направления»? Могут быть одни и те же веи в нескольких направлениях. В схеме по этому поводу ничего не указывается.
Точка-разделитель — ещё одна сущность, назначение которой не очень понятно.
Ты нарисовал линии, теперь по каждой линии, как я понимаю, можно нарисовать отношения с упорядоченными остановками — и всё будет ок. Я не очень понимаю фразу про «адептов деления».
zverik
точка разделитель - это пример. Вообще проблема в том, что роли релейшнов пишутся одним словом. Если бы на роль можно было повесить несколько тэгов - всё бы резко упростилось, и не нужно было бы городить зоопарк. Сейчас главная проблема с маршрутами даже не в том, что остановки задаются разными ролями - это как раз нормально. Проблема в том, что смысл слов “forward” и “backward” определён нечётко и различается для остановок с путями.
Для разбиения маршрута на два нужны веские основания. Попытка навязать всем остановкам одинаковые роли - недостаточное основание.
так не надо вешать forward и backward на остановки.
а на пути — относительно направления вея, как в других применениях.
я не понимаю, зачем городить сложные схемы с тэгами вместо ролей и подобным, когда есть простые.
я не понимаю, зачем городить сложные схемы с тэгами вместо ролей и подобным, когда есть простые.
Понимаешь в чём проблема? Вместо того, чтобы обозначить остановки в одну и в другую сторону разными ролями, ты создаёшь лишний релейшн на каждый маршрут, плюс ещё создаёшь для некоторых маршрутов остановки по обе стороны дороги с одинаковыми ролями.
В белорусской адресации есть отношение address=house, обозначающее дом. Однако релейшн на каждый дом - слишком большой перерасход по сложности структуры и сложности дальнейшего обслуживания. Поэтому почти все дома адресуются костылём. И вообще, сложность этой схемы привела к тому, что никто её так и не использует.
В схеме Oxomoa на каждую остановку предлагается навесить relation. Это обстоятельство гарантирует, что схема эта никогда на практике работать не будет.
Мне не кажется ненормальным использование ролей релейшнов в целях указания свойств остановок в данном конкретном маршруте. Это просто, наглядно и экономно. Если возникает конфликт в использовании forward/backward - можно использовать другие слова. Для остановок только для высадки можно указывать stop:exit. Только для посадки - stop:enter. Это именно то, что нужно для навигации по маршруту, и это вполне приемлемо работает в замороченных случаях.
Но суть схемы-то не в том, что создаётся тысяча отношений. Напротив, часто одно-два отношения на маршрут — это максимум. Да, остановки можно вырисовать подробно, нарисовать stop_position, саму остановку, платформу, объединить всё это в отношение stop_area. Точно так же можно в лесу вырисовывать просеки, отмечать type=* species=*, ставить natural=tree — а можно просто обвести всё natural=wood, и будет достаточно хорошо. Отлично даже для большинства применений.
Суть схемы в том, что маршрут из бессвязного набора отрезков и точек превращается в логичную последовательность, по которой можно проследить за автобусом от начала до конца. Пропущенные отрезки пути становятся не досадным упущением, а явной ошибкой, заметной на стадии рисования. Остановки из точек «вон там я видел, как останавливается автобус» в упорядоченные узлы маршрута, где все —и пассажиры, и программы роутинга — имеют ясное понятие о том, что следует за чем, и могут проводить какие-то вычисления — например, по длительности поездки. Выдавать количество остановок, которые нужно проехать; говорить: «выйди после такого-то перекрёстка со светофором».
Мой вопрос в том, зачем вообще отмечать остановки в разные стороны разными ролями? Чем они отличаются? Там остановка и там остановка.
Ты говоришь, что forward:stop и backward:stop «просты, наглядны и экономны». Но в теме постоянно появляются вопросы, относительно чего forward и backward. На странице отношения непонятно, какие из точек к какому направлению относятся. А просто stop всяко экономнее и быстрее для понимания, чем stop с префиксами. То есть, все три прилагательных неверны, и более применимы к схеме Oxomoa.
Ты предлагаешь stop:exit. Вместе с forward:stop. Получается forward:stop:exit? Просто и наглядно indeed.
Если возникает конфликт в использовании forward/backward - можно использовать другие слова. Для остановок только для высадки можно указывать stop:exit. Только для посадки - stop:enter. Это именно то, что нужно для навигации по маршруту, и это вполне приемлемо работает в замороченных случаях.
Мне тоже кажется, что forward/backward только вносят путаницу. Нужно ввести новые теги по названиям которым четко было бы понятно, что вей принадлежит маршруту “туда” и дублировать этот вей с пометкой “обратно”. А направление вея вообще не принципиально. И по поводу остановок тоже согласен.
Только вот предлагаю остановки делать частью вея, как в РБ. Или по крайней мере обязательно вставлять лишнюю ноду возле остановок.
(это пока только не до конца обдуманное предположения о привязывании остановки к вею, может в годе обдумывания родится более приемлемое решение).
Мой вопрос в том, зачем вообще отмечать остановки в разные стороны разными ролями? Чем они отличаются? Там остановка и там остановка.
А чем отличаются маршруты номер 666? Там 666 и тут 666. Почему их два? Не надо заниматься словесной демагогией. Если смысл роли определён чётко - не будет глупых вопросов.
Ты говоришь, что forward:stop и backward:stop «просты, наглядны и экономны». Но в теме постоянно появляются вопросы, относительно чего forward и backward. На странице отношения непонятно, какие из точек к какому направлению относятся. А просто stop всяко экономнее и быстрее для понимания, чем stop с префиксами.
Я зря написал предложение использовать другие слова вместо forward/backward? Все проблемы - не от использования разных ролей, а от того, что в ролях используются одни и те же слова с существенно разным смыслом.
Мне тоже кажется, что forward/backward только вносят путаницу. Нужно ввести новые теги по названиям которым четко было бы понятно, что вей принадлежит маршруту “туда” и дублировать этот вей с пометкой “обратно”.
Да, это правильная идея, и в случае с тэгами роли хорошо реализуемая. Но в текущей ситуации мы получим какую-нить какафонию типа forward:forward или backward:forward, где одно слово означает направление по маршруту, а второе - относительно направления вея. Да, можно изменить слова в одной из частей, но это всё равно будет неудобно.
Веи просто должны сортироваться по порядку, а forward/backward - отражать направление относительно вея. Есть гораздо более простое решение, чем делить на два релейшна - включить в отношение точку разрыва, скажем, с ролью split. До неё будет одна сторона маршрута, после - другая. Если вместо split стоит какой-нить official_split - значит, тут маршрут прерывается лишь формально, на деле автобус едет дальше. Использование такого объекта позволит также обойтись только ролью stop для остановок.
Хотя на самом деле есть и такое соображение, что реальное разбиение на направления движения по маршруту капитально нужно только для остановок. Ведь для пассажира роутинг идёт именно по ним.
А направление вея вообще не принципиально.
Не согласен. В этом случае надо анализировать вей, найти, каким концом он цепляется к предыдущему мемберу, а каким - к следующему, что дополнительно усложняет анализ. Если веи хоть чуть-чуть криво отсортированы - определить направление движения будет нельзя. Плюс если ещё вей замкнут и в точке замыкания крепится как к предыдущему, так и к следующему вею, мы получим алгоритмически неразрешимый случай - неизвестно, в какую сторону ехать по кругу.
Только вот предлагаю остановки делать частью вея, как в РБ. Или по крайней мере обязательно вставлять лишнюю ноду возле остановок.
(это пока только не до конца обдуманное предположения о привязывании остановки к вею, может в годе обдумывания родится более приемлемое решение).
Кстати, интересная мысль: перед остановкой с ролью stop ставить мембер stop:waypoint - роутинговую ноду на линии. Алгоритм должен будет считать stop:waypoint и следующий за ним stop связанными объектами. Роутинг будет идти между stop:waypoint, а пассажиру будет показываться перемещение между stop. Мда, число костылей растёт…
ну нафига, если уже есть public_transport=stop_position?
нафига по каждому, даже самому мелкому вопросу, изобретать свой, русский путь?
и после этого жаловаться, что сплошные костыли получаются?
блин…