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

Надо идти не от сферического коня, а от конкретных задач.
Хочу сделать план второго этажа — делаю выборку всего с level=1.

Соответственно всё, что должно попасть на этот план, должно быть помечено с помощью level=1.
Если что-то не должно попасть, то значит у него level другой.

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

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

Это же OSM, тут сколько людей, столько мнений плюс один.

Продолжу :slight_smile:
Факт № 1: Уровня земли (или рельефа поверхности Земли) в OSM нет (т. е. способа оцифровки через некое значение или их набор в БД)
Отсюда факт № 2: Забываем обо всём, что имеет попытку отталкиваться от «ничего» (см. факт № 1)
Факт № 3: С этим надо считаться и трезво смотреть на вещи.
Всё, что нам по силам (как мне видится) пока что — взаимная относительная привязка элементов (имеющих внятное обозначение, сопоставимое с реальными сущностями). Также, как относительное расположение проекций объектов на условную поверхность Земли (попросту — «домиков» и т. п.)
Поскольку разумно оперировать осязаемыми категориями, то для level напрашивается роль метки (под названием «этаж» или «уровень»), показывающей на местности и в устройстве, на каком этаже размещён объект. Значение берётся из реального мира с соответствующих табличек/табло/и т. п.
Для indoor важно взаимное расположение level-ов, для этого подойдёт, например, layer со значениями в виде порядковых числительных от 1 до бесконечности (считая с низу здания, допустим). Так мы можем получить условные плоские срезы-планы этажей в правильном схематическом порядке и с адекватной маркировкой. При этом подходе мы опираемся на реальное взаимное следование этажей здания и реальную их маркировку. Более того, можно вообще проставлять значения layer строго относительно друг друга (полностью по аналогии с эстакадами на дорожных развязках), тогда нет необходимости знать, где же там самый нижний этаж и сколько их всего. Если (при уточнении данных) появляется ещё один нижний этаж/-жи (что весьма маловероятно), то придётся прибегнуть к шкале с нулевыми или отрицательными значениями, чтобы не ворошить уже готовое и не нарушать последовательность.
С 3-d всё гораздо печальнее, но об этом можно поговорить в соотв. теме.
P. S. Ориентироваться надо не на мнения, а на факты, отражающие рассматриваемую ситуацию. Тогда возможны конструктив и подвижки.

Не стоит 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.

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

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