2017-01-18 31 views
0

私はcitygml4jに基づいてさまざまなレベルの詳細で建物モデルを生成しようとしています。私はLoD2までの単純なモデルを生成することができました。私はモデルにドアや窓、インテリアのジオメトリなどの詳細を追加したいと思います。より高いLODで建物を作成するためのサンプルJavaコードはありますか?LoD3とLoD4でcitygml4jに基づいた建物を作成

ありがとうございました!

答えて

0

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のサンプルをご覧ください。しかし、さまざまな方法でジオメトリオブジェクトを設定することもできます。

これが役に立ちます。

関連する問題