[GIS] Performing dikes extraction from DEM

algorithmdemfeature extractionlidarraster

I do have DEM of 1×1 meter and original LiDAR point cloud in .las, that DEM is made of. I need to extract river dikes (highest points of the dikes) to vector feature (point, polyline).

Any idea for the algorithm or an existing tool?

Dikes are in light gray on the 1st image and below is point cloud image for the example area with the dikes. River centerline in blue.

Dikes are in light gray

Point cloud with the dikes

Any tool for linear features extraction from DEM?

I believe I need something like ENVI’s Spatial Feature Extraction Module (page 7), but without ENVI's part, as I can not afford it 🙂

Best Answer

I read about variety of algorithms for the job (ie. as per @Hornbydds link).

I tried couple appoches, and the best results in my case yield Standard Terrain Analysis from SAGA. Here is what I did and why:

Dikes are usually highest feature in the vicinity of river channel, so I turned them into channels by flipping DEM (MapAlgebra DEM * -1 or for exaggeration of slopes -10). From this point I could use any of hydrological tool sets (ArcHydro, HEC-GeoRas or SAGA hydro tools). I picked SAGA/Terrain Analysis -compound analysis/Standard Terrain Analysis as it produce River Network with couple of clicks. River Network is what I wanted to achieve, as it produce polylines, which indicate best route for water flow, which in case of inverted dikes - gives their highest point.

Produced shape file is a little bit messy (many of smaller polylines), but after some tweaking results are satisfactory. Another annoyance is that 1 dike is made of 300 short polylines, but I think that I'll find some way to handle this.

Here is results example:

enter image description here

Of course this is quite rough solution and I'll be probably investigating the issue further, but I thought its worth to share.