Skip to main content

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?

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.

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)

 

 


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.

 


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