Filters operate on data as inline operations. They can remove, modify, reorganize, and add points to the data stream as it goes by. Some filters can only operate on dimensions they understand (consider filters.reprojection doing geographic reprojection on XYZ coordinates), while others do not interrogate the point data at all and simply reorganize or split data.
PDAL filters commonly create new dimensions (e.g.,
alter existing ones (e.g.,
Classification). These filters will not
invalidate an existing KD-tree.
We treat those filters that alter XYZ coordinates separately.
When creating new dimensions, be mindful of the writer you are using and whether or not the custom dimension can be written to disk if that is the desired behavior.
Label ground/non-ground returns using [Zhang2016].
Label ground/non-ground returns using [Zhang2003].
Label ground/non-ground returns using [Bartels2010].
Label ground/non-ground returns using [Pingel2013].
Label ground/non-ground returns using estimate flight trajectory given multi-return point cloud data with timing information.
Update pointwise classification using k-nearest neighbor consensus voting.
Height Above Ground
Compute pointwise height above ground using triangulation. Requires points to classified as ground/non-ground prior to estimating.
Compute pointwise height above GDAL-readable DEM raster.
Compute pointwise height above ground estimate. Requires points to be classified as ground/non-ground prior to estimating.
Extract and label clusters using Euclidean distance metric. Returns a new dimension
ClusterIDthat indicates the cluster that a point belongs to. Points not belonging to a cluster are given a cluster ID of 0.
Perform Density-Based Spatial Clustering of Applications with Noise (DBSCAN) [Ester1996].
Segment and label individual trees. Returns a new dimension
TreeIDthat indicates the tree that a point belongs to.
TreeIDstarts at 1, with non-tree points given a
TreeIDof 0. [Li2012].
Perform K-means clustering using Lloyd’s algorithm. Returns a new dimension
ClusterIDwith each point being assigned to a cluster.
ClusterIDstarts at 0. [Lloyd1982].
Estimate pointwise planarity, based on k-nearest neighbors. Returns a new dimension
Coplanarwhere a value of 1 indicates that a point is part of a coplanar neighborhood (0 otherwise).
Filter that calculates local features based on the covariance matrix of a point’s neighborhood.
Compute pointwise eigenvalues, based on k-nearest neighbors.
Compute pointwise rank, based on k-nearest neighbors.
Compute pointwise Local Outlier Factor (along with K-Distance and Local Reachability Distance).
Compute a criterion for point neighbors based on the miniball algorithm.
Compute a distance metric based on nearest neighbors.
Compute pointwise normal and curvature, based on k-nearest neighbors.
Compute optimal k nearest neighbors and corresponding radius by minimizing pointwise eigenentropy. Creates two new dimensions
Compute a deviation of a point from a manifold approximating its neighbors.
Compute pointwise density of points within a given radius.
Compute the percentage of points that are considered uni-directional neighbors of a point.
Compute a smoothed ‘Z’ value based on the ‘Z’ value of neighboring points.
Copy data from one dimension to another.
There are currently three PDAL filters that can be used to reorder points. These filters will invalidate an existing KD-tree.
PDAL filters that move XYZ coordinates will invalidate an existing KD-tree.
Compute and apply transformation between two point clouds using the Coherent Point Drift algorithm.
Compute and apply transformation between two point clouds using the Iterative Closest Point algorithm.
Compute a rigid transformation between two point clouds using the teaser algorithm.
Apply coordinates operation on point triplets, based on PROJ pipeline string, WKT2 coordinates operations or URN definitions.
Reproject data using GDAL from one coordinate system to another.
Transform each point using a 4x4 transformation matrix.
Transforms each in a new parametric coordinate system along a given poyline.
Georeference point cloud.
Some PDAL filters will cull points, returning a point cloud that is smaller than the input. These filters will invalidate an existing KD-tree.
Keep every Nth point.
The Farthest Point Sampling Filter adds points from the input to the output PointView one at a time by selecting the point from the input cloud that is farthest from any point currently in the output.
Relaxation dart throwing is a hierarchical variant of Poisson disk sampling, shrinking the minimum radius between iterations until the target number of output points is achieved.
Perform Poisson sampling and return only a subset of the input points.
Return the point within each voxel that is nearest the voxel center.
Return the point within each voxel that is nearest the voxel centroid.
Retain either first point detected in each voxel or center of a populated voxel, depending on mode argument.
Pass only points given an expression
Return N points from beginning of the point cloud.
Return a single point with min/max value in the named dimension.
Cull points using MongoDB-style expression syntax.
Pass only points given a dimension/range.
Return N points from end of the point cloud.
PDAL filters can be used to split the incoming point cloud into subsets. These filters will invalidate an existing KD-tree.
Multiple point clouds can be joined to form a single point cloud. These filters will invalidate an existing KD-tree.
Merge data from two different readers into a single stream.
PDAL filters can be used to create new metadata. These filters will not invalidate an existing KD-tree.
Meshes can be computed from point clouds. These filters will invalidate an existing KD-tree.
Create mesh using Delaunay triangulation.
Create mesh using the Greedy Projection Triangulation approach.
Create mesh using the Poisson surface reconstruction algorithm [Kazhdan2006].
Create a raster from an existing triangulation.
PDAL has three filters than can be used to pass point clouds to other languages. These filters will invalidate an existing KD-tree.
Provide a hook for a simple point-by-point callback.