> For the complete documentation index, see [llms.txt](https://docs-7.phoenixlidar.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs-7.phoenixlidar.com/lidarmill-desktop/user-interface/windows/project-management-window/point-clouds.md).

# Pointclouds

The Pointclouds dropdown list in the Project window allows the user to manage visualize and edit pointclouds within SpatialExplorer

* Click [here](https://docs.phoenixlidar.com/lidarmill-desktop/post-processing/workflow-kk/create-a-cloud/create-cloud) to jump to the "**Create Cloud**" section

SpatialExplorer allows for the customization of the Pointclouds map layer. Click on the desired point cloud layer to present a menu that allows changing various display parameters such as Color Source, Point Size, Colorization, Opacity, etc. When a cloud is created or loaded, it will be displayed in the Project Window under the specified name or file name. &#x20;

![Point Cloud in the Project Window](/files/-MXzFcsmEJJWZsxzwr5_)

Additionally, a temporary .cloud file will be created if LiDAR data is played back without first creating a proper .cloud file. This temporary cloud file will be denoted by "Replay-". As long as SpatialExplorer remains open, the "Replay-" cloud file will exist. Once SpatialExplorer is closed, the "Replay-" cloud file will be removed from memory.&#x20;

![Pointclouds Project Window in SpatialExplorer 6 with CLOUD and temporary replay file](/files/-Lu4K66jc1xgumaESABE)

## Visualization

The Visualization submenu controls various display attributes such as **Point Scale** (size of points displayed), **Level of Detail** (amount of data displayed in memory), **Opacity** (transparency of points displayed), and a variety of colorization sliders for a variety of attributes held in the data. &#x20;

* It is highly recommended to use the **'Update Attributes From Cloud'** tool to optimize the colorization and visualization of the cloud through the histograms from each category of colorization.
* Additionally, when processing large datasets it is recommended to lower the 'Level of Detail' to minimize the amount of memory dedicated to displaying points rather than the process at hand.&#x20;

![Visualization tab for Point Cloud display](/files/-MXzGFRe4rsMORJuWPZI)

* Use the Slider next to each color source to increase or decrease colorization weighting
  * 0 = No color/completely transparent
  * 1 = Full color

| Color Source        | Description                                                                                  |
| ------------------- | -------------------------------------------------------------------------------------------- |
| Color R/G/B         | Displays the point cloud based on RGB values                                                 |
| NIR                 | Displays point cloud based on NIR value                                                      |
| Elevation           | Displays the point cloud based on height attributes.                                         |
| Height Above Ground | Displays the point cloud based on height from ground after a ground filter has been applied. |
| GPS Week            | Displays the point cloud based on GPS Week Number                                            |
| GPS Time            | Displays the point cloud based on the GPS timestamp of each point                            |
| Scan Angle          | Displays the point cloud based on the scanner angle, with 0deg representing nadir            |
| Amplitude           | Displays the point cloud based on a Riegl Amplitude attibute                                 |
| Deviation           | Displays the point cloud  based on a Riegl Amplitude attibute                                |
| Intensity           | Displays the point cloud  based on Intensity values                                          |
| Sensor Index        | Displays the point cloud  based on the sensor count, starting at 0                           |
| Submap Index        | Displays the point cloud  based on the SLAM submap attribute                                 |
| Interval Index      | Displays the point cloud  based on which interval the point is derived from                  |
| Laser Index         | Displays the point cloud  based on which laser the point originated from                     |
| Echo Index          | Displays the point cloud  based on which return number it originated from                    |
| Echo Count          | Displays the point cloud  based on the number of returns for a given pulse                   |
| Classification      | Displays the point cloud  based on the classification feature number assigned                |

## Edit

The Edit tab enables the user to access many of the tools available to manipulate and analyze a point cloud.  The tools in the Edit tab range from LiDAR Snap for calibration to reporting and analysis tools to general functions like saving, closing, and refreshing a cloud.   &#x20;

![](/files/twwUoIUMU51FFTwnPVw5)

### Tools

* [Clock Bias](#visualization)
* [Run LiDARSnap](https://docs.phoenixlidar.com/lidarmill-desktop/user-interface/windows/project-management-window/point-clouds#run-lidarsnap)
* [Create Maps](https://docs.phoenixlidar.com/lidarmill-desktop/user-interface/windows/project-management-window/point-clouds#create-maps)
* [Export Cloud](https://docs.phoenixlidar.com/lidarmill-desktop/user-interface/windows/project-management-window/point-clouds#export-cloud)
* [Clear Cloud](https://docs.phoenixlidar.com/lidarmill-desktop/user-interface/windows/project-management-window/point-clouds#clear-cloud)
* [Filter Cloud](https://docs.phoenixlidar.com/lidarmill-desktop/user-interface/windows/project-management-window/point-clouds#filter-cloud)
* [Calculate Distance to Another Cloud](https://docs.phoenixlidar.com/lidarmill-desktop/user-interface/windows/project-management-window/point-clouds#calculate-distance-to-another-cloud)
* [Create Contours](https://docs.phoenixlidar.com/lidarmill-desktop/user-interface/windows/project-management-window/point-clouds#create-contours)
* [Recompute Points](https://docs.phoenixlidar.com/lidarmill-desktop/user-interface/windows/project-management-window/point-clouds#recompute-points)
* [Compute SOCS](https://docs.phoenixlidar.com/lidarmill-desktop/user-interface/windows/project-management-window/point-clouds#compute-socs)
* [Save Cloud](https://docs.phoenixlidar.com/lidarmill-desktop/user-interface/windows/project-management-window/point-clouds#save-cloud)
* [Close Cloud](https://docs.phoenixlidar.com/lidarmill-desktop/user-interface/windows/project-management-window/point-clouds#close-cloud)
* [Colorize Cloud](https://docs.phoenixlidar.com/lidarmill-desktop/user-interface/windows/project-management-window/point-clouds#colorize-cloud)
* ["Create" Dropdown Tools](https://docs.phoenixlidar.com/lidarmill-desktop/user-interface/windows/project-management-window/point-clouds#create...-dropdown-tools)

#### Clock Bias&#x20;

![Clock Bias Tool](/files/-MaegBh-WgvqPQrCqgjr)

* The 'clock bias' tool is available for troubleshooting the LiDAR sensor for any timing misalignments.

#### Run LiDARSnap&#x20;

![LiDARSnap Tool](/files/-MadFPhqwA4WzSAMkdKq)

* The LiDARSnap tool is used to optimize lidar pointclouds by calibrating sensors and  optimizing trajectories.&#x20;
* It is a tool used to improve relative accuracy between overlapping swaths of LiDAR data.&#x20;
* Click [here](/lidarmill-desktop/workflow-kk/lidarsnap-v4.md#ls4-workflows) to jump to the LiDARSnap workflows&#x20;

#### Calibration and Optimization Options

* [LiDARSnap 4](/lidarmill-desktop/workflow-kk/lidarsnap-v4.md#ls4-workflows) has three primary functions:

  * **Aerial Calibration:** Optimizes aerial-based lidar's [range-sensing calibration values](https://docs.phoenixlidar.com/lidarmill-desktop/user-interface/windows/project-management-window/lidars/ldr-x#calibration). For best results, only use this tool on a [boresight calibration dataset](https://docs.phoenixlidar.com/rover/theory-and-workflow/boresighting-flight-strategy#uav-flight-plan). &#x20;
  * **Aerial Trajectory Optimization:** Improves pointcloud accuracy for aerial datasets by reducing relative errors between overlapping swaths of aerial lidar data that stem from trajectory inaccuracies (position and orientation errors).&#x20;
  * **Mobile Trajectory Optimization:** Improves pointcloud accuracy for mobile datasets by reducing relative errors between overlapping swaths of mobile lidar data that stem from trajectory inaccuracies (position and orientation errors).&#x20;

![](/files/Se1RRLrwF41SvZhssl0V)

#### **General Tab**

![](/files/1kuAeJiouzboHr20kqL0)

**Intervals**: Selection of time intervals to use for calibration. Should correspond to flightlines on trajectory. In case of mobile trajectory enough, one interval covering the whole trajectory is recommended.

* **Flightlines Only checkbox**: If selected, lidarsnap4 will discard any interval that is not a flightline (Ignoring curves).

![](/files/SLFGJgyAUBUQUeWEGnPp)

**Ground Control**: Select which ground control points will be used during optimization. Only use this if trajectory optimization is being done. Enabling Ground Control will constrain an optimized trajectory and improve the absolute accuracy of a pointcloud produced using the optimized trajectory. &#x20;

![](/files/IGj9gDNfMphH7NXElYMn)

**Control Point Cloud**: Same function as using Ground Control, but a bit more powerful tool, since the surface orientation in the control point cloud is also known. The cloud selected should be well calibrated, both in relative and absolute accuracy. Enabling a control point cloud gives the user two Mode options:

* **Calibrate Dataset To Another Dataset:** Uses Control Point Cloud to align the trajectory of the dataset currently being processed, to match previously acquired dataset, which was used to make the control point cloud. For example, align a mobile dataset to an existing calibrated aerial dataset.
* or **Calibrate Sensor to Sensor Within The Same Dataset:** Uses additional correspondences to calibrate one sensor to another, for multilaser systems. This is used for sensor calibration, and the control point cloud should be a calibrated point cloud fused with one sensor, and the data being calibrated should be point cloud fused with another sensor, using the same trajectory.

**Report**: A path to html file for calibration report to be written, if left empty no report will be created.

#### **Trajectory Tab**

It is recommended to use the calibration parameters enabled by default&#x20;

![LS4 Trajectory Tab](/files/TDwYEnWuVsOTA7XqUq1d)

* **Optimization Model:**

![](/files/AwBMO3D3TmnfgKNNSXr5)

* **None:** No trajectory optimization will be done

* **Bias:** A static offset will be applied per-flightline for each degree of freedom

* **Linear Sparse:** I addition to static offset, a linear function (a line) will be applied for each flightline, for each degree of freedom. This is easy to optimize, and helpful for long flightlines.

* **Linear Dense:** Each flightline will be cut uniformly by time into smaller intervals, and for each of those intervals a linear correction is performed, for each degree of freedom. This gives us robustness of linear model, with nearly the effectiveness of Spline model

* **Options:**
  * **Dense Model Interval:** Governs the length of the uniform intervals flightlines are being cut into, for Linear Dense model.
  * **Autosplit Inteval:** If greater than zero, all flightlines / intervals will be cut into smaller intervals, which will also be shown in the report. This isn't the same as Dense Model Interval, as this improves memory usage and performance, but can also damage boresight results. This is meant to be used for trajectory optimization for mobile datasets, and for datasets with very long flightlines.
  * **Fix First Interval:** Because when moving flightlines, all flightlines can move, they

    can also drift together in any direction. Checking this box fixes the first flightline

    in place to prevent this, but may yield poor results if all flightlines are long. The better&#x20;

    strategy is to use GCPs.
  * **Preserve Local Trajectory Shape:** Uses additional constraints to prevent sudden jumps in trajectory. This is useful for mobile optimization in cases of single-pass parts of the dataset, to prevent noticeable sudden jumps at the end of those intervals. This may also help in general to prevent drifting.
  * **Parameters To Optimize:** Lets the user decide which degrees of freedom will be optimized for each flightline. &#x20;

#### **Sensor Tab**

It is recommended to use the calibration parameters enabled by default&#x20;

![](/files/WyFVq0JMun6tkKuCp2ZU)

**Sensor Mounting:** This turns on or off mounting calibration. Rotation should always be checked when boresighting, translation should be unchecked, since Phoenix LiDAR Systems should provide the correct values for this in the first place.

**Intrinsics (Per-Laser):** Enables or disables calibration of certain per-laser parameters, explained in detail in the [calibration parameters section](https://docs.phoenixlidar.com/lidarmill-desktop/user-interface/windows/project-management-window/lidars/ldr-x#per-laser-calibration).

**Extrinsics (Per-Laser):** Calibrate mounting rotation / translation per-laser. Should always be off

**Reset Corrections before optimizing:** If checked, resets all correction values to default when lidarsnap4 starts.

#### **Tuning Tab**

It is recommended to use the calibration parameters enabled by default&#x20;

![](/files/9TGZa85cOo2pZw4u9k79)

Lidarsnap4 uses progressive parameters. At each iteration, certain criteria are adjusted, because the quality of the cloud improves, and then information is improved when searching for correspondences.

* **Iterations and Filtering:**
  * **Number of Iterations:** Total number of iterations done by lidarsnap4, almost always

    the default of 3 is sufficient. More iterations may improve results, but very slightly,

    at a linear increase in execution time.
  * **Max Roughness Start:** Surface Roughness criterion at the first iteration. Any matches with

    roughness higher than specified will be discarded. This is used to discard foliage-covered

    areas, and only use flat areas.
  * **Max Roughness End:** As iterations progress, the roughness criterion is reduced, ultimately

    converging to the value specified here. For high ranging-noise sensors this may have to be

    increased.
  * **MAD Threshold Multiplier:** Multiplier for the sigma for statistical outlier removal of correspondences. The default value of 3.0 is usually good.
* **Sampling:** When searching for matches, we first perform uniform sampling on the flightline, that is taking a single point within the given uniform grid cell. This algorithm is mindful of laser ID while doing this, so we get uniform distribution in the best possible.
  * **Uniform Sampling Radius Start:** Grid Cell Size for uniform sampling at the first iteration.
  * **Uniform Sampling Radius End:** As iterations progress, our grid gets denser, converging to

    value entered here.
  * **Maximum Point Distance:** For every match found, if the two points are further apart than&#x20;

    the value specified here, the pair is discarded. This is the first discard criterion we

    use.
* **Normals:** When estimating surface orientation (normals), for each point in the uniform grid, we collect neighboring points from the full flightline to estimate the surface orientation. The amount of points taken is controlled by search radius.
  * **Normal Search Radius Start:** The radius for normal estimation at first iteration.
  * **Normal Search Radius End:** The convergence value for normal search radius.
  * **Normal Sampling Reduction:** When performing normal sampling, most of the correspondences

    will be discarded, and this parameter controls how many of them. By default it is set to

    10%, which means only 10% of correspondences will be used.
  * **Maximum Angle Between Normals:** When we find a match between two strips, both surfaces have their normal (orientation). If these normals have a big disagreement in angle, then we are probably matching incorrect surfaces. Any correspondences with angle difference bigger than specified are discarded.
  * **Use Normal Sampling:** If checked, some found matches will be discarded such that most variety in surface orientations is preserved. Should always be used when boresighting, but turned off if an Dense trajectory model is being used.

#### **Misc Tab**

It is recommended to use the calibration parameters enabled by default&#x20;

![](/files/GB8fAFG81JzdzkisH4o0)

* **General:**
  * **Prefilter Data:** Prefilters flightlines in a uniform grid at the start of the process,

    making iterations orders of magnitude faster. This is only useful when doing a large number

    of iterations, and the system is already boresighted, because otherwise quality may be&#x20;

    compromised.
  * **Filter Multi-Returns:** Discards points that are not first returns. usually these points

    aren't good representatives, and provide hallucinations in the scan data. Should always be

    enabled.
  * **Prefer Points Near Center Of surface:** When matching flightlines for a sensor with a large

    ranging error, thick surfaces are generated. By default, lidarsnap4 will take the nearest&#x20;

    points between the two flightlines, effectively matching the top of one to bottom of&#x20;

    another. This option will attempt to cherry pick points that are near the center of surface

    instead, making the flightlines snap center-to-center.

#### Create Maps

![Create Maps Tool](/files/-MadFVxLwlbnVhaf6_kB)

* The [Create Maps tool](https://docs.phoenixlidar.com/lidarmill-desktop/post-processing/workflow-kk/data-products/create-maps#create-maps) is used generate exportable raster maps

#### Export Cloud

![Export Cloud Tool](/files/-MadFdcEuOtlTKLZJD9J)

* The Export Cloud Tool is used export a desired pointcloud in a project into a common mapping format such as LAS or LAZ
* Click [here](https://docs.phoenixlidar.com/lidarmill-desktop/post-processing/workflow-kk/export-cloud/las-laz-pointcloud) to jump to the Export Cloud workflow&#x20;

#### Clear Cloud

![Clear Cloud Tool](/files/-MadFnKbdbeHM7kB0wbj)

* The Clear Cloud Tool is used to remove all points from a CLOUD file within a project's pointcloud list.&#x20;

#### Filter Cloud

![Filter Cloud Tool](/files/-MadGewhzh3GV6yMxokp)

* The Filter Cloud Tool is used classify a pointcloud using a variety of filters
* Click [here](https://docs.phoenixlidar.com/lidarmill-desktop/post-processing/workflow-kk/classification#common-workflow) to jump to the Filter Cloud workflow

#### Calculate Distance to Another Cloud  ![](/files/Rw1nReVatMSnJGYWL6pX)

The Calculate Distance to Another Cloud is a pointcloud tool used in two primary ways:

* **Vegetation Encroachment Detection** (Distance from one point class to another within the same pointcloud)
* **Change Detection** (cloud to cloud comparison)

#### Vegetation Encroachment Detection Workflow

Example: Determine all vegetation points within 5 meters of the powerlines

* Classify Powerlines to class 14 (wire)
* Vegetation points in this cloud are unclassified (class 1)
* Select the pointcloud to perform vegetation encroachment detection (do this by selecting it as the 'cloud points of which will be accepted during neighbor-searching' (highlighted in red))
* On the left side, vegetation is in class 1, so class 1 is selected
* On the right side, class 14 is selected as the class that will be accepted during neighbor-searching
* Encroachment distance set to 5.00 m (highlighted in red) &#x20;

![](/files/gk8NORLQTWdP1Uez5Vi3)

* Click 'Run Filter" to begin processing
* Points within 5 meters of the powerline class are stored within the height above ground attribute&#x20;
* Under the pointcloud visualization tab, maximize the 'Height Above Ground" slider

![](/files/qghWZwLxkrfZBuUcbQ1W)

![Blue points indicate vegetation within 5 meters of the powerlines](https://lh6.googleusercontent.com/QJIRuZgTEVysAf3oMGqJYxpAgrYEIeotNdHM1p_HgqsGbzFm_4i33VPR7lLqW7i5-0JMdOQ1d44ktIAcpWGqSdEWm0g3doyhDRtMIaT886H9k48DHE_Y8A4Uh-r2ZVvm0JLw5SkT)

* The search radius input of 5 meters defined the max distance for the search

![](https://lh5.googleusercontent.com/O_jdyvU31ramSdvJhc57AaBoYtBGWf1Vna8hATqlFV-E2WvdN6lUENsEn1gVm0Avqm7Y9BDZpRsziHUGzHnd5DiJwgL1c5N5zU64aoN8HUUTYEG8_hQ3lSor0TQa3LKHY-8uOgBZ)

#### Change Detection

Example: Detect stock pile change from one date to the next&#x20;

* Two pointclouds loaded in SE, same site but different date
* In both clouds, all points are unclassified (class 1)

![Two scans of the same site from different dates](/files/AhukfJFpHqtOQWwRiVfK)

* The search radius for change detection(cloud to cloud comparison) indicates how far you want the search radius to be for cloud to cloud comparison
* In this example, 0.15 m was the defined search radius to detect change

![](/files/vywcxC1z8TWXQCHneNQI)

* Once you select “Run Filter” the processing will begin and show under the history tab to the far right of the dialog.&#x20;
* Once the processing is done the percentage bar will show 100 percent and you can choose to save the changes to the cloud.
* After the filter is run the processed cloud will need updated attributes to show the nearest neighbor analysis.&#x20;
* The computed distance is stored in the height above ground attribute.

![](/files/yu729P6QPTLZJOODhfvT)

![](https://lh6.googleusercontent.com/yX9COgYZy_6CyDgRK6F3A-kJduCa4ASQ9gTVrSd3zboa8RLY9pYtqF2i1bsb-lHZnX1xTpShErReN1nLhsrm2kGtrBgpOlrYHdfHZTyw-w9OB_UAYCAop10IC4JpaRgjuIvgPOTW)

#### Create Contours

![Create Contours Tool](/files/-MadGqf2_BsecgBBBKy8)

* The Create Contours Tool is used to create contours from a pointcloud
* Click [here](https://docs.phoenixlidar.com/lidarmill-desktop/post-processing/workflow-kk/data-products/create-contours#create-contours) to jump to the Create Contours workflow&#x20;

#### Recompute Points&#x20;

![Recompute Points Tool](/files/-MadGvcsm8pjASoOynbf)

* The Recompute Points Tool is used to update a pointcloud based on the current LiDAR Calibration parameters.
* This tool should be used any time [LiDAR calibration parameters](https://docs.phoenixlidar.com/lidarmill-desktop/user-interface/windows/project-management-window/lidars/ldr-x#calibration) are changed

#### Compute SOCS   ![](/files/5X4ibbEc1TlXMBy0Jo7O)

![](/files/hrUBLT085qUfm2c9GDo7)

#### Save Cloud

![Save Cloud Tool](/files/-MadH2Is9Eic3sm25F4I)

* The Save Cloud Tool is used to save updated information to the pointcloud (after color extraction, recomputed lidar calibration parameters, etc)

#### Close Cloud

![Close Cloud Tool](/files/-MadH6zFiJwdomLpSbuF)

* The Close Cloud Tool is used to remove a pointcloud from a project's pointcloud list&#x20;

#### [Colorize Cloud](https://docs.phoenixlidar.com/lidarmill-desktop/post-processing/workflow-kk/colorization-of-point-clouds)

![Colorize Cloud Tool](/files/-MadHE5pjNl3Kdy3RtBJ)

* The Colorize Cloud Tool is used to extract color from imagery into an active pointcloud
* Click [here](https://docs.phoenixlidar.com/lidarmill-desktop/post-processing/workflow-kk/colorization-of-point-clouds) to jump to the Colorize Cloud Workflow

#### "Create..." Dropdown Tools

!["Create..." Dropdown Tools](/files/-MadHKLfwlVyA8p1KAjZ)

![](/files/M3L5E3kz7BUAdHl07b9e)

* [**Smart Decimation**](https://docs.phoenixlidar.com/lidarmill-desktop/post-processing/workflow-kk/data-products/pointcloud#smart-decimation)
* [**Colorize By Normal**](https://docs.phoenixlidar.com/lidarmill-desktop/post-processing/workflow-kk/data-products/pointcloud#colorize-by-normal)
* [**Resample Cloud (Delaunay)**](https://docs.phoenixlidar.com/lidarmill-desktop/post-processing/workflow-kk/data-products/pointcloud#resample-cloud-delaunay)
* [**Downsample Cloud**](https://docs.phoenixlidar.com/lidarmill-desktop/post-processing/workflow-kk/data-products/pointcloud#downsample-cloud)
* [**Compute Height Above Ground**](https://docs.phoenixlidar.com/lidarmill-desktop/post-processing/workflow-kk/data-products/pointcloud#compute-height-above-ground)
* [**DTM Mesh**](https://docs.phoenixlidar.com/lidarmill-desktop/post-processing/workflow-kk/data-products/create-contours#dtm-mesh)
* [**Backup**](https://docs.phoenixlidar.com/lidarmill-desktop/post-processing/workflow-kk/data-products/pointcloud#backup)

## SLAM

The SLAM tab enables the user to select the submaps to display after a SLAM session.

* Click [here](https://docs.phoenixlidar.com/lidarmill-desktop/post-processing/slam-workflow-beta) to jump to the "**SLAM Workflow**" section

![SLAM Menu in SpatialExplorer 6](/files/-MadGTIP59Oqvnqg_XMv)
