Skip to main content

This is not something you can easily do with FME. Your 2D shapefile simply contains footprints, so the only thing you can create from those is 3D extrusions ("boxes"), which is perfect for LOD1, as you already figured out. What you need is a true 3D shapefile (containing multipatch geometry) that contains LOD2 buildings.

 

 

If you can't get that data and you really want to do it with FME, you could use a CenterLineReplacer on the 2D polygons to obtain the highest part of the roof. That line can then be used to construct a hip roof, if that is what you want. Assign the desired maximum *roof* height (== total building height) to the line using a 3DForcer, convert the 2D polygon into a line using a GeometryCoercer and assign the desired maximum *wall* height to it (3DForcer again). Then, feed the footprint line into the "Points/Lines" port and the roof center line into the "Breaklines" port of a TINGenerator to create a roof surface.

 

However, be aware that the result might not always look that good...

 

 

Alternatively, you could dive into procedural modelling software like Esri's CityEngine, which was designed for creating realistic building representations from simple 2D footprints.

 

 


This is not something you can easily do with FME. Your 2D shapefile simply contains footprints, so the only thing you can create from those is 3D extrusions ("boxes"), which is perfect for LOD1, as you already figured out. What you need is a true 3D shapefile (containing multipatch geometry) that contains LOD2 buildings.

 

 

If you can't get that data and you really want to do it with FME, you could use a CenterLineReplacer on the 2D polygons to obtain the highest part of the roof. That line can then be used to construct a hip roof, if that is what you want. Assign the desired maximum *roof* height (== total building height) to the line using a 3DForcer, convert the 2D polygon into a line using a GeometryCoercer and assign the desired maximum *wall* height to it (3DForcer again). Then, feed the footprint line into the "Points/Lines" port and the roof center line into the "Breaklines" port of a TINGenerator to create a roof surface.

 

However, be aware that the result might not always look that good...

 

 

Alternatively, you could dive into procedural modelling software like Esri's CityEngine, which was designed for creating realistic building representations from simple 2D footprints.

 

 

thank you, i really appreciate it

 


Hi , I am going to generate citygml from shp footprint with height value but it shows just a 3D line in the output. Can you share your fme model for LOD 1?


Reply