2021.1.02

ImprovementLuciadLightspeed

LCD-12133
Support has been added for a new OGC Filter geometry function TLcdOGCVendorSpecificFunctions#VERTICES, which returns the points of a geometry. An example use case is the usage of the function in an SLD Geometry element to style the individual points of a polyline with an icon.

ImprovementLuciadLightspeed

LCD-12130
Support has been added for a new OGC Filter geometry function TLcdOGCVendorSpecificFunctions#INTERIOR_POINT, which returns a point that is interior the the geometry in case of a polygon, or sitting on its boundary otherwise. An example use case is the usage of the function in an SLD Geometry element, to style a point that is interior to the geometry with an icon or text symbolizer.

ImprovementAviation Standards

LCD-12123
The DAFIFT decoders now support the decoding of the Cycle Date property, which gives information about the time a DAFIFT feature was added or last revised.

ImprovementAviation Standards

LCD-12126
Added the EAD ADR and Audit XML Schemas to the cached set of AIXM 5.1 schema extension resources. The following namespaces can now be used without a reference to their schema location: "http://www.aixm.aero/schema/5.1/extensions/EUR/EAD/ADR" and "http://www.aixm.aero/schema/5.1/extensions/EUR/EAD/Audit"

Bug fixLuciadLightspeed

LCD-12108
The bounds calculations for geodetic circle and circular arc implementations, like TLcdLonLatCircle and TLcdLonLatCircularArcByCenterPoint are now more accurate. Before, the bounds were too small in some cases.

Bug fixLuciadLightspeed

LCD-12134
The SLD Lightspeed implementation did not support the use of multiple polygon symbolizers with fill styles to style a single object.

Bug fixLuciadLightspeed

LCD-12132
The SLD geometry functions startPoint, endPoint, startAngle and endAngle were not taken into account in a Lightspeed view if the SLD did not specify a Geometry element.

Bug fixLuciadLightspeed

LCD-12121
Screenshots taken from an ILspView using its getImage() method could show incorrect colors if the view itself had a transparent background. This happened because the image returned did not correctly report itself as having premultiplied alpha. This problem also affected TLcdGXYLspAsynchronousLayerWrapper.

Bug fixLuciadLightspeed

LCD-12090
Label placement on a Lightspeed view was very slow when both:
  • on-path or in-path labels are used
  • domain objects have multiple labels

Bug fixLuciadLightspeed

LCD-12102
TLcdGXYImagePainter now properly handles images which have a geodetic coordinate reference and bounds that are more than 360 degrees wide. The part of the image that extends outside the 360 degree horizontal range, is not painted.

2021.1

2021.1.01

Bug fixLuciadLightspeed

LCD-12101
Fixed issue in TLcdGeoTIFFModelDecoder for TIFF files where the coordinate reference is a geodetic reference and the data extent is more than 360 degrees wide. The data extent was clamped to 360 degrees. Note this issue is related to LCD-12102 for the visualization of such data.

Bug fixLuciadLightspeed

LCD-12100
TLcdGXYCurvedPathLabelPainter: labels that use a halo weren't always correctly painted on a screen with display scaling larger than 100%. This problem only occurred with a Java version 9 or later.

Bug fixLuciadLightspeed

LCD-12089
Some ALspEditHandles would not interact correctly with touch events in applications with a display scaling value other than 100%.

Bug fixLuciadLightspeed

LCD-12076
TLspTouchNavigateController would not work correctly with a display scaling value other than 100%.

Bug fixOGC Server

LCD-12080
The WMS server could falsely advertise support for GetMap SLD requests. This is only supported when ALcdSLDWMSGXYLayerFactory instances are registered. Now the WMS server no longer advertises this when no such layer factories are registered.

Bug fixDefense Symbology

LCD-12084

Fixed an issue with TLcdEditableMS2525bObject and TLcdEditableAPP6AObject where it was possible to paint the movement direction arrow of an icon symbol that should not have a movement direction arrow.

Additionally the movement direction and speed modifiers configuration has been changed for a number of symbols hierarchies to make them more consistent with the other hierarchies.

The ILcdMS2525bCoded.sMovementDirection/ILcdAPP6ACoded.sMovementDirection modifier was added to the following symbol hierarchies:

  • MIL-STD-2525D
    • 01 - Air
    • 02 - Air Missile
    • 05 - Space
    • 06 - Space Missile
    • 30 - Sea Surface
    • 35 - Sea Subsurface
  • APP-6C
    • 01 - Air
    • 02 - Air Missile
    • 05 - Space
    • 06 - Space Missile
    • 30 - Sea Surface
    • 35 - Sea Subsurface

The ILcdMS2525bCoded.sSpeedLabel/ILcdAPP6ACoded.sSpeedLabel modifier was added to the following symbol hierarchies:

  • MIL-STD-2525D
    • 35 - Sea Subsurface
  • APP-6C
    • 01 - Air
    • 02 - Air Missile
    • 05 - Space
    • 06 - Space Missile
    • 30 - Sea Surface
    • 35 - Sea Subsurface

The ILcdMS2525bCoded.sMovementDirection/ILcdAPP6ACoded.sMovementDirection modifier was removed from the following symbol hierarchies:

  • MIL-STD-2525D
    • 20 - Land Installations
  • APP-6C
    • 20 - Land Installations
  • APP-6D
    • 25 - Control Measure

The ILcdMS2525bCoded.sSpeedLabel/ILcdAPP6ACoded.sSpeedLabel modifier was removed from the following symbol hierarchies:

  • MIL-STD-2525D
    • 20 - Land Installations
  • APP-6C
    • 20 - Land Installations
  • APP-6D
    • 25 - Control Measure

Bug fixDefense Symbology

LCD-12104
TLcdNVGGXYPainterProvider: Fixed editing issue with arrow symbols where the editing preview would not be painted correctly.

2021.1

New featureLuciadLightspeed

The TLcdOGC3DTilesModelEncoder now supports Draco mesh compression for mesh models, such as Binz and OSGB mesh data, or even existing OGC 3D Tiles datasets. You can use this new functionality through the API: setMeshCompression(ELcdOGC3DTilesMeshCompressionType). It is also available in LuciadFusion Studio when you create an OGC3DTiles service from the mesh data, and in the MeshUp en BinzConverter CLI samples.

New featureLuciadLightspeed

The TLcdRoundedPolyline and TLcdRoundedPolygon shapes have been added. These shapes allow you to create a rounded curve based on a set of control points. You can use these shapes to create rounded versions of ILcdPolyline and ILcdPolygon shapes. They can be visualized, created, and edited in ILcdGXYView and ILspView implementations.

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 TLcdRoundedPolyline.
  • TLcdShapeUtil.round(ILcdModelReference, ILcdPolygon, double): Use this method to created a TLcdRoundedPolygon.

Example usage of these shapes can be found in the complex strokes Lightspeed sample. This sample has been adjusted so rounded lines are 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.

New featureAdvanced Raster Connectors

A sample ILcdModelDecoder class has been introduced for helping you decode custom datasets containing panoramic images: the CycloramaXMLModelDecoder class contains logic to decode the Cyclorama data format.

New featureDefense Symbology

The new TLspGARSGridLayerBuilder allows visualizing Global Area Reference System (GARS) grid data. This is demonstrated in the new military grid sample in the samples.lightspeed.grid.military package.
GARS quadrants
A GARS grid where each cell is split into 15-minute quadrants

New featureInfrastructure Standards

When you convert Binz data to OGC 3D Tiles in LuciadLightspeed (decoder.binz.bat sample) or LuciadFusion (using an OGC3DTILES service), the conversion process (using TLcdBinzModelDecoder followed by TLcdOGC3DTilesModelEncoder) now also calculates physically based rendering (PBR) material properties from the material information which is always present in the Binz data.

The PBR properties are automatically added to the resulting OGC 3D Tiles data set during the conversion. No action is required on your part. If you have previously converted Binz data, however, you must process it again to have the PBR material properties calculated.

Client applications, such as LuciadRIA, can use these properties to generate more realistic images of an OGC 3D Tiles data set. It can result in highlights and reflections on the rendered objects.

LuciadRIA application showing the same dataset with default style and PBR style
LuciadRIA application showing the same dataset with default style and PBR style

Using the PBR material properties in LuciadRIA is not activated by default: you have to use the pbrSettings of the meshStyle on the TileSet3DLayer.

Refer to the Styling mesh data article in the LuciadRIA documentation for more information on how to use this feature.

New featureInfrastructure Standards

BinzConverter now supports Draco mesh compression ELcdOGC3DTilesCompressionType.DRACO. It results in significantly smaller OCG 3D Tiles datasets that allow for faster streaming. Use the new command line option "-m DRACO" to activate the Draco mesh compression algorithm.

New featureInfrastructure Standards

MeshUp now supports Draco mesh compression ELcdOGC3DTilesCompressionType.DRACO. It results in significantly smaller OCG 3D Tiles datasets that allow for faster streaming. Use the new command line option "-m DRACO" to activate the Draco mesh compression algorithm.

ImprovementLuciadLightspeed

LuciadLightspeed now runs on Java 17. Refer to the "Hardware and software requirements" page in the prerequisites section for more information and potential limitations.

ImprovementLuciadLightspeed

When a TLspRasterLayer is configured with the incrementalPainting flag set to false and contains multiple rasters, the layer is not updated until all tiles of all rasters are ready. Previously, the layer was updated whenever all tiles of any raster were ready.

ImprovementLuciadLightspeed

TLspKML22LayerBuilder/TLcdKML22GXYLayerFactory: improved the default layer label.

ImprovementLucy (LuciadLightspeed)

Introduced the following Lightspeed format add-ons: These formats can now be visualized with native Lightspeed layers in Lucy, instead of the GXY-in-Lightspeed integration API.

ImprovementLucy (LuciadLightspeed)

TLcyMapEditUnitAddOn now allows plugging in custom point formats by overriding the addPointFormats method.

ImprovementLuciadLightspeed

ALspLayer now has a map scale range property, which controls at what map scales the layer is rendered. This already existed on TLspLayer and was pulled up. This should be particularly useful for TLspRasterLayer. When creating a TLspRasterLayer the map scale range can be configured with TLspRasterLayerBuilder.

ImprovementLuciadLightspeed

LCD-11639
TLcdExpressionFactory: A eq and neq expression with an epsilon parameter have been added. These are useful to compare float values, for which it is recommended to do an epsilon compare. The map expression now also uses an epsilon compare to prevent issues in the visualization in some cases.

ImprovementLuciadLightspeed

LCD-11104
The API for integrating GXY layers in a Lightspeed view or vice versa has been deprecated. We advise to either stick to GXY components, or build a full Lightspeed application instead.

ImprovementLuciadLightspeed

LCD-11431
Introduced a new static method TLcdGeoJsonModelDecoder#parseGeometry, which parses a single GeoJSON geometry object to an ILcdShape.

ImprovementAdvanced Raster Connectors

LCD-12021
The TLcdPegasusModelDecoder now supports datasets with asymmetrical image parameters.

ImprovementDefense Symbology

TLcdMGRSFormat can now be configured using an EBNF pattern format.

ImprovementDefense Symbology

TLcdNVG20Arc and TLcdNVG15Arc now implement ILcdCurve.

ImprovementInfrastructure Standards

The default value for TLcd3DTilesProcessorBuilder.textureSize has been increased to 512, and the default value for TLcd3DTilesProcessorBuilder.verticesPerTile has been increased to 5000. These values were chosen as they produce smaller datasets, with less tiny tiles. On average, this increases 3D Tiles processing performance as well as download speed when using the dataset over the internet.

ImprovementInfrastructure Standards

TLcd3DTilesProcessorBuilder now also accepts input data in GLB format (the binary variant of GLTF). Furthermore, if the input data contains PBR materials, these are now also encoded in the OGC 3D Tiles output.

ImprovementInfrastructure Standards

TLcd3DTilesProcessorBuilder: data which contained a lot of textures but relatively little geometry (or vice versa) could lead to underutilization of the memory allocated to the 3D Tiles Processor. Internal changes have been made that allow the 3D Tiles Processor to better adapt its memory usage to the input data. This leads to reduced disk access and thus improved performance.

ImprovementMaritime Standards

A new S-52 radar category styling property has been added to set whether objects should be displayed that are meant to appear over or under a radar picture: see setRadarCategory(ELcdS52RadarCategory) and getRadarCategory() in TLcdS52DisplaySettings.

If you need to visualize ECDIS data interleaved with a radar, you need to use three layers:
  • an ECDIS layer for which the S-52 radar category setting is set to ELcdS52RadarCategory#UNDER,
  • the radar layer,
  • an ECDIS layer for which the S-52 radar category setting is set to ELcdS52RadarCategory#OVER.
Both ECDIS layers use the same model.

Bug fixLuciadLightspeed

LCD-12066
Fixed ALspViewXYZWorldTransformation#getMapScale returning incorrect results for TLcdMapScale.ScaleLocation.MAP_CENTER when either the world reference is 3D geocentric, or the view's DPI scale is not equal to 1.

Bug fixLuciadLightspeed

LCD-11770
TLcdSHPModelDecoder is now able to parse 'Infinity' and '-Infinity' as number properties.

Bug fixDefense Standards

LCD-12030
Setting TLcdNITFModelDecoder#setIgnoreGraphics to true now correctly ensures that CGM graphics are not included in the resulting model.

Bug fixDefense Standards

LCD-12029
Fixed issue where certain NITF elements would not be georeferenced correctly when TLcdNITFModelDecoder#setSeparateGraphics is set to true and the element's parent is not an image element, or it has no parent at all.

Upgrade considerationLucy (LuciadLightspeed)

The JIDE third party library, which is used by the Lucy docking front-end, has been upgraded to version 3.7.11. This upgrade fixes a Java 11 related issue on macOS.

Upgrade considerationLuciadLightspeed

The SQLite library has been updated to version 3.36.0.

Upgrade considerationLuciadLightspeed

When a TLspRasterLayer is configured with the incrementalPainting flag set to false and contains multiple rasters, the layer is not updated until all tiles of all rasters are ready. Previously, the layer was updated whenever all tiles of any raster were ready.

Upgrade considerationLucy (LuciadLightspeed)

TLcyNITFDecoderAddOn now separates vector and raster data in different sub-models of a model tree node. Because of this, old Lucy GXY workspaces that contain mixed NITF models will only display the raster data. When you open such a workspace, a warning will be logged to inform you about this change. Note that raster-only NITF layers are decoded and visualized correctly without any issues. If you have an affected workspace, please recreate the affected NITF layers to make sure all data are visualized correctly.

Upgrade considerationLucy (LuciadLightspeed)

Along with the GXY-in-Lightspeed layer integration API, the TLcyLspFallbackFormatAddOn was deprecated and removed from the default add-ons. Because of this, the following formats are no longer supported out of the box in Lucy:
  • DGN
  • DWG
  • CGM
  • SVG
  • LRDB
  • LVDB
  • SHPMTM
  • TEA Extreme Points
  • TEA Hypsometry GeoTIFF
Although it is deprecated, TLcyLspFallbackFormatAddOn is still API and can be re-added to your add-ons manually if required.

Upgrade considerationLucy (LuciadLightspeed)

TLcyMapEditUnitAddOn now has consistent pattern based configurations for all point formats. As a side-effect, legacy configuration options no longer work, which will cause your active settables to disappear. To fix this, adjust your point format configuration files as shown in TLcyMapEditUnitAddOn_PointFormats.cfg.

Upgrade considerationLuciadLightspeed

The military grid implementations have moved to the defense symbology component. This results in the following package changes:
Old Class New Class
com.luciad.text.TLcdMGRSFormat com.luciad.text.mgrs.TLcdMGRSFormat
com.luciad.text.TLcdGARSPointFormat com.luciad.text.gars.TLcdGARSFormat
com.luciad.view.map.TLcdMGRS* com.luciad.view.map.mgrs.TLcdMGRS*
com.luciad.view.lightspeed.painter.grid.TLspMGRS* com.luciad.view.lightspeed.painter.grid.mgrs.TLspMGRS*

Upgrade considerationLuciadLightspeed

The new ALspLayer map scale range property can clash with custom subclasses of ALspLayer. Additionally, to make this property work as expected for custom layers, it might be needed to listen to TLspLayerStateEvent.Type#MAP_SCALE_RANGE_CHANGED events or to override ALspLayer#setMapScaleRange to ensure the layer is shown and hidden as needed.

Upgrade considerationDatabase Connectors

The Oracle JDBC driver has been upgraded to version 19.12.0.0.