layer по умолчанию для bridge и tunnel

То, что в рендерерах уже есть такая логика, скорее всего не верно. Рендерер просто сначала рисует всё, что идет с layer=-5, потом всё с -4 и т.д., а в пределах одного слоя сначала рисует все тунели, потом все обычные дороги, потом все мосты. Т.е. мост без явного layer отрисовывается сверху дороги, у которой так же не указан layer, во время отрисовки 0-го слоя тем же образом как, например, building=yes оказваются сверху landuse=residental, хотя ни на домике, ни на полигоне квартала layer не указан.

По поводу мостов вроде http://upload.wikimedia.org/wikipedia/commons/4/40/Bad_III.JPG - layer служит для разграничения объектов, находящихся друг над другом, а не рядом. Важно, чтобы слой моста был выше слоя реки, а то совпадает ли слой реки со слоем дороги и других объектов на земле рядом не важно, т.к. они именно рядом, а не сверху-снизу относительно реки. И если придерживаться рекомендации из wiki “When tagging things, try to avoid the layer tag most of the time”, то получается достаточно указать layer=1 для моста, а реку и дорогу оставить без явного layer. Пытаться указать, что река имеет обрывистые берега выставляя ей layer=-1 мне кажется не верным, т.к. в описании тэга ничего про такое поведение нет.

grisha, поправка.
Ты расписал то, как “должен” это делать нормальный рендерер. У меня получилось такой сделать, в частности, для Беларуси на kosmosnimki.ru.
Mapnik на osm.org интерпретирует всё совсем иначе. Он сначала рендерит все простые дороги (сортируя по layer), после чего рендерит все обводки мостов, после чего рендерит ещё раз только мосты, опять-таки сортируя по layer. На osm.org не получится подсунуть мост под тоннель, никак.

Кроме того, мне так и непонятно, какая проблема решается данным пропозалом. :slight_smile:

Кажется, он просто предлагает прикладному софту считать, что bridge без layer всегда имеет layer=1, а туннель -1.
По сути, это не пропозал, а просто рекомендация.

Данный пропозал позволит не ставить теги, значение которых очевидно.

Ilis, приведите пример софта, котрый вы таким образом хотите “починить”. На данный момент и так можно не ставить этот тег. :wink:

Если бы я писал софт, я бы трактовал отсутствие лейерс на тоннелях и мостах как в пропозале. И тег я ставлю, но меня это достало. Пропозал должен починить не софт, а редакторов :slight_smile:

Это не починка редакторов, потому что необходимые тэги они от этого ставить не начнут, скорее наоборот. Это просто “легализация” ошибки.

я приведу - рендереры и валидаторы
сейчас приходится авторам софта самим додумывать как же так расположить мосты чтобы ничего не повылазило
пропозал же призван в том числе стандартизировать их поведение

какой шанс что увидев на всех мостах в городе layer 1, редактор с первого раза правильно проставит теги в сложной развязке?

полагаю что ошибок как раз станет меньше
так как лучше внимательно заполнить 1 тег, чем невнимательно два

да и можно будет наконец почистить этот layer
но это не скоро…

Это не необходимый тег. Так же как oneway=yes, например.

И непроставление тега в данном случае не ошибка.

Можно было бы, например, вообще описать тег layer как необходимый только в случаях когда пересекаются два однородных объекта. Но поскольку это труднее для понимания, то лучше уж назначить ему дефолтные значения.

Высокий.

Не станет.

И сразу бан за вандализм.

Как oneway необходим на односторонних дорогах, layer необходим на пересекающихся веях.

А вот и неправда!

На односторонних моторвеях этот тег необязательный, потому что это очевидно следует из определения большинства моторвеев.

Так же из определения моста следует что он имеет лейер выше, чем пересекаемый им объект.

“Очевидно из определения” и одновременно “большинства”. Феерично.
Значит один такой косяк уже есть.

Во-первых, не следует, во-вторых, “лейер выше” никак не означает “1”.

А что сейчас мешает его не проставлять? Что и где ломается?

неопределённость поведения программного обеспечения
один рендерер может дать мосту по умолчанию значения layer 0.5, другой 1, третий 5
какой-то может вобще в произвольном порядке их нарисовать

та лаадно, от этой чистки будет же только польза :wink:

Эта неопределённость следует из отсутствия данных, и лечится это добавлением данных в базу, а не предположениями на основании средней температуры по больнице.

однако веи без тегов layer будут находиться всегда
так как одно из умолчальных значений уже определено
соответственно, веи без тегов всё же прийдётся обрабатывать
и логично эту обработку реализовать максимально чётко и разумно

модели создаются по подобию реального мира
поэтому если в реальном мире есть какая-то значимая закономерность, то её стоит учесть

А без сферических коней в вакууме? Что сейчас сломается?

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

layer призван разрешать неоднозначности
и там где их нету - он не нужен
так же как не нужен layer = 0 на большинстве объектов, так же не нужен layer = 1 на большинстве мостов

прошу перечитать ещё разок это обсуждение
что зачем и почему изложено не один раз
вкратце: явных “поломок” нет, но это не мешает совершенствовать модель
в программировании даже есть термин с подобным смыслом - рефакторинг