# 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/-MXzK8QSox3nK06-vzuj)

### 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.

#### LiDARSnap&#x20;

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

* The LiDARSnap tool is used for point cloud and trajectory optimization.&#x20;
* It is a tool used to improve relative accuracy between overlapping swaths of LiDAR data.&#x20;
* Click [here](https://docs.phoenixlidar.com/lidarmill-desktop/post-processing/workflow-kk/lidar-snap/lidarsnap-v4) to jump to the LiDARSnap calibration workflow

**General Tab**

![LS4 General Tab](/files/-MaeS-CKWgra_6MV5WQT)

* **Intervals**: Selection of time intervals to use for calibration. Should correspond to flightlines on trajectory.
  * **Flightlines Only checkbox**: If selected, lidarsnap4 will discard any interval that is not a flightline. This should always be checked, because LS4 does not optimize curves yet.
* **Sensor Mounting**: This turns on or off mounting calibration, rotation should always be checked when boresighting, translation should usually be unchecked, since correct values are provided to the customer.
* **Optimization**:
  * **Number of Iterations**: a 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.
  * **Use Normal Sampling**: If checked, some found matches will be discarded such that most&#x20;

    variety in surface orientations is preserved. Should almost always be used, as it

    speeds up the algorithm significantly, as well as makes the solver more stable. If&#x20;

    trajectory model is set to "SplineFull" this will automatically be turned off while

    doing spline optimization, because in this case uniform distribution of&#x20;

    correspondences is needed.
  * **Reset Corrections before optimizing**: Resets both mounting and per-laser corrections

    at the beginning to their default values.
  * **Report**: A path to html file for calibration report to be written, if left empty no report will be created.

**Sensor Tab**

![LS4 Sensor Tab](/files/-MaeS244Lq9eEm-jpea8)

* 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).

**Trajectory Tab**

![LS4 Trajectory Tab](/files/-MaeS5DRGgDPCpj9pgtZ)

* **Optimization Model:**

  * **None:** No trajectory optimization will be done
  * **Bias:** A static offset will be applied per-flightline for each degree of freedom
  * **Linear:** In 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

    can be helpful for long flightlines.
  * **Spline Efficient:** For each flightline, for each degree of freedom, a single natural

    cubic spline is fitted to remove errors. As opposed to Linear, this is a curve and

    not a line, which will often be more precise, but possibly less robust.
  * **Spline Full:** A set of connected natural b-splines are used per-flightline, for each

    degree of freedom, each having the length specified in the Spline Interval

    parameter. It also disables Normal Sampling because it needs uniform and dense

    distribution of correspondences, thus making the process much slower, and uses

    much more memory, but may help optimize long flightlines.

* **Options:**
  * **Iterations Before Optimization**: Usually when doing both boresighting and flightline optimization we first do one iteration of boresighting, and then optimize trajectory. This is because trajectory roll often correlates to mounting roll, and they can drift together, providing good calibration results, but the parameters don't reflect physical reality. If set to zero, trajectory optimization will be done the correct way.
  * **Spline Interval:** Length of each spline for "Spline Full" model, as described above.
  * **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 be a bad idea if all flightlines are long. The better&#x20;

    strategy is to use GCPs.
  * **Disable Mounting Optimization During Trajectory Optimization:** After

    "Iterations Before Optimization" have been done, it disables mounting calibration.
  * **Disable Intrinsics Optimization During Trajectory Optimization:** Same as above, but

    locks per-laser calibration parameters.
  * **Parameters To Optimize:** Lets the user decide which degrees of freedom will be optimized

    for each flightline. It is recommended to only select "up".&#x20;

**Ground Control Tab**

![LS4 Ground Control Tab](/files/-MaeS905DzT3BGFRIfwL)

* **Ground Control:** Select which ground control points will be used during optimization. Only applied

  if trajectory optimization is being done.

**Tuning Tab**

![LS4 Tuning Control Tab](/files/-MaeSBaLLjCj0NErVcY4)

Lidarsnap4 uses what we call progressive parameters. At each iteration, certain criteria are adjusted, because the quality of the cloud improves, and then we're able to get better information when searching for correspondences.

* **Roughness:**
  * **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.
* **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.

**Misc Tab**

![LS4 Misc Tab](/files/-MaeSEOTI55Zbo-EwOdz)

* **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.
  * **Constrain Mounting Translation:** Often times mounting translation will drift along upwards

    because in a lot of datasets there are no constraints keeping it down. This option will&#x20;

    prevent it from drifting too much.
  * **Prefer Points Near Center Of surface: W**hen 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.
* **Multilaser:**
  * **Fast Normals:** Performs only one neighbor search for all lasers when computing normals, but

    uses the points properly afterwards. The assumption here is that individual lasers will&#x20;

    not be wildly off (on the order of meters). This is a huge performance optimization

    when calibrating multilaser systems. Should always be enabled.
  * **Enable Correspondence Chunks:** For multilaser, if a good surface was found, points of each laser id are optimized to that surface. This improves per-laser calibration,

    because it prevents normal sampling from discarding valuable data.
* **Debugging:**
  * **Save Normals:** For each iteration, a cloud will be saved containing normals that were used,

    but the clouds won't be added to the project. Instead they will be saved in the same folder

    as the original cloud. Each normal will contain surface roughness information, it will be

    stored in Height-Above-Ground attribute of the cloud, but it's a relative value, not an

    absolute one. Useful for inspecting the optimization flow.
  * **Save Correspondences:** For each iteration, a cloud will be saved containing correspondences,

    but the clouds won't be added to the project. Instead they will be saved in the same folder

    as the original cloud.
  * **Keep Unused Correspondences:** Keeps all the correspondences that were filtered out in

    memory, but doesn't use them, it just saves them to above mentioned clouds for further

    debugging.
  * **Save Flightlines As Clouds:** Saves each individual strips as a cloud in the same folder as

    original cloud, doesn't add them to project. Useful for monitoring how filtering works.

#### 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

#### 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

#### 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)

* [**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)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs-6.phoenixlidar.com/lidarmill-desktop/user-interface/windows/project-management-window/point-clouds.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
