// search all points using (ArcGIS.Core.Data.Analyst3D.LasPointCursor ptCursor = lasDataset.SearchPoints(null)) { while (ptCursor.MoveNext()) { using (ArcGIS.Core.Data.Analyst3D.LasPoint point = ptCursor.Current) { } } } // search within an extent ArcGIS.Core.Data.Analyst3D.LasPointFilter pointFilter = new ArcGIS.Core.Data.Analyst3D.LasPointFilter(); pointFilter.FilterGeometry = envelope; using (ArcGIS.Core.Data.Analyst3D.LasPointCursor ptCursor = lasDataset.SearchPoints(pointFilter)) { while (ptCursor.MoveNext()) { using (ArcGIS.Core.Data.Analyst3D.LasPoint point = ptCursor.Current) { } } } // search within an extent and limited to specific classification codes pointFilter = new ArcGIS.Core.Data.Analyst3D.LasPointFilter(); pointFilter.FilterGeometry = envelope; pointFilter.ClassCodes = new List<int> { 4, 5 }; using (ArcGIS.Core.Data.Analyst3D.LasPointCursor ptCursor = lasDataset.SearchPoints(pointFilter)) { while (ptCursor.MoveNext()) { using (ArcGIS.Core.Data.Analyst3D.LasPoint point = ptCursor.Current) { } } }
// search all points using (ArcGIS.Core.Data.Analyst3D.LasPointCursor ptCursor = lasDataset.SearchPoints(null)) { int count; Coordinate3D[] lasPointsRetrieved = new Coordinate3D[10000]; while (ptCursor.MoveNextArray(lasPointsRetrieved, null, null, null, out count)) { var points = lasPointsRetrieved.ToList(); // ... } } // search within an extent // use MoveNextArray retrieving coordinates, fileIndex and pointIds ArcGIS.Core.Data.Analyst3D.LasPointFilter filter = new ArcGIS.Core.Data.Analyst3D.LasPointFilter(); filter.FilterGeometry = envelope; using (ArcGIS.Core.Data.Analyst3D.LasPointCursor ptCursor = lasDataset.SearchPoints(filter)) { int count; Coordinate3D[] lasPointsRetrieved = new Coordinate3D[50000]; int[] fileIndexes = new int[50000]; double[] pointIds = new double[50000]; while (ptCursor.MoveNextArray(lasPointsRetrieved, null, fileIndexes, pointIds, out count)) { var points = lasPointsRetrieved.ToList(); } }
// searching on the LasDatasetLayer will honor any LasPointDisplayFilter // search all points using (ArcGIS.Core.Data.Analyst3D.LasPointCursor ptCursor = lasDatasetLayer.SearchPoints(null)) { while (ptCursor.MoveNext()) { using (ArcGIS.Core.Data.Analyst3D.LasPoint point = ptCursor.Current) { } } } // search within an extent ArcGIS.Core.Data.Analyst3D.LasPointFilter pointFilter = new ArcGIS.Core.Data.Analyst3D.LasPointFilter(); pointFilter.FilterGeometry = envelope; using (ArcGIS.Core.Data.Analyst3D.LasPointCursor ptCursor = lasDatasetLayer.SearchPoints(pointFilter)) { while (ptCursor.MoveNext()) { using (ArcGIS.Core.Data.Analyst3D.LasPoint point = ptCursor.Current) { } } } // search within an extent and limited to specific classification codes pointFilter = new ArcGIS.Core.Data.Analyst3D.LasPointFilter(); pointFilter.FilterGeometry = envelope; pointFilter.ClassCodes = new List<int> { 4, 5 }; using (ArcGIS.Core.Data.Analyst3D.LasPointCursor ptCursor = lasDatasetLayer.SearchPoints(pointFilter)) { while (ptCursor.MoveNext()) { using (ArcGIS.Core.Data.Analyst3D.LasPoint point = ptCursor.Current) { } } }
// search all points and process with a set size of array retrieving only coordinates using (ArcGIS.Core.Data.Analyst3D.LasPointCursor ptCursor = lasDatasetLayer.SearchPoints(null)) { int count; Coordinate3D[] lasPointsRetrieved = new Coordinate3D[10000]; while (ptCursor.MoveNextArray(lasPointsRetrieved, null, null, null, out count)) { var points = lasPointsRetrieved.ToList(); // ... } } // search within an extent // use MoveNextArray retrieving coordinates, fileIndex and pointIds ArcGIS.Core.Data.Analyst3D.LasPointFilter filter = new ArcGIS.Core.Data.Analyst3D.LasPointFilter(); filter.FilterGeometry = envelope; using (ArcGIS.Core.Data.Analyst3D.LasPointCursor ptCursor = lasDatasetLayer.SearchPoints(filter)) { int count; Coordinate3D[] lasPointsRetrieved = new Coordinate3D[50000]; int[] fileIndexes = new int[50000]; double[] pointIds = new double[50000]; while (ptCursor.MoveNextArray(lasPointsRetrieved, null, fileIndexes, pointIds, out count)) { var points = lasPointsRetrieved.ToList(); } }
Target Platforms: Windows 11, Windows 10