Locate Outliers (3D Analyst)

Summary

Identifies anomalous elevation measurements from terrain, TIN, or LAS datasets that exceed a defined range of elevation values or have slope characteristics that are inconsistent with the surrounding surface.

Usage

  • Both the Apply Hard Limit and Apply Comparison Filter options can be applied for outlier detection. If both options are enabled, the hard limit is applied first.

  • The Apply Hard Limit option will treat any point with an elevation value that is below the Absolute Z Minimum and above the Absolute Z Maximum as an outlier. Consider using this option if the range of valid elevation values for the surface is known.

  • Consider using the Apply Comparison Filter option to locate data points that exceed a height or slope difference relative to neighboring measurements. Each measurement in the surface is tested for height and slope deviation from its natural neighbors. The Exceed Tolerance Ratio option is used to determine the number of surrounding measurements from the neighborhood of the query point that the slope or height tolerance must exceed before the point is considered an outlier.

  • For any given point having X number of nodes connected by triangle edges, if the slope from it to a connected point is greater than the Slope Tolerance in m points (where m is n times the Exceed Tolerance Ratio), the point is considered an outlier.
  • The comparison filter is best suited for bare earth point data. It should not be run against a dataset using vegetation and buildings as the comparison will tend to treat many of those features as outliers. When using this outlier detection method on a LAS dataset, consider filtering for ground classified points. Alternatively consider using the Classify LAS Noise tool to identify noise points in LAS datasets.

  • The output points will be attributed with an integer field named REASON whose values identify the outlier identification criteria that resulted in the inclusion of the point measurement.

    • 0—Hard limit
    • 1—Hard limit and comparison filter
    • 2—Comparison filter
  • To eliminate the outlier points from a terrain dataset, consider using the Delete Terrain Points tool with the outlier points specified in the Area of Interest parameter.

Parameters

LabelExplanationData Type
Input Surface

The terrain, TIN, or LAS dataset that will be analyzed.

LAS Dataset Layer; Terrain Layer; TIN Layer
Output Feature Class

The feature class that will be produced.

Feature Class
Apply Hard Limit
(Optional)

Specifies use of absolute z minimum and maximum to find outliers.

  • Unchecked—Do not use the absolute z minimum and maximum to find outliers. This is the default.
  • Checked—Use the absolute z minimum and maximum to find outliers.
Boolean
Absolute Z Minimum
(Optional)

If hard limits are applied, any point with an elevation below this value will be considered an outlier. The default is 0.

Double
Absolute Z Maximum
(Optional)

If hard limits are applied, any point with an elevation above this value will be considered an outlier. The default is 0.

Double
Apply Comparison Filter
(Optional)

The comparison filter consists of three parameters for determining outliers: Z Tolerance, Slope Tolerance, and Exceed Tolerance Ratio.

  • Unchecked—Do not use the three comparison parameters (Z Tolerance, Slope Tolerance, and Exceed Tolerance Ratio) in assessing points.
  • Checked—Use the three comparison parameters (Z Tolerance, Slope Tolerance, and Exceed Tolerance Ratio) in assessing points. This is the default.
Boolean
Z Tolerance
(Optional)

Compares z-values of neighboring points if the comparison filter is applied. The default is 0.

Double
Slope Tolerance
(Optional)

The threshold of slope variance between consecutive points that will be used to identify outlier points. Slope is expressed as a percentage, with the default being 150.

Double
Exceed Tolerance Ratio
(Optional)

Defines the criteria for determining each outlier point as a function of the ratio of points in its natural neighborhood that must exceed the specified comparison filters. For example, the default value of 0.5 means at least half of the points surrounding the query point must exceed the comparison filters for the query point to be considered an outlier. A value of 0.7 means at least 70 percent of the neighbor points must exceed the tolerances.

Double
Outlier Cap
(Optional)

The maximum number of outlier points that can be written to the output. Once this value is reached, no further outliers are sought. The default is 2,500.

Long

arcpy.ddd.LocateOutliers(in_surface, out_feature_class, {apply_hard_limit}, {absolute_z_min}, {absolute_z_max}, {apply_comparison_filter}, {z_tolerance}, {slope_tolerance}, {exceed_tolerance_ratio}, {outlier_cap})
NameExplanationData Type
in_surface

The terrain, TIN, or LAS dataset that will be analyzed.

LAS Dataset Layer; Terrain Layer; TIN Layer
out_feature_class

The feature class that will be produced.

Feature Class
apply_hard_limit
(Optional)

Specifies use of absolute z minimum and maximum to find outliers.

  • APPLY_HARD_LIMITUse the absolute z minimum and maximum to find outliers.
  • NO_APPLY_HARD_LIMITDo not use the absolute z minimum and maximum to find outliers. This is the default.
Boolean
absolute_z_min
(Optional)

If hard limits are applied, any point with an elevation below this value will be considered an outlier. The default is 0.

Double
absolute_z_max
(Optional)

If hard limits are applied, any point with an elevation above this value will be considered an outlier. The default is 0.

Double
apply_comparison_filter
(Optional)

The comparison filter consists of three parameters for determining outliers: z_tolerance, slope_tolerance, and exceed_tolerance_ratio.

  • APPLY_COMPARISON_FILTERUse the three comparison parameters (z_tolerance, slope_tolerance, and exceed_tolerance_ratio) in assessing points. This is the default.
  • NO_APPLY_COMPARISON_FILTERDo not use the three comparison parameters (z_tolerance, slope_tolerance, and exceed_tolerance_ratio) in assessing points.
Boolean
z_tolerance
(Optional)

Compares z-values of neighboring points if the comparison filter is applied. The default is 0.

Double
slope_tolerance
(Optional)

The threshold of slope variance between consecutive points that will be used to identify outlier points. Slope is expressed as a percentage, with the default being 150.

Double
exceed_tolerance_ratio
(Optional)

Defines the criteria for determining each outlier point as a function of the ratio of points in its natural neighborhood that must exceed the specified comparison filters. For example, the default value of 0.5 means at least half of the points surrounding the query point must exceed the comparison filters for the query point to be considered an outlier. A value of 0.7 means at least 70 percent of the neighbor points must exceed the tolerances.

Double
outlier_cap
(Optional)

The maximum number of outlier points that can be written to the output. Once this value is reached, no further outliers are sought. The default is 2,500.

Long

Code sample

LocateOutliers example 1 (Python window)

The following sample demonstrates the use of this tool in the Python window.

arcpy.env.workspace = "C:/data"
arcpy.ddd.LocateOutliers("tin", "outliers.shp", "NO_APPLY_HARD_LIMIT", 0, 0, 
                        "APPLY_COMPARISON_FILTER", 0, 150, 0.5, 2500)
LocateOutliers example 2 (stand-alone script)

The following sample demonstrates the use of this tool in a stand-alone Python script.

'''**********************************************************************
Name: Delete Terrain Outliers
Description: Uses Locate Outliers to identify outlier points in 
             a terrain dataset, and eliminates the outliers from the 
             terrain with Delete Terrain Points.
**********************************************************************'''
# Import system modules
import arcpy

# Set Local Variables
arcpy.env.workspace = 'C:/data'
terrain = 'test.gdb/featuredataset/sample_terrain'
terrainPt = 'elevation_pts'  # name of terrain point data source
outliers = 'in_memory/outliers'

# Execute LocateOutliers
arcpy.ddd.LocateOutliers(terrain, outliers, 'APPLY_HARD_LIMIT', -10, 
                         350, 'APPLY_COMPARISON_FILTER', 1.2, 120, 
                         0.8, 8000)
# Execute Delete Terrain Points
arcpy.ddd.DeleteTerrainPoints(terrain, terrainPt, outliers)

Related topics