RU:F3DB

From OpenStreetMap Wiki
Jump to navigation Jump to search

Описание

Full 3D Building (сокращённо F3DB) описывает универсальный подход, который сочетает в себе существующие подходы к картированию внутри помещений с наружным 3D-моделированием зданий (S3DB).

План зданий

Два подхода (S3DB и картографирование помещений) похожи, но не одинаковые. Пробелы должны быть закрыты с использованием подхода F3DB.

Цели

  • Обратная совместимость
  • Простота
  • Совместимость со стандартным определением в гражданском строительстве
  • Объекты можно детализировать и размечать поэтапно
  • Отдельное отображение наружного вида и внутреннего вида по этажам
  • Важные части, совместимые с Industry Foundation Classes ( Industry Foundation Classes)
  • Важные детали, совместимые с CityGML, SIG 3D, OGDC.
  • Поддержка S3DB

Спецификация и рабочий процесс

РАБОТА В ПРОЦЕССЕ

Спецификация F3DB создается тремя связанными уровнями наборов функций для описания 2D, 2.5D и 3D данных. Начиная с 2D-сопоставления, позже можно обогатить эти данные, чтобы получить 2.5D или даже 3D-описание здания. Следующее описание относится к спецификации 2D. Дополнения, которые относятся к описанию 2.5D или 3D, отмечены отдельно (2.5D) или (3D).

Общие замечания

Чтобы провести различие между этажами здания, каждый путь и точки внутреннего пространства должны быть помечены идентификатором для указания этажа, как в следующем примере для первого этажа:

indoor:level=0

Начало моделирования

… внесите данные, обрисовав контура здания с использованием спутниковых снимков, уточнив его с помощью GPS … или просто с использованием существующих наружных данных.

Если у вас есть план здания, вы можете использовать его для уточнения контура этого здания. Информация о том, как вписать такой план в существующие наружные данные, можно найти в разделе IndoorOSM#PicLayer

План здания в JOSM

Добавление первых внутренних структур: Внутренние области

В соответствии с планом первого этажа все помещения внутренних сооружений, включая пешеходные зоны, обозначены в виде путей с последующей маркировкой поверх существующего контура наружнего здания:

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

Пример: Сопоставление туалетной комнаты на основе информации из чертежа.

Теги этого внутреннего полигона отображаются справа.

Обратите внимание на обязательный тег этажа: indoor:level=0. Назначение внутренней зоны на её этаж всегда выполняется с помощью этого тега! Во время отображения здания с несколькими уровнями вы должны применять фильтры к JOSM. Фильтр для отображения только элементов первого этажа должен выглядеть так:

type:way & "indoor:level":"0"

Картирование каждой области с использованием замкнутых линий с тегом indoor:area=<значение>.

Более подробная спецификация в соответствии с новейшими стандартами с открытым исходным кодом: (будет завершена позже)

Пожалуйста, обратите внимание:

Внутренние зоны имеют одинаковые точки с полигоном здания и соседних зон! Это самое важное различие между этим предложением и более старыми предложениями разметки внутри помещений, такими как Картографирование в зданиях.

Кроме того, внутренние помещения не описывают стены, потому что есть и открытые комнаты без стен. Посмотрите на этот пример:

Внутренняя комната этого здания, не полностью окружённая стеной.

Дополнительно: Зоны

Зоны представляют собой специальные закрытые участки без стен или иногда только с особыми разделителями, такими как защитный барьер. Теги:

Примеры:

  • decoration (украшение)
  • show (шоу)
  • exhibition (выставка)
  • gastronomy (гастрономия)
  • waiting_area (зона ожидания)
  • artificial_pond (искусственный водоем)
  • artificial_stream (искусственный ручей)
  • recreation (досуг)
  • playground (детская площадка)
  • smoking (зона для курения)

Использование: для рисования специальных областей, таких как действительно большие комнаты, например, аэропорт с различными областями в пределах одной комнаты, таких как пограничный контроль, зал прибытия или вылета в аэропорту и так далее.

Добавление стен

Существующие области с использованием тега indoor:area=* могут быть уточнены, чтобы обозначить стены. Если стена на определённом участке имеет разную высоту или ширину, линия должна быть разделена, чтобы смоделировать это.

Стены в здании размечены чёрными линиями:
indoor:wall=yes
width=*
height=* (2.5D)
Другие возможные значения:
colour=* (2.5D)
surface=* (2.5D)
material=* (2.5D, 3D)

Отображение после добавления стен:

Возможное графическое представление на карте внутренних помещений после маркировки стен ключом width=* (толщина стен)

Добавление маршрутов и путей

Пути рисуются как линии. Области уже нарисованы как поверхности с именами.

F3DBIndoorRouting.jpg

Пути маршрутизации в здании описаны как.

Причины выбора префикса indoor:highway=*:

  • обратная совместимость с рендерингом Mapnik (пути невидимы на главной странице OSM и не мешают стандартной карте, например, с использованием старых внутренних спецификаций);
  • упростить внутреннюю навигацию (выбор маршрутов перемещения внутри и снаружи здания).

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

Здесь показаны первые примеры рендеринга:

Indoor highway outside levelbuttons.png Indoor highway outside rendering.png

Добавление дверей

Двери являются частями стены; точки с тегами

F3DBdoorTypes.jpg

F3DBDoorYes.jpg

Маркировка направления двери

Решение A

«Геометрический подход». Предпочитает большинство участников дискуссии. Абсолютно, но нужно знать как рисовать направление стены, которое в тоже время не поддерживается некоторыми редакторами.

Для правильной маркировки направления открытия для рендеринга направление рисования линии стены следует учитывать:

Ru F3DBdoorOpeningDirectionDefinitionV1.jpg

Решение B

Подход "Этаж / Комната". Быстрее, но не ясно в некоторых ситуациях (межкомнатные двери).

Я стою в коридоре и вижу, как дверь открывается в направлении ко мне. Дверь:

  1. opening:direction=left когда ручка находится на левой стороне
  2. opening:direction=right когда ручка находится на правой стороне

Я стою в коридоре и вижу, как дверь открывается от меня. Дверь:

  1. opening:direction=left_mirror и когда ручка находится на левой стороне
  2. opening:direction=right_mirror когда ручка находится на правой стороне

Ru F3DBdoorOpeningDirectionDefinitionV2.jpg

Это решение отвергается большинством участников дискуссии из-за возможных конфликтов. Смотри рисунок ниже. Красная область не определена и может создавать ошибки при рендеринге:

Ru F3DBDoorOpeningDirectionApproachBIsNotClear.jpg

Маркировка окон

Окна, как и двери, являются точками и отмечаются на стенах с тегами:

window=*. width=* height=* min_height=* подробнее смотри: window=*.

Окна в здании.

Лестницы, пандусы, эскалаторы

Направление лестниц определяется пометкой координат начальных и конечных точек тегом indoor:highway=steps (или последовательно указать теги indoor:highway=stepsindoor:highway=footwayindoor:highway=steps).

Более подробная информация о продвинутых моделях лестниц: Stairs modelling

Крайние ступеньки должны быть помечены тегами:

F3DBStepsWithIncline.jpg

Аналогично:

Рендеринг макета 2D

Результат после рендеринга: стены, двери и окна с тегами:

height=* и лестница с тегами:

height=*

steps_count=*

F3DBPlainArchitectonicView.jpg

Альтернативно: возможный вид маршрутизации и архитектурный чертеж.

F3DBRoutingAndArchitectonicView.jpg

Чертёж крыш

Для получения полноценной 3D модели обязательно нанесение крыш с проёмами для ступеней или галерей.

Теги:

Примечание:

roof_level=0 означает пол на первом этаже

На чертеже область с тегом ceiling=yes (синяя линия) использует отношение для нанесения отверстий.

Отверстия могут быть помечены как определенные области с name=* .

F3DBroofYESarchitectonicView.jpg

Этажи: Строение и определение высоты

Теги:

  • level:number:<число>=<значение>, например: indoor:level:1=3.95. Значение 3.95 означает 3.95 метра над самой низкой точкой рельефа с точкой пересечения здания.
  • level:number:name=<значение> описывает общее название для этажа, например: Basement, 2BS, Recreation Level

Ru F3DbuildingSectionV1.jpg

Ориентир для определения высоты здания

На следующем эскизе показана позиция контрольной точки, используемой для расчёт высоты height=*:
Это самая низкая возможная точка пересечения между фасадом здания и рельефом.

Ru F3DBLowestBuildingPoint.jpg

Заметка

Не обязательно указывать значения, отмеченные синим цветом. Высота каждого этажа является результатом расчёта значений, например. высота 4 этажа − высота третьего этажа.

Такой подход позволяет:

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

Крыша

Тег: roof=yes

Крыши, используемые в определении S3DB, являются своего рода так называемыми «CSG-моделями» (смотри  Конструктивная сплошная геометрия).

F3DB использует для моделирования суммы отдельных плоских поверхностей, так называемое «граничное представление» (смотри  Граничное представление).

Для чёткого описания плоскости в пространстве (обычно называемой «Pi») вам понадобятся три известные точки:

PlaneIn3dSpaceDefinedBy3points.JPG

Поэтому крыша должна иметь три точки с данными о высоте.

Картограф имеет свободу решать, какие три точки должны иметь значения высоты, помеченные тегом ele=*.

Согласно этому определению, крыша здания представляет собой объединение отдельных поверхностей. Такой подход позволяет моделировать очень сложные элементы, потому что все 3D-объекты могут быть представлены в виде объединения отдельных поверхностей.

Теги для крыши

  • Три точки на схеме, отмеченные тегами ele=*. Например: Pa, Pb, Pc
  • roof_thickness=* (Параметр T на чертеже). Если нет информации о roof_thickness, тогда T=0
  • surface=* или более подробно: surface_top=*, surface_down=*, surface_sides=*.
  • colour=* или более подробно: colour_top=*, colour_down=*, colour_sides=*.

Примечание:

  • Больше не требуется тег roof:height=* потому что положение формы контура крыши четко определяется тремя точками с известными высотами.

F3DBroofSurfaceDefinition3D.jpg

Pa´, Pb´, Pc´= точки в трёхмерном пространстве.

Ha, Hb, Hc = соответствующие высоты этих точек в пространстве.

Pa, Pb, Pc = вид сверху на эти точки

Теги для угла наклона крыши

Маркировка угла крыши

  • inclination=* (смотри параметр Alpha на чертеже); определяемая как поверхность, состоит из трех точек в пространстве: самая низкая точка крыши и её соседей слева и справа. У соседей должно быть одинаковое значение высоты (они лежат на прямой линии) для следующей возможной точки с другим значением высоты. В большинстве случаев это самая низкая точка, и её соседа легко определить (это высота желоба).

или:

  • ele_roof=* — это расстояние между этой точкой формы крыши и нижней точкой пересечения ландшафта и здания, используемой для описания всех трехмерных строительных элементов (смотри чертёж со частью здания ниже).

Для плоскостей, состоящих из треугольников, определение наклона часто сложно, потому что нужно знать все значения высоты фигур в 3D. Для таких целей вы можете использовать эскизы из программ 3D-моделирования, которые позволяют запрашивать значения высоты трёхмерных точек.

В таких случаях легче описать поверхность крыши в пространстве (Pi) по определению любых трех точек, которые не находятся на прямой.

F3DBroofsDefinedBy3pointsV1.jpg F3DBroofsDefinedBy3pointsV1a.jpg

Пример использования ниже показывает практические трудности треугольного подхода:

Нужно точно вычислить значения высоты H5 и H6 для получения Pi1 и Pi2 как плоской поверхности.

F3DBroofsDefinedBy3pointsV2.jpg

Как и в случае с высотой этажей, крыша может включать в себя отверстия (мультиполигон с отношением).

Примечание

roof_thickness следует определять путем расчёта точных архитектурных моделей зданий. Определение исходит из архитектурного кода здания и должно в будущем помочь с полуавтоматическим импортом 3D-моделей зданий.

Предложения

Пожалуйста, разместите здесь свои идеи и предложения!

  • Уберите префикс indoor: для indoor:highway=*, вместо этого добавьте indoor=yes для элементов. «Обратная совместимость с рендерингом Mapnik» не является хорошей причиной просто потому, что стиль по умолчанию меняется с медленной скоростью, это не является хорошей причиной для создания отдельного набора тегов. "Упростить навигацию в помещении" будет также работать с indoor=yes. Добавление внутреннего префикса сделает обработку этих данных более сложной для всех и каждого (начиная с редакторов) Mateusz Konieczny (talk) 14:38, 18 Июля 2014 (UTC)
  • Что вы думаете о переименовании roof_level=*roof:level=* и roof_height=*roof:height=* в #Чертёж крыш? --Edward17 (talk) 21:32, 20 July 2016 (UTC)

Вопросы и ответы

Ссылки

Примеры моделирования:

  • F3DB_mapping_examples (Примечание: страница в работе. Будьте терпеливы. Содержание появится в сентябре 2014)