Understanding Cloud-Optimized Point clouds
This article will have two sections; with the first section explaining in detail the cloud-optimized point clouds data format, and the second part touching briefly on how to use cloud-optimized point clouds in QGIS from version 3.26 and later.
Point cloud data
Point cloud data refers to a collection of points for dynamically storing data with each point storing components with multiple attributes that describe the point e.g. X, Y, and Z. The point clouds can then be classified based on the various attributes to form classes.
There are some characteristics of point clouds data that sets it apart from other data formats:
- Point clouds data is Fluffy and redundant and therefore needs efficient compression and decompression algorithms.
- It is Read heavy and light on writing operations
- Infinite searching.
Based on the point clouds data characteristics’ an ideal data format for representing point cloud data would require to have:
- Fast compression and decompression
- Contained in one file
- Storage efficient
- Usable over a network
- Usable by every software
- Transact a database to track changes
- Support various computing challenges.
Since it is difficult to satisfy all the requirements most data formats that have been developed compromise and trade off some features for others.
Cloud optimized point clouds data.
Cloud-optimized data enable more efficient workflows and maximum performance in the cloud environment through a change in its internal organizational structure from the traditional data formats. This has been a result of most computation moving to the cloud. As the spatial resolution and volume of the data increase, data formats need to catch up. Cloud-optimized formats such Cloud optimized GeoTIFF and Cloud optimized point cloud has been developed to try and overcome challenges associated with increasing data volumes and cloud-based functionalities. Here are two podcasts episodes that cover cloud-native GIS and COGeoTIFF https://mapscaping.com/create-and-visualize-cloud-optimised-geotiffs/
For a long time LAS, LAZ, and ASCII have been the go to formats for handling point cloud data. LAS is the standard format for storing lidar data as points; it is a vector format, not a raster format. While LAZ is similar to LAS except it is compressed henced many times smaller than LAS. These data formats provided a foundation for the development of Cloud Optimized Point Cloud.
Cloud Optimized Point Cloud (COPC) is a file container format for doing cloud-native geospatial operations. It builds on top of LAZ. COPC comes with two additional capabilities that were not possible in the LAZ format:
- Resolution Selectivity
- Spatial access
Through these additional functionalities, you can have partial access to your data through the use of HTTP, S3/GCS/AZ interface and you do not have to read the entire file to access a subset of your data. You can fetch, compress, and decompress just what you need without reading the entire file.
Cloud optimized point cloud data stores point data organized in a clustered octree. So what is an octree? According to Wikipedia octree is a tree-based data structure where each parent node has exactly eight children nodes.
(Octree structure source: Wikipedia)
It is Suitable for partitioning a three-dimensional space into eight octants through recursive division. It is therefore suitable for spatial representation.
This allows data to be consumed sequentially by any reader that can handle variably-chunked LAZ 1.4 or as a spatial subset for readers that interpret the COPC hierarchy.
COPC designs abstract a lot from the user so the user needs to know very little about the structure of a LAZ file. Additionally, COPC is backward compatible with LAZ 1.4, LAZ PDRFS 6,7, and 8. Since COPC is an open extension of LAZ it is supported for PDAL and other open-source tools such as QGIS.
What you can do with COPC.
- Stream and render point cloud data on your browser. It supports range requests hence you can have your data in a web application and be able to query and visualize the data.
- Compute an overview. Software applications can traverse through the data and carry out analysis of the data.
- Data access over HTTP without a server between the client and data source.
- Support for point cloud data on QGIS.
Cloud-optimized point clouds data functionalities in QGIS.
You can add and visualize cloud optimized point clouds data to your project on QGIS for versions 3.26 and later. This is a great milestone as you have access to all the other amazing QGIS functionalities available.
Adding COPC data to QGIS from your local drive.
On the QGIS working environment click on the Add Data source icon to open an add data dialog for adding data. We will use Cloud Optimized Point Clouds data for the venerable Autzen Stadium from( https://github.com/PDAL/data/blob/master/autzen/autzen-classified.copc.laz )
A simple way to add COPC data to QGIS is to drag and drop your COPC file to your QGIS working environment.
Adding COPC data from the server.
If your data is stored in a remote repository, you can use an HTTP request to fetch your data. On the Add data source dialogue, select Point cloud and then Protocol: HTTP(s), etc option. You can then input the URL to your data source.
It will then request your remote data from the host server.
Unlike LAZ data, COPC data after being added to the QGIS working environment does not take time to render as it comes already indexed and it does not need to be indexed first before it can be rendered.
To get a 3D view of the data, go to view>new 3D view.
Visualizing the COPC data.
After loading the COPC file to your QGIS environment you can explore your data and change the look of the data. Click on the COPC layer and open the properties tab.
Here you can play around with the classes under symbology and also check metadata, statistics, information, 3er Styling tab D view, and elevation of the data.
Additionally, the display can be changed using the Layers Styling menu (View> Panels>Layers Styling).
You can then change the value of the Red, Green, and Blue bands using the drop-downs. Here you can select any attribute of the data to use on the RGB bands. Apart from using RGB, you can also use Attribute by Ramp which is based on a single attribute of the data, or Classification which shows different colors for different classes.
If we use our classification instead of RGB bands our classes will be displayed based on our selected attribute’s classes.
Finally, it is worth noting that at the moment you cannot be able to carry out analysis on the Cloud Optimized Point Clouds data on QGIS. However, this is likely to change in the future as there are organizations such as Lutra Consulting, North Road, and Hobu spearheading development in this area. A workaround for this issue is to use other external tools such as PDAL that can handle this. To know more about PDAL functionalities, check out this podcast episode: https://mapscaping.com/podcast/pdal-point-data-abstraction-library/