Трёхмерные здания в Mapnik

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

Фанатею от псевдо3Д. Голосую за идею уточняющего тега, что здание состоит из нескольких билдинг:партов, хоть это и костыль, может быть.

building:shape=cubes

building:part итак уже костыль можно конечно еще одним подпереть, для симметрии :slight_smile: Только потом будем обсуждать что делать с рендерами поддерживающими building:part но не поддерживающими новый тег.

А я всё жду когда этажность будет показываться горизонтальными полосками :slight_smile:

Могу сказать то, что говорил год назад (и повторил недавно ). Схема с кирпичами должна быть совместима со схемой без кирпичей.
building:levels и building:height на полигоне building=yes должны обозначать этажность всего здания.

Ну вот для обеспечения этой совместимости и обсуждается тег - уточнять форму по кусочкам или нет. Если рендер кусочки понимает, этот тег подскажет ему - является ли основной контур кусочком или нет (должен ли участвовать в отрисовке кусочками). Если рендер отрисовку кусочками не понимает - игнорит обсуждаемый тег.

Если лепить костыли - то уж до последнего :slight_smile:

В рендеринг добавлено дополнительное условие:

Если полигон building пересекается с полигоном building:part, то полигон building не экструдируется.

В таком случае можно нарисовать всё здание билдингом и проставить ему какую-zkir-захочет высоту для экструдирования в примитивных рендерерах навигаторов, а собственно более подробные объёмные призмы рисовать building:part.

А если на основной, чтоб не дублировать его, повесить помимо building=yes еще и building:part=yes заэкструдится?

Да

Тоже хорошее решение. Только теперь надо что-то делать с левитирующими кусками зданий: http://latlon.org/buildings?zoom=17&lat=60.03411&lon=30.33529&layers=B :smiley:
Вообще, там можно

  • записать building:part дополнительно к building на основную часть
  • распиливать здание только по вертикали
  • продублировать основную часть мультиполигоном с одним outer (совпадающим полигоном - ошибка) и повесить на него building:part
    Что именно выбрать - будем смотреть по ситуации.

И, кстати, не только пересекаться, но и касаться. Может быть случай, что building:part соседнего дома, стоящего встык, приведёт к тому что здание не отрендерится. Будьте бдительны !

Речь о доме 11 к1? Это похоже на какую-то проблемы отрисовки: при небольшом масштабе рисуется нормально, при крупном нижняя часть здания пропадает. Но вообще было бы проще, если бы здания старались резать по вертикали, а не по горизонтали.


Предлагается тег consists_of_parts=yes, показывающий, что здание, отмеченное тегом building=yes, состоит из кусков, отмеченных тегом building:part=yes - в этом случае рисовать по контуру building=yes не следует. Ставить тег следует на линию (или полигон), на которой стоит building=yes.

Давайте же уже придуем хоть что-то работающее (с примерами) а то список домов сложной конфигурации у меня стал что-то очень большим :slight_smile: Уж больно любят современные архитекторы что-то переменно-этажное … ну и здания на мощном стилобате (1-й этаж магазин) весьма распространены всегда были.

Тег consists_of_parts=yes как-то не звучит. Нет привязки к зданию. Уж лучше building:parts:vertical=yes
Ну и помнить что не все рендереры знают о таком теге, т.е. building=yes вешать на что-то нейтральное.

Может попробовать на примерах (картинках)? А то чего-то в споре упустим?

Я всегда делал так, чтобы building:part были внутри building. Если делать проверку на нахождение внутри, то касание ничего не сломает.

Предложение: если рядом с этим куском есть другие, расположенные сбоку - пишем building:parts:vertical=yes, если рядом с этим куском есть другие, расположенные сверху или снизу - пишем building:parts:horizontal=yes. Так или иначе даём информацию, что building состоит из building:parts. Пояснение для запоминания: building:parts:vertical - значит, здание порезано по вертикали, building:parts:horizontal - здание порезано по горизонтали. В каких-то случаях может быть нарезка и по горизонтали, и по вертикали. Тег, позволяющий отличить нарезку по вертикали от иной, даст возможность работать тем рендерерам, которые понимают вертикальную нарезку, тег, позволяющий отличить нарезку по горизонтали от иной, даст возможность работать тем рендерерам, которые понимают горизонтальную нарезку. Т. к. эти теги дополнительные, то не будут мешать (их добавление ничего не меняет для того ПО, которое не умеет с таким работать).

Есть такое :frowning:

Пожалуйста, схема, учитывающая последние изменения в мапниковском рендере: http://fotki.yandex.ru/users/danidin/view/456985/?page=0 :3

Хорошая картинка, надо бы ее в вику засунуть.

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

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

Ещё, если “под рендеринг”, то я рекомендовал бы резать здания по горизонтали - тогда на них не будет видно стыков. Вертикальные стыки я с такой лёгкостью пока не придумал, как убрать :3