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

Мультиполигон != Полигон
Мультиполигон = отношение, в которое входят полигоны, имеющие разные теги.

Несмотря на свое описание в OSM, мультиполигон - это полигон.

*ЛИНИИ, имеющие разные тэги.

А вы им как всем outer чтоли ставите?

ну если они outer то они не могут быть inner… это же не внутррений полигон, а внешинй… ИЛИ я плохо учил английский?

Есть одна мысль по стилю домиков, конкретно по теням. В данный момент они “имеют цвет”, что на мой взгляд неправильно. На светло-сером фоне выглядит отлчно, но как только тень падает на что-то тёмное, то она его “подсвечивает”:

тень #с0с0с0 прозрачность 76 из 255

Так что на мой взгляд нужно тень делать чёрной и более прозрачной, чтобы на светлом фоне смотрелось аналогично с современной версией. В итоге получим:

тень #000000 прозрачность 17 из 255

PS - планируется-ли расширение зоны покрытия этим рендером?

jekader, так уже пробовали еще несколько дней назад. Не катит из-за прозрачности стенок, которую нельзя отключать из-за проблем сортировки. Правильнее так, да.

Более тёмные крыши можно сделать?

Вы учили все правильно, просто отношение не по назначению используете.

http://latlon.org/buildings?zoom=19&lat=56.83027&lon=60.59194&layers=BFT
Чота у меня тут вставка между домами не рендерится… Сохранялось довольно долго, но потом я ещё несколькими ченджсетами пытался добить, и нифига…

Котяра, можно сделать две вещи?

Чтобы полигоны с тегами
building = yes
building:part = yes

НЕ считались горизонтальным слоем и не выдавливались, во избежание ошибочного использования? building все же должен быть один.

  1. Чтобы height на билдинге интерпретировался как его высота?
    Например на останскинской башне взяли и снесли высоту:
    http://www.openstreetmap.org/browse/way/42220517/history
    Было 540 (правильно), стало 18 (неправильно).
    Это ж не дело совсем.
    Для высоты сегмента можно использовать скажем building_part:height.

dkiselev, как это не по назначению? Дом состоит из двух building (9 этажный дом и 1 этажная пристройка) с одним адресом. Одним полигоном это рисовать не “грамотно”, поэтому дом и пристройка в отношении мультиполигон имеют значения outer.
http://www.mapsurfer.net/?zoom=18&lat=51.711&lon=39.15658&layers=B0T отображает пристройку правильно!

suslikk
он отображает два здания, а не мультиполигон. Есть большая разница.

“он отображает два здания” кто он?

Hind, короче проехали. “Два не один, один не два, три не пять”… Пипец!!! Мультиполиог и в Азербайджане мультиполигон!!!

suslikk, просьба не путать OGC-шный мультиполигон и OSM-овский мультиполигон.

OSM-овский мультиполигон - набор нескольких линий. Теги могут ставиться как на линии, так и на отношение.
OGC-шный мультиполигон - одина сложная геометрия, к которой приписаны какие-то свойства.

Для того, чтобы отрендерить данные OSM в традиционном ГИС-софте (к которому относится и мапник), надо привести все данные OSM в OGC Simple features.

Процесс преобразования выглядит примерно так:

  • перевычисляется, кто внешний, а кто внутренний. Приходится, потому что есть огромное количество мультиполигонов с неверными inner/outer.
  • берется первый попавшийся аутер с тегами, все теги с него копируются на мультиполигон. Это делается для того, чтобы починить старое поведение, когда теги было принято ставить на аутерах, вместо более разумной на мой взгляд простановки на само отношение;
  • на мультиполигон поверх них копируются теги с отношения. Если на вее было что-то сверх того, что есть на мультиполигоне, то оно не будет переписано.

Если вы считаете, что в этом процессе что-то не так - присылайте соответствующие патчи в osm2pgsql. Лично я к его разработке отношения не имею и пользуюсь лишь результатами его работы.

http://www.openstreetmap.org/browse/changeset/6693987

Что-то я не понял. Тут вставка высотой в два этажа (от земли), первого этажа нет. Было обозначено levels=2; min_level=2 Это неправильно, чтоле?

Ilis, levels=2; min_level=2 - штука высотой 2-2=0, висящая на высоте 2.
Тебе надо levels=3; min_level=1 тогда.

Почему 4-то?

Чота я вообще ничего не понимаю. В levels мы что пишем? Высоту вставки в этажах? Или высоту вставки в этажах от земли?

В min_level что? С какого этажа начинается вставка? Над каким этажом начинается вставка?