Skip to main content
Solved

Extruding building heights from 3D terrain model creates sloped buildings

  • August 10, 2017
  • 4 replies
  • 174 views

Forum|alt.badge.img

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?

Best answer by takashi

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.
This post is closed to further activity.
It may be an old question, an answered question, an implemented idea, or a notification-only post.
Please check post dates before relying on any information in a question or answer.
For follow-up or related questions, please post a new question or idea.
If there is a genuine update to be made, please contact us and request that the post is reopened.

4 replies

takashi
Celebrity
  • 7842 replies
  • Best Answer
  • August 10, 2017

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.

Forum|alt.badge.img
  • Author
  • 12 replies
  • August 10, 2017

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)

 

 


takashi
Celebrity
  • 7842 replies
  • August 10, 2017

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.

 


Forum|alt.badge.img
  • Author
  • 12 replies
  • August 10, 2017

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