Skip to main content

Hello there, I'm quite new to FME, and I'm trying to achieve an effective CityGML model of an historical city center in order to carry out energy analysis at urban scale.

After some hard work, I managed to transform my Shape file into CityGML LOD2 by merging a set of tutorials and best practices, and the result is satisfying.

But at the end of the process I still have a huge dubt: in my final model there is no trace of shared surfaces between buildings, which are extremely important for computation in my case. Building models are in fact "extruded" one by one, with no knowledge of their boundary conditions.

I didn't find any reference about this problem, is there someone who could please help me?

Thanks,

Cristina

Hi @cristinacecchin,

Have you tried using the TopologyBuilder? You can input your polygons (before extruding) to get attributes on their faces (_faces), so each polygon has knowledge of what neighboring polygon is touching it.

You could then use something like an AttributeSplitter to separate them by a comma delimiter if you wish, and merge that attribute information onto your extruded buildings using a FeatureMerger. This method would work best if your buildings were touching though. However you could fiddle with the tolerance setting in the TopologyBuilder parameters perhaps to get the desired results. Hope this helps!


Are you referring to xlinks in the xml? I don't think FME can handle these when writing yet. It's quite a limitation with CityGML and FME here as I understand it. Unless @DeanAtSafe or @DaveAtSafe know how to do this properly with FME?


Thank you both for your answers.

@JovitaAtSafe, I think this is a good starting point, which can be useful in order to tailor ad hoc solutions for the energy calculations. For what I learned, and please correct me if I'm wrong, CityGML is extremely powerful, but due to its high standardisation it is also very rigid and the idea of storing the information on neighbourhood in a special attribute won't fit its rules.

What I was thinking about has more to do with @virtualcitymat answer, in the idea of building a topologically correct LOD3 model, in particular with reference to shared surfaces (see attached figure from Groger and Plumer 2012).

cattura.jpg

Thank you again.


Thank you both for your answers.

@JovitaAtSafe, I think this is a good starting point, which can be useful in order to tailor ad hoc solutions for the energy calculations. For what I learned, and please correct me if I'm wrong, CityGML is extremely powerful, but due to its high standardisation it is also very rigid and the idea of storing the information on neighbourhood in a special attribute won't fit its rules.

What I was thinking about has more to do with @virtualcitymat answer, in the idea of building a topologically correct LOD3 model, in particular with reference to shared surfaces (see attached figure from Groger and Plumer 2012).

cattura.jpg

Thank you again.

In that case, you might want to take a look at this idea: https://knowledge.safe.com/idea/52002/implement-xlinkhref-into-citygml-writer-for-solids.html

 

In the comments there is a possible solution shared by @grkmus. It is a python script. I haven't tested it myself, however, it's possible that this could be something which may help. (I'm not sure that it covers the situation where buildings are side by side sharing the same wall surface)

 


Thank you both for your answers.

@JovitaAtSafe, I think this is a good starting point, which can be useful in order to tailor ad hoc solutions for the energy calculations. For what I learned, and please correct me if I'm wrong, CityGML is extremely powerful, but due to its high standardisation it is also very rigid and the idea of storing the information on neighbourhood in a special attribute won't fit its rules.

What I was thinking about has more to do with @virtualcitymat answer, in the idea of building a topologically correct LOD3 model, in particular with reference to shared surfaces (see attached figure from Groger and Plumer 2012).

cattura.jpg

Thank you again.

Hello,

 

Very short and simple explanation about my code: It searches all <boundedBy> attributes in the all <Building> element and puts them in particular <lod*Solid> element with their gml_id's to build the Xlink mechanism. In the attached files, lod3-3.gml is what FME has exported and lod3-3_PYTHON.gml is result from my script. You can investigate how the code works. Thanks.

 

lod3-3.xml

 


Hi @cristina_it,

I'm a new user of FME and currently working on a project pretty similar to yours. Triyng to built a CityGML model from CAD data.

At the moment my workspace have LoD0 and LoD1 to buildings without any topology related to the features.

I worder if you had succes creating the topology using the xlinks and href attributes and if you could share your workspace with me?

Thank you in advance!

DWG_CityGML.fmw


Hi @mamaieron, I'm sorry I didn't try again via xlinks.

Hope someone else can help you.


Reply