Set a Filter for PointCloudSceneLayer
//Must be called on the MCT
//var pcsl = ...;
//Retrieve the available classification codes
//At 2.x - var dict = pcsl.QueryAvailableClassCodesAndLabels();
var dict = pcsl.GetAvailableClassCodesAndLabels();
//Filter out low noise and unclassified (7 and 1 respectively)
//consult https://pro.arcgis.com/en/pro-app/help/data/las-dataset/storing-lidar-data.htm
var filterDef = new PointCloudFilterDefinition()
{
ClassCodes = dict.Keys.Where(c => c != 7 && c != 1).ToList(),
ReturnValues = new List<PointCloudReturnType> {
PointCloudReturnType.FirstOfMany }
};
//apply the filter
pcsl.SetFilters(filterDef.ToCIM());
Get the filters for PointCloudSceneLayer
//Must be called on the MCT
//var pcsl = ...;
IReadOnlyList<CIMPointCloudFilter> updatedFilter = pcsl.GetFilters();
foreach (var filter in updatedFilter)
{
//There is either 0 or 1 of each
if (filter is CIMPointCloudReturnFilter returnFilter)
{
PointCloudFilterDefinition pcfl = PointCloudFilterDefinition.FromCIM(updatedFilter);
List<PointCloudReturnType> updatedReturnValues = pcfl.ReturnValues;
}
if (filter is CIMPointCloudValueFilter classCodesFilter)
{
// do something
}
if (filter is CIMPointCloudBitFieldFilter classFlagsFilter)
{
// do something
}
}
Target Platforms: Windows 11, Windows 10
ArcGIS Pro version: 3 or higher.