我将建筑物的信息存储在 citygml 文件中。我正在尝试使用 citygml4j 库提取建筑物的多边形几何形状。我查看了 FeatureWalker 类,但我无法获得多边形几何。
我该怎么做呢?这是我的代码:
CityGMLContext ctx = new CityGMLContext();
CityGMLBuilder builder = ctx.createCityGMLBuilder();
CityGMLInputFactory in = builder.createCityGMLInputFactory();
CityGMLReader reader = in.createCityGMLReader(new File("/home/vishal/NWW/sampleData/LOD2_Building_v100.gml"));
while(reader.hasNext())
{
CityGML citygml = reader.nextFeature();
System.out.println("Found class:" + citygml.getCityGMLClass() + "\nVersion"+citygml.getCityGMLModule().getVersion());
//Counting the no of buildings
CityModel citymodel = new CityModel();
if(citygml.getCityGMLClass() == CityGMLClass.CITY_MODEL)
{
citymodel = (CityModel)citygml;
// Counting the no of buildings
int count=0;
for(CityObjectMember cityObjectMember : citymodel.getCityObjectMember())
{
AbstractCityObject cityobject = cityObjectMember.getCityObject();
if(cityobject.getCityGMLClass() == CityGMLClass.BUILDING)
{
++count;
}
}
System.out.println("Building count"+count);
}
FeatureWalker walker = new FeatureWalker(){
public void visit(Building building){
System.out.println(building.getId());
//MultiSurface multisurface = boundrysurface.getLod2MultiSurface().getMultiSurface();
//System.out.println(multisurface.getSurfaceMember().get(0));
List<BoundarySurfaceProperty> list = building.getBoundedBySurface();
System.out.println(list);
System.out.println(list.get(0).getBoundarySurface());
//HOW TO GET THE POLYGON AND ITS COORDINATES??
}
};
citymodel.accept(walker);
PS:如果您有关于 citygml4j 库的任何其他资源/教程,请告诉我。
谢谢,