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

Не стоит layer впутывать. Это же просто порядок рисования.

Ага, значит порядок взаимного расположения объектов этот тег не показывает? А порядок рисования от чего зависит и что показывает сама отрисовка — можно озвучить?

Внутри одного этажа level может случится несколько layer.

Вот глас разума! Мне кажется тут возможен отличный компромисс: level:ref для указания надписи, на которую нужно ориентироваться человеку (надпись на кнопке лифта), level - для указания этажа в геометрическом смысле, в большинстве случаев в России level + 1 == level:ref. При этом стоит рекомендовать в первую очередь указывать level:ref т.к. используемое людьми название этажа важнее к хранению (этот пункт впрочем спорен) и его проще определить. Если случай сложный и не понятно, какой нужно указывать level в данной ситуации, то и фиг с ним.

Какие-нибудь соображения мешают остановиться на такой трактовке? Может стоит задокументировать в русскоязычном разделе вики?

а я бы предложил вместо building:levels использовать нечто с перечислением этажей вроде levels_above_ground=1-10,service,10-24 и levels_under_ground=0,-1,-2. или levels_under_ground=А,B,C. Перечисляем этажи от уровня земли вверх и вних так, как они обозначены в здании. А service, например, будет технический этаж.

Точнее — в смысле порядка следования этажей относительно друг друга.
Надо постучать в дверь ребятам, занимающимся indoor, чтобы они переосмыслили ситуацию с level, а также стали обрабатывать level:ref.

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

addr:floor мне попадался в существующих данных, level:ref - нет. Если надо будет “этаж” от “уровня” отделить, тогда “level” лучше не писать в качестве части ключа обозначения этажа. addr:floor также подходит как собственно часть адреса.

По-моему, предложение об использовании level:ref=* (и addr:flat) дельное. Это устранит неоднозначность в тех случаях, когда хочется только указать номер этажа POI, и нет цели построить 3D-модель здания. Правда, неоднозначность и level=* всё равно остаётся, и, похоже, мы ещё не раз к этому вернёмся :slight_smile:

всё на самом деле просто. Нижний этаж из тех, которые подсчитываются для building:levels = *, отмечается как level = 0.

А building:levels является эрзацем (неполноценным, между прочим) для тэга height и с ним есть заморочки (и хитрые обозначения), связанные с пресловутым уровнем земли (которого — напомню: в OSM нет, как сущности, поскольку всё расположено на одной плоскости, как на бумажной карте).

в OSM нет, но есть в природе.

building:levels годится только для того, чтобы нарисовать в 3d окошки в здании и некую усреднённую высоту вывести. Никакого отношения к обозначению level этот тэг не имеет, равно и наоборот.

Отношения не имеет. Но:
( 1) в building:levels учитываются все неподземные этажи;
(2) нижний неподземный этаж считается как level = 0.

Да неважно, как он считается, важно то, как на месте обозначены этажи.
Почитайте внимательней ветку, там примеры специально приведены (а также названы проблемы и заданы вопросы, на которые важно дать ответы, чтобы понимать ситуацию адекватно и комплексно).

схему придумал погромисты и не учли, что обычные пользователи (основа маппинга осм) будут думать по другому…
И треснул мир напополам, кипит разлом…

Схему придумали британцы.

обозначение этажей на месте - в level:ref = *. Значения level = * и level:ref = * вовсе не обязаны совпадать.

Скажите, как вы понимаете level = * ?
Как в вашем понимании это применять на практике?
level:ref = * избыточен (по факту — переизобретение существующего велосипеда)

Я понимаю level = 0 так: “Нижний из этажей, уровень пола которых выше или равен уровню земли. Если здание расположено на склоне, учитывается нижняя сторона склона”