Isolate ground points (LiDAR)

This tool can be used to filter out non-ground points in an input point cloud dataset derived from laser scanning (LiDAR). The user must specifiy the input points file, which can either be a ShapeFile of Point or MultiPoint base ShapeType or a LAS file. The LAS file format is an industry standard format for storing data acquired by laser scanners. If a ShapeFile is input, an attribute field containing the elevation data (Z) must also be specified. The user must input the name of the output ShapeFile. At present, the tool outputs a ShapeFile of MultiPointZ ShapeType and cannot output a LAS file. The user must also specify the search distance, defining the radius of the circular neighbourhood in which points are found, the minimum number of points, the inter-point slope threshold, and whether the output file should be automatically displayed when the tool has completed. If a search neighbourhood contains fewer than the specified minimum number of points, its radius will be increased to that of the smallest circle enclosing this minimum number of neighbours.

The tool distinguishes ground points from non-ground points based on the inter-point slope threshold. All of the points within the circle encompassing each grid cell is then examined as a neighbourhood. All points within a neighbourhood that have an inter-point slope with any other point and is also situated above the corresponding point, is considered to be a non-ground point. An appropriate value for the inter-point slope threshold parameter will depend on the steepness of the terrain, but generally values of 15-35 degrees produce satisfactory results for flat to moderatly flat areas.

See Also:

Scripting:

The following is an example of a Python script using this tool:

wd = pluginHost.getWorkingDirectory()
inputFile = wd + "input.las"
outputFile = wd + "output.shp"
searchDistance = "1.0"
minNeighbours = "0"
maxSlope = "20.0"
displayOutput = "false"
args = [inputFile, outputFile, searchDistance, minNeighbours, maxSlope, displayOutput]
pluginHost.runPlugin("IsolateGroundPoints", args, False)

This is a Groovy script also using this tool:

def wd = pluginHost.getWorkingDirectory()
def inputFile = wd + "input.shp"
def elevField = "ELEV"
def outputFile = wd + "output.shp"
def searchDistance = "1.0"
def minNeighbours = "0"
def maxSlope = "20.0"
def displayOutput = "false"
String[] args = [inputFile, elevField, outputFile, searchDistance, minNeighbours, maxSlope, displayOutput]
pluginHost.runPlugin("IsolateGroundPoints", args, false)

Credits: