2024.1.06

ImprovementLuciadRIA

RIA-5108
Enhancing the performance of OGC 3D Tiles on Intel Graphics Processing Units when shadows are disabled.

Bug fixLuciadRIA

RIA-5119
Fixed an issue where an inline kml:Style in a KML Feature would completely replace the shared style referenced by kml:styleUrl. Now, the inline style correctly overrides only the specified properties while inheriting the rest from the shared style, as per the KML specification

Bug fixLuciadRIA

RIA-5106
In 3D, pick results (as from `map.pickAt()`) are now correctly sorted according to camera depth, instead of layer order. This means that the top-most object in the scene is now always picked first. Previously, in cases where multiple candidates from different layers were picked, an object from the top-most layer would always win, even though that object would be behind another object.

Bug fixLuciadRIA

RIA-5112
Fixed a bug in large 3D tile sets where offsetTerrain could be ignored when precise is set to true.

Bug fixLuciadRIA

RIA-5118
Fixed a bug where using the SwipeController on maps displayed on high resolution (hiDPI) screens resulted in incorrect behavior.

2024.1.05

Bug fixLuciadRIA

RIA-5102
Fixed a bug where glTF data with normalized metadata loaded with incorrect values.

Bug fixLuciadRIA

RIA-5100
Fixed an issue where a selected feature was re-added to a cluster after mutation. Features now remain excluded from clustering when they are mutated while being selected.

Bug fixLuciadRIA

RIA-5097
Fixed an issue where a label's position was not refreshed when the feature's shape was updated.

Bug fixLuciadRIA

RIA-4902
Fixed an issue in drawLabelInPath where some labels where not placed correctly near the equator.

Bug fixLuciadRIA

RIA-5094
Fixed an issue in TileSet3DLayer where offsetTerrain was being ignored for some 3D Tiles dataset when precise was set to true.

2024.1.04

Bug fixLuciadRIA

RIA-5088
The LoadSpatially strategy has been improved to handle edge cases. The strategy now better handles scenarios where FeatureModel.bounds has zero size or when the map bounds cannot be retrieved. Previously, an exception was thrown if these scenarios occurred, or no data would be returned.

Bug fixLuciadRIA

RIA-5085
Improved feature ID handling in the MemoryStore. Features with existing valid IDs will no longer have their IDs reassigned.

Bug fixLuciadRIA

RIA-5067
The bounds calculation of polylines and polygons didn't always take the curvature of the line segments into account. This could lead to bounds that are too small. This in turn could lead to other issues, such as the outline of a buffer not being visualized correctly. This is now fixed.

Upgrade considerationLuciadRIA

RIA-4773
The HereMapsTileSetModel has been updated to use the HERE Maps Raster Tile API v3. The HERE Maps Map Tile API v2 has been retired by HERE and is no longer available as of the end of Q1 2025. The Raster Tile API v3 is not backward compatible with the old Map Tile API v3. Please refer to the HERE Maps migration guide to adapt your code. The configuration options of the modified HereMapsTileSetModel reflect the options for the new Raster Tile API v3.

2024.1.03

ImprovementLuciadRIA

RIA-5069

You can now create cartesian references from WKT using ReferenceProvider.parseWellKnownText, using the LOCAL_CS WKT tag.

The WKT for a cartesian reference should have a name, local datum, unit and 2 or 3 axes. Here is an example:
LOCAL_CS["MyCartesian",LOCAL_DATUM["Unknown",0],UNIT["m",1.0],AXIS["x",EAST],AXIS["y",NORTH],AXIS["z",UP]]

ImprovementLuciadRIA

RIA-4619

It is now possible to do transformations (via TransformationFactory.createTransformation) between a 2D and 3D cartesian reference, if the 2D axes are compatible. In that case, only a 2D transformation is done, and the z value is left untouched.

As a consequence, you can now load 2D cartesian data on a 3D cartesian map, and vice-versa.

Note that you can make such references using ReferenceProvider.createCartesianReference, or using the short-hand LUCIAD:XY and LUCIAD:XYZ identifiers in ReferenceProvider.getReference.

ImprovementLuciadRIA

RIA-5074

The minScale and maxScale properties on Layer are now applied also on maps with a cartesian reference.

If your cartesian map has non-uniform X/Y axes, the minScale and maxScale properties are ignored since they are ambiguous. For example, if your map has an X axis with length unit in meters, and a Y axis with a temperature unit in degrees Celsius, a single scale of 1:100 has no meaning.

ImprovementLuciadRIA

RIA-5073

You can now use world-sized styling on cartesian maps, as long as the unit of measure is compatible with the X and Y axis of the map reference.

In addition, if world-sized styling is not supported, a warning will be logged and a fall-back width is used, instead of failing to paint entirely.

ImprovementLuciadRIA

RIA-5070

You can now use WFSFeatureStore with WFS services that contain data in a local cartesian reference.

In that case, the WFS reference should be a LOCAL_CS WKT, and the the store will have a CartesianReference. You can then use this store directly on a cartesian map, for example one with LUCIAD:XY as map reference.

Bug fixLuciadRIA

RIA-5075

Spatial loading of FeatureLayers on a map with a 3D cartesian reference failed, this is now resolved.

Note that spatial queries are 2D, so the query bounds will be projected on the Z=0 plane.

Bug fixLuciadRIA

RIA-5068
Fixed a potential uncaught exception that occurs when selecting on a map if a TileSet3DLayer is present.

2024.1.02

ImprovementLuciadRIA

RIA-5038
getReference now throws an UnknownIdentifierError instead of a generic Error. OGC3DTilesModel#create and HSPCTilesModel#create Now throw an UnknownIdentifierError if the reference cannot be found, instead of assuming that the dataset is not geo-referenced.

Bug fixLuciadRIA

RIA-5063
Layer#balloonContentProvider is no longer called with a stale feature after updating that feature in the store.

2024.1.01

ImprovementLuciadRIA

RIA-5037
TileSet3DLayer will now accurately report when it encounters data that cannot be interpreted.

ImprovementLuciadRIA

RIA-5045
The GraphicsEffects now emits events whenever an effect is changed.

ImprovementLuciadRIA

RIA-4914
TileSet3DLayer now emits the following events:
  • TransformationChanged at any change of Tileset3DLayer.transformation
  • MeshStyleChanged at any change of Tileset3DLayer.meshStyle
  • PointCloudStyleChanged at any change of Tileset3DLayer.pointCloudStyle
  • OutlineStyleChanged at any change of Tileset3DLayer.outlineStyle
  • SelectedOutlineStyleChanged at any change of Tileset3DLayer.selectedOutlineStyle
  • OcclusionStyleChanged at any change of Tileset3DLayer.occlusionStyle
  • SelectedOcclusionStyleChanged at any change of Tileset3DLayer.selectedOcclusionStyle
  • QualityFactorChanged at any change of Tileset3DLayer.qualityFactor
  • PerformanceHintsChanged at any change of Tileset3DLayer.performanceHints

Bug fixLuciadRIA

RIA-5062
Fixed an issue in WMTS capabilities parsing. The bounds of WMTS TileMatrixSets that are defined in a CRS with a lat-lon axis order (for example EPSG:4258) were not correctly parsed. The order of the axes was swapped (lon-lat vs. lat-lon). As a consequence, the WMTS data appeared in the wrong location on the map.

Bug fixLuciadRIA

RIA-5043
Resolved an issue where clustering on Cartesian maps could fail, showing an NPE in the logs. This fix improves stability and ensures correct clustering behavior on maps with Cartesian references.

Bug fixLuciadRIA

RIA-4727
Fixed an issue with the ArcBand and Sector shapes, where mutating the center point caused rendering artifacts. The center point is now read-only, as described in the API documentation.

Bug fixLuciadRIA

RIA-5017
It is possible that a WMTS service reports in its capabilities TileMatrixSets that are not ordered according to scale denominator. LuciadRIA would throw an error when trying to create a WMTSTileSetModel model using such a TileMatrixSet. This is now fixed.

Bug fixLuciadRIA

RIA-4914
Resolved an issue in OGC 3D tiles where changes to the selectable flag were ignored.

2024.1

New featureLuciadRIA

RIA-4956

Statistics for HSPC are now available from the HSPCTilesModelDescriptor.properties. These properties are only defined if the pointcloud contains statistics.

New featureLuciadRIA

WebGLMap now supports display scaling. This allows for sharp and crisp map rendering on high resolution (hiDPI) displays.

More information can be found in the Display scaling (hiDPI) in LuciadRIA guide.

New featureLuciadRIA

Symbology Encoding (SLD): added support for the vendor option 'inclusion'.

You can now use the vendor option 'inclusion' in your SLD style files to differentiate between styling for legend entries and styling for regular maps. You can provide a `painterType` when creating a Symbology Encoding painter, to indicate which styles should be used.

More information can be found in SLD legend, vendor option 'inclusion' - Usage and examples

A Legend tool was added to the LuciadRIA Toolbox. See toolbox/ria/legend/README.md for more information. Basic usage is illustrated in both the LuciadRIA Symbology Encoding sample and the LuciadRIA Smart Data Loading sample.

New featureLuciadRIA

You can now set the reference of WebGLMap after the map has been created, instead of only at construction time. Please refer to WebGLMap.reference for more information and restrictions.

All samples that can be run in multiple references now have a new button in the top left that allows users to change the reference of the map, without having to recreate the map. The Dual map sample now also sets the references on the maps, instead of recreating them.

New featureLuciadRIA

Added support for the BezierCurve geometry. You can now create, visualize, and edit both quadratic and cubic Bézier curves. For more details on how to create these shapes, please refer to ShapeFactory.createQuadraticBezierCurve or ShapeFactory.createCubicBezierCurve.

The Create and Edit sample allows you to interactively create and edit these shapes.

New featureLuciadRIA

RIA-4931
You can now use the mod expression in ExpressionFactory.

New featureLuciadRIA

LuciadRIA now supports RESTful encoding for WMTS GetCapabilities and GetTile requests.

When fetching the capabilities document, you can set the preferred WMTSRequestEncoding by using WTMSCapabilitiesFromURLOptions#preferredRequestEncoding.

When creating a WMTSTileSetModel from a URL or from a capabilities document, you can set the preferred WMTSRequestEncoding by using WMTSTileSetModelCreateOptions#preferredRequestEncoding. When creating the WMTSTileSetModel directly, you can set the required WMTSRequestEncoding by using WMTSTileSetModelConstructorOptions#requestEncoding.

New featurePanoramic

You can now visualize video panoramas in LuciadRIA. To do this, you create a specialized PanoramaModel. For simple cases, you can use the convenience function VideoPanoramaModel#createVideoPanoramaModel to create the model. Please refer to the API documentation for details. More information can be found in the how-to article. The "Video panorama" sample also demonstrates how you can use the API to handle video panoramas. Note that you'll need a license for the LuciadRIA "Panoramics" optional module for this API to work.

ImprovementLuciadRIA

RIA-5007
In OGC SLD filter, functionality was added to allow the use of literals that need to be interpreted strictly as strings without the attempt to parse them as numbers or booleans. When using FilterFactory.literal you need to pass in LiteralOptions with strict set to true. When writing an SLD filter through XML, you need to wrap your literal value in a CDATA tag to prevent the parser from interpreting it as a number or boolean.

ImprovementLuciadRIA

HSPC attributes of the type 64 bits floats can now be used in expressions for point clouds. see HSPCTilesModel.properties for more info.

ImprovementLuciadRIA

LuciadRIA TypeScript definition files are now generated with TypeScript 5.6. The LuciadRIA samples and the LuciadRIA Toolbox now also use TypeScript 5.6. We recommend that you upgrade to TypeScript 5.6 as well, but the LuciadRIA definition files typically remain compatible with older TypeScript versions.

ImprovementLuciadRIA

LuciadRIA now supports the following features of the OGC 3D Tiles specification version 1.1:
  • GPU instancing with the EXT_mesh_gpu_instancing extension
  • Allow associating metadata with vertices or texels with the EXT_structural_metadata extension.
  • Loading of point clouds from GLB files
. In EXT_structural_metadata, Property Textures and Multiple Feature IDs are not supported. See the OGC3DTilesModel class documentation for a complete list of supported features.

ImprovementLuciadRIA

RIA-4979
You can now configure the pitch of a head light. By default, a fixed -45 degrees is used. For more information, see CreateHeadLightOptions.

ImprovementLuciadRIA

RIA-4979
On maps with a 3D Cartesian world reference, the (fixed) pitch of a head light is no longer 0 but -45 degrees. This change was made to align the behavior with other references.

ImprovementLuciadRIA

RIA-4979
You can now use a directional light with a direction of your own choosing as the light on a map. For more information, see LightEffect.createDirectionalLight.

ImprovementLuciadRIA

The "Monitoring building information" sample was renamed to "OGC 3D Tiles Property Injection".

ImprovementLuciadRIA

The IFC/Revit sample has been modified to also showcase Binz and Navisworks data. You can now also use it to visualize and interact with your own custom BIM data, with or without feature-data. The sample has been renamed to BIM Viewer sample.

ImprovementLuciadRIA

RIA-4763

Improved the tessellation (polygon fill) of non-planar polygons. In some cases, these polygons would not be filled properly.

The improvement applies to both FeatureLayer.performanceHints settings: PREFER_QUALITY or PREFER_PERFORMANCE.

Note that polygons are still expected to be mostly planar and not self-intersecting. If not, it's possible certain parts are not filled properly.

ImprovementLuciadRIA

RIA-5019
The determination of the hoverable state for a KML layer, when not explicitly set by the user, has been improved. Before this fix, a layer could incorrectly be marked as hoverable even if placemark styles were identical. This behavior could lead to unnecessary performance overhead.

Bug fixLuciadRIA

RIA-5010
Fixed an issue with KMLLayer where resource icons and images inside KMZ files were not properly linked to KML placemarks when the KML layer URL contained parameters. As a result, placemarks referring to KMZ resources were either not visualized or displayed incorrectly. Now, KMZ resources are properly visualized in this case.

Bug fixLuciadRIA

RIA-4990
Fixed an issue where transforming bounds using Affine3DTransformation would lead to a wrong result.

Bug fixLuciadRIA

RIA-4916

Fixed an issue with shape visualization where the latitude element of geodetic points was outside the valid range of [-90, 90] degrees.

Now, when creating a Point, Polyline, or Polygon, the latitude element of geodetic points is automatically clamped to the valid range of [-90, 90] degrees, establishing accuracy from the start.

Upgrade considerationLuciadRIA

RIA-3113
The Polygon and Polyline API now correctly defines the type for the bounds and focusPoint getters. Empty Polygon and Polyline objects return null for these properties. While null could already be returned, our type definitions did not reflect this correctly. This change may cause build issues, but existing runtime behavior will remain unchanged. You must now check these properties for nullity before using them as non-null values.