Create LAS Dataset (Data Management)
Summary
Creates a LAS dataset referencing one or more LAS files and optional surface constraint features.
Illustration
Usage
The LAS dataset is designed for use with airborne lidar data in the *.las or *.zlas formats. Supported LAS file versions are 1.0, 1.1, 1.2, and 1.3, and *.zlas files, which are compressed *.las files, can be created with the utility available here.
Each LAS file is examined to determine if its internal structure is consistent with the LAS specifications. If any LAS file fails to load into the LAS dataset, this may indicate the file is corrupted or has erroneous information in its header. Consider using Esri's CheckLAS utility to determine if some commonly encountered issues may exist in your data.
Surface constraint features can be used to enforce feature-derived elevation values that represent surface characteristics in the LAS dataset.
Each LAS file typically contains spatial reference information in its header which is read by the LAS dataset. If this information is missing or improperly defined, the LAS file will not be placed in its correct location. If the correct spatial reference is known, the LAS file can be properly georeferenced by creating a .prj file that shares the LAS file's name, resides in the same folder, and contains the string representation of the LAS file's coordinate system, similar to the .prj file associated with a shapefile.
Note:Consider using the Define LAS Projection tool that is included in the 3D Samples suite to assign a projection for LAS files that are not properly georeferenced.
LAS points can be classified into a number of categories that describe the material encountered by the lidar return, such as ground, building, or water. The American Society for Photogrammetry and Remote Sensing (ASPRS) defined the following class codes for LAS file versions 1.1, 1.2, and 1.3:
Classification Value
Classification Type
0
Never Classified
1
Unassigned
2
Ground
3
Low Vegetation
4
Medium Vegetation
5
High Vegetation
6
Building
7
Noise
8
Model Key
9
Water
10
Reserved for ASPRS Definition
11
Reserved for ASPRS Definition
12
Overlap
13–31
Reserved for ASPRS Definition
Note:While the LAS 1.0 specifications provide class codes ranging from 0 to 255, it does not have a standardized classification scheme. Any class codes used in 1.0 files would typically be defined by the data vendor and provided through auxiliary information.
Syntax
Parameter | Explanation | Data Type |
input [input,...] | The LAS files and folders containing LAS files that will be referenced by the LAS dataset. This information can be supplied as a string containing all the input data or a list of strings containing specific data elements (for example, "lidar1.las; lidar2.las; folder1; folder2" or ["lidar1.las", "lidar2.las", "folder1", "folder2"]). See Understanding tool syntax for more information on specifying lists for input. | File; Folder |
out_las_dataset |
The LAS dataset that will be created. | LAS Dataset |
folder_recursion (Optional) |
Specifies whether lidar data residing in the subdirectories of an input folder would get added to the LAS dataset.
| Boolean |
in_surface_constraints [[in_feature_class, height_field, SF_type],...] (Optional) | The feature classes that will be referenced by the LAS dataset. Each feature will need the following properties defined: in_feature_class—The feature class to be referenced by the LAS dataset. height_field—The field that specifies the source of elevation values for the features. Any numeric field in the feature's attribute table can be used. If the feature supports z-values, the feature geometry can be read by selecting the Shape.Z option. If no height is desired, specify the keyword <None> to create Z-less features whose elevation would be interpolated from the surface. SF_type—The surface feature type that defines how the feature geometry gets incorporated into the triangulation for the surface. Options with hard or soft designation refer to whether the feature edges represent distinct breaks in slope or a gradual change.
| Value Table |
spatial_reference (Optional) |
The spatial reference of the LAS dataset. If no spatial reference is explicitly assigned, the LAS dataset will use the coordinate system of the first input LAS file. If the input files do not contain any spatial reference information and the Input Coordinate System is not set, then the LAS dataset's coordinate system will be listed as unknown. | Coordinate System |
compute_stats (Optional) | Specifies whether statistics for the LAS files will be computed and a spatial index generated for the LAS dataset. The presence of statistics allows the LAS dataset layer's filtering and symbology options to only show LAS attribute values that exist in the LAS files. A .lasx auxiliary file is created for each LAS file.
| Boolean |
relative_paths (Optional) |
Specifies whether lidar files and surface constraint features will be referenced by the LAS dataset through relative or absolute paths. Using relative paths may be convenient for cases where the LAS dataset and its associated data will be relocated in the file system using the same relative location to one another.
| Boolean |
Code Sample
The following sample demonstrates the use of this tool in the Python window:
import arcpy
from arcpy import env
env.workspace = "C:/data"
arcpy.CreateLasDataset_management("folder_a; folder_b/5S4E.las",
"test.lasd", "RECURSION",
"LA/boundary.shp <None> Softclip;"\
"LA/ridges.shp Elevation hardline", "",
"COMPUTE_STATS", "RELATIVE_PATHS")
The following sample demonstrates the use of this tool in a stand-alone Python script:
'''*********************************************************************
Name: Export Elevation Raster from Ground LAS Measurements
Description: This script demonstrates how to export
ground measurements from LAS files to a raster using a
LAS dataset. This sample is designed to be used as a script
tool.
*********************************************************************'''
# Import system modules
import arcpy
import exceptions, sys, traceback
try:
# Set Local Variables
inLas = arcpy.GetParameterAsText(0)
recursion = arcpy.GetParameterAsText(1)
surfCons = arcpy.GetParameterAsText(2)
classCode = arcpy.GetParameterAsText(3)
returnValue = arcpy.GetParameterAsText(4)
spatialRef = arcpy.GetParameterAsText(5)
lasD = arcpy.GetParameterAsText(6)
outRaster = arcpy.GetParameterAsText(7)
cellSize = arcpy.GetParameter(8)
zFactor = arcpy.GetParameter(9)
if arcpy.ProductInfo == 'ArcView':
arcpy.CheckOutExtension('3D')
# Execute CreateLasDataset
arcpy.management.CreateLasDataset(inLas, lasD, recursion, surfCons, sr)
# Execute MakeLasDatasetLayer
lasLyr = arcpy.CreateUniqueName('Baltimore')
arcpy.management.MakeLasDatasetLayer(lasD, lasLyr, classCode, returnValue)
# Execute LasDatasetToRaster
arcpy.conversion.LasDatasetToRaster(lasLyr, outRaster, 'ELEVATION',
'TRIANGULATION LINEAR WINDOW_SIZE 10', 'FLOAT',
'CELLSIZE', cellSize, zFactor)
arcpy.GetMessages()
except arcpy.ExecuteError:
print arcpy.GetMessages()
except:
# Get the traceback object
tb = sys.exc_info()[2]
tbinfo = traceback.format_tb(tb)[0]
# Concatenate error information into message string
pymsg = 'PYTHON ERRORS:\nTraceback info:\n{0}\nError Info:\n{1}'\
.format(tbinfo, str(sys.exc_info()[1]))
msgs = 'ArcPy ERRORS:\n {0}\n'.format(arcpy.GetMessages(2))
# Return python error messages for script tool or Python Window
arcpy.AddError(pymsg)
arcpy.AddError(msgs)
finally:
arcpy.management.Delete(lasLyr)