2022.1.05

ImprovementLuciadFusion

LCD-12794
You can now customize the location of SLD external graphics at runtime. To support this use case, a new interface ILcdSLDOnlineResourceResolver can be implemented and configured on a TLcdSLDContext. The interface allows to resolve TLcdSLDOnlineResource instances, which are used to represent the location of external graphics in an SLD file.

ImprovementLuciadFusion

LF-2346
CSW records of type Service and Dataset now include a related resource link that points to the corresponding Service or Data REST API resource in LuciadFusion Studio. Note that you need to request the fullelementSetName to get related resources in the returned records of a CSW query.

ImprovementAviation Standards

LCD-12653
AIXM 5.1 holding patterns are now visualized in GXY and Lightspeed views, using an oval icon that aligns with the turn direction and inbound course:
Holding pattern visualization
A holding pattern located at a navaid, with a right turn direction and an inbound course of 264 degrees.

ImprovementDefense Symbology

LCD-12797
The new TLspMilitarySymbologyLayerBuilder lets you visualize APP-6 and MIL-STD-2525 symbols within the same layer.

ImprovementDefense Symbology

LCD-12753

Improved the rendering of the Sea Mine symbols when their fill is disabled for various standards. When their symbol fill is disabled, the hierarchy representation is no longer filled, revealing additional details such as the 'N' icon inside the "Ground (Bottom) Non-Mine Mine-Like Contact" MIL-STD-2525c symbol. This makes the Sea Mine symbols more recognisable. This change affects the Sea Mine symbols in the following standards: APP-6D, MIL-STD-2525c, MIL-STD-2525d.

Unfilled MIL-STD-2525c Sea Mines before the change
Unfilled MIL-STD-2525c Sea Mines before the change.
Unfilled MIL-STD-2525c Sea Mines after the change
Unfilled MIL-STD-2525c Sea Mines after the change.

ImprovementDefense Symbology

LCD-11202
The rendering of APP-6B Sea Mine symbols has been improved. The outline of their icon is now painted in the line color configured in their TLcdDefaultAPP6AStyle, where it used to be painted in the affiliation color.
APP-6B Sea Mines before the change
APP-6B Sea Mines before the change.
APP-6B Sea Mines after the change
APP-6B Sea Mines after the change.

ImprovementInfrastructure Standards

LCD-12528
Improved error message when trying to decode a DGN dataset to which the user has no access rights.

Bug fixLuciadFusion

LF-2276
Resolved an issue were the names of WFS FeatureTypes that were generated for Products published in a WFS Service in LuciadFusion Studio where based on internal database identifiers of the Data contained in the Product. LuciadFusion now generate WFS FeatureTypes with names derived from the title of the Data. Any FeatureType name for Products that were already published before this change will remain unchanged.

Bug fixLuciadFusion

LCD-11874
Fixed a crash when building a grid using TLspXYGridLayerBuilder with TLcdCartesianReference as reference.

Bug fixLuciadFusion

LCD-12805
In some cases, the XML framework could split up text content containing entities like the ampersand. This has been resolved.

Bug fixLuciadFusion

LCD-12806
The WFS server can now handle an unbound property name in a WFS Transaction Update request by interpreting it in the feature type's namespace.

Bug fixLuciadFusion

LCD-12799
TLcdGML32ArcByCenterPoint no longer returns incorrect bounds when using grid references.

Bug fixAviation Standards

LCD-12807
TLcdAIXMProcedureHandler will skip procedure legs with type OTHER instead of throwing an exception.

Bug fixDefense Symbology

LCD-12784
Corrected the jet stream symbol for the APP-6A, APP-6B, APP-6C symbologies.
APP-6A APP-6B APP-6C Jet stream
The corrected symbol for the APP-6A, APP-6B and APP-6C jet stream symbols.

Bug fixDefense Symbology

LCD-12781
Changed the default label position from "EAST" to "CENTER" for all symbols where the location is not predefined (all freeform/polygon shaped tactical graphics), for all supported symbologies (MIL_STD_2525b, MIL_STD_2525c, MIL_STD_2525d, APP-6A, APP-6B, APP-6C, APP-6D) to closer follow the specifications. Note that you can override this default by using ILinSymbologyStyle.setLabelPosition(int aPosition)

Bug fixDefense Symbology

LCD-12780
Corrected the icons for the APP-6A and APP-6B Thunderstorm symbols W*A*ST----***** and W*A*STR---*****.
APP-6A APP-6B Thunderstorm
The corrected icons for the APP-6A and APP-6B Thunderstorm symbols.

Bug fixDefense Symbology

LCD-12616
Fixed the definition for MIL-STD-2525d and APP-6D Linear Targets symbols, which, according to the specification, require "exactly" two anchor points in stead of "at least" two.

Upgrade considerationLuciadFusion

LF-2276
A new column was added to the Database table for Data resources. This column is used to store the name of the Data. The name of the Data is used to generate WFS FeatureType names when the data gets published in a WFS Service.

2022.1

2022.1.04

ImprovementLuciadFusion

TLcdOGCBinaryLogicOperator now has a constructor with a varargs parameter for conditions.

ImprovementLuciadFusion

LCD-12228
The Maven POM files for our third party dependencies, which we provide with the release, are now identical to the ones that are publicly available.

ImprovementAviation Standards

LCD-12795
Upgraded the included EUR ADR AIXM 5.1(.1) XML Schema extensions from version 25.0 to version 26.0.

Bug fixLuciadFusion

LCD-12796
TLcdGeoJsonModelEncoder now correctly encodes data objects with list properties which in turn also contain data objects. Before this fix, the type names of those list elements would not be included in the resulting JSON.

Bug fixLuciadFusion

LF-2347
TLcdE57ModelDecoder now supports E57 data containing more points than Integer.MAX_VALUE, regardless of the number of points to be read set with the TLcdE57ModelDecoder#setMaxNumberOfPoints method.

Bug fixLuciadFusion

LF-2347
TLcdLASModelDecoder no longer throws an IOException if the data contains more points than Integer.MAX_VALUE, regardless of the number of points to be read set with the TLcdLASModelDecoder#setMaxNumberOfPoints method.

Bug fixLuciadFusion

LF-2347
TLfnPointCloudPreprocessor now supports point cloud data containing more points than Integer.MAX_VALUE.

Bug fixLuciadFusion

LCD-12770
TLspParameterizedIconStyle: fixed a memory leak that could occur when using an ILcdParameter in one of the expressions on the style.

Bug fixLuciadFusion

LCD-12786
The value returned by TLcdSLDFeatureTypeStylePainter#getCreationClickCount was not correct in case of a model with multiple geometry types and a layer with SLD styling rules that filter on the geometry type. This could lead to incorrect object creation behavior, which relies on this method to know how many points are needed.

Bug fixLuciadFusion

LCD-12785
The built-in custom OGC function TLcdOGCVendorSpecificFunctions.GEOMETRY_TYPE_FUNCTION_NAME, used to identify the type of a geometry value, could not handle GML polygons.

2022.1.03

ImprovementLuciadFusion

LF-2077
Data and Styles can now be added to LuciadFusion using an HTTP(S) URL. This can be done by entering the HTTP(S) URL in the File path field after clicking Add Data or Add Style button in the Studio web application, or by setting the filePath property to the URL when using the POST /api/data or POST /api/styles REST API endpoint. The data or style should be accessible to LuciadFusion without requiring authentication. Only data formats for which LuciadFusion has a model decoder that implement the ILcdInputStreamFactoryCapable interface are supported.

ImprovementInfrastructure Standards

LCD-12690
Changed the conversion of PolyMesh objects in Binz datasets to OGC 3D Tiles: sharp edges (> 30°) will now be preserved instead of smoothed out.

ImprovementInfrastructure Standards

LCD-12605
TLcd3DTilesProcessorBuilder: Now produces textures at multiples of four for data sources coming from reality capture data. This improves the ability for clients to compress the textures on the GPU.

ImprovementInfrastructure Standards

LCD-12385
TLcdIFCModelDecoder now supports IfcFacetedBrepWithVoids.

ImprovementInfrastructure Standards

LCD-12776
Visualisation of DWG datasets now correctly handles line width and dash lengths when the unit of measurement is set in the model reference.

Bug fixLuciadFusion

LCD-12772
When transforming from a grid reference that uses TLcdGeodetic to a geodetic reference, bounds that extend over the date line were transformed into bounds that don't include the date line.

Bug fixLuciadFusion

LCD-12773
The built-in custom OGC function TLcdOGCVendorSpecificFunctions.GEOMETRY_TYPE_FUNCTION_NAME, used to identify the type of a geometry value, could not handle GML geometry properties.

Bug fixDefense Symbology

LCD-12754
Fixed a configuration issue with the MIL-STD-2525c "Law Enforcement - Prison" (6.X.3.4.11) symbol where it was not possible to set the symbol's echelon modifier value to "Installation" or "Feint Dummy Installation". This which caused the Prison symbol to be rendered without the installation echelon indicator.

Bug fixInfrastructure Standards

LCD-12750
TLcdIFCModelDecoder now supports IfcLine trimming with IfcParameterValue values.

2022.1.02

ImprovementLuciadFusion

LF-2328
It is now possible to perform fuzzy text match using == and case-insensitive text match using =ic= RSQL comparison operators on enum properties. This change applies to the REST API GET api/data/filter endpoint.

Bug fixLuciadFusion

LCD-12431
When lcd_geoid_resources.jar is not added to the class path, TLcdEPSGReferenceParser would throw a RuntimeException instead of a ParseException when decoding a reference that makes use of the resources in that jar.

Bug fixLuciadFusion

LCD-12745
Fixed an issue that resulted in the error SQL logic error (near "-": syntax error) when opening certain GeoPackage files.

2022.1.01

ImprovementLuciadFusion

LF-2329
It is now possible to get the complete list of all the configured queryable and non-queryable custom properties using the LuciadFusion Studio REST API. The GET /api/data/custom-properties endpoint allows users to request all the queryable and non-queryable custom properties.

ImprovementLuciadFusion

LF-2323, LF-2324

LuciadFusion now publishes events when searching for TLfnProduct or TLfnService resources: see TLfnProductQueryEvent and TLfnServiceQueryEvent respectively.

For a complete overview of available events, refer to the Listening for LuciadFusion events article.

ImprovementLuciadFusion

LCD-8587
Utility methods were added to calculate the distance of geodetic and rhumb lines, taking into account the point elevation. See:
  • TLcdEllipsoidUtil#geodesicDistance3D
  • TLcdEllipsoidRhumblineUtil#rhumblineDistance3D
  • TLcdSphereUtil#greatCircleDistance3D
  • TLcdSphereRhumblineUtil#rhumblineDistance3D

ImprovementLuciadFusion

LF-1610
The title, abstract and keywords can now be edited in the LuciadFusion Studio web application.

ImprovementLuciadFusion

LCD-12719
The sample OGC server now allows to request the XML schemas from the WMS server capabilities.

ImprovementLuciadFusion

LCD-12672
Maven Ant Tasks is no longer maintained, therefore, as suggested on the Maven Ant Tasks website, the Ant scripts that deploy the libraries to a Maven repository will now use Maven Artifact Resolver Ant Tasks instead.

ImprovementDatabase Connectors

LCD-12730

Bug fixLuciadFusion

LF-2322
Fixed an issue that caused the bounds of a Data to become incorrect after it had been modified using a PATCH /api/data/{id} operation. This issue also caused the bounds of the products and services that the Data is part of the become incorrect.

Bug fixLuciadFusion

LCD-12741
When using a display scale != 100%, labels could sometimes behave in an unstable manner. This is especially noticeable for labeling algorithms that continuously update label locations, like TLspContinuousLabelingAlgorithm.

Bug fixLuciadFusion

LCD-12721
TLcdE57ModelDecoder no longer throws an IOException for files that contain more than Integer.MAX_VALUE points, provided that setMaxNumberOfPoints() is first called to set a lower point count.

Bug fixLuciadFusion

LCD-12724
The fix implemented in LCD-12679 was not complete. The WMS capabilities now advertise the SLD operations in the correct XML namespace.

Bug fixInfrastructure Standards

LCD-12688
TLcdIFCModelDecoder now supports unit conversions with IfcReal or IfcInteger factors instead of throwing a NullPointerException.

Bug fixMaritime Standards

LCD-12740
Fixed an issue causing errors when opening cell files created by old versions of LuciadLightspeed / LuciadFusion.

Bug fixMaritime Standards

LCD-12532
Fixed an issue in TLcdS57ModelEncoder that caused exported cells to crash 7Cs SeeMyEnc when opening them.

2022.1

New featureLuciadFusion

A new TLfnAccessEventPublisher has been added which allows a developer to publish a TLfnProductAccessEvent or a TLfnServiceAccessEvent in a custom LuciadFusion service.

New featureLuciadFusion

LuciadFusion now publishes events using the Spring framework's event mechanism. These events are triggered when certain manual or automated actions occur, such as: creating a content root, deleting a style, a crawl job completed, etc.

Read the Listening for LuciadFusion events article to learn more about the available events and how to listen to them.

New featureLuciadFusion

LuciadFusion is now able to read certain data formats from Amazon S3 cloud storage. To enable this feature, one must run LuciadFusion with the fusion.aws Spring profile activated. A list of all supported data formats can be found here. Please refer to the developer platform for more details.

Apart from out-of-the-box support for AWS S3, LuciadFusion now provides the building blocks required for adding support for a different (cloud) storage technology. Developers aiming to do so, need to implement an ILfnResourceConnector to enable LuciadFusion to communicate with the storage, and an ILcdInputStreamFactory to allow model decoders to read its resources. This is also described in more detail in the article linked above.

New featureLuciadFusion

A new sample application demonstrates how LuciadFusion can be configured with a user defined Spring Security configuration. For instance, the sample application configures user authentication logic against a database server. Though this sample application demonstrates user authentication against a database, developers are free to implement any custom user authentication logic in LuciadFusion server. Use CustomAuthenticationFusionPlatformApplication to run and explore the sample application. See the Configuring a custom user authentication logic article for more information.

New featureLuciadFusion

LuciadLightspeed now ships with a component named lcd_aws. This component contains an ILcdInputStreamFactory that is capable of reading files from Amazon S3 cloud storage. Most model decoders that implement ILcdInputStreamFactoryCapable automatically pick up this factory by means of the services registry, and are now able to decode sources directly from S3. Please refer to Supported data types to find out which formats are supported exactly.

The implementation of this factory, named S3InputStreamFactory, is also available in sample code. It can be used as an example for developers aiming to add support for a different (cloud) storage technology, or simply in case a modified version of the factory is desired. For example to set the S3Client that is used, or changing the default AWS Credentials Provider.

New featureLuciadFusion

Users can now associate additional information with a Data in LuciadFusion Studio by setting custom properties on that Data. Custom properties are name-value pairs, with the name uniquely identifying the property and the value containing the information for that property. The value of a custom property can be of type string, boolean, number or date.

The custom properties can be used to store additional metadata information about a Data, or they can be used to store information needed when extending LuciadFusion with custom functionality. An example of the former would be to add custom properties publisherName (string) and publicationYear (number) to store the name of the publisher of the Data and the year it was published. An example of the latter would be to add a spotlight (boolean) property to a Data, and using it to highlight certain Data that should stand out from the rest.

Custom properties can be set and obtained for a specific Data using the LuciadFusion Studio REST API. The PATCH /api/data/{id} endpoint allows users to set the custom properties for a Data. The GET /api/data/{id} endpoint allows users to obtain the custom properties for a Data.

New featureLuciadFusion

LuciadFusion is able to pick up custom properties from a metadata file when crawling or adding Data. This allows users to automatically associate additional metadata information with Data when it gets added to LuciadFusion. For example, if the metadata specifies the name of the publisher of the Data and a year when the Data was published, then this information could be extracted from the metadata and added as custom properties to the Data in LuciadFusion when it is imported.

An implementation of ILfnCustomPropertyDecoder is needed to let LuciadFusion extract custom properties from a TLcdISO19115Metadata decoded by an ILcdMetadataDecoder. To learn more, see this article.

New featureLuciadFusion

LuciadFusion can be configured to allow querying Data based on queryable properties. This allows users to search for Data based on the additional metadata information that is associated with the Data. For example, when using custom properties publisherName (string) and publishYear (number) to store the name of the publisher of the Data and the year it was published, a user can search for all Data published by a specific publisher during a specific year.

An implementation of ILfnCustomPropertyDecoder needs to be provided so that LuciadFusion is aware of the type of the custom properties, as this has an impact on the supported query operations. See the Define the custom properties article for more information.

Querying Data based on queryable properties is done using the LuciadFusion Studio REST API. The GET api/data/queryable-properties endpoint lists all the properties that can be used to query Data. To query Data, use the GET api/data/filter endpoint. For more information on how to query Data and which operations are supported, see this article.

New featureLuciadFusion

LuciadLightspeed now has support for the Canadian Geodetic Vertical Datum of 2013, as well as the associated EPSG references EPSG:6649 to EPSG:6665, EPSG:9711, EPSG:9714 and EPSG:9715.

ImprovementLuciadFusion

LCD-12354
You can now plug in an ILcdWFSClientModelEncoderFactory by adding an @LcdServiceannotation to the implementation. This interface is used by WFS services to encode features. Only the factory with the highest priority is used. By default, a factory with support for GML 2 / 3.1 / 3.2 and GeoJSON is used.

ImprovementLuciadFusion

LF-2294
The metadata of a data can no longer overwrite the id of the data when uploading new metadata, recrawling or refreshing. This ensures that the id of a data always remains the same.

ImprovementLuciadFusion

The LuciadFusion Studio async jobs thread pool is now configurable. the thread pool size can be configured with the following properties:

  • fusion.studio.configuration.jobs.threadPool.minimumSize
  • fusion.studio.configuration.jobs.threadPool.maximumSize

These properties are configured in the application-fusion.common.yml configuration file. Have a look there for more information about these properties.

ImprovementLuciadFusion

PostgreSQL 15 and SQL Server 2022 are now supported as a database for LuciadFusion Studio.

ImprovementLuciadFusion

LCD-12602

A new interface ILcdWMTSGXYLayerFactory has been introduced to create request-based layer factories for a WMTS layer. By adding an @LcdServiceannotation to an implementation, it is automatically picked by at runtime by the LuciadFusion Platform application.

ImprovementLuciadFusion

LCD-12572
The performance of TLcdEllipsoidRhumblineUtil#intersectionGeodesicRhumblineSFCT has improved one to two orders of magnitude for the case where the rhumbline is a meridian or a parallel.

ImprovementLuciadFusion

LF-2138
The default built-in DataSource bean has been marked with @Primary annotation to indicate that this DataSource bean will be given preference when multiple DataSource beans are defined. This essentially ensures that LuciadFusion will work as intended in the presence of multiple user defined DataSource beans.

ImprovementLuciadFusion

Added the findAndDecodeMetadata method to ILcdMetadataDecoder. This method returns the decoded metadata, together with the location of the metadata files.

ImprovementLuciadFusion

ILcdMetadataDecoder implementations (like TLcdISO19139MetadataDecoder) can now be discovered by the service loading mechanism. A new TLcdCompositeMetadataDecoder implementation has been added that will use the appropriate ILcdMetadataDecoder service to decode the given metadata source.

Bug fixLuciadFusion

LCD-12479
Fixed an issue where an SLD styler would not always initialize correctly when combined with a custom ILspMapScaleProvider, causing objects to receive wrong styling until a repaint was forced.

Bug fixLuciadFusion

LCD-12340
A custom ILspMapScaleProvider can be used on a layer in a 3D view now. Before, optimizations would cause the map scale provider to not be properly taken into account.

Bug fixLuciadFusion

LCD-12430, LCD-12522
TLcdJPEG2000ModelDecoder: fixed an issue that prevented opacity bands in images from being applied correctly in an ILcdGXYView.

Bug fixLuciadFusion

LCD-12699
TLcdEllipsoidUtil#geodesicArea could return incorrect results for triangles with coinciding points.

Bug fixInfrastructure Standards

LCD-12641
TLcd3DTilesProcessorBuilder: Fixed an issue that would cause thin lines to appear at tile edges when DRACO compression was enabled.

Upgrade considerationLuciadFusion

LCD-12725
The dependency to the SLF4J Java Util Logging implementation (slf4j-jdk14.jar) has been removed. This dependency was only used by the OGC Services sample in LuciadLightspeed. LuciadFusion Platform required the use of the Logback implementation of SLF4J (logback-classic.jar). The OGC Services sample will now also use the Logback implementation of SLF4J. The Logback implementation of SLF4J is now included in the third party sample dependencies of LuciadLightspeed.

Upgrade considerationLuciadFusion

For its new S3 functionalities, LuciadFusion makes the use of some new libraries:

  • AWS SDK Annotations (version 2.17.168)
  • AWS SDK Apache-client (version 2.17.168)
  • AWS SDK Arns (version 2.17.168)
  • AWS SDK Auth (version 2.17.168)
  • AWS SDK Aws-core (version 2.17.168)
  • AWS SDK Aws-query-protocol (version 2.17.168)
  • AWS SDK Aws-xml-protocol (version 2.17.168)
  • AWS SDK Http-client-spi (version 2.17.168)
  • AWS SDK Json-utils (version 2.17.168)
  • AWS SDK Metrics-spi (version 2.17.168)
  • AWS SDK Profiles (version 2.17.168)
  • AWS SDK Protocol-core (version 2.17.168)
  • AWS SDK Regions (version 2.17.168)
  • AWS SDK S3 (version 2.17.168)
  • AWS SDK Sdk-core (version 2.17.168)
  • AWS SDK Third-party-jackson-core (version 2.17.168)
  • AWS SDK Utils (version 2.17.168)
  • Reactivestreams (version 1.0.3)
  • Eventstream (version 1.0.1)
A few libraries were also updated:
  • Commons-codec (version 1.11)
  • Httpcomponents Httpclient (version 4.5.13)
  • Httpcomponents Httpcore (version 4.4.13)
  • org.reactivestreams reactive-streams New 1.0.3 MIT)
  • Slf4j (version 1.7.36)

Upgrade considerationLuciadFusion

LuciadFusion now uses an RSQL library to support querying Data against LuciadFusion's built-in standard and user defined custom properties.As a result, upgrading an older version of LuciadFusion to V2022.1 or later is desired. The following JAR has been added.

  • rsql-common-<version>.jar

Upgrade considerationLuciadFusion

The following methods have been deprecated:
  • TLcdGeoTIFFModelDecoder#getImageInputStreamFactory
  • TLcdGeoTIFFModelDecoder#setImageInputStreamFactory
  • TLcdTABRasterModelDecoder#getImageInputStreamFactory
  • TLcdTABRasterModelDecoder#setImageInputStreamFactory
  • TLcdTFWRasterModelDecoder#getImageInputStreamFactory
  • TLcdTFWRasterModelDecoder#setImageInputStreamFactory
  • TLcdRasterModelDecoder#getTileInputStreamFactory
  • TLcdRasterModelDecoder#setTileInputStreamFactory
  • TLcdDIMAPModelDecoder#getImageInputStreamFactory
  • TLcdDIMAPModelDecoder#setImageInputStreamFactory
The getters now simply return the result of their sibling #getInputStreamFactory, while the setters no longer have any effect. Please change any calls to these methods to #getInputStreamFactory or #setInputStreamFactory instead. In the next major release, these methods will be removed entirely.

Upgrade considerationLuciadFusion

The default quality of TLspLabelingAlgorithm, TLspOnPathLabelingAlgorithm, TLspInPathLabelingAlgorithm and TLspCurvedPathLabelingAlgorithm has been raised to 1 iso 0.5. This means that by default, no labels will be dropped because of the quality setting. When you have a layer that has a lot of labeled objects, in some cases this might result in more work being done in the background, and in slower label updates. If this is the case, you can go back to the old behavior by calling the setQuality method of those algorithms with a value of 0.5.

Upgrade considerationLuciadFusion

LCD-8329
The TLcdSpatialReferenceParser class is now deprecated. It is encouraged to use the TLcdEPSGReferenceParser class instead.

Upgrade considerationAdvanced Raster Services

LCD-12358
TLcdECWModelDecoder has been upgraded to use ERDAS ECW JP2 SDK 6.0. The names of the JAR files containing the native libraries reflect this change: libecw-5.4.*.jar is now libecw-6.0.*.jar. No other changes are necessary.

Upgrade considerationInfrastructure Standards

LCD-12659
To ease accessing the properties of DWG objects, the DWG model decoders TLcdDWGModelDecoder and TLcdDWGModelListDecoder now by default decode extended entity types. As a result, the objects in DWG models now by default include extended entity types if present in the data. This can be reverted by calling the method clearExtendedEntityTypeSelection() on the decoder.