The Mongo Filter applies query logic to the input point cloud based on a MongoDB-style query expression using the point cloud attributes.
.. embed::
.. streamable::
This example passes through only the points whose Classification is non-zero.
[
"input.las",
{
"type": "filters.mongo",
"expression": {
"Classification": { "$ne": 0 }
}
},
"filtered.las"
]
This example passes through only the points whose ReturnNumber
is equal to the NumberOfReturns
and the NumberOfReturns
is greater than 1.
[
"input.las",
{
"type": "filters.mongo",
"expression": { "$and": [
{ "ReturnNumber": "NumberOfReturns" },
{ "NumberOfReturns": { "$gt": 1 } }
] }
},
"filtered.las"
]
- expression
- A JSON query :ref:`expression` containing a combination of query comparisons and logical operators.
A query expression is a combination of comparison and logical operators that define a query which can be used to select matching points by their attribute values.
There are 8 valid query comparison operators:
$eq
: Matches values equal to a specified value.$gt
: Matches values greater than a specified value.$gte
: Matches values greater than or equal to a specified value.$lt
: Matches values less than a specified value.$lte
: Matches values less than or equal to a specified value.$ne
: Matches values not equal to a specified value.$in
: Matches any of the values specified in the array.$nin
: Matches none of the values specified in the array.
Comparison operators compare a point cloud attribute with an operand or an
array of operands. An operand is either a numeric constant or a string
representing a dimension name. For all comparison operators except for $in
and $nin
, the comparison value must be a single operand. For $in
and
$nin
, the value must be an array of operands.
Comparison operator specifications must be contained within an object whose key is the dimension name to be compared.
{ "Classification": { "$eq": 2 } }
{ "Intensity": { "$gt": 0 } }
{ "Classification": { "$in": [2, 6, 9] } }
The $eq
comparison operator may be implicitly invoked by setting an
attribute name directly to a value.
{ "Classification": 2 }
There are 4 valid logical operators:
$and
: Applies a logical and on the expressions of the array and returns a match only if all expressions match.$not
: Inverts the value of the single sub-expression.$nor
: Applies a logical nor on the expressions of the array and returns a match only if all expressions fail to match.$nor
: Applies a logical or on the expressions of the array and returns a match if any of the expressions match.
Logical operators are used to logically combine sub-expressions. All logical
operators except for $not
are applied to arrays of expressions.
$not
is applied to a single expression and negates its result.
Logical operators may be applied directly to comparison expressions or may contain further nested logical operators. For example:
{ "$or": [
{ "Classification": 2 },
{ "Intensity": { "$gt": 0 } }
] }
{ "$or": [
{ "Classification": 2 },
{ "$and": [
{ "ReturnNumber": "NumberOfReturns" },
{ "NumberOfReturns": { "$gt": 1 } }
] }
] }
{ "$not": {
"$or": [
{ "Classification": 2 },
{ "$and": [
{ "ReturnNumber": { "$gt": 0 } },
{ "Z": { "$lte": 42 } }
] }
] }
}
For any individual dimension, the logical and may be implicitly invoked via multiple comparisons within the comparison object. For example:
{ "X": { "$gt": 0, "$lt": 42 } }