私はcitygml4jに基づいてさまざまなレベルの詳細で建物モデルを生成しようとしています。私はLoD2までの単純なモデルを生成することができました。私はモデルにドアや窓、インテリアのジオメトリなどの詳細を追加したいと思います。より高いLODで建物を作成するためのサンプルJavaコードはありますか?LoD3とLoD4でcitygml4jに基づいた建物を作成
ありがとうございました!
私はcitygml4jに基づいてさまざまなレベルの詳細で建物モデルを生成しようとしています。私はLoD2までの単純なモデルを生成することができました。私はモデルにドアや窓、インテリアのジオメトリなどの詳細を追加したいと思います。より高いLODで建物を作成するためのサンプルJavaコードはありますか?LoD3とLoD4でcitygml4jに基づいた建物を作成
ありがとうございました!
citygml4jオブジェクトモデルは、CityGMLのXMLエンコーディングに厳密に従います。したがって、CityGML XMLスキーマと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
機能がopening
機能性を介してWallSurface
に接続されていることに留意されたいです。同様に、Building
機能にはWallSurface
を含むboundedBy
機能プロパティがあります。
ここで、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);
最後に、ジオメトリと属性を追加します。たとえば、WallSurface
のLoD 3表現としてgml:MultiSurface
を追加します。
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
のサンプルをご覧ください。しかし、さまざまな方法でジオメトリオブジェクトを設定することもできます。
これが役に立ちます。