Question

Using DSM and DTM to model features (buildings/trees etc)

  • 31 August 2017
  • 4 replies
  • 30 views

Badge +3

Hi

I have 2 datasets, a DTM (i.e the underlying ground model) and a DSM (the surface model). These are currently 1m spaced point features (with the same X,Y locations). I am looking to use the difference between the two models (i.e DSM elevation - DTM elevation) to build 3d models of a feature. These features may be buildings, trees, hedges etc.

My current work flow is as following:

  1. Build 3D lines between the DSM and DTM point for a given X,Y, using a neighbor finder and line builder, and assign the line an ID
  2. Filter out lines with a length below 1m (we assume these are not of interest).
  3. In ArcScene, select a group of lines that represent a feature, e.g a house. give these lines a FeatureID.
  4. In FME split the lines back into DSM/DTM using a snipper.
  5. Use the TINGenerator, grouped by FeatureID to create a TIN of the DSM points.

However from here I just cant figure out how to make "Walls" down to the DTM points at the bottom of the feature. I've tried using the hull of the DTM points of each feature as breakline, however this brings the "walls" down a meter prematurely.

Any idea?

Attached is a picture of the DSM surface model, and 3D Lines for some context.


4 replies

Badge +7

Hi @tomw202. I think the Extruder might do the trick as long as you can Extrude by the length of your "walls".

Alternatively this workflow may work or you: Create raster DEMs out of both of your point clouds, subtract them with the RasterCellValueCalculator, use the RasterToPolygonCoercer to transform to vectors, and then Extrude by the elevation value.

Userlevel 2
Badge +17

Hi @tomw202, if you already have a surface geometry that represents the roof of a building, try using the BRepSolidBoundaryCreator.Beta custom transformer from FME Hub. This transformer creates a side-wall surface and a flat bottom surface based on a source roof (top) surface and the elevation of the bottom specified via a parameter.

Badge +1

Explode your roofs to lines then points (ID them with counter)

Use SurfaceDraper to get same points (with IDs) on DEM

Point Connector (Group by ID) will give you wall edges

LineJoiner by Feature Id should give you closed polylines a.k.a. Walls

Badge +3

Hi @tomw202, if you already have a surface geometry that represents the roof of a building, try using the BRepSolidBoundaryCreator.Beta custom transformer from FME Hub. This transformer creates a side-wall surface and a flat bottom surface based on a source roof (top) surface and the elevation of the bottom specified via a parameter.

Hi Takashi,

 

 

Thanks for your answer, I think this solution best fits the problem. Great to learn about that custom transformer!

 

 

Reply