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

Felis Pimeja, снова благодарю за подсказку :slight_smile:
Если правильно понимаю, для каждого элемента рисуется контур со своими тегами. Контуры могут накладываться друг на друга (по рёбрам, имея общие точки-узлы), отношений создавать никаких не надо, а должен быть всеобъемлющий контур с тегом building=yes (на нём же теги имени, адреса и проч.)

В общем, да.

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

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

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

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