2023.1.03

ImprovementLuciadRIA

RIA-4361
Improved visualization performance for raster layers characterized by a highly irregular tile pyramid.

ImprovementLuciadRIA

RIA-4627
Support for sparse WMTS raster layers, i.e., WMTS raster layers with a tile-set structure characterized by missing tiles along the tile pyramid, has been improved. LuciadRIA now allows tiles of higher zoom levels to be displayed even if parent tiles of lower zoom levels are unavailable.

Bug fixLuciadRIA

RIA-4642
According to the documentation, WMSCapabilitiesLayer.getBounds() and WMTSCapabilitiesLayer.getBounds() can return null. This was not reflected in the TypeScript API and is now corrected.

Bug fixLuciadRIA

RIA-4641
Fixed an issue where LuciadRIA would not look for licenses at __LUCIAD_ROOT__/license when the global variable __LUCIAD_ROOT__ wasn't defined.

Bug fixLuciadRIA

RIA-4626
Fixed an issue where creating a WMSTileSetModel or WMSImageModel using createFromURL() or createFromCapabilities() would create a model with a CRS:84 model even if the server's capabilities did not support that coordinate reference. The factory methods will now attempt to create a model with a supported coordinate reference.

Bug fixLuciadRIA

RIA-4637
Fixed a race condition when a feature model runs a query and its store is reloaded at the same time with a new set of features. Before the fix an error could occur and not all features could be added to layer's working set (FeatureLayer.workingSet).

Bug fixLuciadRIA

RIA-4543
Fixed an issue in SLD styling, where external svg images that did not start with an svg tag, caused a crash.

Bug fixLuciadRIA

RIA-4544
Fixed an issue in SLD styling, where fills with a color, but without defined opacity, got an opacity of 50% instead of 100%.

Bug fixLuciadRIA

RIA-4643
Fixed an issue with editing extruded shapes on a Canvas (non-webGL) Map where you could not move the shape.

Bug fixLuciadRIA

RIA-4636
Fixed issues where a selected feature loses its selection state on a layer with the clustering transformer. Such a situation happened when
  • you pan away from the selected feature over a long distance
  • a FeatureLayer.transformer is reset and the original features put into the model had no IDs
  • a FeatureLayer.filter is reset and the original features put into the model had no IDs

2023.1

2023.1.02

ImprovementDefense Symbology

RIA-4519
Added a utility method to MilitarySymbologyPainter to get the actual bounds of a military symbol, that can then be used for fitting on that symbol. Note that regular fitting on the shape of a military symbol will not always give you the desired result. The reason for this is that the symbol shape mostly only contains the anchor points for the symbol, which are then used to calculate a very different final shape to be drawn.

Bug fixLuciadRIA

RIA-4463
Fixed a bug in complex stroking where arrow patterns drawn on non-hardware accelerated maps with type DOUBLE_LEFT_HALF and DOUBLE_RIGHT_HALF were twice the intended size or were omitted partially instead of fully when there is a lack of space.

Bug fixLuciadRIA

RIA-4585

Fixed a bug where draping on meshes could produce blurry results if the meshes was not set as part of terrain.

Bug fixLuciadRIA

RIA-4606
Fixed a bug in the ellipsoidal Topology that in certain situations could influence outputs of the constructive geometry operations.

Bug fixLuciadRIA

RIA-4601
Fixed a bug where a WebGLMap would throw errors when its border is larger than its encompassing html node.

Bug fixLuciadRIA

RIA-4598
Fixed a bug where GeoBuffer.contains2DPoint could throw an error when the buffer's base shape was a Polyline and its end cap was defined set to EndCapStyle.CAP_BUTT.

Bug fixLuciadRIA

RIA-4609
Fixed an issue where the license check failed for licenses that are valid until the year 2038 or later.

Bug fixLuciadRIA

RIA-3852
The bounds calculations for geodetic circle and circular arc implementations, like CircularArc and CircularArcBy3Points are now more accurate. Before, the bounds were too small in some cases.

Bug fixLuciadRIA

RIA-4584
Fixed some links to Map in the LuciadRIA documentation.

Bug fixDefense Symbology

RIA-4518
Fixed an issue where the preview generation for tactical graphics (MilitarySymbologyPainter#createSymbolImage) did no longer work as expected (no preview or wrongly scaled/bounded preview).

Bug fixDefense Symbology

RIA-4554
Added the missing "Armored Carrier with Volcano" (1.X.3.2.2.3.4.3) symbol to the APP-6B symbol hierarchy.

Upgrade considerationLuciadRIA

RIA-4610
The boost library has been updated to version 1.83.0.

2023.1.01

ImprovementLuciadRIA

RIA-4587
Improved label visualization by having label divs with CSS position styles expressed in fractional pixels. Labels now smoothly follow features that move.

Bug fixLuciadRIA

RIA-4501
Fixed an issue with drawing in-path labels for big area shapes on a 3D map. Before the fix, labels could be placed outside the corresponding area shape.

Bug fixLuciadRIA

RIA-4551
Fixed a label flickering issue that occurred when individual features are frequently updated. The order of drawing labels with the same LabelStyle.priority is now deterministic, which improves label stability when updating positions of individual features. Before the fix, small position changes of a feature resulted in showing different labels in the vicinity of the modified feature.

Bug fixLuciadRIA

RIA-4576
Fixed a regression with clustering functionality. The clustering was not triggered when panning the map over a long distance.

Bug fixLuciadRIA

RIA-4574
Fixed an issue when a loading strategy with a multiple query level scales setting could throw an error on a 3D map. Such a situation might happen when a 3D map contained an elevation layer and the camera was close to some steep terrain.

Bug fixLuciadRIA

RIA-4588
Fixed an issue with the TypeScript definition for OGC3DTilesModel. It did not properly implement AttributedTileSet.

2023.1

New featureLuciadRIA

HSPC Pack files are now supported on HSPCTilesModel and TileSet3DLayer.

New featureLuciadRIA

3D Cartesian references, for example the "LUCIAD:XYZ" reference or those created with ReferenceProvider.createCartesianReference, can now be used as the world reference on a WebGLMap. This allows you to visualize non-georeferenced data on a 3D WebGLMap.

A non-georeferenced point cloud visualized in its local, Cartesian 3D reference

The use of a WebGLMap with a 3D Cartesian reference is demonstrated in the 3D icon sample, which now displays a separate panel when you select an icon. The panel uses a 3D Cartesian world reference.

A WebGLMap with a 3D Cartesian reference has certain limitations and conventions to take into account. For more information, please see the article on Cartesian views.

New featureLuciadRIA

The common package of the LuciadRIA samples has been split into multiple packages. If you depended on the @luciad/ria-sample-common package (which we don't recommend since we don't guarantee backwards-compatibility for our samples), you will need to change your imports.

New featureLuciadRIA

LuciadRIA now supports Google Photorealistic 3D Tiles, a globe-covering mesh textured with high-resolution imagery. Support for this dataset has been added in the Data Formats and in the Geolocate OGC 3D tiles sample. All information to get you started is bundled in Google 3D Tiles. Note that the Google Map Tiles API may provide tiles at a lower resolution than what you can experience on Google products (like Google Earth).

New featureLuciadRIA

You can now wrap 2D cylindrical maps around the date line.
A map with date line wrapping enabled
For more information, check out the Configuring a map to wrap around the date line developer article.

New featureLuciadRIA

You can now set an outline style and an occlusion style on just those objects of an OGC 3D Tiles set that are currently selected. See TileSet3DLayer.selectedOcclusionStyle and TileSet3DLayer.selectedOutlineStyle. For an example of how to use these new styles, see Using occlusion and outline styles for selected features.

New featureLuciadRIA

LuciadRIA now offers fog effects on 3D WebGL maps. See map.effects.fog and FogEffect for more details. See also the article Configuring WebGL Map effects.

ImprovementLuciadRIA

You can now set the property facetCulling on a Icon3DStyle. The facetCulling property defines the polygons that are not visible to the camera and will be discarded.

ImprovementLuciadRIA

You can now use TileSetAttribution.getLayerAttributions and the corresponding "LayerAttributionsChanged" event to match attribution strings and logos to their respective layers.

ImprovementLuciadRIA

RIA-4555

The precision of WKT references that use an ellipsoidal version of the Lambert azimuthal equal area projection has been improved. This affects the following EPSG codes:

  • 3035
  • 3571 to 3576
  • 5633, 5635, 5636, 5638
  • 6931, 6932
  • 9039
  • 9947

ImprovementLuciadRIA

You can now use BASED_ON_DATA as a new FacetCullingType when you are styling mesh data for a TileSet3DLayer. You can use it if you are unsure about the face culling type or if you are using a 3D Tiles set that uses GLTF version 2, or if you are mixing double-sided and non-double-sided material.

ImprovementLuciadRIA

RIA-4487
LayerTreeNode now emits events named "VisibilityInTreeChanged". The callback on this event hook gets called when the visibleInTree of the layer tree node changes. This allows you to react on a layer becoming visible or invisible on a LuciadRIA map.

ImprovementLuciadRIA

RIA-4477
GeoJsonCodec now fully supports features with the null geometry, both when decoding and encoding.

ImprovementLuciadRIA

Added new cartesian reference with identifier "LUCIAD:XY", that represents a 2D non-geo cartesian reference, with its axes defined in meters. You can use this reference both as a model reference and a map reference, making it easy to display 2D diagrams such as CAD drawings.

ImprovementLuciadRIA

RIA-4379
Added support for automatic mipmap generation for compressed textures.

ImprovementLuciadRIA

When a valid license for LuciadRIA could not be found, a WebLGMap will now show a watermark.

ImprovementLuciadRIA

RIA-1546
KMLPainter API is now exposed, so that you can extend it to implement a custom styling of KMLPlacemarkFeature objects. Also, KMLPainter exposes methods to obtain LuciadRIA style objects that correspond to the KML style embedded in placemark features. For more information, refer to KMLPainter.

ImprovementLuciadRIA

RIA-3293
Introduced the FeatureId type alias.

ImprovementLuciadRIA

RasterStyle: properties to change the contrast and brightness of a RasterLayer have been added. And it is now also possible to configure a modulation color.

ImprovementPanoramic

RIA-4362
WFSFeatureStore.bounds exposes now data bounds from WFS capabilities.

Bug fixLuciadRIA

RIA-4573
Fixed a regression with MapNavigator.pan. It didn't pan to the right location when passing in a world or model point with a height above ellipsoid.

Bug fixLuciadRIA

RIA-3969
ShapeStyle.zOrder was not applied correctly when used in combination with ShapeStyle.occlusionMode.

Bug fixLuciadRIA

Complex strokes were not always painted correctly for vertical line segments with points with a large altitude.

Bug fixLuciadRIA

RIA-4530
The clustering transformer now accepts an anchor point with a non-0 Z-coordinate that is returned from a custom implementation of ClusterShapeProvider. Before, in such a situation, 3D points were always reduced to 2D points. Please note that the default cluster shape provider still returns anchor points with the Z-coordinate equals to 0.

Bug fixLuciadRIA

RIA-4522, RIA-4461
Fixed a bug in complex stroking where arrow patterns drawn on WebGL maps with type DOUBLE_LEFT_HALF and DOUBLE_RIGHT_HALF were twice the intended size or were omitted partially instead of fully when there is a lack of space.

Upgrade considerationLuciadRIA

LuciadRIA now depends on the myVRArchive library to support Hexagon Smart Point Cloud (HSPC) Pack files. This new dependency requires no code changes.

Upgrade considerationLuciadRIA

WebGLMap.globeColor has new behaviour.

The globeColor can now be set to null to avoid painting a globe entirely. This also disables 2D vector and raster painting. Only data that does not need to be draped will be rendered on the map.

On top of that, you can now set the alpha value of your globeColor to 0, which will render a fully transparent globe in the absence of raster layers. The fully transparent globe still allows you to drape 2D shapes and images on top of it.

Setting a globeColor with an alpha values between 0 (exclusive) and 1 (inclusive) will render the globe with a fully opaque color.

Upgrade considerationLuciadRIA

RIA-3811
Icon3DStyle: The axis system for rendering 3D icons has been changed. The Y-axis now points to the north, the X-axis to the east and the Z-axis upwards.

When loading glTF files they are now also automatically converted from their Y-up axis system to the LuciadRIA axis system, as a result you will in most cases no longer need to apply rotations to have your model oriented correctly.

For compatibility reasons Icon3DStyle.legacyAxis was added. Setting this property to true restores the behavior as it was. In the LuciadRIA 2023.1 release this property defaults to true, so you do not need to update existing code. From LuciadRIA 2024.0 onwards the default will be set to false, it is recommended to already adapt your code for the changes in the axis system.

Upgrade considerationLuciadRIA

LuciadRIA now uses libtiff version 4.5.1.

Upgrade considerationLuciadRIA

The default orientation of 3D icons on maps with a cartesian world reference has been changed. Previously, by default, the X-axis of the 3D icon was aligned with the X-axis of the world reference. Now, the forward axis of the 3D icon is aligned with the Y-axis of the world reference. Additionally, the heading property of the orientation property of Icon3DStyle now operates clockwise instead of counter-clockwise. These changes were made to improve consistency with other functionality where the Y-axis of the cartesian reference serves as the north direction (e.g. LookAt, IconStyle.heading, etc.).

Upgrade considerationLuciadRIA

RIA-4477
GeoJsonCodec.decodeGeometry and GeoJsonCodec.decodeGeometryObject can now return null. This is a consequence of the enhancement to support features with the null geometry by GeoJsonCodec.

Upgrade considerationLuciadRIA

The way texture wrapping (repeat, mirror repeat or clamp) for glTF is handled, has been changed to properly follow the glTF 2.0 specification. This means that now the default behavior for textures inside glTF 2.0 is "repeat", but we no longer force "repeat" when "clamp" is specified inside the sampler.

Upgrade considerationLuciadRIA

The boost library has been updated to version 1.83.0.

Upgrade considerationLuciadRIA

RIA-1692

The versions property in WFSFeatureStoreConstructorOptions, WFSCapabilitiesFromUrlOptions, and WFSFeatureStoreCreateOptions are not anymore of the "string" type but WFSVersion enumerations.

The allowedVersions property passed to WFSCapabilities.fromURL is not anymore of the "string" but WFSVersion enumerations.

The WMS version property in WMSImageModelConstructorOptions, and WMSTileSetModelConstructorOptions is not anymore of the "string" type. Versions are now represented as WMSVersion enumerations.

The allowedVersions property passed to WMSCapabilities.fromURL, WMTSCapabilities.fromURL is not anymore of the "string" but WMSVersion enumerations.

Please replace all string version values in your code by corresponding version enumerations. Creation WFSFeatureStore from capabilities with a specific WFS version:

      createFromCapabilities(capabilities, featureTypeName, { versions: ["2.0.0"] });
    
should be now:

      createFromCapabilities(capabilities, featureTypeName, { versions: [WFSVersion.V200] });
    

Upgrade considerationLuciadRIA

RIA-4433
Corrected TypeScript definition for FeatureModel.get. The return value can also be undefined, which is the case when no feature with the given id exists in the model.