Skip to main content

Hi Everyone,

I’m new to FME. Currently, I use FME to convert IFC4 LOD 300 to CityGML 2.0 LOD 4. It happened that a long railing can make the size of one CityGML feature exceed 1 GB, and it’s challenging to import it into 3DCityDB. I have to divide the railing into pieces so that each CityGML feature won’t exceed 200 MB. As shown, the railing has 1270 parts of MultiSurface. I’m thinking of splitting it into 1270 CityGML objects.

First, I tried the “Deaggregator” transformer. But when it is written to CityGML with other feature types, the divided geometry cannot be viewed. The file size is small, so I believe the divided geometry wasn’t written into the CityGML file. However, if I only convert the divided geometry into the CityGML file. The file size is 1.4GB, and it can be viewed in FME Data Inspector. Here is the screen capture of my workbench.

I have no idea what was wrong. I was thinking it could be due to the geometry structure being changed. Originally, it was Geometry->MultiSurface (1270 parts)->CompositeSurface. After that, it was Geometry->CompositeSurface. The level of “MultiSurface” was gone. Does anybody know how to maintain the same structure?

Besides, maybe “GeometryPartExtractor” can work as well but I don’t know how to extract the “CompositeSurface” level by part number. For example, I copy this railing 1270 times, the first one will keep Geometry->MultiSurface (1 parts)->Part 0: CompositeSurface (6 parts). The rest can be done in the same manner. The last one (No. 1270) should be Geometry->MultiSurface (1 parts)->Part 0: CompositeSurface (1102970 parts). What should I write in Geometry Xquery of “GeometryPartExtractor”?

Thanks in advance.

 

Regards,

Qubbie

GeometryFilter detailed mode ?

here is the interactive geometry model diagram you may click on each class for more info https://docs.safe.com/fme/html/FME-Form-Documentation/FME-Transformers/!FME_Geometry/FME_Geometry_Model.htm 


Firstly I would question the importance of the railing. Do you really want the railing to be part of this model? I would arge that this railing is not part of the building and can simply be skipped. What value does it add? 

But how do you have over 1,000,000 parts in there for one of those composite surfaces. That crazy indeed. 

If you deaggregate the railing for all levels (not splitting composites) like you’ve done then you should definitely try ind inspect those features with all of those parts, perhaps those huge objects can just be skipped. 

Also you’re output feature type is non-standard. it needs to just be “BuildingInstallation” i.e., without the bldg_ prefix (at least I think). If the naming is non standard you’re features will just become a GenericCityObject.

The FME log usually has some helpful warnings when it comes to writing CityGML - When writing CityGML pay close attention to the warnings. They are important. 

A good trick when working with CityGML in FME can be to work in reverse - that it, create a small simple CityGML file in the structure you want/expect and then use a CityGML reader to see how the data come in. Check out the structure of the geometry, the geometry properties, the gml_id and gml_parent_id. You can use these as hints to help structure your features in FME before you output them.

when it comes to gmlid’s the CityGML reader will always add missing gmlids with the fme_ prefix.