2021.0.04

ImprovementLuciadLightspeed

The utility class TLcdShapeUtil was added to the API. This class contains utility method to created rounded lines.

  • TLcdShapeUtil.round(ILcdModelReference, ILcdPolyline, double): Use this method to created a rounded version of a ILcdPolyline
  • TLcdShapeUtil.round(ILcdModelReference, ILcdPolygon, double): Use this method to created a rounded version of a ILcdPolygon

Example usage of these methods can be found in the complex strokes Lightspeed sample. This sample has been adjusted so rounded lines used in the Cartography layer. The lines are rounded using a custom ALspStyleTargetProvider which provides rounded lines for every ILcdPolyline or ILcdPolygon in the model. This ALspStyleTargetProvider is located in samples.lightspeed.style.strokedline.LayerFactory.RoundedLineStyleTargetProvider.

ImprovementLuciadLightspeed

It is now possible to inspect the configured stylers on a TLspScaleBasedStyler.

ImprovementLuciadLightspeed

LCD-11958
Improved the performance of printing a Lightspeed view with many icons.

ImprovementOGC Server

LCD-11947
The SLD text rendering option conflictResolution to enable/disable label decluttering (see release note of LCD-11850) is now also supported in the WMS server. This allows a WMS client to include an SLD in a request that enables(default) or disables label decluttering.

Bug fixLuciadLightspeed

TLspComplexStrokedLineStyle: fixed an error in the equals() method for styles containing arrows.

Bug fixLuciadLightspeed

LCD-11974
TLspIconStyle: the minimum pixel size was not applied correctly during printing.

Bug fixLuciadLightspeed

LCD-11973
TLspGeorefGridLayerBuilder/TLspMGRSGridLayerBuilder/TLspXYGridLayerBuilder: fixed some labeling issues when working with HiDPI screens.

Bug fixLuciadLightspeed

TLspGeorefGridOverlayLabelBuilder/ TLspMGRSGridOverlayLabelBuilder/TLspXYGridOverlayLabelBuilder: the COORDINATE_AT_MOUSE_CURSOR mode did not work correctly on HiDPI screens.

Bug fixLuciadLightspeed

LCD-11969
Fixed issue where TLcdSHPModelDecoder and TLcdSHPModelDecoder2 would not apply the correct charset when decoding property names from the DBF file.

Bug fixLuciadLightspeed

LCD-11957
The TLspMagnifierController now correctly magnifies TLspGXYLayerAdapter layers in 2D views. Previously, magnified objects would not end up on the correct place in the magnified overlay.

Bug fixLucy (LuciadLightspeed)

LCD-11941
Fixed a workspace loading issue that could throw an IllegalArgumentException in a Lucy application that is packaged and executed using Spring Boot.

Bug fixInfrastructure Standards

LCD-11900, LCD-11962

Resolved a caching issue which caused the .binz input files to remain open after decoding them with the TLcdBinzModelDecoder. This resulted in a number of issues when manipulating the files.
For example:

  • The .binz file could no longer be removed form disk.
  • When replacing an existing .binz file with a new version, this could result in IOExceptions being thrown when decoding the new version of the .binz file.

2021.0

2021.0.03

ImprovementAviation Standards

LCD-11953
The leaf models in the model tree decoded by TLcdDAFIFModelDecoder now implement ILcdFeatureIndexedModel, to ease indexing them for one or more properties. An example use case for airport models is the use of an index for the ICAO code property ILcdDAFIFAerodromeFeature.ICAO_CODE, to quickly find airports for a given ICAO code using ILcdFeatureIndexedModel#retrieveByUniqueIndex.

Bug fixLuciadLightspeed

LCD-11949
TLcdEPSGReferenceParser would throw an exception when the lcd_geoid_resources.jar file was missing from the class path. It now only throws when it effectively needs this resource file to parse a reference.

2021.0.02

ImprovementLuciadLightspeed

LCD-11937
The SLD placement of curved labels (= an SLD TextSymbolizer with vendor option followLine=true) has been improved in GXY views and in a WM(T)S server environment:
  • the placement is now dynamic within a WM(T)S server environment, making sure that each generated map or tile shows the label of the visible curved paths (such as streets or rivers); this avoids that labels disappear when zooming in.
  • the vendor option repeat=valueInPixels is now supported to repeat labels along a curved path, taking into account the specified pixel value to be used between subsequent labels; repeating labels can be useful to improve the label readability for long curved paths.

ImprovementLuciadLightspeed

LCD-11938
You can now configure a minimum gap in pixels between subsequent labels on the GXY labeling algorithm TLcdGXYCurvedPathLabelingAlgorithm, using the newly introduced methods setMinimumGap and getMinimumGap.

ImprovementInfrastructure Standards

LCD-11225
The 3D Tiles Processor now reads normal data from source OBJ files to export to the output 3D Tiles.

ImprovementRadar Connectors

LCD-11858
You can now configure the calculated altitude field to be used for tracks within the ASTERIX Categories 30 and 62:
  • Category 30: By default, the Calculated Track Altitude field is used. This can be changed to the Calculated Track Flight Level field by setting the System property com.luciad.format.asterix.cat30.useCalculatedTrackFlightLevel to true.
  • Category 62: By default, the Calculated Track Geometric Altitude field is used. This can be changed to the Calculated Track Barometric Altitude field by setting the System property com.luciad.format.asterix.cat62.useCalculatedTrackBarometricAltitude to true.

Bug fixLuciadLightspeed

LCD-10089
TLcdSHPModelDecoder2#applyOnInteract2DBounds now correctly considers MultiPoint geometries to be points as well. This makes sure that MultiPoint objects containing only one point will still be visualized, even though a minimum size condition might not be met.

Bug fixLuciadLightspeed

LCD-11932
Fixed a performance regression in the creation of TLspEditContext that showed up when using the TLspEditController while shapes were selected.

2021.0.01

ImprovementLuciadLightspeed

LCD-11914
TLcdTransformedHeightProvider now avoids evaluating the same geoid twice if the transformation is between geodetic references with only a geoid difference.

ImprovementLucy (LuciadLightspeed)

LUCY-4944
TLcyShapeVisibilityAddOn: the values of the step size properties in the configuration file were modified to improve performance. The visibility results might be slightly different from before.

ImprovementInfrastructure Standards

LCD-11199
Added more command line options to the Meshup sample. You now have more optional arguments you can pass to the command line to control the resulting output OGC 3D Tiles.

ImprovementInfrastructure Standards

LCD-11731
The TLcdBinzModelDecoder now supports BINZ version 5. This includes the BINZ data created by Hexagon Smart Interop Publisher version 15.

Bug fixLuciadLightspeed

LCD-11920
The WMTS client now recognizes layer dimensions that specify an ISO 8601 time dimension through the UnitSymbol field instead of the UOM field.

Bug fixLuciadLightspeed

LCD-11919
Fixed a regression introduced in 2021.0 that caused a NullPointerException when a connection was made with a WMTS server of which the capabilities specified a layer dimension without a UOM field.

Bug fixLuciadLightspeed

LCD-11899
Fixed an issue with the maven sample project setup script, which could cause compilation failures when there was a space in the path to the sample project.

Bug fixLuciadLightspeed

LCD-11912
Fixed bug where TLcdCSVModeldeccoder could crash when parsing lon-lat point strings, depending on the default locale.

Bug fixLucy (LuciadLightspeed)

LCD-11905
TableViewAddOn: the filter to only show elements that are visible on the map did not work on a Lightspeed map in case the model reference did not correspond to a WGS 84 geodetic reference.

Bug fixLuciadLightspeed

LCD-11902
Solved a problem decoding GML files to a TLcdDataModel with generic enumerated types, such as String or Object.

Bug fixLuciadLightspeed

LCD-11875
TLcdXYGridLayer now works correctly when a non-uniform scaling is used.

Bug fixLuciadLightspeed

LCD-11875
Grids built using TLspXYGridLayerBuilder now work correctly when a non-uniform scaling is used in a 2D view.

Bug fixDefense Symbology

LCD-11928
Fixed an issue where the font-family styling option was not applied to NVG Text objects.

Bug fixDefense Symbology

LCD-11904
Resolved a caching issue in GXY, which caused performance problems when painting NVG models containing many Tactical Graphics.

Bug fixMaritime Standards

You can now re-throw cell warnings in your error handler (ILcdS57InvalidCellExceptionHandler#handleCellWarnings), which will make sure the cell is not loaded.

If you disable TLcdS57UnifiedModelDecoder#ignoreInvalidCells, decoding the entire catalog will fail if you re-throw warnings or errors.

By default, the warnings are logged and not re-thrown, so the cell is still loaded.

Bug fixMaritime Standards

LCD-11894

The S-57 and S-63 decoders now issue a warning when we detect that certain updates are missing. This can happen for example when you have cell GB5X01SW.000 and update file GB5X01SW.002, but not the intermediate update file GB5X01SW.001.

You can inspect the warning either through TLcdS57ModelDescriptor#getWarnings or by registering an error handler on your decoder and implementing ILcdS57InvalidCellExceptionHandler#handleCellWarnings.

If you want to fail the decoding of the particular cell, you can propagate the warning by re-throwing it in ILcdS57InvalidCellExceptionHandler#handleCellWarnings.

2021.0

New featureLucy (LuciadLightspeed)

The new TLcyWMTSClientGetFeatureInfoAddOn and TLcyLspWMTSClientGetFeatureInfoAddOn add WMTS GetFeatureInfo support to ILcdGXYView and Lightspeed based map components, respectively. When these add-ons are enabled, a user can connect to a WMTS service which supports GetFeatureInfo requests and can click on a feature to see the feature info.

New featureLuciadLightspeed

Support has been added for WMTS GetFeatureInfo requests. The class TLcdWMTSClient has a new method getFeatureInfo to perform the GetFeatureInfo request. This method expects a TLcdWMTSGetFeatureInfoContext parameter, which is a new class that specifies WMTS GetFeatureInfo settings. Additionally, a WMTS model's domain object now implements the new interface ILcdWMTSClientProvider to easily access a TLcdWMTSClient.

New featureLuciadLightspeed

LuciadLightspeed now has support for the vertical datum Normaal Amsterdams Peil (NAP), as well as the associated EPSG reference EPSG:7415. As a LuciadLightspeed user, this just works for you. You can open, visualize, and use data in this reference or referring to this vertical datum.

New featureLuciadLightspeed

It is now possible to print the contents of a TLspFXView at high resolution. The newly introduced print() method can be used to generate a print-quality image. The sample class samples.lightspeed.javafx.common.printing.PrintPreview demonstrates how to use this method together with the JavaFX printing API. It also implements a preview of the print result and supports multi-page printing. The print preview can be accessed via a new toolbar button which is available in all JavaFX samples.

New featureLuciadLightspeed

JavaFX UI components that can be used for map navigation and altering the altitude exaggeration of a 3D view have been added to the API.

New featureAdvanced Raster Connectors

The MrSID MG4 format is now supported, on 32-bit and 64-bit Windows, on 64-bit Linux and on 32-bit and 64-bit macOS. Support for 32-bit Linux has been dropped, since the latest of the MrSID SDK no longer supports 32-bit Linux. The TLcdMrSIDModelDecoder now supports multispectral images with up to 255 bands and more than 8-bits per band. LiDAR point clouds and password protected files are currently not supported.

ImprovementLuciadLightspeed

The TLcdRD1918DutchGridReference model reference class has been deprecated, because it uses outdated hardcoded parameters. Where possible, using EPSG or WKT parsing is encouraged, for example:
new TLcdEPSGReferenceParser().parseModelReference("EPSG:28992").

ImprovementLuciadLightspeed

LCD-11312
TLcdExpressionFactory: a log expression has been added which returns the natural logarithm of its parameter.

ImprovementLuciadLightspeed

LCD-5200
LuciadLightspeed now has more extensive support for EPSG and WKT encoded references that use a geoid.

ImprovementLuciadLightspeed

LCD-5095, LCD-2134, LCD-6783
LuciadLightspeed now has improved support for working with map scales. The new TLcdMapScale class now allows working with a physical, unitless map scale ratios such as "1:100.000". You can directly set and retrieve them on any ILcdGXYView. For Lightspeed views, you can retrieve the scale from ALspViewXYZWorldTransformation and set it using TLspViewNavigationUtil. TLcdMapScale#createScaleRange is also supported in several places to specify unitless map scale ranges. For more information, refer to the Working with map scales article.

ImprovementLuciadLightspeed

The layer control UI component used in the JavaFX samples now has the following additional features:
  • Layers can be moved in the tree with drag and drop or buttons.
  • A progress indicator now indicates when a layer is busy.
  • Buttons have been added to toggle selectable, editable and labeled.
The FXLayerControl can be reused in your own application.

ImprovementLuciadLightspeed

LCD-11631
Various missing read or write locks were added for internal accesses to models. Additionally, a new check was introduced that asserts that the correct locks are taken when accessing an ALcdModel. This check is only enabled when assertions are enabled (vm parameter: -ea) and logs violations as Warnings when it finds any.

ImprovementLucy (LuciadLightspeed)

LCD-9280
The WMS client within Lucy now requests by default up to 1000 features on a GetFeatureInfo request instead of 1. The value can be configured to a custom value within the addon configuration file lucy/wmsclient/getfeatureinfo/TLcyWMSClientGetFeatureInfoAddOn.cfg

ImprovementLuciadLightspeed

LCD-9280
The WMS client sample now requests the WMS server to return more than 1 result. This is configured in the class samples.wms.client.common.WMSGetFeatureInfoMouseListener using TLcdWMSGetFeatureInfoParameters.Builder.maxFeatureCount.

ImprovementLuciadLightspeed

LCD-9196
TLspWMSLayerFactory has been added to the API. It uses the LcdService annotation, so it can be picked up by TLcdServiceLoader. The existing TLcdWMSProxyGXYLayerFactory now also uses the LcdService annotation.

ImprovementLuciadLightspeed

LCD-6652
Corrected the spelling of the method TLcdWMSGetMapRequest.setTransparant to TLcdWMSGetMapRequest.setTransparent. The incorrectly spelled method name remains to exist for now for backward compatibility.

ImprovementAviation Standards

Improved the visualization of some ICAO icons.

ImprovementDefense Symbology

LCD-11871
TLcdMS2525bGXYEditorProvider/TLcdAPP6AGXYEditorProvider: improved consistency when editing buffer-like shapes. You can now change the width of all these shapes without having to press the CTRL key.

Bug fixLuciadLightspeed

LCD-11740, LCD-11742, LCD-11109, LCD-11163, LCD-11175, LCD-11158, LCD-5238, LCD-11156, LCD-11162, LCD-11761, LCD-11752, LCD-11188
DPI and display scaling specific behavior is now handled more consistently across all supported platforms. In addition, the DPI value can now be overridden using the system property -Dluciad.dpi.

Bug fixAdvanced Raster Connectors

The TLcdMrSIDModelDecoder did not read the least detailed level of a MrSID image. This has been fixed.

Bug fixAdvanced Raster Connectors

LCD-11683
TLcdMrSIDModelDecoder now properly supports filenames that contain non-ASCII characters.

Bug fixOGC Server

LCD-11827
A GML application schema returned by the WFS server for a DescribeFeatureType request no longer includes a GML FeatureCollection element and type, because WFS uses its own FeatureCollection.

Upgrade considerationLuciadLightspeed

LCD-11871
TLcdGXYGeoBufferPainter: you can now change the width of buffers without having to press the CTRL key.

Upgrade considerationLuciadLightspeed

LCD-11790, LCD-11852
A new version of the JAI ImageIO library is used.
  • This fixes the interpretation of GeoTIFF images with exactly 4 bands. The 4th band was always interpreted as alpha channel.

Upgrade considerationLuciadLightspeed

LCD-11749

Microsoft ended its support for Windows 7 and Windows Server 2008. In line with that decision, we now support LuciadLightspeed development and deployment on Windows platforms starting from versions Windows 8.1 and Windows Server 2012.

Upgrade considerationLuciadLightspeed

The Maven POM files provided with a LuciadLightspeed release have been renamed to follow the Maven artifactId naming conventions.

If you depend on any Lightspeed component in your project's POM file, they will need to be renamed as follows.

Group ID Old Artifact ID New Artifact ID
com.luciad LuciadLightspeed luciadlightspeed
com.luciad Advanced_GIS_Engine luciadlightspeed_advanced_gis_engine
com.luciad Advanced_Raster_Connectors luciadlightspeed_advanced_raster_connectors
com.luciad Aviation_Standards luciadlightspeed_aviation_standards
com.luciad Database_Connectors luciadlightspeed_database_connectors
com.luciad Defense_Standards luciadlightspeed_defense_standards
com.luciad Defense_Symbology luciadlightspeed_defense_symbology
com.luciad Google_Earth_Enterprise luciadlightspeed_google_earth_enterprise
com.luciad Graph_and_Routing_Engine luciadlightspeed_graph_and_routing_engine
com.luciad Infrastructure_Standards luciadlightspeed_infrastructure_standards
com.luciad Maritime_Standards luciadlightspeed_maritime_standards
com.luciad Radar_Connectors luciadlightspeed_radar_connectors
com.luciad Real_time_Engine luciadlightspeed_real_time_engine
com.luciad S_63 luciadlightspeed_s63
com.luciad Terrain_Analysis_Engine luciadlightspeed_terrain_analysis_engine
com.luciad Tiling_Engine luciadlightspeed_tiling_engine
com.luciad Weather_Environment_Standards luciadlightspeed_weather_environment_standards

In addition, POM files are now available for each product tier (Essential, Advanced and Pro). These POM files depend on all non-optional modules available for their respective product tiers.

The new product tier POM files are:

Group ID Artifact ID
com.luciad luciadlightspeed_essential
com.luciad luciadlightspeed_advanced
com.luciad luciadlightspeed_pro

Upgrade considerationLuciadLightspeed

Due to changes in the dependencies of LuciadFusion we have upgraded our com.fasterxml dependencies in LuciadLightspeed to ensure we depend on the same version across all products.

Here is an overview of the dependency changes:

Group ID Artifact ID Old Version New Version
com.fasterxml.jackson.core jackson-core 2.9.7 2.9.8
com.fasterxml.jackson.core jackson-databind 2.9.7 2.9.8
com.fasterxml.jackson.core jackson-annotations 2.9.5 2.9.8

Upgrade considerationLuciadLightspeed

LCD-9196
The TLcdOGCWMSProxyModelDecoder behavior for calling the method decode with just an URL without a data=layerName argument has been aligned with the behavior of the WFS and WCS decoders. In this case the decoder now returns a model with a ALcdWMSProxy configured with the first WMS layer found in the capabilities. Users that do not want this behavior can get a model with an empty ALcdWMSProxy by calling TLcdOGCWMSProxyModelDecoder#setUseEmptyProxyForUrlOnly(true).

Upgrade considerationAdvanced Raster Connectors

The TLcdMrSIDModelDecoder is no longer supported on 32-bit Linux systems as this is no longer supported by the MrSID decoding SDK.

Upgrade considerationAdvanced Raster Connectors

The MrSID decoding SDK has been updated to version 9.5.4.

Upgrade considerationDatabase Connectors

Upgraded the PostgreSQL JDBC driver to version 42.2.19. This updated driver adds support for PostgreSQL 13. The Checker Qual library (version 3.5.0) has been added since this is a runtime dependency of this newer version of the PostgreSQL JDBC driver.

Upgrade considerationOGC Server

3D data (point cloud or mesh) can no longer be published in a WMS or WMTS service in LuciadFusion. The 3D data was not visible when published in either WMS or WMTS. Please use an OGC 3D Tiles service to publish 3D data.

Upgrade considerationWeather & Environment Standards

LCD-11540
The TLcdNetCDFModelDecoder#discoverDataSources method now returns multi-band sources for data sources that are related. Previously, all sources were returned as single-band sources. This change required changing the return type to a list of ILcdDataSource instances, since the returned sources can now contain both TLcdNetCDFDataSource and TLcdNetCDFMultiBandDataSource instances. To return all sources as single-band sources as the TLcdNetCDFModelDecoder#discoverDataSources method did previously, set the multi-band creation of the TLcdNetCDFModelDecoder to MultiBandImageCreation.NEVER.