Skip to main content

Dear Community,

 

I have the following issue: My ultimate goal is to build a CityGML file from roof polygons. To build the buildings and separate the walls and stuff is fine. But the buildings are commonly have structures (as I call roof on roof structure) above the roof. I'm able to project the roof - and roof on roof's roof - to the ground, but then I receive this:

 

Roof on roof structure walls extruded to the ground, not until the roofWhat I would like to achive is kind of this:

Roof on roof structure with a wall segment until the angled roofThis seems kind of hard to me. I read over the whole forum, but no sign to be able to cut the roof on roof's wall with the angled roof plane. Also extrude would not fit, because this will require a single height, and in this case, the height is changing along the intersection line. The geometry type is MultiSurface.

 

How can I effectively generate this roof on roof structure's wall segments without pushing the wall until the ground level?

If no clear answer for how to generate properly, how can I cut the excess parts?

If no way to clip, I'm open for further ideas, as it's quite difficult for me.

 

Thank you for your kind help.

I'm not sure if you were able to solve this, however, one trick which miiight work is to use the 'SolidDissolver' custom transformer - If you are able to have the RoofOnRoof to ground as well as the Roof to ground as separate solid structures (intersecting) then the SolidDissolver can be user to 'Clean' the result.

If works by creating a 3D bounding bounding of all input solids and then using the Clipper (which supports solids) to clip the bounding box with each of the smaller solids.


Hi @mbfoldmeres​ , the BRepSolidBoundaryCreator.Beta from FME Hub would help you to create solid boundaries for each roof (Face or CompositeSurface). I think you can then cut and remove overlapping parts of walls with SurfaceOnSurfaceOverlayer. Assuming that projected shapes of the roofs form a single continuous footprint (i.e. they won't overlap or have gaps).

See also the attached demonstration.

roof-on-roof 


Reply