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

Куда ставить тэги типа building:use, которые сейчас стоят на “той части, этажность которой равна этажности здания”?
На общий контур? Тогда это будет означать building:use всего здания. Как минимум - всех частей, для которых building:use не проставлен.
Что делать, если я у основной части building:use знаю, а у второй нет? Ставить на вторую building:use=unknown?

Я хотел сказать, что новая схема допускает не использовать building:part для основной части, но отнюдь не запрещает использовать её. Если по какой-то причине эту часть надо отметить, то ничто не мешает это сделать. На картинке это никак не скажется.
Новая схема хороша тем, что если, например, у девятиэтажки одна из секций пятиэтажная, то не нужно городить огород с двумя building:part, полностью накладывающимися на контур здания, или использовать мультиполигоны. А достаточно одной building:part для пятиэтажной части.
Также, чтобы отметить подворотню, в новом варианте нужна только одна building:part - собственно, проём в здании, а не три (минимум), как сейчас.

Как-то странно называть “новой схемой” огрызок старой, при этом старую устаревшей :slight_smile:

Тогда схему логичнее просто сделать на override-принципе.
Здание описывается тэгами внешнего контура, а дополнительные building:part - корректируют эти тэги в тех частях здания, где они заданы.
Если таким образом можно будет и кольцеобразное здание нарисовать без мультиполигона, например, задав “дырку” через building:part+building=no, то я, пожалуй, буду за. Однако тут вопрос, как связать внешний контур и дырку в одно здание.
Ещё нужно определиться, допустимы ли накладывающиеся building:part-ы.
Хорошо бы сделать детальное описание.

Мне нравится такой вариант:

  1. С минимумом изменений:
    building:part=[известный тип здания (apartments/office/commerce/industrial/school/etc), иначе - yes] + building:levels=[кол-во этажей]
    Для общего контура building=yes + building:levels=[максимальный этаж (для костыльной ущербной обратной совместимости со схемой без building:part)] + адресные теги.
  2. Исключая избыточность (и обратную совместимость :stuck_out_tongue: ):
    Пункт № 1, только без общего контура, адресная информация на отношении type=building.

apartments/office/commerce/industrial/school - не тип здания, а варианты его использования.
Может быть здание построенное под детский сад, а там сейчас фабрика.
Для использования у нас building:use

Она не костыльная, а для задач, не связанных с формой здания. Например, для составления адресной базы.

Теперь по обеим схемам:

  1. Как рисуем здания, где некоторые части имеют свои адреса?
  2. Как рисуем кольцеобразные здания?

Разве это тогда не отдельное здание, раз у него свой адрес?

Здесь не хотелось бы запутываться в тонкостях терминологии. Случится там фабрика (ваш пример) - поставите industrial. И что такое «тип здания»? Имеется в виду тип конструкции? Неважно как это называется, важно - всё уже придумали до нас :slight_smile:
На этой странице используется термин «тип». Не удалось найти (плохо искал, нехотя) толкового описания building:use (кроме упоминания на страничке выше).
Чтобы не получалось масла масляного, по мне, лучше на building:part ставить теги по аналогии building, поскольку это и есть соответствующие части здания, в комплексе (type=building) его образующие. А если адрес у этого комплекса общий, то из building:part=* получаем тип/назначение/применение/или_что_там_имелось_в_виду всех составляющих индивидуально (для того же рендера) и, ничего не поделать, контур role=outline для адресации.

Понимаю, но речь об этажности, которая не связана с адресной базой. Этажность на общем контуре помогает некоторым навипрограммам (СитиГид, например), рендерам (тут говорили о поддержке на F4 новой схемы). Вы имели в виду, что «куда-то же надо адрес прикручивать?»

Отдельным зданием, «слепленным» с соседними.

Мультиполигоном. А какая с ними проблема? :slight_smile:

Наверное, имелись ввиду кольцевые здания переменной этажности. Сам не видел таких, но это возможный случай. Тогда нужно building:part делать мультиполигонами (не обязательно все части, зависит от здания) и из них составлять отношение type=building

http://forum.openstreetmap.org/viewtopic.php?id=15665

И там 7 страниц обсуждения.

Нет, речь о том, что для некоторых задач переменная этажность здания не нужна, нужно только положение здания или только контур или только адресные тэги и т.д. Mapnik не рисует building:part и не надо, ИМХО. Пусть F4 рисует building:part-ы.

Ладно, как рисуем здание с дыркой, с разной этажностью и разными адресаму у разных частей? :slight_smile:
ИМХО, схем для рисования зданий должно быть максимум две - для простого здания (например, линия с building=yes) и для сложного.

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

Имел в виду вот такого типа мультиполигоны. Его легко довести до замкнутого («кольцеобразного») состояния. Если у сегментов будут разные адреса, то контуры-мультиполигоны, не имеющие building:part или имеющие building:part=no (уже не обязателен) будут составляться из соответствующих кусочков-отрезков. На этих контрурах и будет building=yes, адрес и т.д.
Прекрасно работает и 3-D и адресный поиск в навигаторах (и не только).
P.S. Проблема только в задании индивидуальных свойств, таких как тип/назначение/применение/название, для building:part, а точнее - в поддержке такого обозначения в одних приложениях без ущерба для других.

Ну это схема building:parts, расширенная до того, что каждый контур (может быть) нарисован через multipolygon
Правда, вместно building:parts=vertical стоит building:part=no, но можно и на такое условиться.
С этой схемой

  • “Дырка” для кольца делается через роль inner в multipolygon-е.
  • Если части здания имеют разные адреса, то для каждого адреса делается контур с адресом и building=*, внутри могут быть контуры отдельных частей, а общего контура для всей конструкции не делается.
    ИМХО, в этом случае building:part=no на каждом контуре с адресом будет вносить путаницу. Ведь по сути это часть одной конструкции, а тут написано “не часть” :slight_smile: Лучше всё-таки building:parts=vertical ставить.

Если сюда приплюсовать предложение Danidin9, то максимальная этажность ставится на внешний контур здания, а контур, где эта этажность есть - не обязателен.
Экономия - 1 релейшн. :slight_smile: С учётом общей сложности схемы - экономия небольшая.
Но в более простых случаях (когда вместо multipolygon-ов нарисованы контуры по общим точкам), экономия может быть больше.
“у девятиэтажки одна из [средних] секций пятиэтажная” - две линии - общий контур с 9 этажами и пятиэтажной секции.

Итак, представляю вашему вниманию новую картинку с няшными домиками и рекомендациями по их обрисовке (по новой схеме):
http://img-fotki.yandex.ru/get/6804/51351719.14/0_a4c49_b0c6d619_orig
Общих принципа здесь два:

  • на здании (объекте с тегом building) должна стоять его реальная этажность;
  • “что видим, то и рисуем”: в спорных случаях надо обращать внимание на то, что увидит большинство людей, оказавшихся на месте.

В пятом примере лучше явно написать, что башенки хоть и имеют одинаковые теги, но это два разных объекта.

  1. пояснение “часть, равную по этажности зданию, указывать не обязательно” указано только в примере с разноэтажными секциями, хотя это пояснение (и указание на то, какое обозначение какой части здания было опущено) имеет смысл, например, и для примера с подворотней
  2. в примерах с чердаками и надстройками есть building:part с этажностью, превышающей этажность здания, хотя этажность здания должна быть равна максимальной этажности, встречающейся на её частях
  3. неучёт этажности частей, не видных большинству людей, во-первых, на мой взгляд, крайне странен, а, во-вторых, противоречит тому, что этажность здания равна максимальной этажности, встречающейся на её частях
  4. в случае со стилобатной частью теги вообще “обманывают”, указывая на существование двух зданий, хотя речь должна идти о двух частях одного здания (стилобатной и высотной)

а) Не упоминается roof:orientation=along/across
б) type=building уже не требуется, как я понял?
в) Пример разновысотного с башней какой-то странный: на отношении building:part=yes? на синем контуре нет тегов?
г) Стилобаты без дорог и газонов не явно выражены? Что с ними предлагается?
д) Насчёт большинства людей не понял ничего))) А если принять, что оно вообще половину (большую :smiley: ) не видит?
е) Если пляшем от общего контура (красный), то предпоследний пример не в дугу совсем :slight_smile:
ж) building:levelPlan интересный вариант, плохо только, что building:part не имеет подобной маркировки
з) Чем отличается пример с чердаками и надстройками от странной «мультиполигонной» башни?

Я понимаю, что рисуем не под рендер, но тот же MapSurfer вариант из картинки рендерит своеобразно http://openstreetmap.ru/#map=19/45.06508/39.00931&layer=S.
Или я что-то не так понял?

в мапсурфере поддержка 3Д моделек сделана не до конца, полностью ее написать емнип времени не хватает.

Забыл спросить: эта схема где-то описана? Принята/применяется/работает где-то уже?

По поводу здания со стилобатной частью. Мне кажется, указывать layer=1 для красного полигона не нужно, достаточно building:min_level=1. Потому что min_level считается от layer, если layer не указан (то есть равный нулю), то здание возвышается над уровнем земли на 1 этаж. Если же добавить** layer=1**, то расстояние между уровнем земли и жилым зданием будет равна 2 этажа, что не есть правдой при одноэтажном стилобате.