6

I'm searching for algorithms or open source tools I could use to detect breaklines from a LiDAR dataset; more specifically, from the terrain points of the dataset. At the moment the only thing I've found are some articles based on edge detection for buildings and roads.

I suppose there are some algorithms based on point clouds, or maybe even for digital elevation models I could use.

3

A possible solution would consist of three steps:

  1. Generate a high resolution bare-earth model DEM. Refer to this thread for further advice.
  2. Extract slope information from the DEM. Tweak the pixel size to assign slope values according to type of breaklines in the study area. For example, if the breaklines occur within narrow spots, choose a smaller cell size to detect them.
  3. Filter pixels or coordinates with slope information higher than a certain threshold (e.g. higher than 40 degrees).

The program command GridMetrics available in Fusion allows the extraction of topographic metrics, when it is used together with the switch topo. See below GridMetrics syntax:

GridMetrics /topo:dist,lat groundfile heightbreak cellsize outputfile datafile

Explanation of GridMetrics' arguments:

  • Gridmetrics is the program command itself (a .exe file),

  • The switch topo admits two arguments. According to Fusion's manual:

Compute topographic metrics using the groundfile(s) and output them in a separate file. Distance is the cell size for the 3 by 3 cell analysis area and lat is the latitude (+north, -south).

  • groundfile is the bare-earth DEM (a .dtm1 file).

1 If the bare-earth model is available with extension .asc convert it to .dtm using the ASCII2DTM tool.

  • heightbreak and cellsize are arguments used to compute non topographic metrics (not important in this context).
  • outputfile is the file where there will be the slope information (a .csv file which can be further converted to ASCII raster format).
  • datafile is the LiDAR cloud (a .las file).

Example:

This is how I wrote the GridMetrics command on my computer to generate slope information (with 10 meter resolution) from a lidar cloud provided as example by Fusion.

c:\Fusion\GridMetrics /topo:10,+north C:\LIDAR\Fusion_example_data\4800K_ground_surface.dtm 2 10 C:\LIDAR\Fusion_example_data\4800K_topometrics.csv C:\LIDAR\Fusion_example_data\lda_4800K_data.las

This is how the outputfile file looks like:

enter image description here

Then, I used the CSV2GRID command to convert the slope column (the 6th column) values into an .asc file format.

c:\Fusion\CSV2GRID C:\LIDAR\Fusion_example_data\4800K_topometrics_topo_metrics.csv 6 C:\LIDAR\Fusion_example_data\4800K_topometrics.asc

This is the resulted slope map (4800K_topometrics.asc) with degrees as the measurement unit.

enter image description here

Now, to detect the breaklines one would need to establish a slope threshold that bests suits the study, and clip such pixels.

In the upper left corner of our map there are the highest slopes observed (> 40 degrees). See the pictures below, which illustrate that area.

enter image description here

This would be the most closer we'd get from a breakline in this scene.

enter image description here

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.