Я изучил все предыдущие пропозалы и сделал составную схему тегирования полос поворота и разгона. Приглашаю просмотреть пропозал и проверить, всё ли там есть и правильно ли. Нуждам прогорода, как я понимаю, этот пропозал отвечает: там есть алгоритм построения картинок «движение по полосам».
В связи с “последней модой” (привет Собянину) рисования полос на дорогах под маршрутные ТС хотелось бы ещё раз уточнить, как мапить это дело? 3 Полосы, из них одна под автобусы: это lanes=3+lanes:psv|bus=1 или же lanes=2+lanes:bus=1?
Ну для поворота “местное уширение” тоже используется, но в lanes оно не считается… просто в отличие от русской версии, в аглицкой как раз есть “двоякое толкование” со ссылкой на википедию, где тоже говорится, что lanes не подразумевают под собой “вспомогательные” полосы (типа под маршрутный транспорт, такси, автомобили спец служб и т.д.). Это-то и ввело в заблуждение.
Вообще-то недавно был спор в tagging@ (и в talk-странице тега lanes), в результате которого решили, что все уширения считаются, и lanes — физическое количество полос на данном отрезке дороги.
Нумеровать, как в Гармине - от центра. Дополнительные полосы, как правило (разумеется, не без исключений), добавляются снаружи. Нумерация от центра позволила бы сохранить номера основных полос (полос для движения) в пределах нескольких последовательных отрезков дороги. Карманы и поворотные полосы имели бы при этом другие, большие номера.
По-другому решить задачу с неопределенностью порядка полос для движения прямо - не вводить (никак не связанный с количеством полос) тег lanes:directions, а указывать, начиная с какой полосы можно ехать прямо, например: lanes:through:forward=2 + lanes:through:start:forward=2 (полосы для движения прямо начинаются со второй от центра). Другой вариант - список номеров полос для движения прямо: lanes:through:list:forward=2;3.
Сохранить отношение как вариант для сложных случаев (когда повернуть разрешается только на определенную полосу). Это может быть полезно для навигации (если при двух последовательных маневрах нужно повернуть или перестроиться на конкретную полосу).
Мой опыт говорит об обратном: дополнительные полосы появляются как слева, так и справа с одинаковой частотой, потому что количество перекрёстков там и там примерно одинаково. А если считать развороты, то левые полосы — даже чаще. Мне, как водителю, проще считать снаружи вовнутрь: поворачивая на дорогу, я встраиваюсь на первую полосу и не занимаю большие, если свободны меньшие. Плюс, чем больше номер полосы, тем выше скорости. Ну и тому подобное.
Есть ли водители, считающие полосы от центра к краю?
Тогда для каждого отрезка дороги придётся вводить описания всех полос, иначе это уже не умолчания, а отсутствие информации. Номера полос получаются из предложенной схемы по несложному алгоритму, который там приведён, — в том числе и полос для движения прямо.
Наконец, для пользователей будет куда сложнее считать номера полос (придётся постоянно держать в голове порядок), и будет куда больше ошибок. Названий тегов с тремя и более двоеточиями вообще лучше избегать, по-моему.
Только не «на», а «с». Я видел за всё время только один знак, указывающие, на какие полосы можно поворачивать (и он не противоречил ПДД, так что можно было обойтись без него). Едва ли есть нормальный пример, когда два последовательных маневра нужно рисовать одним отношением.
В прогороде, как я понял, навигация по полосам ограничивается построением знака «движение по полосам». В гармине — через отношения ограничений поворотов для каждой пары отрезков дорог. А как это сделано в навителе?
В общем-то, без разницы, лишь бы все понимали порядок одинаково.
Соглашусь, что добавлять к относительному числу полос их абсолютные номера - зло. Но и lanes:directions определенно плохой вариант - он никак не связан с остальными тегами и предназначен исключительно для задания количества полос для поворота только налево или направо.
Тогда, может быть, так их и обозначать - lanes:turnright_only=1 ? Неоднозначность снимается, к тому же добавляется дуракоустойчивость - при любом изменении тегов полос переписывать строку directions не нужно.
Алгоритм прорисовки знака движения по полосам в таком варианте полностью однозначен.
Именно “на”, как в Гармине. Это вопрос не ПДД, а алгоритма формирования подсказок. Но поскольку мне неведомо, используется ли Гармином это знание, не настаиваю. Чем проще, тем лучше.
Сейчас никак. На http://navitel.reformal.ru/ пишут, что фича делается, но как она будет реализована, не раскрывается.
P.S. Главное, что непонятно - как из тегов на отрезках сформировать описание для Гармина, особенно, если перекресток соединяет больше четырех улиц (или просто непрямоугольный).
Несмотря на бОльшее использование умолчаний мне не нравится использование числа. Вместо этого мне кажется логичным описание свойств каждой полосы (как вариант - с использованием диапазонов).
первый пример:
lanes=6
lanes:forward=3
lanes:forward:1=turnleft
lanes:backward:1-3=turnleft
При этом направления можно описывать не перечнем, а через теги для каждой полосы
lanes:forward:1:directions=l
что представлется более удобочитаемым чем перечень (а это, в свою очередь важно с точки зрения удобства использования в не-визуальной форме)
\А может и просто тогда типы через точку с запятой указывать?\
Также это позволит решить проблему нелогичного выделения полос. Например, мне совершенно непонятно что будет делать текущий вариант с примыканием слева.
Ну а мне он пришел в голову автоматически, стоило только просмотреть “отношение с плагином” (релейшн из одной линии - но вэй!)и тут же увидеть lane:x: как отличную замену релейшнам.
В общем, после минутной паники «омг как же я не додумался закрываю обсуждение всё переделываю» подумал трезво, и вот какие минусы вижу:
перечисления в названии тегов (ну и вообще параметрические теги); Komяpa: «его хрен запроксируешь в шейпы и любой другой формат со стандартным набором колонок, я такое вообще хрен на постгисе поддержу, при всём желании»;
не рифмуется с lanes: там количество, а здесь перечисление, причём дважды.
lanes=6
lanes:forward=3
lanes:forward:turnleft=1
lanes:backward:turnleft=1-3 (или даже 1;2;3 - ближе к принятым схемам тегирования)
Просто вариант с количеством слишком опирается на “умолчания” из-за чего плохо воспринимается и постоянно остается желание вкрутить directions, который, в силу сокращений, тоже не эталон красоты - все эти буквы надо держать в голове, а они ведь, по сути, дублируют те же полосы.
Минусы “переворота” по сравнению с lanes:x - нельзя навешать “чего хочу” на каждую полосу.
С другой стороны можно оставить непосредственно движение на lanes::=
а все расширенное (ширина там, рельсы, можно вообще все из вэйпартов) выкинуть в lane:x:
Два тега - два подхода. Один лучше поддерживается ПО, второй - больше позволяет. При желании прожевывается роботом в любом направлении.
В этой схеме меня смущают итоги вида: lanes=3, lanes:turnleft=3. Путаются количество с номерами, очень неочевидно для новичков, не видевших соответствующей вики-страницы.
Точно. Поэтому еще раз предлагаю посмотреть в сторону turnleft_only/turnright_only (для исключения крайних левых/правых полос из движения прямо) как варианта однозначного обозначения движения по полосам для Прогорода. Имхо, lanes:directions надо убирать, не ложится он в эту схему…
Ну да. Но с одной стороны эта проблема, с другой стороны lanes:forward:bus=1 при использовании по числу нам сообщает достаточно только то, что есть полоса для автобуса. Ее положение мы можем определить либо опираясь на ряд допущений, либо на directions.
Так… а если оставить lanes как в пропозале, а directions пропозала заменить на lane:x: ?
Вылезают проблемы с перечислением в названии… черт. Главное что меня смущает в пропозале: мы либо угадываем либо смотрим в directions, который использует синтаксический код вместо описательных тегов…
Тут дело в том, что lanes:psv:* используется уже примерно полгода. При этом используется умолчание, что эта полоса — первая от внешней стороны. Другими словами, я просто расширил эту схему на полосы поворота, соответствующим образом усложнив умолчания.
Проблема с lanes:directions несомненна, но заменять этот тег на ещё N тегов, похожих на lanes:: — не очень хорошо: двойная работа, либо непонятки для непосвящённых. Можно попытаться раскрыть его, но я опасаюсь другой пропасти: программистского синтаксиса, как в украинском пропозале. lanes:directions=turnleft;through;through,turnright;turnright,psv читается, на мой взгляд, куда сложнее lanes:directions=l;s;sr;rp.
Dimuzz, тег directions снимает неоднозначность не столько с количеством полос для движения прямо, сколько с расположением и взаимоотношением поворотных и ограниченных полос: например, где находится полоса для общественного транспорта, можно ли с неё поворачивать.
Да, ещё не забудьте, пожалуйста как учесть “переходящие полосы”. Т.е. как в этом формате описать такую развязку, что бы было однозначное представление вот такой развязки, т.е. что бы было понятно, что правая полоса становится “только направо”, а левая “вырастает” из второстепенной дороги.
А не трактовалось, что второстепенная дорога вклинивается в главную, а на главной потом появляется правая полоса для поворота.