Skip To Content

Locate LAS Points By Proximity

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 through the Layer Properties dialog box or 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.

Syntax

LocateLasPointsByProximity(in_las_dataset, in_features, search_radius, count_field, {out_features}, {geometry}, {class_code}, {compute_stats})
ParameterExplanationData Type
in_las_dataset

The LAS dataset to process.

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.

The following units are supported:

  • UNKNOWNUnknown
  • INCHESInches
  • FEETFeet
  • YARDSYards
  • MILESMiles
  • CENTIMETERSCentimeters
  • DECIMETERSDecimeters
  • METERSMeters
  • KILOMETERSKilometers
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 should 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, like classification codes and return information, to values that are present in the LAS file.

  • COMPUTE_STATSStatistics will be computed.
  • NO_COMPUTE_STATSStatistics will not be computed. This is the default.
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.LocateLasPointsByProximity_3d('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())

Licensing information

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

Related topics