tindex#

The tindex command is used to create a GDAL-style tile index for PDAL-readable point cloud types (see gdaltindex).

The tindex command has two modes. The first mode creates a spatial index file for a set of point cloud files. The second mode creates a point cloud file that is the result of merging the points from files referred to in a spatial index file that meet some criteria (usually a geographic region filter).

tindex Creation Mode#

$ pdal tindex create <tindex> <filespec>
--tindex               OGR-readable/writeable tile index output
--filespec             Build: Pattern of files to index. Merge: Output filename
--fast_boundary        Use extent instead of exact boundary
--lyr_name             OGR layer name to write into datasource
--tindex_name          Tile index column name
--ogrdriver, -f        OGR driver name to use
--t_srs                Target SRS of tile index
--a_srs                Assign SRS of tile with no SRS to this value
--write_absolute_path  Write absolute rather than relative file paths
--skip_different_srs   Reject files to be indexed with different SRS values
--stdin, -s            Read filespec pattern from standard input
--threads              Number of threads to use for file boundary creation
--simplify             Simplify the file's exact boundary
--threshold            Number of points a cell must contain to be declared 
                       positive space, when creating exact boundaries
--resolution           Cell edge length to be used when creating exact boundaries
--sample_size          Sample size for auto-edge length calculation in internal
                       hexbin filter (exact boundary)
--where                Expression describing points to be processed for exact
                       boundary creation

This command will index the files referred to by filespec and place the result in tindex. The tindex is a vector file or database that will be created by pdal as necessary to store the file index. The type of the index file can be specified by specifying the OGR code for the format using the --ogrdriver option. If no driver is specified, the format defaults to “ESRI Shapefile”. Any filetype that can be handled by OGR is acceptable.

In vector file-speak, each file specified by filespec is stored as a feature in a layer in the index file. The filespec is a glob pattern. and normally needs to be quoted to prevent shell expansion of wildcard characters.

Exact file boundaries (used when --fast_boundary is not set to true) are created with a grid of tessellated hexagons, in a modified version of filters.hexbin. This is controlled with the simplify, threshold, resolution and sample_size options.

Creation mode also supports parallel file processing by specifying the threads option.

tindex Merge Mode#

$ pdal tindex merge <tindex> <filespec>

This command will read the existing index file tindex and merge the points in the indexed files that pass any filter that might be specified, writing the output to the point cloud file specified in filespec. The type of the output file is determined automatically from the filename extension.

--tindex         OGR-readable/writeable tile index output
--filespec       Build: Pattern of files to index. Merge: Output filename
--lyr_name       OGR layer name to write into datasource
--tindex_name    Tile index column name
--ogrdriver, -f  OGR driver name to use
--bounds         Extent (in XYZ) to clip output to
--polygon        Well-known text of polygon to clip output
--t_srs          Spatial reference of the clipping geometry.

Example 1:#

Find all LAS files via find, send that file list via STDIN to pdal tindex, and write a SQLite tile index file with a layer named pdal:

$ find las/ -iname "*.las" | pdal tindex create index.sqlite -f "SQLite" \
    --stdin --lyr_name pdal

Example 2:#

Glob a list of LAS files, output the SRS for the index entries to EPSG:4326, and write out an SQLite file.

$ pdal tindex create index.sqlite "*.las" -f "SQLite" --lyr_name "pdal" \
    --t_srs "EPSG:4326"