Поставим точку в вопросе «level=*»

а большинство то не знает как правильно :slight_smile:

роль “этого специального тега” играет level = * (и играл изначально!). К сожалению, туда пихают что-попало.

И делает это из рук вон плохо.

С чего вы это взяли?
Зато layer успешно применяется и не имеет ни логических, ни проблем верифицируемости (поскольку берётся конкретное относительное взаиморасположение, а не сферически подсчитанные этажи в вакууме). Прежде, чем что-то считать — надо иметь внятную точку отсчёта (которая для вашего видения level на практике не прослеживается от слова «совсем»).

Вы или не понимаете принципов lndoor tagging, или просто троллите. Видение не “мое”, а общепринятое Посмотрите страницы вики по lndoor tagging.

https://wiki.openstreetmap.org/wiki/Simple_Indoor_Tagging Там всё подробно расписано, даже схемы есть!

Есть две “нумерации”,

  1. для поддержания внутренней связи между объектами, то есть привязки объектов к одному level. Тут номер не очень важно как считать, отчего бы и не с нуля, главное, чтобы не было расхождений у разных объектов на одном этаже.
  2. для пользователей, та, что пользователи видят на планах зданий, кнопках лифта. Тут вообще могут быть не только номера, но и буквы и т.п.

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

Вполне нормально, первый этаж над землёй нулевой, выше него в положительную сторону нумеруются, ниже - в отрицательную. Алгоритм прост до безобразия, или есть кто его не может понять?.
А надписи на этажах это в другой тег. В итоге схема позволяет пользователю показать приемлемую схему с сортировкой по этажам.


Машинное; Человеческое
3 -> M
2 -> 3
1 -> 2
0 -> P
--------
-1 -> G
-2 -> G2

Совершенно справедливое замечание. И эти считалки «от земли» (абсолютно бессмысленные в данном контексте) спутали все карты в итоге.

Проблема в том, что изначально не было такой (раздельной) схемы, не было level:ref. И по факту люди отмечали интуитивно понятные (в каждой местности по-своему, но смысл вкладывали один и тот же) обозначения этажей. Поэтому считаю нелогичным и чрезмерно трудоёмким перетегирование значений level для относительного ранжира (выше/ниже) с плясками «от земли»+введение нового тега сугубо для маркировки, в то время как данные уже внесены по маркировке и осталось добавить уже существующий собственно для таких же (выше/ниже) целей тэг layer.
И очень важным нахожу отказ от выискивания уровней земли (вообще какая-либо концентрация внимания на этом вредна) при получении данных для заполнения тега level или layer.

Скажите это разработчикам lndoor-проектов.

Разделение этажей на подземные и все остальные (хотя-бы условно) является осмысленным: если в здании есть подвал, у него level = -1, а этаж выше level = 0; если подвала нет, нижний этаж level = 0, этаж выше level=1, еще выше level = 2, и т.д. Разве не очевидно?

Вы предлагаете записывать произвольные значения с табличек в тег, где должны быть только числа. Это аналогично highway = улица Иванова. На табличках же нет resedential!

В некоторых странах, например, нет 13-го этажа. Т.е. вычисляемый от земли номер этажа не всегда соответствует табличке этажа. https://en.wikipedia.org/wiki/Thirteenth_floor - тут описаны вырианты обозначения. У нас такой ерунды нет, но ОСМ проект международный и приходится заморачиваться и на такие вещи.

есть такой костыль, non_existent_levels = *. Туда пишутся пропущенные номера этажей, через точку с запятой. Если Вы желаете проставлять нумерацию с единицы, пожалуйста ставьте non_existent_levels = 0. Но не проставляйте level = подвал, даже если есть табличка с такой надписью, пожалуйста! В идеале будет проставление и level, и level:ref. Например:
level = 0,1,2,3,4,5
level:ref = 0,1,2,3,5,6
В данном примере этаж #4 исключен из нумерации на табличках.

Очевидно то, что для

нет никакой необходимости бегать вокруг здания и определять «землю» (а потом привязывать к ней иерархию этажей). Это само по себе нетривиальная задача в ряде случаев. А достаточно для этого указать layer, который присваивается по принципу «число больше/меньше<->этаж выше/ниже», что можно легко проверить на месте и внести/исправить данные. Напрочь выбросить из головы «уровень земли» (ибо это корень путаницы и неверифицируемости, к тому же).

Для начала хочется донести мысль до контрибьюторов данных, на основании которых уже разработчики смогут строить свои проекты.
И для полного счастья не хватает исправления справочной страницы, где не будут выдумываться ненужные теги, а существующие будут применяться по прямому назначению.

Для меня определение “земли” - тривиальная задача в 99% случаев. Свои мысли Вы до меня донесли, но моя позиция не поменялась.
Прямое назначение level = нумерация этажей, а не занесение обозначений с табличек и лифтовых кнопок. Напротив, для внутренних обозначений этажей существует level:ref = *.

Единственный реально работающий способ унификации - “что вижу, то пою”. Если за центральным входом в ТЦ скрывается -1 этаж, то он будет таким и для русскоязычных, и для британцев, и для японцев. Попытка сэкономить один машинный код на обращении к первому элементу массива - ну очень сомнительная затея.

Я вот знаю как минимум один ТЦ в который войти можно со стоянки (-2 этаж), с -1 этажа и с первого (нулевого этажа нет). Все они “на уровне земли”, просто уровень понижается. Заставлять всех помнить, что -2 этаж это level=0 удел мазохистов, а лепить пару тегов на каждую точку внутри - лишняя работа и бессмысленное дублирование.

Так она есть на планах этажей, табличках и лифтовых кнопках. Иначе мы докатимся до собственной нумерации квартир и офисов (“от первого угла дома при обходе его с севера против часовой стрелки”), которая никогда не будет совпадает с используемой в конкретном здании.

Т.е. для наземных порядок уже есть building:levels и человеческих этажей более чем достаточно. Если заглянуть в Relations/Proposed/Level_Map, то можно увидеть levels (такой же, как building:levels, только для всех этажей и с парой малополезных плюшек).
Казалось бы, для полного счастья нужно только указать, какой из этажей считать за первый и всё, можно даже “несуществующие этажи” удалять без проблем, даже объём можно нарисовать.

Это уже вина авторов Simple Indoor Tagging - они либо не прочли четыре имевшихся тогда стандарта, либо решили всем подпакостить, но в трёх предложениях уже использовали тег level, но не требовали наличия нулевого этажа. Да и сейчас по Indoor_Mapping первый этаж можно называть первым: “in some cultures base level is indicated by level 0, in other cultures ground floor is level 1 (or A)”.

Как по мне, в “сишных этажах” смысла и логики ещё меньше, чем в использовании what3words и гугловых плюскодов вместо стандартных координат.

Допустимо нумеровать этажи с единицы (с простановкой non_existent_levels = 0). Проблемы начинаются тогда, когда пишут нечисловые значения в level=*, например “level = подвал”, потому что “так на табличке/кнопке лифта”.
P.S. за центральным входом не может быть -1 этаж, минимум нулевой (или первый, если так нравится) - отрицательные номера могут быть только у подвальных этажей. Исключение может быть только тогда, когда центральный вход ведёт в подвал.

Великолепная аналогия! Именно это и предлагается делать с level (который следует отображать в свойствах и делать это адекватно). А для порядка следования давно есть layer (который показывать никому не надо, а только учитывать при рендеринге, и определяется он на раз-два).

осмелюсь предположить, что автор amenity = Дом культуры (sic!) мог рассуждать так же.
P.S. Желаете предложить альтернативное применение для level=* — пишите пропозал. Или хотя бы в профильный раздел этого форума.

На что хочется обратить внимание. Indoor tagging будет работать при условии наличия в level=* только чисел, не букв. Порядок нумерации - вещь условная. Нумерация может начинается и с “1”, и с “-2” (как в примере выше). Но номера должны быть числами. level=1, level=-2 — пожалуйста. level=стоянка, level=подвал - это как “highway = улица Иванова”.

а если имя этажа текстовое ??
автостоянка находится на цокольном этаже, и при этом он не имеет числовых определений ??
К примеру, если показать пользователю в параметре пои “этаж - цокольный” он будет общаться с обслуживающим персоналом на одном языке - т.е. употребляя понятное им название “цокольный этаж” вместо -1 или что пододбное.

читаем https://en.wikipedia.org/wiki/Storey#Numbering
смотрим красивую фотку реальной ситуации

Простите, но вы путаете Indoor tagging и Simple Indoor Tagging. В нормальной схеме требование только одно: “номера должны идти по возрастанию”.

В английской то же самое написали ещё в 2010 году, почти сразу после создания статьи.

Ладно, давайте сделаю обзор остальных схем:

“Пиши этаж в level”, никаких ограничений по значениям.

Видимо, это дедушка текущего building:levels. Как-то поддерживался четырьмя рендерами.

Примечателен тем, что позволяет сказать, насколько глубоко под землёй или высоко над землёй находится конкретный этаж + даёт возможность дать пояснения на разных языках. “Несуществующие этажи” просто не существуют, порядок тоже задаётся.

Тут уж простите, немецким не владею, ограничусь картинкой на которой явно видно отношение “уровень” с названием для человека. Да, в теге level число, но тут соотношение “сортировка - название по плану” задаётся один раз, деление что есть что очевидно и не вызывает вопросов, его можно адаптировать через name:lang.

Итого: 4 схемы согласны на truth from the ground в теге level, две хотят видеть там числа (но одна явно отделается от всех чтобы ничего не сломать). Пока только SITхи вмешиваются в нормальную работу других схем.