Будівлі з фрагментами різної поверховості

Заглибився в маппінг порівняно недавно. Хочеться почути поради від бувалих мапперів, бо не знайшов однозначної відповіді ні у вікі, ні у форумах…
Напевне щодня ми бачимо будинки, наче складені з кількох окремих будівель з різною кількістю поверхів. Наприклад, багатоквартирний житловий будинок із магазином, або дитсадок/школа з корпусами різної висоти та переходами між ними.
Можна було б не морочитись: створити замкнутий контур, задати теги building, addr:housenumber, включити у відношення і забути. Але хочеться ж зробити роботу так, щоб більше до неї не повертатись. Тому всюди стараюся ставити building:levels - а що як вже завтра рендерери масово почнуть враховувати цей тег? Ходити вулицями з пласкими будинками неестетично. Тут виникає колізія: магазин має висоту один поверх, а будинок - дев’ятиповерховий. Робити дві окремі будівлі - не комільфо, бо (1) фізично це єдиний комплекс, зведений з фундаменту й до даху в одному циклі і (2) поштова адреса єдина.
Найбільш наближений до реальності варіант, який вдалося знайти на російському форумі - зробити дві будівлі, поставити кожній свій building:levels, а потім об’єднати мультиполігоном. Тег addr:housenumber ставити на мультиполігон, і вже цей мультиполігон включати у відношення до вулиці як house. Поки що викрутився таким чином.
Хоча є сумніви: якщо контури будівель перекриваються (навіть якщо просто мають спільні точки) - валідатор свариться. Якщо трохи їх розділити (буквально міліметром - на мапі непомітно), валідатор вже не так сердиться, але все рівно не задоволений (його можна зрозуміти - мультиполігон з двох контурів, у обох роль outer).
Питання відкрите. Які думки?

В російській гілці була тема про нанесення таких будинків на мапу. Будь ласка наведи у приклад один з «твоїх» будинків, щоб можна було про що конкретно говорити. Що стосується того, коли на першому поверсі магазин, а над ним жилі поверхи — див. http://wiki.openstreetmap.org/wiki/Proposed_features/Building_attributes теґ «building:levelPlan» або «building:levels:mezzanine»

Ти трохи не вірно в даному випадку тлумачиш для себе мультиполігони.
Якщо їх використовувати, то тобі треба буде зробити 3 мультиполігони: 1-й з ліній, що є контуром всієї будівлі (до нього застосовуємо addr:* й т.і.), 2-й з відрізками що утворюють,наприклад, магазин; 3-й з відрізків, що утворюють житлові або інші приміщення (2-й та 3-й зв’язки можуть утворюватись одними й тими самими відрізками - тоді валідатор «мовчить»), ну, й до 2-го та 3-го зв’язків додаємо потрібні теґи з building:levels.

andygol, спасибі за лінк http://wiki.openstreetmap.org/wiki/Proposed_features/Building_attributes, не траплявся раніше. Багато цікавої інфи. Шкода, що усе те поки що в Proposed features. Та все рівно краще ніж нічого - у випадку затвердження альтернативних варіантів наявні, як розумію, можна пропарсити автоматом.

По російських гілках.
http://forum.openstreetmap.org/viewtopic.php?pid=143253#p143253 каже:

Згадана вище гілка http://forum.openstreetmap.org/viewtopic.php?pid=143253#p143253 - саме її я мав на увазі, от там люди й говорять, що поки що не все так кучеряво :frowning: І єдності в думках там не видно. З їх дискусії можна вибрати варіанти (насмикав цитат):

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

  • Формально нужно объединять все строения с одним адресом в отношение, на которое и вешать адресные теги. На практике это жутко неудобно. Я ставлю адреса на всё.
    … просто отношение, без типа

  • Пропонують додавати адреси до POI - це вже зовсім, як на мене, не за фен-шуєм
    … і ще деякі малозрозумілі такому початківцю як я слова …

Напевне що справді у мене ще немає розуміння мультиполігонів.

Перечитав ще раз уважніше ту гілку. Є там цікавий лінк http://wiki.openstreetmap.org/wiki/Relations/Proposed/Buildings і з коментарями.
Виходить, порядок дій такий:

  1. малюємо житловий будинок з building:levels=9, без addr:housenumber;

  2. впритул малюємо магазин з building:levels=1, так само без addr:housenumber;

  3. створюємо нове відношення з type=building, в яке включаємо будівлі, зазначивши їм роль outline (цікаво, чи не сваритиметься валідатор? хоча це вже може бути проблемою валідатора);

  4. залишається відкритим питання: куди проставити адресу (addr:housenumber)? На відношення? На одну з будівель? Треба ж щоб і старі рендерери красиво обмалювали, і нові, “правильні” не були збиті з пантелику.

Мої вчорашні неправильні мультиполігони: http://www.openstreetmap.org/?lat=49.568567&lon=34.517806&zoom=18&layers=M, там два будинки один з супермаркетом АТБ, інший з магазином світильників Brille.

Схоже, що доведеться експериментувати. Бо як пише wiki,

Тому й підняв питання тут - може вже хтось експериментував і знайшов красиве рішення, якого б усі могли дотримуватися?

P.S. Чим далі в ліс…
Знайшов нові варіанти

Обидва варіанти Proposed, обидва відносно свіжі.

IMHO, треба робити як тут - http://www.openstreetmap.org/browse/relation/1167779, це саме те про що я казав вище.

Цікаве рішення. Спробував відтворити ідею. Заодно отримав краще розуміння мультиполігонів.
Правда був насварений валідатором про невідповідність ролі house, але на цілком коректні вулиці з кількох відрізків він теж свариться.
Подивимось як це відрендериться та як шукатиметься. Коли ні - поле для експериментів ще вільне.

Схоже, Nominatim з будівлями-мультиполігонами не дружить. Наприклад, пошук “17 Михайла Грушевського вулиця, Полтава” не діє. Так само як і для будинка-копії №21. А усі сусідні будинки: 6, 10, 12, 16, 16а і що характерно - № 19 між цими двома таким запитом знаходить аж бігом.