Здания переменной этажности

Либо так, либо все части делаются мультиполигонами, при этом геометрия нигде не дублируется.

Остановился на этом варианте, пока жду обновления для оценки результата.

Felis Pimeja, по приведенному примеру пара вопросов:

  1. на общий контур building:part=no - обязательно? какой это несет смысл?
  2. height в метрах? а building:levels в этажах сработает? все-таки для большинства зданий проще этажи посчитать, чем тригонометрию по теням вспоминать.

И вообще, что-то я уже запутался - мы под F4Map рисуем или под MapSurfer.net? :roll_eyes:

kisaa:

  1. Не обязательно. Это заточка под f4. Даёт рендеру понять, что контур building не нужно визуализировать. На нём ведь могут стоять теги building:height и building:levels, а им следует проставлять максимальные значения. И тогда он должен быть показан единым объёмом закрывающим всё. В целом это не противоречит текущей схеме тегирования, а скорее даже хорошо её дополняет. Вероятно логическая необходимость в этом костыле отпадёт если начать собирать здания отношениями type=building.
  2. Да, height в метрах. Это общая рекомендация для единиц измерения в OSM. building:levels в этажах в общем случае сработает. На сколько я знаю его поддерживают все имеющиеся 3D рендеры. Но надо поминть, что по текущей схеме height является приоритетным перед building:levels.

В целом, мы не рисуем под рендер :). А в частности - кому что больше нравится.

Присоединяюсь к вопросу. Откуда это взялось и что это даёт? Мне кажется, этот тег не вполне корректен. building:part=уes ставится вместо building=yes там, где речь идёт о части здания, а не о целом строении. Можно поставить, например, building:part=aparments. building:part=no - это практически building=no, но отнесённое к части здания.

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

Лучше корректно рисовать то, что есть в действительности;). Правильно затегированные здания корректно работающим рендером должны рисоваться одинаково.
P. S. http://www.mapsurfer.net, кажись, не работает, причём давно.


P.P.S. Начал набирать своё сообщение ещё до ответа Felis Pimeja.


3D-рендеры не должны рисовать building=yes, внутри которого есть building:part (Simple 3D Buildings: “Note that if a building=* contains at least one area tagged as building:part=*, the building outline is no longer considered for volume rendering”). Насколько я вижу, f4 придерживается этого правила. Для того, чтобы показать, что здание делится на части и каким образом это происходит, можно использовать тег building:parts.

http://www.openmapsurfer.uni-hd.de/

А-а-а… Всё-таки это оно. Я натыкался на эту ссылку, но т. к. никакого особого работающего 3D там не заметил, подумал, что это другой проект. Теперь заметил, что параллелепипеды с указанной высотой там обрабатываются. Но этого, м-м-м, маловато.

Что это даёт я написал выше. А взялось вероятно из вот этого обсуждения(см. подраздел Too complicated description of building outline rendering)

И всё бы хорошо, но стандарт пока в стадии драфта и детали реализации у разных “производителей” могут отличаться :slight_smile:

Живее всех живых :wink:

Угу, я и говорю - стандарт в процессе написания. А это уточнение появилось чуть больше месяца назад.

Нет.

Вот тут видно. Здание стоит на стилобате, а не на колоннах. Специально не трогаю это место дабы следить за динамикой развития.

Помню его обсуждение, и до сих пор считаю его бессмысленным (на правах имхо, разумеется).

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

А ценность такого указания может быть только для движка отрисовки в определенной реализации.

Вы можете привести пример объёмной отрисовки на f4 тегов с контура building при наличии внутри него корректно прорисованных building:part?

Сейчас здание затегировано неверно, т. к. полигон building не охватывает целиком все building:parts внутри его (например, этот building:part вылезает за пределы building). 3D Buildings: “The building outline is represented as an area tagged with building=*. It’s the area covered by any part of the building”.

Ok. Пример был некорректен. Вот.

Действительно, нынешняя схема тэгирования не предполагает building:part, выходящих за пределы building.
Для чего так сделано - понятно: спрятать стилобат от обычных рендеров и показать на трехмерных, но f4 ясно пишет: building:part not fully included in a building are ignored.
Пока действует спецификация http://wiki.openstreetmap.org/wiki/Simple_3D_Buildings это правомерно, так как там значится: The building outline is represented as an area tagged with building=. It’s the area covered by any part of the building.*
Так что ЖК “Парус” отображается верно.
Пока, для зданий со стилобатом, которые становятся все более популярны у строителей дорого жилья (т.к. это легкий способ не связываться с подземными этажами и изолировать территорию без геморройного с юридической точки зрения огораживания земли забором), не существует удобного способа показать только их основную часть на обычных рендерах.

http://www.openstreetmap.org/?lat=51.671128&lon=39.153522&zoom=18&layers=M

Вот тут здание не отображается (рисовал я), что туту неверно?

Если Вы про 6к1, то на его полигоне building сейчас стоят теги building:levels=12 и building:part=yes, хотя здание должно иметь building:levels=18, т. к. существует часть здания с высотой 18 этажей. В настоящий момент это здание оттегировано неверно.

Я утверждаю, что, согласно моим наблюдениям, если f4 видит этажность/высоту на полигоне building при наличии внутри этого building корректных имеющих building:part - полигонов, он не прорисовывает этажность/высоту с полигона building, а корректно прорисовывает эти параметры с полигонов building:part без всяких building:part=no на полигоне building.

P. S. Не понимаю, что должен обозначать этот пустой полигон.


У Вас здание составлено из отрезков, входящих в отношение с ролью outline, а должны входить с ролью outer. Также у Вас используется мультиполигон, имеющий в составе 4 отрезка с ролью outer. Если эти отрезки являются частями здания, они должны быть либо заданы мультиполигонами type=multipolygon + building:part=yes с одной внешней линией (не состоящие из одного отрезка, а имеющие один внешний контур) каждый (при этом отрезки входят с ролью outer либо inner). Эта часть здания тоже состоит из отрезков с ролью outline, а не outer.

suslikk, уже отображается :slight_smile:

в Мапнике?!

Felis Pimeja, ну да… :slight_smile: А проверить не могли бы? Может где ошибся… :slight_smile: Первый раз из мультиполигонов делаю здание…

suslikk, вот тут неправильно.
Надо разбить на 4 отдельных объекта. Множественные outer у мультиполигона, в общем случае, - это неправильно (к тому же ни один из 3d рендеров их в таком виде не отображает).
И теги у них будут если я правильно понял:

type = multipolygon
building:part = yes
height=56
min_height=50
roof:shape=flat

Можно ещё этажность проставить.

Felis Pimeja, разобью… А высота там от земли… Спасибо! :slight_smile:

Suslikk, кстати Dinamik выше правильно написал про outline вместо outer. Поправьте.