我一直在尝试在不同的细节级别上生成基于 citygml4j 的建筑模型。我可以生成最高 LoD2 的简单模型。我想为模型添加更多细节,例如门窗和内部几何形状。是否有任何用于在更高 LOD 处创建建筑物的示例 Java 代码?
非常感谢您提前提供的帮助!
我一直在尝试在不同的细节级别上生成基于 citygml4j 的建筑模型。我可以生成最高 LoD2 的简单模型。我想为模型添加更多细节,例如门窗和内部几何形状。是否有任何用于在更高 LOD 处创建建筑物的示例 Java 代码?
非常感谢您提前提供的帮助!
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
说明如何创建几何图形的示例。但您也可以用不同的方式填充几何对象。
希望这可以帮助。