Skip to main content
3 of 3
Fixed broken URL
Jeffrey Evans
  • 32k
  • 2
  • 48
  • 97

This can be done with a filter using either Simple Morphological Filter (SMRF) or Progressive Morphological Filter (PMF) algorithms.

Quick

pdal ground --cell_size=5 --extract input.laz out-bare-earth.laz

Creates a bare earth compressed LAS file with a 5 ground unit cell size using PMF. (docs)

For more explanation see the Identifying ground returns using ProgressiveMorphologicalFilter segmentation tutorial.

More involved, using SMRF

A pipeline example that:

  • applies the SMRF filter, enlarges the cell size option to 2.0 (coordinate system units) and a 0.75 threshold
  • selects only the newly classified ground points (2 is the LAS standard value for ground)
  • writes selection to an uncompressed LAS output file (just change extension to .laz for compressed)

Command: pdal pipeline "classify-ground-smrf.json"

The JSON parameters file:

{
    "pipeline": [
        "inputfile.laz",
        {
            "type":"filters.smrf",
            "cell": "2.0",
            "threshold": "0.75"
        },
        {
            "type":"filters.range",
            "limits":"Classification[2:2]"
        },
        "out/smurf_classifed.las"
    ]
}

Extract above ground only

This example a) classifies into ground/not-ground, b) adds "Height Above Ground" attribute, and c) exports only points 2.0 (coordinate system units) above ground.

{
    "pipeline": [
        "input.laz",
        {
            "type": "filters.assign",
            "assignment": "Classification[:]=0"
        },
        {
            "type": "filters.smrf"
        },
        {
            "type": "filters.hag"
        },
        {
            "type": "filters.range",
            "limits": "HeightAboveGround[2:]"
        },
        {
            "filename":"above-ground.laz"
        }
    ]
}

Adapted from Brad Chambers, https://lists.osgeo.org/pipermail/pdal/2017-July/001367.html

matt wilkie
  • 28.3k
  • 35
  • 149
  • 283