Remove off-terrain objects

This tool can be used to create a bare-earth DEM from a fine-resolution digital surface model. The tool is typically applied to LiDAR DEMs which frequently contain numerous off-terrain objects such as buildings, trees and other vegetation, cars, fences and other anthropogenic objects. The algorithm works by finding and removing steep-sided peaks within the DEM. All peaks within a sub-grid, with a dimension of the user-specified Maximum Off-Terrain Object Size, in pixels, are identified and removed. Each of the edge cells of the peaks are then examined to see if they have a slope that is less than the user-specified Minimum OTO Edge Slope and a back-filling procedure is used. This ensures that OTOs are distinguished from natural topographic features such as hills.

See Also:

Scripting:

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

wd = pluginHost.getWorkingDirectory()
# You may have multiple input files but they must
# be separated by semicolons in the string.
inputFiles = wd + "input1.dep" + ";" + wd + "input2.dep" + ";" + wd + "input3.dep"
outputSuffix = "bare earth"
maxObjectSize = "250"
minEdgeSlope = "15"
iterate = "true"
args = [inputFiles, outputSuffix, maxObjectSize, iterate]
pluginHost.runPlugin("RemoveOffTerrainObjects", args, False)

This is a Groovy script also using this tool:

def wd = pluginHost.getWorkingDirectory()
// You may have multiple input files but they must
// be separated by semicolons in the string.
def inputFiles = wd + "input1.dep" + ";" + wd + "input2.dep" + ";" + wd + "input3.dep"
def outputSuffix = "bare earth"
def maxObjectSize = "250"
def minEdgeSlope = "15"
def iterate = "true"
String[] args = [inputFiles, outputSuffix, maxObjectSize, iterate]
pluginHost.runPlugin("RemoveOffTerrainObjects", args, false)

Credits: