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

Поясню ещё. До недавнего момента я так и обозначал здания - по building:part на каждую часть. Так, для данного детсада делал три building:part - на перемычку и на оба корпуса - “ножки”. Но в определённый момент заметил, что отмечать одну перемычку достаточно, чтобы f4map корректно рисовал всё здание. После этого я предложил в этой теме упрощённую схему разметки зданий, когда рисуются только те building:part, этажность (и высота) которых отличается от этажности (и высоты) здания в целом, отмеченных на контуре здания.
Есть множество случаев, когда это было бы оправдано и позволяло избегать множественных наложений линий и/или использования мультиполигонов.
Я сделал несколько тестовых зданий, и удостоверился, что схема работает.
Однако потом пришла мысль, что надо как-то отметить эти тестовые здания, чтобы их не путали со зданиями, размеченными по схемам vertical/horizontal/mixed. Я придумал ключ simplified_scheme к тегу building:parts и навесил его на все building, размеченные по упрощённой схеме. И после того, как я это сделал, f4map перестал рендерить “ножки” детсада и все дефолтные части зданий в аналогичных случаях.

По поводу пересечения частей - не понимаю, о чём Вы. Никакого пересечения здесь и подавно нет. Одно здание плюс одна часть. И кстати, почему пересечение building:part - ошибка? Схема building:parts=horizontal и построена на том, что разные building:part накладываются друг на друга, и ничего, работает.

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

На контуре стояло building:parts=simplified_scheme. Но ситуация повторяется и любыми другими ключами building:parts, проверено.

Нет, это не опечатка, там стоит building:parts.

Это называется “разметка под рендер”, хотя и отличается от обычного случая попыткой ее “легализовать”.

Как я понял, нужно попросить разработчиков F4map, чтобы они сделали, чтобы здания с building:parts=simplified_sheme рисовались так, как сейчас рисуется здание без building:parts. И всё будет хорошо.

А будет ли корректной отрисовка зданий переменной этажности мультиполигонами рилейшн тулбоксом? Что бы не накладывать полигоны друг на друга, а использовать одни и те же линии и для общего контура и для всех building:part

Я бы даже сказал, так эстетически правильно.

но дидактически как минимум спорно.

Зато даёт очивку Мапер 30 уровня.

и 70-й уровень тому, кто потом будет перерисовывать, максимально сохраняя историю редактирования объектов.

Но вот как раз дома на отношениях править легче, чем на сплошных прямоугольниках. В отличии от лоскутных полей/лесов по дорогам.

Особенно резать их на части или вставлять новые части внутрь

Да что угодно проще. Просто отношения редактируются заменой сегментов в их составе на другие, а не изменением геометрии имеющихся.

Всегда так делаю.

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

Хуже всего как раз в прямоугольники пытаться втиснуть другие прямоугольники. А в отношениях разрезал отрезки, добавил новые, собрал новое отношение и готово.

И вообще, о чем спор? Если у кого-то руки дошли до трехмерной прорисовки, вероятнее всего, за ним все равно потом уже никто не соберется ничего особо менять, разве только целиком сдвинуть.

Я так понял, что общие теги для всего здания можно ставить несколькимивариантами:

  1. На линию контура здания.
  2. На мультиполигон из всех кусков здания (контурная линия не рисуется). есть же такой вариант
  3. Сделать все объекты с тегами мултиполигонами, что бы получить контур здания из множества кусочков

Поправьте меня, если не прав, особенно допустим ли второй метод.

Я бы вообще голосовалку запустил, мне интересно как кто делает сейчас, и не только в России.
И во-вторых поддержка рендерами каждого приведенного выше способа.

  1. под линией имеется ввиду простой type:way building=yes?
  2. отношение-мультиполигон с тегом building=yes и свойствами общего здания, у которого есть way с тегами building:part=yes и прочими свойствами отдельных частей (но без тегов building=yes и прочих общих свойств)
  3. непонятно без примера

2 метод конечно допустим, я его только и использую для разноэтажный зданий
1, 2 точно поддерживаются iD и Mapnik

Сейчас распространена простая схема без мультиполигонов (если дырок в здании нет). Общие теги ставятся на внешнем контуре. Внутри линиями с тегами building:part=yes+building:levels=* рисуются части у которых этажность (или другие параметры) отличается от общей.

Gum4eg: когда-то пришли к выводу, что второй вариант недопустим, т.к. противоречит определению мультиполигона: outer не должны касаться (единственное, я не уверен, возможно допустим вариант с касанием в одной точке, но точно не с общим отрезком).
Де-факто сейчас используют варианты 1 и много реже 3. Иногда на здание добавляют тег building:parts, и ещё реже используют отношение type=building (в которое собирается здание с ролью outline и все его части с ролями part, не важно, полигоны они или мультиполигоны. Адресация и прочие теги при этом остаются на здании, а не на этом отношении). Также стоит упомянуть, что многие сознательно не проставляют этажность на здании, если она уже стоит на частях, чтобы не портить ренедерам вроде mapsurfer картинку (хотя это есть прямое рисование под рендер и противоречит вики)

Лично я в последнее время добавляю всем разноэтажным зданиям тег building:parts. Отношение type=building использую редко, в основном для тех зданий, у которых частей слишком много, чтобы их не потерять, например: http://www.openstreetmap.org/relation/5458654

Также хочется обговорить такой момент. Я заметил, иногда более оправданно разрезать здание на части по горизонтали. Но в таких случаях нижняя часть по форме часто совпадает с контуром здания, и чтобы избежать двух полностью совпадающих линий (здания и его нижней части) вторую я делаю мультиполигоном с единственым outer в виде контура здания.
Пример:
-здание http://www.openstreetmap.org/way/22770440
-нижняя часть http://www.openstreetmap.org/relation/5464968
-верхняя часть http://www.openstreetmap.org/way/230565244
Понимаю, что такой метод многим будет непонятен, однако в ряде случаев он куда более оправдан, особенно если нижняя часть по всем признакам отличается от верхних, или если верхняя часть расположена полностью внутри контура здания. Мне интересно, как другие обходят эту проблему (если вообще кто-то задумывался об этом).

А откуда это пошло? Я не встречал/не помню на вики такого.

Сходу нашел только пример про inner когда это нормально в OSM:

<relation id="1">
  <tag k="type" v="multipolygon" />
  <member type="way" id="1" role="outer" />
  <member type="way" id="2" role="inner" />
  <member type="way" id="3" role="inner" />
</relation>