描述
标识 terrain、TIN 或 LAS 数据集中超出高程值定义范围的异常高程测量或存在与周围表面不一致的坡度特征的异常高程测量。
使用
-
可针对异常值检测应用应用硬限制和应用比较过滤器选项。如果启用两个选项,则先应用硬限制。
应用硬限制选项会将高程值低于 Z 最小绝对值和高于 Z 最大绝对值的任何点视为异常值。如果表面的有效高程值范围已知,请考虑使用此选项。
考虑使用应用比较过滤器选项来定位超出相对于邻近测量值的高度或斜度差的数据点。此选项将测试表面中每个测量值与其自然相邻点的高度和坡度偏差。超出容差比选项用于确定查询点邻域中周围测量值的数量,将该点视为异常值之前,坡度或高度容差必须超过该数量。
- 对于任何有 X 个通过三角形边连接节点的给定点,如果从该给定点到连接点的坡度大于 m 个点中的坡度容差(其中 m 是超出容差比的 n 倍),那么此点将视为异常值。
比较过滤器最适用于裸露地表点数据。不应针对使用植被和建筑物的数据集运行比较过滤器,因为比较可能会将其中许多要素视为异常值。针对 LAS 数据集使用此异常值检测方法时,请考虑过滤地面分类点。或者考虑使用分类 LAS 噪点工具来识别 LAS 数据集中的噪点。
输出点会将名为 REASON 的整型字段作为属性,该字段的值可标识包括点测量值得出的异常值识别条件
- 0 - 硬限制
- 1 - 硬限制和比较过滤器
- 2 - 比较过滤器
要从 terrain 数据集消除异常值点,请考虑针对在感兴趣区域参数中指定的异常值点使用删除 Terrain 点工具。
语法
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})
参数 | 说明 | 数据类型 |
in_surface | 将要分析的 terrain、TIN 或 LAS 数据集。 | LAS Dataset Layer; Terrain Layer; TIN Layer |
out_feature_class | 将由此工具生成的要素类。 | Feature Class |
apply_hard_limit (可选) | 指定使用 Z 最小绝对值和 Z 最大绝对值寻找异常值。
| Boolean |
absolute_z_min (可选) | 如果应用了硬限制,那么任何一个点的高程低于此值将被视为异常值。默认值为 0。 | Double |
absolute_z_max (可选) | 如果应用了硬限制,那么任何一个点的高程高于此值将被视为异常值。默认值为 0。 | Double |
apply_comparison_filter (可选) | 比较过滤器包含三个用于确定异常点的参数:z_tolerance、slope_tolerance 和 exceed_tolerance_ratio。
| Boolean |
z_tolerance (可选) | 在应用了比较过滤器的情况下比较邻近点的 Z 值。默认值为 0。 | Double |
slope_tolerance (可选) | 用于标识异常值点的连续点之间坡度变化的阈值。坡度用百分比表示,默认为 150。 | Double |
exceed_tolerance_ratio (可选) | 将确定每个异常值点的条件定义为其邻域内必须超出指定比较过滤器的点比例的函数。例如,默认值 0.5 表示查询点周围至少有一半的点必须超出比较过滤器,这样查询点才会被视为异常值。值 0.7 表示至少 70% 的相邻点必须超出容差。 | Double |
outlier_cap (可选) | 异常值点的最大数量可被写入至输出。一旦达到了该值,将无法搜索其他异常值。默认值为 2500。 | Long |
代码示例
定位异常值 (LocateOutliers) 示例 1(Python 窗口)
下面的示例演示了如何在 Python 窗口中使用此工具。
import arcpy
from arcpy import env
arcpy.CheckOutExtension("3D")
env.workspace = "C:/data"
arcpy.LocateOutliers_3d("tin", "outliers.shp", "NO_APPLY_HARD_LIMIT", 0, 0,
"APPLY_COMPARISON_FILTER", 0, 150, 0.5, 2500)
定位异常值 (LocateOutliers) 示例 2(独立脚本)
下面的示例演示了如何在独立 Python 脚本中使用此工具。
'''**********************************************************************
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
import exceptions, sys, traceback
from arcpy import env
try:
arcpy.CheckOutExtension('3D')
# Set Local Variables
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)
arcpy.CheckInExtension('3D')
except arcpy.ExecuteError:
print arcpy.GetMessages()
except:
# Get the traceback object
tb = sys.exc_info()[2]
tbinfo = traceback.format_tb(tb)[0]
# Concatenate error information into message string
pymsg = 'PYTHON ERRORS:\nTraceback info:\n{0}\nError Info:\n{1}'\
.format(tbinfo, str(sys.exc_info()[1]))
msgs = 'ArcPy ERRORS:\n {0}\n'.format(arcpy.GetMessages(2))
# Return python error messages for script tool or Python Window
arcpy.AddError(pymsg)
arcpy.AddError(msgs)
环境
许可信息
- Basic: 需要 3D Analyst
- Standard: 需要 3D Analyst
- Advanced: 需要 3D Analyst