Tile LAS (3D Analyst)

Summary

Creates a set of nonoverlapping LAS files whose horizontal extents are divided by a regular grid.

Usage

  • The tiling operation will retain all points that are within the processing extent of the LAS dataset being tiled regardless of any layer filter settings that may be applied. If filtering is needed, consider using the Extract LAS tool either before or after tiling the LAS dataset.

  • Subdividing large LAS files that exceed 500 MB in size will improve the performance of any operation that relies on reading the data in spatial clusters, such as analysis operations that require the creation of a surface, or data visualization operations. The default tiling scheme produces square tiles whose width and height is defined by a target size limit of 250 MB. Points from multiple LAS files that fall within the area of one tile will be merged into the output tile.

  • A LAS dataset composed of LAS files with overlapping extents may yield inaccurate results in operations that rely on a file-by-file analysis. For example, the point spacing estimate is derived by an analysis of the points at each file over the area of coverage within that file and, consequently, has no mechanism for adjusting to the impact of points in the overlapping regions. Likewise, the Thin LAS tool also relies on file-by-file processing, and the result will not conform to the expected output in the regions where file overlaps exist.

  • Rearranging the LAS points will spatially cluster the lidar data and improve its performance when visualizing or performing analysis operations. This process will require the creation of a temporary file. Consider specifying a folder on a solid-state drive as the Scratch Workspace in the environment settings to improve the speed of this operation.

  • Consider specifying the ZLAS compression if the LAS data is already classified and ready for archiving or distribution. ZLAS files are not editable and cannot be reclassified, but they typically reduce the file size to roughly one-third of the uncompressed LAS file.

  • LAS tiles can be defined by one of the following methods:

    • Specify a target file size of the uncompressed LAS file. This size is an estimate for a LAS tile with even point distribution across the entire extent.
    • Specify a tile width and height.
    • Specify an input feature to define the tiling schema. Each polygon should be rectangular and have a uniform width and height. The Create Fishnet or Generate Tessellation tool can be used to create tiled polygons that overlap the extent of your LAS data. Custom LAS tile names can be assigned using input features and choosing a text field in the Naming Method parameter.
  • The output LAS tiles can be reprojected by either specifying an Output Coordinate System in the environment settings or using input features with a different spatial reference than the original LAS files. A z-datum transformation can be accomplished only if the vertical datum transformation grids have been installed.

  • This tool can be used to merge LAS points distributed across many files into one LAS file by specifying a tile size that is larger than the extent of the input LAS dataset.

Syntax

arcpy.3d.TileLas(in_las_dataset, target_folder, {base_name}, {out_las_dataset}, {compute_stats}, {las_version}, {point_format}, {compression}, {las_options}, {tile_feature}, {naming_method}, {file_size}, {tile_width}, {tile_height}, {tile_origin})
ParameterExplanationData Type
in_las_dataset

The LAS dataset to process.

LAS Dataset Layer
target_folder

The folder where the tiled LAS files will be written.

Folder
base_name
(Optional)

The name that each output file will begin with.

String
out_las_dataset
(Optional)

The new LAS dataset that references the tiled LAS files created by this tool. This is optional.

LAS Dataset
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
las_version
(Optional)

Specifies the LAS file version of each output file. The default is 1.4.

  • 1.0This version supported 256 unique class codes but did not have a predefined classification schema.
  • 1.1This version introduced a predefined classification scheme, and point record formats 0 and 1, and the synthetic classification flag for points that were derived from a source other than a lidar sensor.
  • 1.2This version featured support for GPS time and RGB records in point records 2 and 3.
  • 1.3This version added support for point records 4 and 5 for waveform data. However, waveform information is not read in ArcGIS.
  • 1.4This version introduced point record formats 6 through 10, along with new class definitions, 256 unique class codes, and the overlap classification flag.
String
point_format
(Optional)

The point record format of the output LAS files. The available options will vary based on the LAS file version specified in the point_format parameter.

Long
compression
(Optional)

Specifies whether the output LAS file will be in a compressed format or the standard LAS format.

  • NO_COMPRESSIONThe output will be in the standard LAS format (*.las file). This is the default.
  • ZLASOutput LAS files will be compressed in the zLAS format.
String
las_options
[las_options,...]
(Optional)

A list of optional modifications to the output LAS files.

  • REARRANGE_POINTSLAS points will be arranged according to their spatial clustering.
  • REMOVE_VLRVariable-length records that are added after the header and the point records of each file will be removed.
  • REMOVE_EXTRA_BYTESExtra bytes that are present with each point record in the input LAS file will be removed.
String
tile_feature
(Optional)

The polygon features that define the tile width and height to be used when tiling the lidar data. The polygons are presumed to be rectangular, and the first feature's extent is used to define the tile width and height.

Feature Layer
naming_method
(Optional)

Specifies the way each output tile is named. When input features are specified in the tile_feature parameter, the name of its text or numeric fields can also be specified as a source for defining the name of the output LAS files. This name will be appended to the end of the text defined in the base_name parameter. The following automatically generated naming conventions are supported:

  • XY_COORDSThe X and Y coordinates of the center point of each tile will be appended. This is the default.
  • ROW_COLUMNThe tile name will be assigned based on the row and column it belongs to in the overall tiling scheme. The rows increment from the top down, while the columns increment from left to right.
  • ORDINALThe tile name will be assigned based on its order of creation, where 1 is the first tile, 2 is the second, and so on.
String
file_size
(Optional)

This value, which is expressed in megabytes, represents the upper limit of the uncompressed file size of an output LAS tile with uniform point distribution across its entire extent. The default is 250, and the value is used to estimate the tile width and height. This parameter is ignored when values are provided for the tile_feature or tile_width and tile_height parameters.

Double
tile_width
(Optional)

The width of each tile. If a value is specified for the tile width and height, the file_size parameter will be ignored. When input features are specified in the tile_feature parameter, the tile width will be derived from the height of the first feature, and this parameter will be ignored.

Linear Unit
tile_height
(Optional)

The height of each tile. If a value is specified for the tile width and height, the file_size parameter will be ignored. When input features are specified in the tile_feature parameter, the tile height will be derived from the height of the first feature, and this parameter will be ignored.

Linear Unit
tile_origin
(Optional)

The coordinates of the origin of the tiling grid. The default values are obtained from the lower left corner of the input LAS dataset. When input features are specified in the tile_feature parameter, the origin will be inherited from the lower left corner of the first feature, and this parameter will be ignored.

Point

Derived Output

NameExplanationData Type
out_folder

The folder that the output LAS files will be written to.

Folder

Code sample

TileLas example 1 (Python window)

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

arcpy.env.workspace = 'C:/data'

arcpy.ddd.TileLas('Denver_2', basename='2014_', out_las_dataset='Denver_2014.lasd', 
                  las_version='1.4', point_format=6, compression='ZLAS Compression', 
                  las_options=['Rearrange points'], naming_method='ROW_COLUMN', file_size=300)
TileLas example 2 (stand-alone script)

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

'''****************************************************************************
       Name: Tile LAS File
Description: Creates tiled LAS files form an untiled collection.
****************************************************************************'''
# Import system modules
import arcpy
import tempfile
import math

in_las = arcpy.GetParameterAsText(1) # The LAS files that need to be tiled
out_folder = arcpy.GetParameterAsText(2) # folder for LAS files
basename = arcpy.GetParameterAsText(3) # basename for output files
out_lasd = arcpy.GetParameterAsText(4) # output LAS dataset


try:
    # Create temp LAS dataset to reference LAS files that will be tiled
    temp_lasd = arcpy.CreateUniqueName('temp.lasd', tempfile.gettempdir())
    arcpy.management.CreateLasDataset(in_las, temp_lasd)
    arcpy.ddd.TileLas(temp_lasd, out_folder, basename, out_lasd, las_version=1.4, 
                      point_format=7, file_size=300)
    arcpy.management.Delete(temp_lasd)
    arcpy.ddd.ClassifyLasGround(out_lasd, method='AGGRESSIVE')
    arcpy.ddd.ClassifyLasBuilding(out_lasd, min_height='3 Meters', min_area='4 Meters')
    arcpy.ddd.ClassifyLasByHeight(out_lasd, height_classification=[(3, 6), (4,20), (5,70)],
                                  noise='All Noise', compute_stats='COMPUTE_STATS')

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

Licensing information

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

Related topics