ENVIPointCloudFilter

This is a reference to an ENVIPointCloud point filter object. It is used to filter the point data that will be returned from the point query methods of the ENVIPointCloud or ENVIPointCloudQuery objects (ENVIPointCloud::GetPointsInCircle, ENVIPointCloud::GetPointsInPolygon, ENVIPointCloud::GetPointsInRange, ENVIPointCloud::GetPointsInRect, ENVIPointCloud::GetPointsInTile, ENVIPointCloudQuery::GetPointsInRange).

Example

; Create a headless instance

e = ENVI(/HEADLESS)

 

; Open a file

file = FILEPATH('DataSample.las', ROOT_DIR=e.ROOT_DIR, $

SUBDIRECTORY = ['data','lidar'])

pointcloud = e.OpenPointCloud(file, $

  PROJECT_URI=Filepath('DataSample', /TMP))

 

; Filter out the points that are above the median height

extents = pointcloud.DATA_RANGE

heightRange = extents[5] - extents[2]

minHeight = extents[2]

maxHeight = extents[2] + (heightRange * 0.5)

 

; Create the ENVIPointCloudFilter object

enviPointFilter = ENVIPointCloudFilter(CLASSIFICATIONS=[0,1,3,4,7], HEIGHT=[minHeight, maxHeight])

 

; Query points with filtering

points = pointcloud.GetPointsInRect(extents[0], extents[1], extents[3], extents[4], $

FILTER=enviPointFilter, ALL_ATTRIBUTES=allAttribs)

 

Print, 'Number of points: ',n_elements(points), /IMPLIED_PRINT

 

; Close the point cloud object

pointcloud.Close

Properties

CLASSIFICATIONS

A byte array to represent multiple classes, for example, [1, 3, 4, 7]. This attribute refers to the original LAS file Classification values. The values may vary depending on the LAS file version. The maximum number of Classifications is 256.

CLASSIFICATION_FLAGS

A byte to represent multiple classification flags which are represented by a maximum of 4 bits for LAS 1.4 and 3 bits otherwise. The bit definitions are:

Bit

Field Name

Description

0

Synthetic

If set, this point was created by a technique other than LiDAR collection, such as digitized from a photogrammetric stereo model or by traversing a waveform.

1

Key-point

If set, this point is considered to be a model key-point and thus generally should not be withheld in a thinning algorithm.

2

Withheld

If set, this point should not be included in processing (synonymous with Deleted).

3

Overlap

For LAS 1.4. If set, this point is within the overlap region of two or more swaths or takes. Setting this bit is not mandatory unless it is mandated by a particular delivery specification, but it allows classification of overlap points to be preserved.

These bits are treated as flags and can be set or cleared in any combination. For example, a point with bits 0 and 1 both set to 1 and the CLASSIFICATION_FLAGS keyword set to 2 would be a ground point that had been synthetically collected and marked as a model key-point.

Filtering on CLASSIFICATION_FLAGS is implemented as a logical OR operation. Any points which have any CLASSIFICATION_FLAG bits set that match any of the bits set in the CLASSIFICATION_FLAGS property of the ENVIPointCloudFilter will be returned. For example, if the filter has the synthetic and key-point bits set, then it will return all points with either synthetic or key-point bits set, and any points with both synthetic and key-point bits set.

COMPUTED_CLASSIFICATIONS

A byte array to represent multiple classes, for example, [1, 3, 4, 7]. The maximum number of Classifications is 256. This attribute refers to the point classification computed during the feature extraction process. This attribute will only be available if the point cloud file has already been processed by ENVI; therefore, it will not be available if an ENVIPointCloudQuery object has been created by calling ENVI::QueryPointCloud.

EDGE_OF_FLIGHT_LINE

A byte to represent whether or not the points are on the Edge of Flight Line.

GPS_TIME

A two element double array defining the GPS Time range.

HEIGHT

A two element double array defining the Height range.

INTENSITY

A two element unsigned int array defining the Intensity range.

NUMBER_OF_RETURNS

A two element byte array defining the Number of Returns range.

POINT_SOURCE_ID

A two element unsigned integer array defining the Point Source ID range.

RETURN_NUMBER

A two element byte array defining the Return Number range.

SCANNER_CHANNEL

A two element byte array defining the Scanner Channel range.

SCAN_ANGLE

A two element integer array defining the Scan Angle range.

SCAN_DIRECTION_FLAG

A byte to represent the Scan Direction Flag.

USER_DATA

A two element byte array defining the User Data range.

Version History

ENVI 5.3

Introduced

API Version

4.2

See Also

ENVIPointCloud, ENVIPointCloud::GetPointsInCircle, ENVIPointCloud::GetPointsInPolygon, ENVIPointCloud::GetPointsInRange, ENVIPointCloud::GetPointsInRect, ENVIPointCloud::GetPointsInTile