0

我一直在尝试在不同的细节级别上生成基于 citygml4j 的建筑模型。我可以生成最高 LoD2 的简单模型。我想为模型添加更多细节,例如门窗和内部几何形状。是否有任何用于在更高 LOD 处创建建筑物的示例 Java 代码?

非常感谢您提前提供的帮助!

4

1 回答 1

0

citygml4j 对象模型紧密遵循 CityGML 的 XML 编码。因此 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说明如何创建几何图形的示例。但您也可以用不同的方式填充几何对象。

希望这可以帮助。

于 2017-10-10T21:04:12.357 回答