Enhancing elevation data and point clouds in QGIS

Crowdfunding Status: Successful

Time Remaining:

UPDATE 14/06/2022

The features listed in this crowdfunding are now available in QGIS 3.26. For more information read our three parts updates: part 1, part 2 and part 3.

UPDATE 13/12/2021

Not only we have reached the target for the stretch goal, but also exceeded it! The extra fund will be used for further improvements and bug fixing.

UPDATE 10/12/2021

We have reached our target fund for the tools in this proposal. There is a stretch goal to add ambient occlusion to the 3D view if we reach 79000 EUR (see below for more details).

Introduction

Last year we ran a crowdfunding campaign to add support for point cloud data to QGIS. We have been humbled by the overwhelming positive response of the community - the project got funded thanks to more than 60 organisational and individual contributions and even exceeded the original budget. The results of our development efforts on point cloud support have been available since QGIS 3.18 (released in February 2021).

    "The work that has been done by Lutra, Hobu and North Road to integrate point clouds into QGIS is unbelievable. The first cut at that and I was immediately using it on a project. Because there's nothing quite like dropping your point cloud right on the map and verifying and digitizing right on top of that. As far as workflow, that changes things substantially relative to anything I have seen before."
    -- Stephen Mather, co-founder of OpenDroneMap (interviewed at MapScaping podcast)

 

Buildings extracted from lidar, overlaid on top of a cadastral map from 1890. Made by Tibor Lieskovsky, data UGKK SR.

Buildings extracted from lidar, overlaid on top of a cadastral map from 1890. Made by Tibor Lieskovsky, data UGKK SR.

 

Colorized point cloud in 2D and 3D view. Data City of Helsinki.

Colorized point cloud in 2D and 3D view. Data City of Helsinki.

 

Mobile lidar survey. Top: 2D map based on intensity attribute. Bottom: 3D map using colors. Data Canton of Neuchatel.

Mobile lidar survey. Top: 2D map based on intensity attribute. Bottom: 3D map using colors. Data Canton of Neuchatel.

 

Visualization of a classified point cloud with different color ramps applied to buildings and ground. Data UGKK SR.

Visualization of a classified point cloud with different color ramps applied to buildings and ground. Data UGKK SR.

 

In the recent months we have been collecting feedback from users of point clouds in QGIS across a range of industries, and it became clear that there is a lot of interest to further advance these capabilities. However, we found that demand was not only limited to point clouds, but also to improve handling of other types of 3D data too (e.g. raster digital elevation models, 3D vector data or meshes).

So we are excited to announce that North Road, Hobu and Lutra Consulting have again decided to join forces and launch a new crowdfunding campaign to push working with point clouds and other 3D data to the next level! Building on top of the work started last year, we have compiled an exciting set of enhancements and improvements for the next round. Let’s have a look at what our plans are:

Deliverables

Profile tool

A tool for drawing profiles of elevations is essential when working with 3D data, yet it has long been missing from QGIS. While there are several plugins for QGIS that add this missing functionality, unfortunately they all have limitations when it comes to ease of use, performance, integration with the rest of the user interface and wealth of functionality. The goal is to add a profile tool that would cover a wide variety of use cases, and be available immediately out-of-the-box for all QGIS users.

An example of a cross-section: view from the top including the profile line with a buffer, and the profile with two different ways of styling (classification / elevation-based).

An example of a cross-section: view from the top including the profile line with a buffer, and the profile with two different ways of styling (classification / elevation-based).

An example of a cross-section: view from the top including the profile line with a buffer, and the profile with two different ways of styling (classification / elevation-based).

An example of a cross-section: view from the top including the profile line with a buffer, and the profile with two different ways of styling (classification / elevation-based).

In the new, integrated profile tool we will include a whole grab-bag of features!

  • Unified support for raster, vector, mesh and point cloud layers
  • Combine profiles from one or more map layers (by default using just the active layer)
  • Profiles defined by ad-hoc line drawing or by using a linestring from an existing vector layer
  • Use styling from the source map layers whenever possible (also allowing custom styling!)
  • The profile view will support zooming/panning to see fine details
  • Mouse hovering on the profile view will show the corresponding cursor location in the map canvas (and vice versa)
  • Measure distances in the profile
  • Save profile images to a file
  • Provide a quick way to move the profile line “left” and “right”, if based on two points only (ie a line segment)
  • Show further details of features clicked on the profile (attributes of points for vector layers and point cloud layers, values of raster bands, values of datasets of mesh layers)

As a part of this work, we will introduce elevation-related configuration for map layers such as vertical offset and scaling). In current QGIS versions this information can be set for some 3D renderers only, but in general QGIS does not know how to relate elevation (Z values) from different map layers in a consistent way.

The profile tool should be also extensible so that plugin developers can add data with specific interpretations (e.g. drill holes) to profiles or embed profiles in their custom tools. We’ll also ensure that all profile related work is done in such a way to expose all useful functionality for re-use in scripts and plugins via PyQGIS, and that the code is designed to accommodate other future use cases not included in this campaign (such as profiles embedded in print layouts).

Enhanced visualisation of point clouds in 2D map canvas

A technique that is extremely useful for visualization of point clouds in the 3D map view is the Eye Dome Lighting effect, which adds subtle shading and silhouettes (when there is a greater change of elevation) making it much easier to identify various features of interest that could be otherwise hard to see. To date this feature is only available in 3D QGIS map views, but we would like to introduce it to 2D map view as well! Many GIS workflows and products are still entirely based around 2D views of data (such as digitizing of vector data), so having the extra visual clues which Eye Dome adds is also highly desirable in 2D views.

Point cloud - without hillshade Point cloud - with hillshade

Top-down 2D view of a classified point cloud. Left: rendering without Eye Dome Lighting (EDL) effect. Right: rendering with EDL.

As a part of this work, we will also add an option to force rendering of point cloud data from the lowest elevation to the highest elevation (or vice versa). Currently the order of rendering points based on elevation is not enforced, sometimes causing minor visual issues (such as ground level points obscuring higher vegetation points). This option will improve the appearance of point clouds in 2D, and avoid loss of detail for dense point clouds.

Filtering of point clouds for visualization

A common requirement of analysts when working with point clouds to work with just a subset of the dataset. This could be as simple as showing only one class of a classified dataset, using only a limited range of elevations, viewing just a particular flight line, or looking at just the first/last returns. Currently, QGIS only provides basic class-based filtering when using rendering based on classification.

If the campaign is successful, we will introduce a simple GUI where users could set up one or more filtering conditions that would be applied to 2D and 3D rendering.

Improve 3D map views

For better support of point cloud data it is essential to improve the overall user experience for QGIS 3D map views. 3D map views are still relatively new in QGIS and there is still a lot of room for improvement in various ways.

One of the limitations is the 3D map view’s window: when it gets closed the configuration of the 3D map view is discarded and any newly opened 3D map view needs to be re-configured again. This is frustrating for users and results in a lot of wasted time! We would like to fix this by keeping 3D views stored in QGIS projects, even when they are not currently being shown. Another issue related to 3D map views is the fact that they are currently only “dock widgets” that can be embedded within the main window. However, often it is preferable to be able to see the 3D view content in a big window, which is quite tricky to do in current QGIS versions (especially when the user does not have multiple displays).

In addition to the above, we would like to do various smaller quality of life improvements to users of 3D map views - whether related to performance, navigation, stability or ease of use.

Cloud-optimized point clouds

The new specification of cloud-optimized point clouds (COPC) is current being finalized (October 2021) and it is a very exciting innovation! Inspired by the hugely successful cloud-optimized GeoTIFF (COG) format, the idea is to reuse the existing LAZ format (widely used by the lidar community) and add the improvements which make the format useful in new scenarios:

  • Traditional LAS/LAZ files contain points without any structure - that means other tools and viewers cannot quickly query subsets of data without reading the whole file. As a result, applications like QGIS or Potree need to preprocess the files before they can be displayed - this takes both time and disk space (another copy of the data is made). COPC fixes that by introducing internal structure, not requiring further processing or extra disk space.
  • Traditional LAS/LAZ files need to be downloaded as a whole before they can be used. With COPC, it is possible for clients to request only small portions of the data file, making it more efficient for both data producers and consumers.

We would like to add COPC support to QGIS as we are seeing great potential in it - both for cases when data is stored locally or remotely (e.g. in cloud environments). This requires improvements in the underlying PDAL and untwine libraries used by QGIS, with the natural flow-on benefits to all other applications which also utilise these libraries.

Additional point cloud data formats & more robust loading

While LAS and LAZ files (currently supported by QGIS) are the most common formats for point clouds nowadays, they are not the only ones. In order to support more formats in QGIS we do not need to worry about technical details of each format thanks to the PDAL library. It comes with a multitude of drivers for various formats and services - see https://pdal.io/stages/readers.html . In QGIS we need to provide a user interface to allow people to get other additional formats to work. Some drivers are always available in PDAL, others are optional and may need extra third-party libraries in order to work. We welcome feedback from the community regarding drivers they consider important.

A related improvement will be to make the process of loading point cloud datasets more robust - we are aware of a number of cases when loading datasets fails. And if the loading fails, QGIS does not even produce an error message, leaving users to wonder what went wrong...

Timeline

The campaign is set to finish on December 10, 2021. We plan to commence the work once the target for our crowdfunding campaign has been reached. We aim to deliver the promised features in QGIS 3.24 (due to be released in February 2022) and in QGIS 3.26 (due to be released in June 2022).

Crowdfunding

By supporting this project, you will help to bring working with elevation / 3D data in QGIS to the next level, with extra focus on enhancing functionality related to point clouds.

This project cannot go ahead without your support! We use crowdfunding to raise funds for projects like this one which benefit a wide community of users. The project will only go ahead if sufficient funding can be raised before the project crowdfunding deadline. Please see our main crowdfunding page for more information about our crowdfunding initiative and how it works.

Pledging funds is safe and easy. Simply fill in the pledge form to state how much you want to pledge - pledges only become binding if the funding target is reached before the deadline.

If you are based in the US or Australia and have difficulty pledging funds to companies outside your country, please contact Hobu or North Road to facilitate your contribution.

VAT and your pledge

Because there's a specific goal to this crowdfunding exercise, pledges may be subject to UK VAT (value-added tax). Please read this section to understand how your pledge will be treated for VAT purposes.

If you are based outside the UK, then VAT is not applicable to your pledge and the full pledge will be allocated to the campaign.

If you are based in the UK, your pledge is considered inclusive of VAT at 20% if you registered as an individual and exclusive of VAT at 20% if you registered as an organisation.

Stretch goals

If the pledges exceed the target amount, we will use any extra funds for further improvements to elevation data and point clouds. We have prepared some stretch goals and we will continue to add further goals should there be enough interest by contributors.

79 000 EUR - Add ambient occlusion to the 3D view. This rendering technique adds some realism to the scene by making some pixels darker, based on how much they get occluded by their surroundings. The effect therefore is most pronounced for example near inner corners or under trees, improving depth perception. This feature will not be limited to only point clouds, but it will apply also to other kinds of 3D data.

Point cloud - without hillshade Point cloud - with hillshade

Comparison of a sample scene without (left) and with ambient occlusion (right).

About us

This effort has been organised and led by Lutra Consulting in collaboration with North Road and Hobu. These are three highly respected, proven companies committed to open source GIS, all of them with a history of running successful campaigns to enhance Open Source GIS software.

Lutra Consulting      North Road      Hobu

Together, we’ve put together a team of outstanding quality and complementary skills:

  • Lutra Consulting (based in the UK) has been contributing to QGIS for more than ten years and are leading development of the 3D map view within QGIS
  • North Road (based in Australia) are one of the leading forces in QGIS development, adding great amount of new features with a lot of focus on beautiful cartographical and analytical capabilities
  • Hobu (based in the US) has been extremely active in the fundamental FOSS4G libraries including GDAL, PROJ and others. More importantly, Hobu has been leading the development of PDAL library for nearly 10 years.