2017-01-18 9 views
0

Я пытаюсь создать модель здания на основе citygml4j на разных уровнях деталей. Я мог бы создавать простые модели до LoD2. Я хочу добавить к моделям некоторые детали, такие как двери и окна и внутреннюю геометрию. Существуют ли образцы java-кодов для создания здания при более высоких LOD?Создание здания на основе citygml4j в LoD3 и LoD4

Большое спасибо за вашу помощь заранее!

ответ

0

Объектная модель citygml4j внимательно следит за XML-кодировкой CityGML. Таким образом, XML-схемы CityGML и CityGML specification document помогают.

Ознакомьтесь со следующим фрагментом 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, который иллюстрирует, как создавать геометрии. Но вы можете также заполнить объекты геометрии по-разному.

Надеюсь, это поможет.