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

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


Машинное; Человеческое
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хи вмешиваются в нормальную работу других схем.

так есть же level:ref = *. Значения произвольные (в т.ч. текст).

batyrmastyr
Только SIT считается актуальной схемой. Подтверждение https://wiki.openstreetmap.org/wiki/Indoor_Mapping

в скольких редакторах заполняется левел по дефолту
и в скольких левел:реф :frowning:
и что получается в итоге.

А в скольких редакторах в name нельзя писать типы?

А теперь представьте ситуацию: заходит обычный человек с maps.me, streetComplete (или чем ещё) в торговый центр и видит, что какого-то магазина на карте нет. В порядке исключения, ему не лень его добавить, но с какой стати в поле “этаж” он должен писать этаж по версии ситхов?
Можно понадеяться на умных дядек писавших приложение, что при отрисовке карты превратят -2 этаж в нулевой, а при добавлении исправят данные и первый этаж превратят в нулевой. Хорошо, если кто-то уже прописал building:levels, но вот что делать если этажность не указана? Заставить пользователя сперва прописать её? А с уже внесёнными данными что делать - массово исправить и понадеяться, что всё было внесено как надо? Что делать с данными, если кто-то решил, что уровень земли на самом деле в другом месте?

Итого: для заполнения простыми людьми допустим только level:ref. При таком подходе level лучше сразу объявить устаревшим и нежелательным к заполнению, т.к. бардак там ещё с 2010 года.

Золотые слова. Но продуктивнее — нормально объяснить смысл тега level, при этом и новые данные будут валидными и множество старых данных останутся (или станут, кому как угодно) валидными. Ничего нового придумывать нет необходимости (всё уже придумано до нас: layer). Всего лишь грамотно использовать то, что уже есть — не более, но и не менее.