RU:Простые 3D здания
Эта страница описывает теги для основных 3D-свойств зданий. На странице F3DB приведены предложения по улучшенному 3D‑тегированию.
Следующая методика тегирования является результатом 2nd 3D Workshop Garching, где большинство разработчиков 3D согласились с поддержкой унифицированного набора тегов в своих программах. По сути мы описываем объёмную форму здания, используя два типа полигонов:
- контур здания (building=*) — для описания области самого здания со сложной формой
- часть здания (building:part=*) — для описания частей здания, особенно тех, у которых отличается высота или другие характеристики.
Как отмечать на карте
Контур здания
Контур здания отражает область земной поверхности, на которой расположены все части здания. Под контуром здания в большинстве случаев следует подразумевать проекцию (footprint) здания. Контур здания рисуется как полигон (то есть замкнутая линия или мультиполигон), отмеченная тегом building=*.
Характеристики, относящиеся ко всему зданию (адрес, название, общая высота, обслуживающая компания и так далее), должны быть указаны на контуре здания.
Контур здания также предоставляет обратную совместимость для 2D-рендеров, таких как Mapnik, и пользователей данных, которым не требуется 3D‑моделирование. Если здание содержит хотя бы одну область, отмеченную тегом building:part=*, то контур здания не берётся в расчёт при 3D‑рендеринге[1].
Хотя на практике этого никто не делает, лучше следить за тем, как делают большинство, и визуализировать в 3D также область, где нет building:part, в отличие от некоторых средств визуализации, которые делают неправильно, в результате чего целые города не отображаются правильно из-за процессов импорта, которые совершенно действительны и верны, переделка целых городов потребует много работы, поэтому лучше поддерживать оба способа работы.
Каждое здание должно иметь только один контур building=*, разные здания не должны пересекаться.
Части здания
Части здания с отличающимися свойствами (например высотой, цветом и тому подобное) обычно задаются в модели при помощи полигона, лежащего внутри контура здания, с тегом building:part=*. Значение у тега building:part=* обычно yes, но может быть любым значением из тега building=*.
Весь контур здания заполняется полигонами building:part=*, с тегами соответствующей им высоты и другими атрибутами. Эти полигоны могут перекрывать друг друга или могут быть разрознены, в зависимости от того, какое это здание. Тем не менее, в то время, как 2D полигоны могут (а часто и должны) перекрываться, избегайте перекрытия объёмов 3D частей, особенно если у этих объёмов имеются общие грани.
О тегах, которые обычно применяют к building:part=* для описаниях их характеристик, смотрите в следующем разделе статьи.
Полигоны с тегом building:part=* в основном предназначены для 3D-рендеринга. 2D-рендеры игнорируют теги атрибутов зданий, описанные в следующем разделе.
Совет: может быть сложно выбрать такие перекрывающиеся формы. В JOSM щелкните, удерживая клавишу Alt, чтобы циклически перемещаться по перекрывающимся объектам и делать нужный выбор.[2]
Отношение building
Если хотя бы одна часть здания нависает над поверхностью земли или если здание имеет сложную форму с множеством частей, то отношение с типом type=building может быть использовано для группировки вместе контура здания и всех его частей. В противном случае, нет необходимости в создании такого отношения, т.е. просто отрисуйте все части здания внутри контура здания как это описано выше.
Если отношение type=building создано, то все части здания должны быть перечислены в нём как участники отношения с ролью part. Контур здания должен быть участником отношения с ролью outline. Части здания могут быть расположены любым возможным способом (внутри, снаружи, пересекаясь, касаясь) относительно контура здания при наличии отношения type=building.
Если отношение type=building отсутствует, приложениям следует рассматривать все части здания внутри контура здания как части этого здания.
Не следует дублировать адресную информацию для отношения type=building, если она прописана для составных частей.
Смотрите также предложения ProposedRoofLines#Building_Relation.
Части сооружения
Если некоторые части реального здания имеют разные атрибуты (например, высоту), их можно смоделировать как дополнительные поверхности. Они отмечены building:part=yes.
Обратите внимание: как только в здании есть часть здания building:part=yes, контур здания больше не учитывается при объёмном рендеринге, если он также не отмечен как часть здания. Например, состоящий из трёх частей (зеленый, синий, бежевый):
|
|
Следующие теги можно применять как к контурам здания, так и к его частям.
Теги для контуров и частей зданий
Следующие теги могут быть использованы как для контуров, так и для частей зданий.
Высота и этажность
Ключ | Комментарий |
---|---|
height=* | Расстояние от самой нижней точки касания здания с землёй до вершины крыши здания, исключая антенны, шпили и другое размещённое на крыше оборудование. |
min_height=* | Примерное расстояние от нижней точки части здания до земли. Обратите внимание, что даже при использовании тега min_height тег height всё также отмечает расстояние от земли до верхней точки здания. Так, "мост" между зданиями высотой 3 метра, у которого нижний край находится в 10 метрах над землёй, отмечается тегами min_height=10, height=13. |
building:levels=* | Количество этажей здания над уровнем земли (без учёта этажей в крыше) для правильного текстурирования здания.
При тегировании только что созданных зданий, старайтесь указать значение height. building:levels=* указывайте как дополнение к высоте в метрах. |
building:min_level=* | Количество этажей, на которое данная часть здания поднята над землёй, аналогично min_height. |
Крыша
Форма крыши
С помощью тега roof:shape=* можно охарактеризовать форму крыши, используя каталог известных типов крыш. Позже могут быть введены дополнительные формы крыш (Предложения по S3DB), включая улучшенные методы для ручного моделирования (например, ProposedRoofLines или части OSM-4D/Roof_table).
Рисунок | ||||||
---|---|---|---|---|---|---|
roof:shape | flat | skillion | gabled | half-hipped | hipped | pyramidal |
Рисунок | ||||||
---|---|---|---|---|---|---|
roof:shape | gambrel | mansard | dome | onion | round | saltbox |
Другие распространённые значения и проблемы
Значение | Примечание |
---|---|
saltbox | Проблематично из-за противоречивых определений и значений слова «saltbox» в этом контексте[3]. |
double_saltbox, quadruple_saltbox | То же самое |
sawtooth | Крыши в заводском стиле |
cone, conical | Оба используются редко |
side_hipped | Половина четырехскатной крыши, а не полушатровая. Одна вертикальная остроконечная сторона, одна «бедро» с тремя наклонными поверхностями. Это обычное явление для двухквартирных домов, где все здание имеет шатровую крышу, но каждый дом имеет крышу с боковым скатом. |
lean_to | Непонятно, возможно должно быть skillion |
shed | Непонятно, возможно должно быть gabled или skillion |
gabled_row | Непонятно, иногда используется на пилообразной крыше, иногда на нескольких остроконечных террасах |
crosspitched | Крестообразная крыша с двумя фронтонами под углом 90 градусов. Двускатная крыша типа Cross |
Прочие теги для крыш
Ключ | Комментарий |
---|---|
roof:orientation=along/across | Для крыш с коньком по умолчанию подразумевается, что конёк параллелен самой длинной стороне здания (roof:orientation=along), но с помощью этого тега можно указать его направление явно |
roof:height=* | Высота крыши в метрах |
roof:angle=* | В качество альтернативы тегу roof:height, высота крыши может быть указана явно через угол наклона её скатов (в градусах) |
roof:levels=* | Количество этажей внутри крыши, которые ещё не были учтены в building:levels |
roof:direction=* | Направление крыши от верхней части к низу (то есть в направлении, куда смотрит основная грань крыши). Смотрите иллюстрацию ниже. Значения согласно direction. |
Однако учтите, что некоторые крыши (например у квадратных зданий) нельзя точно смоделировать описанными здесь простыми методами.
Предлагаемые теги
Некоторые крыши (например, квадратные здания) невозможно точно смоделировать с помощью простых методов, описанных на этой странице.
Дополнительные формы крыши предлагаются в Предложении по S3DB, включая расширенные подходы для ручного моделирования (например, ProposedRoofLines или OSM-4D/Roof table).
Цвет поверхности и материал
Ключ | Комментарий |
---|---|
building:colour=* | Цвет фасада здания. Смотрите возможные значения на странице colour=* |
roof:colour=* | Цвет крыши здания. Смотрите возможные значения на странице colour=* |
building:material=* | Материал отделки фасада здания |
roof:material=* | Материал кровли здания |
Районы для демонстрации
Чтобы просмотреть многочисленные 3D-здания в большом масштабе, смотри примеры здесь: 3D Demo Areas
Чтобы просмотреть отдельные 3D-здания, смотри примеры здесь: Примеры 3D зданий
Чтобы облегчить применение описанных на этой странице тегов, можно ознакомиться с примерами их использования.
Для этого мы начали добавлять детали прямо на карту в следующих районах:
Расположение | OpenStreetMap | OSM2World | OSMBuildings | F4 Map | OSM go | Mapbox GL | Tangram |
---|---|---|---|---|---|---|---|
Афи́ны | N/A | ||||||
Бре́мен | |||||||
Грац | |||||||
Грац 2 | |||||||
Грац 3 | |||||||
Чика́го | |||||||
Цинцинна́ти | |||||||
Сьюдад‑Гуаяна | N/A | ||||||
Ко́бург | |||||||
Де́нвер | |||||||
Эдмонтон | N/A | ||||||
Ха́ген | |||||||
Хе́льсинки | |||||||
Уэ́ска | N/A | ||||||
Джакарта, улица Судирман | N/A | ||||||
Ка́рлсруэ, Телекоммуникационная башня | |||||||
Ко́упавогюр, Smárar | N/A | ||||||
Кёльнский собор | |||||||
Кёльн, радиовышка | |||||||
Кёльн, Райнаухафен | |||||||
Кёльн, жилой район в Нойренфельде "Labor" | |||||||
Кётен | |||||||
Кётен 2 | |||||||
Краков | N/A | ||||||
Куала-Лумпур | N/A | ||||||
Лас-Ве́гас | |||||||
Ле́йпциг | |||||||
Ли́ма | N/A | ||||||
Ло́ндон | |||||||
Львувек-Слёнски | N/A | ||||||
Москва́ | N/A | ||||||
Москва́ 2
с отношением type=building |
N/A | ||||||
Нью-Йо́рк | |||||||
О́льденбург, Индиа́на | |||||||
Пари́ж, Э́йфелева ба́шня | N/A | ||||||
Па́ссау | |||||||
Фи́никс, Аризо́на | |||||||
Потсдам | |||||||
Рейсвейк | |||||||
Ро́сток, Зюдштадт | |||||||
Сан-Хосе́, Калифо́рния | |||||||
Сан-Па́улу | N/A | ||||||
Швери́н | |||||||
Сингапу́р | N/A | ||||||
Штадум | |||||||
Си́ракьюс, Штат Нью-Йо́рк | |||||||
То́кио, квартал Ниси‑Синдзюку | N/A | ||||||
То́кио, Одайба | N/A | ||||||
Торо́нто | N/A | ||||||
Тро́нхейм | N/A | ||||||
Ватика́н | N/A | ||||||
Варша́ва | N/A | ||||||
Пекин Запретный город |
N/A | ||||||
Университет Ольденбург | |||||||
Шэньчжэнь Центральный деловой район Шэньчжэня |
N/A | ||||||
Шанхай Центральный деловой район Луцзяцзуй |
N/A | ||||||
Чунцин Центральный деловой район Чаотяньмэнь |
N/A | ||||||
Ипенбург, Гаага Район Waterwijk |
|||||||
Мака́ти | N/A | ||||||
Манила
Малате и Эрмита |
N/A | ||||||
Манила
Санта-Крус и Бинондо |
N/A |
Поддержка в программном обеспечении
- Основная статья: 3D разработка
Множество карт и инструментов имеют поддержку схемы тегирования домов simple 3D. Среди них были: OSM-3D.org рендерер в 2009, OSM2World рендерер, Kendzi3D плагин для JOSM в 2011 и Nutiteq Android 3D Mapping SDK (теперь Carto Mobile SDK) и WikiMiniAtlas в 2012. OSMBuildings запустил 2.5D отображение в 2012, перейдя на отображение в 3D в 2015. В 2013 F4 Map стал первым рендерером, полностью поддерживающим схему тегирования домов simple 3D.
Инструменты редактирования
Название ПО | Платформа | Поддержка схемы | Лицензия | Заметки |
---|---|---|---|---|
Kendzi3d | Windows, macOS, Linux | да | BSD | Плагин JOSM |
SketchOSM | Windows | частично | Проприетарная | Плагин SketchUp в бета-версии |
Картографические приложения
Название приложения | Платформа | Поддержка схемы | Лицензия | Заметки |
---|---|---|---|---|
Streets GL | Web | да | MIT | |
OSM2World | Windows, Linux, Macintosh | частично | LGPL | В настоящее время реализуются оставшиеся функции для версии 0.2.0: slippymap (только Германия) |
OSMBuildings | Web | частично | BSD | |
F4 Map | Web | да | Проприетарная | Пример веб‑карты с рендерингом и поддержкой сцен |
OSM go | Web | частично | GPL | Только пирамидальная и купольная (плоская по умолчанию) |
Mapbox Static API | Web | частично | BSD | Требуется бесплатная учетная запись Mapbox Studio. |
OpenScienceMap | Web | частично | LGPL | Интерпретирует только теги height/min_height на стороне клиента. Слой S3DB использует сетки vtm, созданные на сервере (используя plpgsql с PostGIS и SFCGAL). Карта в браузере |
CartoType Maps App | Windows, Linux, Macintosh | частично | Проприетарная, но с неограниченным использованием | Бесплатное демонстрационное приложение для проприетарной библиотеки CartoType. Версия CartoType GL поддерживает большинство форм крыш. Включает редактор таблиц стилей. |
OSM-3D.org | Web | частично | Не работает в браузере, если у вас не установлена более старая версия Java (≤1.6). Новая версия WebGL в разработке. | |
OSG-Maps | Android | частично | Проприетарная | |
osmapa.pl Mapnik stylesheet | Web | частично | Большинство типов крыш реализовано в формате 2.5D | |
WikiMiniAtlas | Web | частично | GPL | Только пирамидальные крыши |
VR Map | Web | частично | MPL | Только высота и цвет |
Cesium OSM Buildings | Web | Обновляется ежемесячно |
Картографические фреймворки
- Основная статья: Frameworks
Название ПО | Платформа | Язык | Поддержка схемы | Лицензия | Заметки |
---|---|---|---|---|---|
Carto Mobile SDK | Android, iOS, Windows Phone | Java, Objective-C++, Swift, C# | частично | BSD | Поддерживается большинство форм крыши; смотри документацию Carto |
CartoType для Android | Android | Java | частично | Проприетарная | Поддерживается большинство форм крыш. Стилями можно управлять с помощью таблиц стилей XML CartoType. Использует ускорение графики OpenGL ES. Можно изменять угол обзора, высоту, поле зрения и так далее. |
CartoType для iOS | iOS | Objective C, Swift | |||
CartoType для C++ | Windows, Linux, OS X (Macintosh) | C++ | |||
CartoType для .NET | Windows | C#, VB.NET и другие языки .NET | |||
CartoType for Qt | Qt для Windows, Mac (OS X) и Linux | C++ | |||
Mapbox GL JS | Web | JavaScript | частично | BSD | Параметры настройки отображения 3D-зданий включены в Спецификации стиля Mapbox. (Смотри сообщение от Mapbox с объявлением о поддержке GL JS.) |
Mapbox Android SDK | Android | Java | |||
Mapbox iOS SDK | iOS | Objective-C, Swift, Interface Builder | |||
Mapbox macOS SDK | macOS | Objective-C, Swift, Interface Builder, AppleScript | |||
Mapbox Qt SDK | Qt | C++, QML | |||
Mapbox Unity SDK | Cross-platform | C# | Apache | ||
node-mapbox-gl-native | Node.js | JavaScript | BSD | ||
osm2x3d | Web | частично | ? | Смотрите также и | |
OSMBuildings | Web | JavaScript | частично | BSD | Доступны версии 2.5D и 3D |
Tangram | Web | JavaScript | частично | MIT | Mapzen отображает 3D-здания в Tangram и других продуктах. |
Tangram ES | Android, iOS, Linux, macOS | C++ | |||
VTM | Android, iOS, Web | Java | частично | LGPL | Часть проекта mapsforge. |
Инструменты разработки
Название ПО | Платформа | Поддержка схемы | Лицензия | Описание |
---|---|---|---|---|
blender-osm | Windows, macOS, Linux | частично | GPL | Загрузка и импорт OpenStreetMap и ландшафта одним щелчком мыши. Можно импортировать более 100 000 построек. Поддерживается большое количество форм крыши: плоская, двускатная, шатровая (только для четырехугольника), односкатная, полушатовая, круглая, пирамидальная, двускатная, купольная, луковичная и saltbox. |
Mapbox Studio | Web | частично | Проприетарная | Включает редактор стиля Mapbox GL, который поддерживает высоту здания (или частей здания). |
Maputnik | Web | частично | MIT | Редактор стилей Mapbox GL поддерживающий высоту здания (или частей здания). |
Tangram Play | Web | частично | MIT | Редактор сцены Tangram, который поддерживает "выдавливаемые" здания с высотой на основе данных OSM. |
Терминология
Изображения могут помочь Вам понять некоторые архитектурные термины:
Английский термин | Русский термин |
---|---|
ridge | конёк |
hip | наклонное ребро |
valley | разжелобок (ендова) |
gable | торцевая часть крыши |
rake | фронтонная доска |
eave | свес |
soffit | софит (обращённая к низу поверхность выносного карниза) |
dormer | чердачное окно |
Предложения
- F3DB — заброшенное предложение Full 3D buildings по улучшенному 3D-тегированию.
Смотрите также
- 3D Models Library — ЗD фонари библиотека
- 3D tagging
- DE:3D building/tunnel — туннель или проезд в здании
- JOSM/Plugins/Kendzi3D/Custom models/Singular building models — загрузка 3D моделей из блендера в OSM
- Key:indoor — Ключ используется со схемой Simple Indoor Tagging
- Pl:Bridge3D — мосты
- Pl:Key:building:cullis:height — уровень желоба
- RU:3D
- RU:Key:building:parts — части зданий
- RU:OSM-4D
- RU:OSM-4D/3D_building — другие части зданий 3D
- RU:OSM-4D/Generic_textures
- RU:OSM-4D/Roof_table — крыши
- RU:Phototexturing
- RU:ProposedRoofLines — крыши предложение
- RU:Relation:building
- RU:Relations/Proposed/Buildings — предложение моделировании сложных зданий.
- RU:Roof modelling
- RU:Simple_Indoor_Tagging — внутренний маппинг
- RU:Stairs modelling — лестницы
- Примеры мультиполигонов
- Template:Pl:Map Features:3D — дополнительные теги для 3D моделирования зданий
- RU:Key:building:architecture — архитектурный стиль
Ссылки
- ↑ Это не относится к F4 Map, смотрите: Non-building:part parts of buildings are not rendered #3, Streets GL GitHub, сообщение от StrandedKitty, 3 мая 2023 года
- ↑ blog.mapbox.com
- ↑ https://lists.openstreetmap.org/pipermail/tagging/2020-February/thread.html#51110