Товарищи, навигация у вас сбоит.
А именно совершает ту же ошибку, что и OSRM (и которую не совершает, например, Graphhopper) - учитывает ограничения, которые касаются только HGV.
Вот вам отношение https://www.openstreetmap.org/relation/4569644
Отношение правильное, type=restriction:hgv, удалять его - вандализм.
Если проложить маршрут с востока на запад (с академика Сахарова на Аделя Кутуя), он предложит сделать петлю на этом перекрестке, свернув на юг, там развернувшись на север и потом свернув налево на запад, на Аделя Кутуя.
Не учитывайте type=restriction:hgv, пожалуйста, пока отдельного режима для большегрузов нет.
Вопрос немного не по теме, но все же: разве такая схема не переведена в разряд устаревших (deprecated)? Мне казалось, что следует использовать вариант type=restriction + restriction:hgv=only_left_turn .
Да написано, что можно и так и сяк и плюс указать как обычно, а в исключениях указать всех кроме hgv. Но я согласен, обрабатывать type=restriction:* несколько не сподручно.
Этот вариант плох отсутствием обратной совместимости. Если конвертер не знает про restriction:hgv, то в случае type=restriction:hgv он просто проигнорирует это отношение (что и требуется), а в случае type=restriction воспримет как наличие ограничения.
Это печальный опыт конвертации карт для Ситигида. Когда наткнулись - тогда же и придумали использовать type=restriction:hgv, чтобы левые запреты в карте не появлялись.
Какая тут обратная совместимость, когда теги разные.
А обычный кривой код, который нужно было исправить, когда ключ restriction не проверялся, бралось только значение only_*.
И даже сейчас существует вторая часть этого из этой серии, когда проверяется только начало тега (only или no) и вполне покатит тег only_туда_низя.
“type=restriction + restriction:hgv=only_left_turn” vs “type=restriction:hgv”
Раньше type=restriction имел совершенно конкретное значение - ограничение поворотов для транспортных средств. Сделали конвертеры, которые пользуются этими данными. На грузовики им наплевать, они их не поддерживают, и тегов для них в тот момент никаких не было. Отсутствие тега restriction=* при этом являлось ошибкой, которую конвертер пытается исправить используя умолчание. Потом кем-то добавляется тег restriction:hgv=, который внезапно означает, что type=restriction теперь может не распространяться на легковые автомобили и его надо игнорировать, а отсутствие тега restriction= теперь не ошибка.
Вот это и есть ломание обратной совместимости, когда для корректной работы теперь надо учитывать теги, которых раньше не было и никто про них не знал. Если кто-нибудь добавит ещё один тег, например january_01_only=yes, который обозначает, что данное ограничение действует только первого января - это будет точно таким же ломанием совместимости.
Чтобы этого избежать - правильнее использовать префиксы/суффиксы для изменения основного тега, чтобы для существующих программ ничего не менялось.
Вы перевернули всё с ног на голову, выдав желаемое за действительное.
Имел совершенно конкретное значение type=restriction + restriction=. Использовать обрубок схемы - сам себе буратино, как оно вообще должно работать если значение restriction= не учитывается? Что там по-умолчанию, можно по этому ребру ехать или нет?
Очередной косяк со стороны конвертера, тег except был там если не всегда, то уже очень давно, и там могло быть в исключениях и автомобиль, не учитывать это - опять работать с обрубком схемы.
В общем вы должны признать, что конвертер схему запретов не поддерживал поэтому выдумывались костыли под конкретный конвертер.
Притом пропозал зарублен на корню, голосование даже не началось.