Solved

Extruding building heights from 3D terrain model creates sloped buildings

  • 10 August 2017
  • 4 replies
  • 25 views

Badge

I have asked this on GIS SE but seem to have had little interest. I imagine it would be more suitable to post here.

How can i prevent sloped buildings when I extrude building footprints over sloped terrain? I am using FME to drape 2D features over terrain (SurfaceDraper), then using the Extruder transformer to create 3D buildings from OS Building Heights. Unfortunately the height value seems to apply itself to each vertex, which creates sloped building tops (roof geom is not relevant here) - example below:

Is there an extrusion method that uses a single vertex, or is there another method entirely?

icon

Best answer by takashi 10 August 2017, 17:17

View original

4 replies

Userlevel 2
Badge +17

Hi @proudgis, if it's allowable that the bottom of building model is flat, a possible way is:

  1. GeometryExtractor: Save the original geometry (building footprint: 2D polygon) as an attribute.
  2. SurfaceDraper: Drape the polygon by the terrain surface.
  3. BoundsExtractor: Extract the minimum z of the draped polygon.
  4. GeometryReplacer: Restore the original 2D polygon.
  5. 3DForcer: Convert the polygon to 3D with the minimum z as its elevation.
  6. Extruder: Extrude the 3D polygon by the building height.
Badge

Hi @proudgis, if it's allowable that the bottom of building model is flat, a possible way is:

  1. GeometryExtractor: Save the original geometry (building footprint: 2D polygon) as an attribute.
  2. SurfaceDraper: Drape the polygon by the terrain surface.
  3. BoundsExtractor: Extract the minimum z of the draped polygon.
  4. GeometryReplacer: Restore the original 2D polygon.
  5. 3DForcer: Convert the polygon to 3D with the minimum z as its elevation.
  6. Extruder: Extrude the 3D polygon by the building height.
Yes takashi!! (step 4 isn't required as the 3DForcer can overwrite existing geom)

 

 

Userlevel 2
Badge +17

Hi @proudgis, if it's allowable that the bottom of building model is flat, a possible way is:

  1. GeometryExtractor: Save the original geometry (building footprint: 2D polygon) as an attribute.
  2. SurfaceDraper: Drape the polygon by the terrain surface.
  3. BoundsExtractor: Extract the minimum z of the draped polygon.
  4. GeometryReplacer: Restore the original 2D polygon.
  5. 3DForcer: Convert the polygon to 3D with the minimum z as its elevation.
  6. Extruder: Extrude the 3D polygon by the building height.
Yes, the GeometryExtractor/Replacer may not be essential. However, from your screenshot (shapes of the building roofs), I thought that you have set MODEL to the Drape Method parameter in the SurfaceDraper.

 

If you draped the footprint with the MODEL method, the number of vertices on the polygon boundary could increase, but you can avoid to remain unnecessary vertices using the pair of GeometryExtractor and Replacer. That's the reason why I added the pair to the steps.

 

Badge

Hi @proudgis, if it's allowable that the bottom of building model is flat, a possible way is:

  1. GeometryExtractor: Save the original geometry (building footprint: 2D polygon) as an attribute.
  2. SurfaceDraper: Drape the polygon by the terrain surface.
  3. BoundsExtractor: Extract the minimum z of the draped polygon.
  4. GeometryReplacer: Restore the original 2D polygon.
  5. 3DForcer: Convert the polygon to 3D with the minimum z as its elevation.
  6. Extruder: Extrude the 3D polygon by the building height.

* knows my workspace better than me - from a screenshot *

Superb Takashi

Reply