Buscar puntos de LAS por proximidad (3D Analyst)

Resumen

Identifica los puntos LAS dentro de la proximidad tridimensional de entidades con z habilitada, además de la opción de volver a clasificar dichos puntos.

Uso

  • Esta herramienta actualiza la entidad de entrada con un campo que contiene el recuento de los puntos LAS incluidos en el radio de búsqueda especificado. No existe ningún límite en cuanto al número de puntos que puede generar esta herramienta; plantéese evitar el uso de distancias de búsqueda sumamente grandes.

  • Es posible hacer que la capa del dataset LAS limite los puntos LAS a mostrar y procesar seleccionando cualquier combinación de códigos de clasificación, marcadores de clasificación y valores de retorno en la configuración del filtro de la capa. Los filtros se pueden definir en el cuadro de diálogo Propiedades de capa o con la herramienta Crear capa de dataset LAS.

  • Al generar la entidad de punto de salida con geometría de punto simple, se agregará a la salida un campo denominado DIST3D que contendrá la distancia 3D desde el punto hasta la entidad de entrada más cercana.

Sintaxis

LocateLasPointsByProximity(in_las_dataset, in_features, search_radius, count_field, {out_features}, {geometry}, {class_code}, {compute_stats})
ParámetroExplicaciónTipo de datos
in_las_dataset

El dataset LAS que se va a procesar.

LAS Dataset Layer
in_features

Entidades multiparche, poligonales, de líneas o de puntos 3D cuya proximidad se usará para identificar puntos LAS.

Feature Layer
search_radius

Distancia alrededor de las entidades de entrada en las que se va a evaluar la presencia de puntos LAS y que se pueden proporcionar como una distancia lineal o como un campo numérico de la tabla de atributos de la entidad de entrada. Si el radio de búsqueda procede de un campo o de una distancia lineal cuyas unidades están especificadas como Desconocido, se utilizará la unidad lineal de la referencia espacial XY de las entidades de entrada.

Se admiten las siguientes unidades:

  • UNKNOWNDesconocido
  • INCHESPulgadas
  • FEETPies
  • YARDSYardas
  • MILESMillas
  • CENTIMETERSCentímetros
  • DECIMETERSDecímetros
  • METERSMetros
  • KILOMETERSKilómetros
Linear Unit; Field
count_field

El nombre del campo que se agregará a la tabla de atributos de la entidad de entrada y se rellenará con la cantidad de puntos LAS en la proximidad de cada entidad. El nombre de campo predeterminado es COUNT.

String
out_features
(Opcional)

Las entidades de puntos que representan los puntos LAS detectados dentro de la proximidad especificada de las entidades de entrada.

Feature Class
geometry
(Opcional)

Especifica la geometría de las entidades de punto de salida que representan los puntos LAS encontrados dentro de la proximidad especificada de las entidades de entrada.

  • MULTIPOINTEntidades multipunto que tendrán varios puntos en cada fila.
  • POINTEntidades de un solo punto que tendrán una única fila para cada punto LAS identificado.
String
class_code
(Opcional)

El valor del código de clase que se utilizará para reclasificar los puntos encontrados dentro del radio de búsqueda de las entidades de entrada.

Long
compute_stats
(Opcional)

Especifica si las estadísticas se deben calcular para los archivos LAS a los que hace referencia el dataset LAS. Calcular estadísticas proporciona un índice espacial para cada archivo LAS, lo que mejora el análisis y el rendimiento de la visualización. Las estadísticas también mejoran la experiencia de filtrado y simbología al limitar la visualización de los atributos LAS, como los códigos de clasificación y la información de retorno, a los valores presentes en el archivo LAS.

  • COMPUTE_STATSSe calcularán las estadísticas.
  • NO_COMPUTE_STATSNo se calcularán las estadísticas. Esta es la opción predeterminada.
Boolean

Salida derivada

NombreExplicaciónTipo de datos
out_las_dataset

El dataset LAS actualizado.

Capa de dataset LAS
derived_features

Las entidades 3D de entrada actualizadas.

Capa de entidades

Muestra de código

Ejemplo 1 de LocateLasPointsByProximity (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.LocateLasPointsByProximity_3d('lidar.lasd', 'powerlines.shp', 
                                    search_radius="10 Feet", 
                                    count_field="Near_Pts",
                                    out_features="located_pts.shp")
Ejemplo 2 de LocateLasPointsByProximity (script independiente)

En el siguiente ejemplo se muestra cómo usar esta herramienta en un script independiente de Python.

'''****************************************************************************
Name: Classify Noise Points
Description: Updates classification of version 1.0 LAS files to conform to
             the standardized class codes introduced in the 1.1 specifications.
             The code is designed for use as a script tool.
****************************************************************************'''
# Import system modules
import arcpy
import exceptions, sys, traceback

# Set Local Variables
inLas = arcpy.GetParameterAsText(0)
recursion = arcpy.GetParameterAsText(1)
lasd = arcpy.GetParameterAsText(2)
reclassList = arcpy.GetParameterAsText(3) #List of values '<oldCode> <newCode>'
calcStats = arcpy.GetParameter(4)

try:
    # Execute CreateLasDataset
    arcpy.management.CreateLasDataset(inLas, lasd, folder_recursion=recursion)
    # Execute Locate Outliers
    outlier_pts = 'in_memory/outliers'
    arcpy.ddd.LocateOutliers(lasd, out_feature_class=outlier_pts, 
                            apply_hard_limit='Apply_Hard_Limit', 
                            absolute_z_min=-15, absolute_z_max=680, 
                            apply_comparison_filter='Apply_Comparison_Filter',
                            z_tolerance=0, slope_tolerance=150, 
                            exceed_tolerance_ratio=0.5, outlier_cap=3000)
    # Execute ChangeLasClassCodes
    arcpy.ddd.LocateLasPointsByProximity(lasd, in_features=outlier_pts, 
                                         search_radius='0.5 Centimeters', 
                                         class_code=18)
    # Report messages
    arcpy.GetMessages(0)

except arcpy.ExecuteError:
    print(arcpy.GetMessages())

Información de licenciamiento

  • Basic: Requiere 3D Analyst
  • Standard: Requiere 3D Analyst
  • Advanced: Requiere 3D Analyst

Temas relacionados