# filters.approximatecoplanar¶

filters.approximatecoplanar filter estimates the planarity of a neighborhood of points by first computing eigenvalues for the points and then tagging those points for which the following is true:

$\lambda_1 > (thresh_1 * \lambda_0) \&\& (\lambda_1 * thresh_2) > \lambda_2$

where $$\lambda_0$$, $$\lambda_1$$, $$\lambda_2$$ are the eigenvalues in ascending order. The threshold values $$thresh_1$$ and $$thresh_2$$ are user-defined and default to 25 and 6 respectively.

The filter returns a point cloud with a new dimension Coplanar that indicates those points that are part of a neighborhood that is approximately coplanar (1) or not (0).

Eigenvalue estimation is performed using Eigen’s SelfAdjointEigenSolver. For more information see https://eigen.tuxfamily.org/dox/classEigen_1_1SelfAdjointEigenSolver.html.

Default Embedded Stage

This stage is enabled by default

## Example¶

The sample pipeline presented below estimates the planarity of a point based on its eight nearest neighbors using the filters.approximatecoplanar filter. A filters.range stage then filters out any points that were not deemed to be coplanar before writing the result in compressed LAZ.

{
"pipeline":[
"input.las",
{
"type":"filters.approximatecoplanar",
"knn":8,
"thresh1":25,
"thresh2":6
},
{
"type":"filters.range",
"limits":"Coplanar[1:1]"
},
"output.laz"
]
}


## Options¶

knn
The number of k-nearest neighbors. [Default: 8]
thresh1
The threshold to be applied to the smallest eigenvalue. [Default: 25]
thresh2
The threshold to be applied to the second smallest eigenvalue. [Default: 6]