Resumen
Identifica mediciones anómalas de elevación en datasets de terreno, TIN o LAS que superen un rango definido de valores de elevación o que tengan características de pendiente incoherentes con la superficie circundante.
Uso
-
Las opciones Aplicar límite estricto y Aplicar filtro de comparación se pueden aplicar para la detección de los valores atípicos. Si se habilitan las dos opciones, el límite estricto se aplica primero.
La opción Aplicar límite estricto tratará todos los puntos que tengan un valor de elevación por debajo del Mínimo Z absoluto y por encima del Máximo Z absoluto como un valor atípico. Plantéese utilizar esta opción si se conoce el rango de valores de elevación válidos de la superficie.
Plantéese utilizar la opción Aplicar filtro de comparación para localizar los puntos de datos que superen una diferencia de altura o pendiente relativa a las mediciones vecinas. Todas las mediciones de la superficie se prueban en cuanto a desviación de altura y pendiente a partir de sus vecinos naturales. La opción Superar relación de tolerancia se utiliza para determinar el número de mediciones de alrededor del vecindario del punto de consulta, punto que la tolerancia de altura o pendiente debe superar antes de considerar el punto como valor atípico.
- Para cualquier punto que tenga X número de nodos conectados por bordes de triángulo, si la pendiente desde él a un punto conectado es mayor que la Tolerancia de pendiente en m puntos (donde m es n veces el valor de Superar relación de tolerancia), el punto se considera un valor atípico.
El filtro de comparación es más apropiado para datos de puntos de tierra desnuda. No se debe ejecutar para un dataset que utilice vegetación y edificios, ya que la comparación tenderá a tratar varias de esas entidades como valores atípicos. Al utilizar este método de detección de valores atípicos en un dataset LAS, plantéese filtrar por puntos clasificados del suelo. Plantéese utilizar la herramienta Clasificar ruido de LAS para identificar puntos de ruido en los datasets LAS.
Los puntos de salida se asociarán con un campo entero llamado REASON cuyos valores identifican los criterios de identificación de valores atípicos que han llevado a la inclusión de la medición del punto.
- 0: Límite estricto
- 1: Límite estricto y filtro de comparación
- 2: Filtro de comparación
Para eliminar los puntos del valor atípico de un dataset de terreno, plantéese utilizar la herramienta Eliminar puntos de terreno con los puntos del valor atípico especificados en el parámetro Área de interés.
Sintaxis
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})
Parámetro | Explicación | Tipo de datos |
in_surface | El dataset de terreno, TIN o LAS que se analizará. | LAS Dataset Layer; Terrain Layer; TIN Layer |
out_feature_class | La clase de entidad que generará esta herramienta. | Feature Class |
apply_hard_limit (Opcional) | Especifica el uso del mínimo y máximo Z absolutos para encontrar valores atípicos.
| Boolean |
absolute_z_min (Opcional) | Si se aplican límites estrictos, todo punto con una elevación por debajo de este valor se considerará un valor atípico. El valor predeterminado es 0. | Double |
absolute_z_max (Opcional) | Si se aplican límites estrictos, todo punto con una elevación por encima de este valor se considerará un valor atípico. El valor predeterminado es 0. | Double |
apply_comparison_filter (Opcional) | El filtro de comparación consta de tres parámetros para determinar los valores atípicos: z_tolerance, slope_tolerance y exceed_tolerance_ratio.
| Boolean |
z_tolerance (Opcional) | Compara valores Z de puntos vecinos si se aplica el filtro de comparación. El valor predeterminado es 0. | Double |
slope_tolerance (Opcional) | El umbral de varianza de pendiente entre puntos consecutivos que se utilizará para identificar puntos de valor atípico. La pendiente se expresa como porcentaje, con el valor predeterminado de 150. | Double |
exceed_tolerance_ratio (Opcional) | Define los criterios para determinar cada punto de valor atípico como función de la relación de puntos de su vecindad natural que deben superar los filtros de comparación especificados. Por ejemplo, el valor predeterminado 0,5 significa que, al menos, la mitad de los puntos que rodean al punto de consulta deben superar los filtros de comparación para que el punto de consulta se considere un valor atípico. Un valor de 0,7 significa que al menos el 70% de los puntos vecinos deben sobrepasar las tolerancias. | Double |
outlier_cap (Opcional) | La cantidad máxima de puntos de valores atípicos que pueden escribir en la salida. Una vez alcanzado este valor no se buscan más valores atípicos. El valor predeterminado es 2.500. | Long |
Muestra de código
Ejemplo 1 de LocateOutliers (ventana de Python)
En el siguiente ejemplo se muestra cómo usar esta herramienta en la ventana de 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)
Ejemplo 2 de LocateOutliers (script independiente)
En el siguiente ejemplo se muestra cómo usar esta herramienta en un script independiente de 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)
Entornos
Información de licenciamiento
- Basic: Requiere 3D Analyst
- Standard: Requiere 3D Analyst
- Advanced: Requiere 3D Analyst