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})
Parameter | Explanation | Data 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.
| Boolean |
las_version (Optional) | Specifies the LAS file version of each output file. The default is 1.4.
| 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.
| String |
las_options [las_options,...] (Optional) | A list of optional modifications to the output LAS files.
| 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:
| 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
Name | Explanation | Data Type |
out_folder | The folder that the output LAS files will be written to. | Folder |
Code sample
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)
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())
Environments
Licensing information
- Basic: Requires 3D Analyst
- Standard: Requires 3D Analyst
- Advanced: Requires 3D Analyst