Locate LAS Points By Proximity (3D Analyst)

Summary

Identifies LAS points within the three-dimensional proximity of z-enabled features along with the option to reclassify those points.

Usage

  • This tool updates the input feature with a field that contains the count of LAS points that fall within the specified search radius. There is no limit to the number of points that can be generated by this tool, so consider avoiding the use of extremely large search distances.

  • You can have the LAS dataset layer limit the LAS points that are displayed and processed by selecting any combination of classification codes, classification flags, and return values in the layer's filter settings. The filters can be defined on the Layer Properties dialog box or in the Make LAS Dataset Layer tool.

  • When generating the output point feature using single point geometry, a field named DIST3D will be added to the output that will contain the 3D distance from the point to the nearest input feature.

Parameters

LabelExplanationData Type
Input LAS Dataset

The LAS dataset that will be processed.

LAS Dataset Layer
Input 3D Features

The 3D point, line, polygon, or multipatch features whose proximity will be used for identifying LAS points.

Feature Layer
Search Radius

The distance around the input features that will be evaluated for the presence of LAS points, which can be provided as either a linear distance or a numeric field in the input feature's attribute table. If the search radius is derived from a field or a linear distance whose units are specified as Unknown, the linear unit of the input features' XY spatial reference is used.

Linear Unit; Field
Count Field

The name of the field that will be added to the input feature's attribute table and populated with the number of LAS points in each feature's proximity. The default field name is COUNT.

String
Output Feature Class
(Optional)

The point features that represent the LAS points detected within the specified proximity of the input features.

Feature Class
Output Geometry Type
(Optional)

Specifies the geometry of the output point features that represent the LAS points found within the specified proximity of the input features.

  • MultipointMultipoint features that will have multiple points in each row.
  • PointSingle-point features that will have a unique row for each identified LAS point.
String
New Class Code
(Optional)

The class code value that will be used to reclassify the points found within the search radius of the input features.

Long
Compute statistics
(Optional)

Specifies whether statistics will be computed for the .las files referenced by the LAS dataset. Computing statistics provides a spatial index for each .las file, which improves analysis and display performance. Statistics also enhance the filtering and symbology experience by limiting the display of LAS attributes, such as classification codes and return information, to values that are present in the .las file.

  • Checked—Statistics will be computed. This is the default.
  • Unchecked—Statistics will not be computed.
Boolean
Update pyramid
(Optional)

Specifies whether the LAS dataset pyramid will be updated after the class codes are modified.

  • Checked—The LAS dataset pyramid will be updated. This is the default.
  • Unchecked—The LAS dataset pyramid will not be updated.
Boolean

Derived Output

LabelExplanationData Type
Updated Input LAS Dataset

The updated LAS dataset.

LAS Dataset Layer
Updated Input 3D Features

The updated input 3D features.

Feature Layer

arcpy.ddd.LocateLasPointsByProximity(in_las_dataset, in_features, search_radius, count_field, {out_features}, {geometry}, {class_code}, {compute_stats}, {update_pyramid})
NameExplanationData Type
in_las_dataset

The LAS dataset that will be processed.

LAS Dataset Layer
in_features

The 3D point, line, polygon, or multipatch features whose proximity will be used for identifying LAS points.

Feature Layer
search_radius

The distance around the input features that will be evaluated for the presence of LAS points, which can be provided as either a linear distance or a numeric field in the input feature's attribute table. If the search radius is derived from a field or a linear distance whose units are specified as Unknown, the linear unit of the input features' XY spatial reference is used.

Linear Unit; Field
count_field

The name of the field that will be added to the input feature's attribute table and populated with the number of LAS points in each feature's proximity. The default field name is COUNT.

String
out_features
(Optional)

The point features that represent the LAS points detected within the specified proximity of the input features.

Feature Class
geometry
(Optional)

Specifies the geometry of the output point features that represent the LAS points found within the specified proximity of the input features.

  • MULTIPOINTMultipoint features that will have multiple points in each row.
  • POINTSingle-point features that will have a unique row for each identified LAS point.
String
class_code
(Optional)

The class code value that will be used to reclassify the points found within the search radius of the input features.

Long
compute_stats
(Optional)

Specifies whether statistics will be computed for the .las files referenced by the LAS dataset. Computing statistics provides a spatial index for each .las file, which improves analysis and display performance. Statistics also enhance the filtering and symbology experience by limiting the display of LAS attributes, such as classification codes and return information, to values that are present in the .las file.

  • COMPUTE_STATSStatistics will be computed. This is the default.
  • NO_COMPUTE_STATSStatistics will not be computed.
Boolean
update_pyramid
(Optional)

Specifies whether the LAS dataset pyramid will be updated after the class codes are modified.

  • UPDATE_PYRAMIDThe LAS dataset pyramid will be updated. This is the default.
  • NO_UPDATE_PYRAMIDThe LAS dataset pyramid will not be updated.
Boolean

Derived Output

NameExplanationData Type
out_las_dataset

The updated LAS dataset.

LAS Dataset Layer
derived_features

The updated input 3D features.

Feature Layer

Code sample

LocateLasPointsByProximity example 1 (Python window)

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

import arcpy
from arcpy import env

arcpy.CheckOutExtension('3D')
env.workspace = 'C:/data'
arcpy.ddd.LocateLasPointsByProximity('lidar.lasd', 'powerlines.shp', 
                                     search_radius="10 Feet", 
                                     count_field="Near_Pts",
                                     out_features="located_pts.shp")
LocateLasPointsByProximity example 2 (stand-alone script)

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

'''****************************************************************************
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())

Related topics