Создание здания на основе citygml4j в LoD3 и LoD4
Я пытался создать модель здания на основе citygml4j на разных уровнях детализации. Я мог бы генерировать простые модели вплоть до LoD2. Я хочу добавить еще несколько деталей, таких как двери и окна, а также геометрию интерьера в модели. Есть ли какие-нибудь примеры java-кодов для создания здания на более высоких LOD?
Большое спасибо за вашу помощь заранее!
1 ответ
Объектная модель citygml4j точно соответствует XML-кодировке CityGML. Таким образом, схемы CityGML XML и документ спецификации CityGML являются полезными.
Посмотрите на следующий фрагмент кода CityGML о здании, имеющем поверхность стены и дверь. Для простоты я опустил любые пространственные или тематические свойства.
<bldg:Building>
...
<bldg:boundedBy>
<bldg:WallSurface>
...
<bldg:opening>
<bldg:Door>
...
</bldg:Door>
</bldg:opening>
</bldg:WallSurface>
</bldg:boundedBy>
</bldg:Building>
Обратите внимание, что Door
функция связана с WallSurface
сквозь opening
свойство объекта Аналогично Building
особенность имеетboundedBy
свойство объекта, содержащееWallSurface
,
Теперь просто создайте ту же иерархию с объектами citygml4j.
// create building, wall surface and door
Building building = new Building();
WallSurface wallSurface = new WallSurface();
Door door = new Door();
// add door to wall surface through an opening property
OpeningProperty opening = new OpeningProperty(door);
wallSurface.addOpening(opening);
// add wall surface to building through boundedBy property
BoundarySurfaceProperty boundedBy = new BoundarySurfaceProperty(wallSurface);
building.addBoundedBySurface(boundedBy);
Наконец, добавьте немного геометрии и атрибутов. Например, добавитьgml:MultiSurface
как LoD 3 представлениеWallSurface
,
MultiSurface geometry = new MultiSurface();
// ... add surface members containing the vertices ...
// add geometry to the wall surface
wallSurface.setLod3MultiSurface(new MultiSurfaceProperty(geometry));
Опять же, как создавать объекты геометрии GML, следует схеме XML. citygml4j поставляется с большим количеством примеров кода. ПроверьтеBuildingCreator.java
образец, который иллюстрирует, как могут быть созданы геометрии. Но вы также можете заполнять геометрические объекты различными способами.
Надеюсь это поможет.