About this release

The 2023.0 release of LuciadRIA focuses on increased performance, visual quality, and stability. With 2023.0, maps boot faster, point cloud visualization is more performant than ever and comes with new options to tune visual quality. There is a new API to deal with WebGL context losses, and you can now use complex strokes on 3D shapes. Additionally, LuciadRIA now supports non-quad tree raster tile sets, including WMTS irregular tile matrices.

luciad portfolio
Figure 1. The Luciad portfolio.

Benefits of the new features

Point cloud rendering: less is more

We made several improvements to the LuciadRIA point cloud visualization, as illustrated in the figure This release offers a set of tools to finetune point cloud rendering. Performance has improved across the board. You now have an API to limit the number of points visualized, which can prevent performance degradation on lower-end devices. We also added an algorithm that dynamically adapts the point size based on the local density of the point. When applied, it increases the visual quality of the point cloud by reducing the gaps between the points.

With these new tools, you can make point clouds look better, or gracefully degrade on lower-end hardware, in situations with reduced bandwidth, and so on. Less is more, indeed.

This release offers a set of tools to finetune point cloud rendering.
Gappy point cloud
A point cloud with high visual quality

Sample code/documentation to get you started

The article Tuning performance and visual quality of point clouds discusses the point count optimization option in a new section Limiting the number of points in a point cloud layer. It also offers a convenient overview of recommended settings for optimal point cloud visualization.

Apply complex strokes to 3D shapes

You can now use complex strokes on 3D shapes as well as on draped (2D) shapes. For example, you can show a dashed line on a 3D box shape. Non-draped pixel-sized 3D lines with complex strokes are oriented towards the viewer, as illustrated in the figure Complex strokes applied to 3D shapes. This improvement also extends to world-sized lines, and includes the application of OGC SLD/SE patterns on 3D lines. These OGC SLD/SE patterns can also be defined either in pixels or in world units of measurement.

Complex strokes can now be applied to 3D shapes. The strokes are oriented towards the viewer.
Complex stroke one
complex stroke two

This new capability doesn’t change the existing API. In previous releases, LuciadRIA always draped 3D lines with complex strokes. If you want to keep that behavior, specify draped: true in your ShapeStyle.

Support for irregular raster tile sets

LuciadRIA now supports raster tile sets that don’t have a quad-tree structure. These are tile sets where the different levels don’t have the same bounds, or the number of rows and columns aren’t a power of two with respect to the top level. This improvement includes support for non-quad tree WMTS TileMatrixSets, so different tile matrices can be defined.

Other improvements

Recovery from WebGL context loss

LuciadRIA now offers an API that allows you to handle WebGL context losses. These events occur when the browser needs to free up GPU resources, for example when:

  • The system load is too high

  • A driver crash occurs

  • Laptops are docked/undocked

  • Laptops go into sleep mode

Using the new API, you can listen for these events and request that LuciadRIA re-creates its GPU resources so that your application can gracefully recover from a WebGL context loss event. The user no longer needs to re-start the application. For more information and usage recommendations, see the article Dealing with WebGL context losses.

OGC SLD/SE custom functions

LuciadRIA now offers a set of pre-defined SLD/SE custom functions, including the Recode, Interpolate and Categorize functions. You can also define your own SE functions.
The Symbology Encoding sample includes a custom function example that shows you how to give roads a specific width depending on the road type mentioned in the road name. For more information about defining and using those functions, see the article SLD custom functions - Usage and examples.

se custom road function
Figure 2. SLD/SE custom function for road styling.