Use of this function requires a license for Whitebox Workflows for Python Professional (WbW-Pro). Please visit www.whiteboxgeo.com to purchase a license.
This tools sets the RGB colour values of an input LiDAR point cloud (input
) based on the point classifications. Rendering a point cloud in this way can aid with the determination of point classification accuracy, by allowing you to determine if there are certain areas within a LiDAR tile, or certain classes, that are problematic during the point classification process.
By default, the tool renders buildings in red (see table below). However, the tool also provides the option to render each building in a unique colour (use_unique_clrs_for_buildings
), providing a visually stunning LiDAR-based map of built-up areas. When this option is selected, the user must also specify the radius
parameter, which determines the search distance used during the building segmentation operation. The radius
parameter is optional, and if unspecified (when the use_unique_clrs_for_buildings
flag is used), a value of 2.0 will be used.
The specific colours used to render each point class can optionally be set by the user with the clr_str
parameter. The value of this parameter may list specific class values (0-18) and corresponding colour values in either a red-green-blue (RGB) colour triplet form (i.e. (r, g, b)
), or or a hex-colour, of either form #e6d6aa
or 0xe6d6aa
(note the #
and 0x
prefixes used to indicate hexadecimal numbers; also either lowercase or capital letter values are acceptable). The following is an example of the a valid clr_str
that sets the ground (class 2) and high vegetation (class 5) colours used for rendering:
2: (184, 167, 108); 5: #9ab86c
Notice that 1) each class is separated by a semicolon (';'), 2) class values and colour values are separated by colons (':'), and 3) either RGB and hex-colour forms are valid.
If a clr_str
parameter is not provided, the tool will use the default colours used for each class (see table below).
Class values are assumed to follow the class designations listed in the LAS specification:
Classification Value | Meaning | Default Colour |
0 | Created never classified | |
1 | Unclassified | |
2 | Ground | |
3 | Low Vegetation | |
4 | Medium Vegetation | |
5 | High Vegetation | |
6 | Building | |
7 | Low Point (noise) | |
8 | Reserved | |
9 | Water | |
10 | Rail | |
11 | Road Surface | |
12 | Reserved | |
13 | Wire – Guard (Shield) | |
14 | Wire – Conductor (Phase) | |
15 | Transmission Tower | |
16 | Wire-structure Connector (e.g. Insulator) | |
17 | Bridge Deck | |
18 | High noise |
The point RGB colour values can be blended with the intensity data to create a particularly effective visualization, further enhancing the visual interpretation of point return properties. The intensity_blending
parameter value, which must range from 0% (no intensity blending) to 100% (all intensity), is used to set the degree of intensity/RGB blending.
Because the output file contains RGB colour data, it is possible that it will be larger than the input file. If the input file does contain valid RGB data, the output will be similarly sized, but the input colour data will be replaced in the output file with the point-return colours.
The output file can be visualized using any point cloud renderer capable of displaying point RGB information. We recommend the plas.io LiDAR renderer but many similar open-source options exist.
colourize_based_on_point_returns, lidar_colourize
def colourize_based_on_class(self, input_lidar: Optional[Lidar], intensity_blending_amount: float = 50.0, clr_str: str = "", use_unique_clrs_for_buildings: bool = False, search_radius: float = 2.0) -> Optional[Lidar]: ...