2 вопроса про отношения.

Вопрос 1.
Может ли один и тот же объект (точка, линия) входить в отношение более одного раза, с разными ролями?

Вопрос 2.
Когда отношение собирает несколько смежных линий (например, отношение route) – порядок упоминания линий в этом отношении что-то значит? Это полезно, когда смежные линии в отношении располагаются рядом, или это неважно?

1: А что за тим отношений ? Не встречал такого, но впринципе может.
2: В роуте порядок важен.

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

1). Да. Запрет разворота, no_u_turn (пример), линия должна входить как from и to.
JOSM-у, правда, не очень нравится такое.

  1. Да, порядок важен. В route линии должны последовательно задавать маршрут, иначе может быть неоднозначно, если маршрут вдруг проходит один перекрёсток 2 раза (в Зелике есть примеры). В JOSM удобно показывается, состыкованность линий и зацикливание. Зацикливание - для рисования границ.

Может. В отношении type=restriction, restriction=no_u_turn(разворот запрещен) линии с ролями from и to часто являются одной и той же линией.

Это полезно, но не важно. Отношение type=route,route=road часто содержит “раздвоения”, собрать все линии в одну цепочку так чтобы последняя точка предыдущей линии совпадала с первой точкой следующей линии невозможно. Собирать все линии отношения в минимальный набор цепочек - хорошо, возможно это кому-нибудь полезно.

надо использовать роли forward/backward для раздвоений, тогда сортируются нормально :wink:
forward - если маршрут проходит в направлении линии, иначе - backward (тогда oneway ставится -1 обычно)

Вот у нас маршрут №10 в направлении Станция Крюково - Городская больница проходит через перекрёсток два раза. Боюсь, автоматически это если и сортируется то с напрягом.

Товарищи!! Вы опять привязываетесь к частностям, не надо этого. Тип отношения route в моём вопросе взят как один из возможных примеров, когда смежные линии являются упорядоченными, но вопрос не только о route.

Можно придумать массу примеров, когда раздвоение чего-либо происходит в одном направлении: разделение и последующее слияние русла реки (тем не менее, это одна и та же река); трехфазная цепь ЛЭП, идущая по одним опорам, но в каком-то месте разделяющаяся на одиночные фазы на своей опоре каждая.

В частностях - особенности. применимо к дорогам и маршрутам транспорта, например, лучше иметь посортированные линии в отношениях.

Хорошо, общий ответ - порядок или беспорядок в отношении зависит от потребителя данных. Члены отношения в API поддерживают порядок при загрузке/выгрузке. В некоторых случаях, например, turn_restriction, порядок не важен - он задается ролями. В отношении транспорта - задает порядок остановок, направление движения. Если подоплека вопроса - ЛЭП, то как придумаете, так и будет.

это довольно простой вариант и, насколько помню, JOSM такое нормально кушает. Более того, когда есть кольцевой маршрут с “перешейком”, включенным дважды, - тоже нормально сортирует