Я так и не смог разобраться с отношениями. Как их делать я не понял. Но похоже, что и так все работает нормально. Делаю так:
1)Рисую дом. Даю дому теги:
building=apartments
building:part=base
building:levels=1
2)Рисую объект, который должен стать надстройкой на крыше. Его теги:
building=service
building:part=yes
building:levels=2
building:min_level=1
В f4map и Kendzi3D модели домов с моими надстройками на крышах выглядят корректно и в целом это меня устраивает. Теоретически это не очень правильно, потому что каждый раз выскакивает предупреждение “здание внутри другого здания”, но на практике это не мешает 3D-визуализаторам правильно интерпретировать мою задумку.
Корпуса, относящиеся к одному зданию, но с разным количеством этажей, просто делаю отдельными домами. Разве что соприкасающиеся точки прикрепляю нажатием клавиш N и M. Адрес и пр. информация для навигации вешаю только на один корпус, чтобы не было дублирования адресов при поиске.
Должно быть как-то так:
1)Рисую дом. Даю дому теги:
building=apartments building:part=base
building:parts=yes
building:levels=1
2)Рисую объект, который должен стать надстройкой на крыше. Его теги: building=service
building:part=yes
building:levels=2
building:min_level=1
Use building:part=yes for parts of the building which only have different attributes (building:levels=* and height=*). Use building:part=(type of building) for parts of the building which have a different function and possibly attributes (e.g. building:part=roof or building:part=retail).
Как я понял, building:yes c максимальной высотой по всему контуру здания. Это габариты и общие теги. building:part на меньшие и отличающиеся части
Нет?
Таким образом, на контуре здания необходимо указать максимальную этажность. Эту максимальную этажность могут использовать 2D-рендереры, которые не понимают building:part, чтобы нарисовать высоты всего здания в виде тени.
Действительно, Kendzi 3D имеет такое неудобство. Попробуйте указать максимальную этажность на контуре здания непосредственно перед отправкой данных на сервер.
Это уже проблемы веб-программы для рендеринга (f4map), а не корректности ввода данных в OSM. Может исправят когда-нибудь. f4map разве вообще отображает двери? kendzi3d-да, а вот эта веб-программа нигде не показала мне двери, которые я ставил (кстати, обязательно ставлю расположение подъездов тегом entrance=staircase в многоквартирных зданиях, если знаю, где они находятся. И вам советую)
Я вообще-то тыкаю building:part=yes (без building=yes) на те части здания, которые находятся внутри основного контура здания (надстройки на крышах-технические помещения лифтовых шахт, башенки и пр.), а на здания, которые просто состоят из корпусов разной этажности, но не пересекают контуры друг друга, ставлю оба тега: building=yes и building:part=yes. Потому что когда не ставил building=yes на чатсь здания, она не отображалась в f4map. Чтобы указать, с какого этажа начинается надстройка (т.е. обрезать снизу лишнее, чтобы оно не проваливалось в здание), использую building:min_level. Вообще использую только building:levels для добавления третьего измерения чертежам зданий, height для зданий не использую, потому что очень легко подсчитать количество этажей визуально, а для building:height не понимаю, где брать информацию, ведь это по сути точная высота в метрах?
Пример в 3D- http://demo.f4map.com/#lat=55.8647289&lon=37.1159621&zoom=19&camera.theta=66.249&camera.phi=-140.351
Редактор- https://www.openstreetmap.org/edit#map=17/55.86502/37.11577
P.S. Часть здания, которой нет на спутниковых картах, на самом деле существует.
Оу! Теперь понятно, спасибо! Значит надо вначале обвести весь контур здания со всеми его частями, дав тег building=yes, а уже потом по этому контуру обводить его части, создавая новые контуры для каждой части здания в пределах главного контура, давая этим частям теги building:part!!! Блин, сколько теперь править придется