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

В картинке надо дописать, что на этих кусках ни в коем случае не должно быть тега building=, только building:part=yes. Ибо building= - это здание целиком.

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

building:levels = 3
building:min_level = 2
building:part = yes

но он остался серого цвета и не принял красноватый цвет как здание…
… карты ещё не обновились… а в 3d он до сих пор показывает красным…
правильно ли я всё зделал?
building:part = yes
самой школе не присваивал…

я уже спрашивал, но так и не выяснил что именно даёт этот тэг…

http://www.openstreetmap.org/browse/way/110443221
вот ссылка на нависающую пристройку
http://www.openstreetmap.org/browse/way/106882372
а вот на саму школу


так вот что я предлагаю:
может всё таки давать пристройкам тэг
*building = yes *
но не давать им адреса
а давать этажность
и при необходимости вешать только конторы, магазины и тд…
и повторяю не давать им адреса, или что эти дома отсеятся и выкинутся если у них не будет адреса?

Dypa4ek: building:part мапником не рендерится (да и не надо)
А здание из примера содержит две ошибки:

  1. Под надстройкой тоже должно быть building=yes. Сейчас выходит, что там нет 1 и 2 этажей.
    То есть, в данном случае, building=yes должен быть в виде прямоугольника с вырезанным внутренним двором.
    Вообще, в любом сложном здании тег building=yes должен стоять на полигоне, у которого все остальные building:part находятся внутри, ну, может быть, кроме балконов.
  2. У building=yes должна быть указана высота в 2 этажа, а не 3. Коль в данном случае building=yes содержит тег с этажностью, то он тоже в некотором смысле является частью здания. А раз является частью, то должна быть указана высота этой части, а не всего здания.
    К слову, делать здание одновременно частью не вполне корректно, т.к. на полигоне с тегом building должна быть высота / этажность всего здания. Но если надстройка небольшая, и в принципе, можно назвать это здание “двухэтажным с надстройкой”, то ничего.

http://glosm.amdmi3.ru/?zoom=16&lat=55.82126&lon=37.61205&layers=B0
ну вот сделали же!!!

http://www.openstreetmap.org/edit?lat=55.81989&lon=37.61282&zoom=17 а вот посмотрите, всё написано на основание, а на неё на разных уровнях, кольцами всё выше и выше проставлялись новые с тэгом * building:part=yes * (будь он не ладный!) до сих пор не пойму нужен ли он в некоторых местах…

посмотрев всё это можно придти к выводу и составить некий монуалчик на вики :slight_smile:
хочу вашего мнения…
контур всего здания обчерчивается, с пристройками с всей лобудой…
ему даётся адрес, и все возмодные тэги нужные дому, а потом на него “вешаются” блоки
с тэгом * building:part=yes *
и эго высотой, соответственно без первого этажа указывая * building:min_level=* *
соответственно можно будет подрисовывать уже сверху последнего ещё (если есть таковой) о5же с указанием * building:min_level=* * за вычетом нижних блоков :slight_smile:
вот вроде всё понятно и будет просто

как вам такое?

понимаете какое дело
здание трёх этажное!
пристройка “висит” на уровне второго этажа и полностью относится к основному зданию
как быть в таком случае?
фоток увы не нашёл ну если хотите могу быстренько набрасать от руки в 3D :slight_smile:
всей этой хитрой конструкции

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

Ну, глосм не мапник… я имел в виду стандартный рендерер.

Там всё относительно верно, кроме того, что на основании опять стоит height основания а не всей башни. Опять кто-то поменял…
Эх, тег building:part:height так и просится, но никто его не рендерит :frowning:

А почему без первого этажа? Имеется в виду данное здание или здание вообще?

я имею в виду то что рендится будет только первый этаж (всего здания), а при переделке в 3d будет полноценное здание с надстройками и пристройками, и навигатору понятнее будет…
а те блоки которые будут без первого этажа получается должны плотно прилегать к основному зданию (на примере останкинской башни)

Хочу поднять один давно забытый вопрос из этой ветки.
2010-12-21 :

В итоге, ни levels=* ни building:part:levels не рендерятся. И поэтому никто их не отмечает, а вместо этого везде используется building:levels.
Это очень плохо по двум причинам.

  1. building:levels на building:part портит статистику зданий с разной этажностью. Невозможно не заглядывая в описание объектов определить, что перед нами, например, 5 десятиэтажных зданий или пять одноэтажных надстроек на девятиэтажном здании.
  2. если часть здания совпадает по контуру с самим зданием (обычно это нижняя часть), то проставление на неё building:levels для здания приводит к неправильному отображению в 3D. Если же на неё проставлять этажность только для данной части здания, то имеем фэйк - неверное значение этажности для
    здания в целом. Иногда можно избавиться от этого противоречия, “разрезая” здание на building:part только по вертикали. Но иногда это невозможно в принципе, как в случае с Останкинской телебашней.

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

  1. building:levels и building:height для building;
    building:part:levels; building:part:min_level; building:part:height; building:part:min_height для building:part
  2. building:levels и building:height для building;
    levels; min_level; height и min_height для building:part
    Второй вариант кажется более предпочтительным, т.к. во-первых короче, во-вторых height уже активно используется и рендерится.
    Остаётся только попросить авторов рендеров поддерживать теги levels и min_level. При этом если на одном контуре окажутся одновременно building:levels и levels,
    то отображаться должен второй, т.к. это более высокий уровень детализации.

Для статистики:
building:part на данный момент использован 4785 раз, в т.ч. на отношениях 501 раз, в т.ч
СПб - 2494 раза (52%); Москва - 160; Екб - 142; Киров - 130

building:min_level - 3389 раз (предлагаю полностью избавиться от этого тега и заменить на min_level. Сейчас 50% применяется совместно с тегом building=* и 50% c building:part=)
building:part:levels - 14 раз
building:part:min_level - 0 раз
levels - 13911 раз (распространён в Европе, прежде всего Германии, 96% применяется совместно с тегом building=
)
min_level - 15 раз

building:part:height - 14 раз
building:part:min_height - 0 раз
height - 676880 раз (92% применяется совместно с тегом building=, 6% - man_made=)
min_height - 1324 раз (37% применяется совместно с тегом building=* и 63% c building:part=*)

Я готов придерживаться любой де-факто принятой схеме рисования многообъёмных зданий. Сейчас рисую новые районы которые в значительной степени сложнообъёмные. Типичный дом где первый уровень огромен и занят встроенным паркингом, магазинами а само здание состоит из нескольких частей весьма разной этажности (только что рисовал здание где в башне 25 этажей, в основной массе - 8 этажей). Эта информация существенна для ориентирования.

Komяpa, как я понимаю, это к Вам.
Вот в этом месте здания отрисованы несколько месяцев назад, но так и не отрендерились в псевдо-3d:
http://latlon.org/buildings?zoom=16&lat=60.02718&lon=30.21864&layers=BT
Можно ли что-нибудь сделать?

Ещё один вопрос. Есть идея тега, предотвращающего показ этажности у здания, на котором он стоит. Рендереры делятся на те, что поддерживают building:part, и не поддерживают. Имеем проблему: можно отмечать building:levels на основном полигоне здания, и тогда вся прорисовка building:part насмарку, либо не отмечать, и тогда в рендерах типа ситигида вообще ничего не рисуется.
Такой тег мог бы частично решить проблему.
В самОм Латлоне есть опция, рисующая здания с дефолтной высотой на полигонах residential=urban и rural.
Здесь тоже имеет смысл отключать этажность у building, имеющих building:part, иначе происходит задвоение: http://latlon.org/buildings?zoom=17&lat=60.05989&lon=30.30967&layers=BT
Насколько такой тег, будь он создан и поддерживался, усложнил бы расчёты (как я понимаю это не критично - потребовалась ещё одна проверка на каждом здании)? Как Вы вообще относитесь к такой идее? Вариант тега: complex_building=yes

Спасибо!

Лучше уж building:parts=yes ?

Возможно. Но 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.