OpenStreetMap Forum

The Free Wiki World Map

You are not logged in.

#76 2018-10-03 23:57:49

LLlypuk82
Member
From: Витебск (Беларусь)
Registered: 2012-12-23
Posts: 2,373
Website

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

Something B wrote:

роль "этого специального тега" играет level

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

Something B wrote:

и играл изначально!

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

Offline

#77 2018-10-04 00:02:51

Something B
Member
Registered: 2018-09-05
Posts: 322

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

LLlypuk82 wrote:
Something B wrote:

роль "этого специального тега" играет level

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

Something B wrote:

и играл изначально!

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

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

Offline

#78 2018-10-04 00:08:06

Something B
Member
Registered: 2018-09-05
Posts: 322

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

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

Offline

#79 2018-10-04 06:21:05

wowik
Member
From: Zelenograd
Registered: 2009-09-29
Posts: 7,936

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

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

level:ref=*     the number or code of the level. This models the level numbering scheme as it is displayed in the building
itself, e.g. on floor plans or elevator buttons, which may be different from the level=* value.

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

Offline

#80 2018-10-04 06:30:13

freeExec
Moderator
From: Ульяновск,Модератор всех слоёв
Registered: 2012-07-31
Posts: 7,598

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

LLlypuk82 wrote:

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

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

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

Offline

#81 2018-10-04 14:02:26

LLlypuk82
Member
From: Витебск (Беларусь)
Registered: 2012-12-23
Posts: 2,373
Website

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

wowik wrote:

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

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

freeExec wrote:

В итоге схема позволяет пользователю показать приемлемую схему с сортировкой по этажам.

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

Last edited by LLlypuk82 (2018-10-05 13:40:10)

Offline

#82 2018-10-05 08:55:32

Something B
Member
Registered: 2018-09-05
Posts: 322

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

LLlypuk82 wrote:

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

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

LLlypuk82 wrote:
wowik wrote:

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

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

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

LLlypuk82 wrote:

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

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

Last edited by Something B (2018-10-05 09:47:32)

Offline

#83 2018-10-05 09:11:52

fserges
Member
From: St.Petersburg/Russia
Registered: 2010-11-08
Posts: 3,794

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

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


Бывший редактор ОСМ

Offline

#84 2018-10-05 09:31:23

Something B
Member
Registered: 2018-09-05
Posts: 322

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

fserges wrote:

В некоторых странах, например, нет 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 исключен из  нумерации на табличках.

Last edited by Something B (2018-10-05 09:41:27)

Offline

#85 2018-10-05 13:50:49

LLlypuk82
Member
From: Витебск (Беларусь)
Registered: 2012-12-23
Posts: 2,373
Website

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

Something B wrote:

Разве не очевидно?

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

Something B wrote:

показывать планы этажей в виде стека слоев и перебирать их вверх/вниз.

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

Something B wrote:

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

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

Offline

#86 2018-10-05 14:35:14

Something B
Member
Registered: 2018-09-05
Posts: 322

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

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

Offline

#87 2018-10-15 13:39:14

batyrmastyr
Member
Registered: 2018-06-27
Posts: 10

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

Something B wrote:

level = * унифицированное упорядоченное обозначение этажа.

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

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

Something B wrote:

Прямое назначение level = нумерация этажей

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

Something B wrote:

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

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

Something B wrote:

К сожалению, туда пихают что-попало.

Это уже вина авторов 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 и гугловых плюскодов вместо стандартных координат.

Last edited by batyrmastyr (2018-10-15 13:42:07)

Offline

#88 2018-10-15 13:45:54

Something B
Member
Registered: 2018-09-05
Posts: 322

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

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

Last edited by Something B (2018-10-15 14:20:44)

Offline

#89 2018-10-15 13:50:39

LLlypuk82
Member
From: Витебск (Беларусь)
Registered: 2012-12-23
Posts: 2,373
Website

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

batyrmastyr wrote:

("от первого угла дома при обходе его с севера против часовой стрелки"), которая никогда не будет совпадает с используемой в конкретном здании.

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

Last edited by LLlypuk82 (2018-10-15 13:53:19)

Offline

#90 2018-10-15 13:54:42

Something B
Member
Registered: 2018-09-05
Posts: 322

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

LLlypuk82 wrote:
batyrmastyr wrote:

("от первого угла дома при обходе его с севера против часовой стрелки"), которая никогда не будет совпадает с используемой в конкретном здании.

Великолепная аналогия! Именно это и предлагается делать с level. А для порядка следования давно есть layer.

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

Last edited by Something B (2018-10-15 16:29:12)

Offline

#91 2018-10-15 15:40:58

Something B
Member
Registered: 2018-09-05
Posts: 322

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

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

Last edited by Something B (2018-10-15 16:26:56)

Offline

#92 2018-10-15 16:31:16

pfg21
Member
From: Чебоксары
Registered: 2012-10-18
Posts: 3,196

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

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

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

Offline

#93 2018-10-15 16:33:44

batyrmastyr
Member
Registered: 2018-06-27
Posts: 10

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

Something B wrote:

Indoor tagging будет работать при условии наличия в level=* только чисел

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

Indoor tagging wrote:

<n> - обычно целое число из одной-двух цифр, но может встречаться комбинация из цифр и букв (e.g. A,B,C,1,2,3).
иногда этажи обозначают дробным числом (e.g. level=2.5) в качестве "промежуточных этажей" (например, лестничные пролёты).

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

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

Relations/Proposed/Level wrote:

Relation
    Type=site
    site=level
    level=-1 (number of basement floor)
    name=SubwaystationName,Levelname
...

While the layer tag is a rule for the renderer which object shall be printed on top, the level represents a floor.

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

User:Jongleur/MultiLevel_Building_Shapes wrote:

building:levels=n The number of the level above the highest level of the building.
building:min_level=m The number of the lowest level of the building. If not specified, defaults to 0.
building:ground_level=g The number of the level which is the "ground floor" of the building. If not specified, defaults to 0.

n, m, and g need not be integers


A house with two levels total, one of which is partially below ground. building:levels=2 building:ground_level=0.5 with building=entrance building:levels=0 nodes for entrances to the lower floor with stairs tagged on the footway leading to it

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


Relations/Proposed/Level_Map wrote:

The most important tag in a level map relation is the levels=* tag. Its content defines the (short) names of all levels and their order, from bottom to top. For example, the relation for a simple four storey building with a basement in England would be tagged "levels=B;G;1-3" (for "Basement", "Ground floor", "1st", "2nd" and "3rd". The level names should reflect the local signs, such as buttons in the elevator. So same building in Germany would probably be tagged "levels=U;E;1-3".

A general level height information (a relative vertical position, not the vertical size of an object) can optionally be added, separated by an "@" sign: "levels=B=Basement@-4;G=Ground floor@0;1@5;2@9;3=Roof garden@13". 0 is the street level (if available) or the main ground level otherwise. All height details are in metres if not coded otherwise ("@10 ft"). This general height information can be overriden in a level assignment, so levels don't need to be absolutely flat.

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

Proposed_features/indoor wrote:

0b7057bac2.png

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

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

Last edited by batyrmastyr (2018-10-15 16:34:02)

Offline

#94 2018-10-15 17:14:53

Something B
Member
Registered: 2018-09-05
Posts: 322

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

pfg21 wrote:

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

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

Offline

#95 2018-10-15 17:25:21

Something B
Member
Registered: 2018-09-05
Posts: 322

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

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

Last edited by Something B (2018-10-15 17:35:06)

Offline

#96 2018-10-15 22:11:28

pfg21
Member
From: Чебоксары
Registered: 2012-10-18
Posts: 3,196

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

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

Offline

#97 2018-10-15 22:15:05

freeExec
Moderator
From: Ульяновск,Модератор всех слоёв
Registered: 2012-07-31
Posts: 7,598

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

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

Offline

#98 2018-10-16 15:36:40

batyrmastyr
Member
Registered: 2018-06-27
Posts: 10

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

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

Something B wrote:

так есть же level:ref =

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

Offline

#99 2018-10-16 16:03:34

LLlypuk82
Member
From: Витебск (Беларусь)
Registered: 2012-12-23
Posts: 2,373
Website

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

batyrmastyr wrote:

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

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

Last edited by LLlypuk82 (2018-10-16 16:08:15)

Offline

#100 2018-10-16 22:14:45

Something B
Member
Registered: 2018-09-05
Posts: 322

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

LLlypuk82 wrote:
batyrmastyr wrote:

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

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

забудьте про layer. Он не применим в контексте этажей. Представим, что здание стоит на склоне. У одного этажа выход на нижнюю сторону склона. Его layer равен 0 (и соответственно не пишется). Этаж выше должен получить layer=1. Но! У него также есть выход наружу, на верхнюю сторону склона. Земля - везде земля, получается layer=0 (дефолт). Один объект не может иметь два layer одновременно. Назначить layer на отдельно взятое здание, игнорируя смежные объекты мы не можем.

Offline

Board footer

Powered by FluxBB