2023.1.07

ImprovementAdvanced Raster Connectors

LCD-13254
The TLcdPegasusModelDecoder now has out of the box support for Pegasus datasets that are created with the latest Leica processing software, without the need for renaming the .csv and .txt files.

Bug fixLuciadLightspeed

LCD-13269
Fixed potential deadlock in ALspAWTView, caused by an #invokeAndWait with a lambda, called from a static block.

Bug fixLuciadLightspeed

LCD-13243
Resolved an issue in GXY editing: when translating multiple shapes at once and the dragged shape was an ILcdGeoBuffer, it could occur that only the ILcdGeoBuffer got dragged, instead of all the selected shapes.

Bug fixAdvanced GIS Engine

LCD-13263
Fixed an issue where TLcdEllipsoidalConstructiveGeometry would sometimes consider Rhumb shapes to be geodetic shapes.

2023.1

2023.1.06

ImprovementLuciadLightspeed

LCD-13247
Introduced #canExportFeature and #canExportGeometry on the TLcdGeoJsonModelEncoder.

ImprovementLuciadLightspeed

LCD-13132
Introduced a new article Introduction to licensing for LuciadLightspeed and LuciadFusion.

ImprovementInfrastructure Standards

LCD-13248
The TLcdBinzModelDecoder now supports nodes of type INSTANCE.

ImprovementInfrastructure Standards

LCD-13219
The TLcdBinzModelDecoder now supports BOUNDARY_2D and BSP_CURVE_2D contour types on CONE surfaces.

Bug fixLuciadLightspeed

LCD-13238
TLcdGMLApplicationModelEncoder now correctly encodes unit of measures for GML2 and GML3.1. For GML2 it transforms a ILcdISO19103UnitOfMeasure into a String. For GML3.1 it transforms a ILcdISO19103UnitOfMeasure into a URI containing the unit of measure. TLcdGMLApplicationModelDecoder also transforms these types correctly in the other direction.

Bug fixLuciadLightspeed

LCD-13257
The WMTS client now recognizes layer dimensions that specify a time dimension without a UnitSymbol and / or UOM property.

Bug fixOGC Server

LCD-13253
The WFS server's GetFeature response contained unexpected namespaces when WFS 1.1.0 or WFS 2.0 was used. For these versions, all namespaces related to WFS 1.1.0, WFS 2.0, GML 3.1.1 and GML 3.2 were advertised, instead of only the relevant namespaces for the used WFS and GML versions.

Bug fixDefense Symbology

LCD-13251
Resolved an issue with the following APP-6B icon symbols, where they had a rectangular Friendly Affiliation frame instead of a circular one.
  • Armoured Carrier With Scatterable Mines (1.X.3.2.2.3.4.5)
  • Drilling Vehicle (1.X.3.2.2.3.6)

Bug fixInfrastructure Standards

LCD-13221
The TLcdBinzModelDecoder now uses the transmit field in the Binz data to determine the transparency of a color.

Bug fixInfrastructure Standards

LCD-13230
The TLcdIFCModelDecoder assigned the wrong colour to an object when a diffuse colour was specified as a IfcColourRgb.

2023.1.05

Bug fixLuciadLightspeed

LCD-10121
TLcdWKTReferenceFormatter now uses more standard names for the parameters to define the center of the following projections:
  • TLcdAlbersEqualAreaConic
  • TLcdAzimuthalEquidistant
  • TLcdLambertAzimuthalEqualArea

Bug fixLuciadLightspeed

LCD-10121
TLcdWKTReferenceParser is now more flexible in accepting parameter names for the projection center.

2023.1.04

ImprovementLuciadLightspeed

LCD-13186
Introduced ILcdGeoJsonShapeEncoder and accompanying getter and setter on the TLcdGeoJsonModelEncoder. This shape encoder can be used to extend or override encoding of shapes to GeoJSON geometries.

Bug fixLuciadLightspeed

LCD-13227
When an SLD style was created or decoded containing rules without Min or MaxScaleDenominator properties, the properties were unexpectedly introduced with a default value when the SLD style was encoded with TLcdSLDFeatureTypeStyleEncoder.

Bug fixLuciadLightspeed

LCD-13222
TLcdSVGIcon did not properly support the world-sized units pt and pc, which are respectively equal to 1/72 inch and 1/6 inch.

Bug fixLuciadLightspeed

LCD-13224
Fixed an issue where the current measurement of the TLspRulerController was not reset when the controller is cancelled.

Bug fixLuciadLightspeed

LCD-13225
Two issues have been fixed when encoding an SLD style containing a color map to an OGC SE 1.1 style file using TLcdSLDFeatureTypeStyleEncoder:
  • The alpha component of a color was not preserved during encoding when the SLD style was decoded from an OGC SE 1.1 style file.
  • The color map was not encoded to the correct color map function: Categorize and Interpolate were incorrectly exchanged.

Bug fixLuciadLightspeed

LCD-13226
When an SLD style was created or decoded with an explicit GammaValue property equal to the default value 1.0, the property was always skipped when the SLD style was encoded with TLcdSLDFeatureTypeStyleEncoder.

Bug fixAdvanced Raster Connectors

LCD-13213
TLcdGeospatialPDFModelDecoder now calculates the bounds of the model elements more accurately by using double precision (64 bit instead of 32 bit) to calculate the width and height of the bounds.

Bug fixOGC Server

LCD-13215
The WFS server did not close all streams resulting from ILcdModel#query calls.

Bug fixAviation Standards

LCD-13223
The fix introduced by LCD-12852 introduced a regression for airspace compositions containing airspaces of which the volume was defined by dependent airspaces.

Bug fixTiling Engine

LF-2385
Fixed an issue for processing coverages using TIFF as tile format. On Java 11 and newer it could result in using more memory than desired.

2023.1.03

Bug fixLuciadLightspeed

LCD-5848
Fixed an issue that prevented lighting and fog effects from applying to raster layers when no terrain is present in the view.

Bug fixLuciadLightspeed

LCD-13201
Fixed an NPE that would occur when a TLcdGeoJsonModelDecoder has a custom implementation of #parseCustomGeometry, and encounters a GeometryCollection feature that contains 2 or more consecutive custom shapes. Additionally, the order of such GeometryCollection geometries is now always kept the same as in the input JSON, even when it contains custom geometries.

Bug fixLuciadLightspeed

LCD-13150
When using a display scale != 100%, touch events could sometimes have incorrect coordinates. This was noticeable when rotating the view, where the rotation center was not between the touch points.

Bug fixInfrastructure Standards

LCD-12544, LCD-12971, LCD-13174
Fixed several cases where the TLcdIFCModelDecoder did not properly handle IfcBooleanResult subtractions.

Bug fixInfrastructure Standards

LCD-13187
TLcdIFCModelDecoder no longer throws a ClassCastException when an IfcNullStyle is encountered.

2023.1.02

ImprovementLuciadLightspeed

LCD-13172
TLspWMSLayerBuilder#mapScaleProvider and TLspWMSLayerBuilder#sldStyle have been added to the API. These methods allow the developer to control the scale that is used for the painter and to configure client-side scale ranges that determine when the data is visualized.

ImprovementAviation Standards

LCD-13185
Upgraded the included EAD ADR AIXM 5.1(.1) XML Schema extensions to support version 15.2.

Bug fixLucy (LuciadLightspeed)

LUCY-5049
Fixed an issue where a ConcurrentModificationException was thrown when removing all elements from a model for which multiple LOS coverages were created via TLcyLOSManager.

Bug fixOGC Server

LCD-13073
TLcdWMSGXYViewFactory#createGXYView(boolean, int, int, ILcdBounds, ILcdXYWorldReference, Color, aRequestContext) was no longer called during the creation of a TLcdGXYViewBufferedImage. Extensions of TLcdWMSGXYViewFactory overriding this method to change the configuration of TLcdGXYViewBufferedImage where no longer applied because of this.

2023.1.01

ImprovementLuciadLightspeed

LCD-13127
You can now use SLD styles with color maps to render dual-band raster data, such as wind or water velocity data decoded from OGC NetCDF files. Such data consists of a U and a V band that respectively represent a magnitude value parallel to the X and Y axis. The SLD rendering pipeline calculates the magnitude for a vector that combines the U and V bands, on which the color map is applied.

ImprovementLuciadLightspeed

LCD-13124
The WCS client's GetCoverage decoding logic now reuses the TLcdGeoTIFFModelDecoder improving the decoding time.

Bug fixLuciadLightspeed

LCD-13097
Fixed an issue where semi-transparent overlay components on an AWT view could exhibit a "flickering" effect on monitors with display scaling enabled.

Bug fixLuciadLightspeed

LCD-13182
SLD icon rendering in GXY could trigger cut-off icons near the map borders when shifted anchor points were defined for the icons. This was especially visible when the data was visualized using a tiled WMS or WMTS service.

Bug fixOGC Server

LCD-13144
Fixed WCS coverage generation to better take into account the appropriate level of detail from a source data set with multiple level of details. Before the coverage generation would use less detailed information when encountering values representing a NODATA value. This could result in using inappropriate values when generating coverages having a more detailed level of detail.

Bug fixAviation Standards

LCD-13183
The rendering of AIXM 5.1 holding patterns in GXY could trigger cut-off icons near the map borders. This was especially visible when the data was visualized using a tiled WMS or WMTS service.

Bug fixDefense Symbology

LCD-13156
Resolved an issue where NVG polygon and polyline elements with the leg-type attribute set to "rhumb-line" were painted with great circle lines.

Bug fixDefense Symbology

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

2023.1

New featureLuciadLightspeed

TLcdMBTilesModelDecoder now supports vector tiles as well as image tiles. Vector tile data can be visualized in a Lightspeed view by using TLspMBTilesVectorLayerBuilder.

New featureInfrastructure Standards

The 3D Tiles Processing Engine has been structurally improved. As a result, tiling your data is now faster and uses less memory. Furthermore, the resulting OGC 3D Tiles data is smaller on disk and uses fewer tiles. This benefits not only the production of the data, but also the time spent downloading the data to the client. The difference is most noticeable in large datasets, as well as in datasets that contain repeating textures.

ImprovementLuciadLightspeed

LCD-11110

An ellipsoidal version of TLcdLambertAzimuthalEqualArea has been added: TLcdEllipsoidalLambertAzimuthalEqualArea. This projection use ellipsoidal calculations instead of only spherical calculations.

This also improves the precision of the WKT and EPSG references that use this an ellipsoidal version of this projection. TLcdWKTReferenceParser now makes a distinction between the spherical and the ellipsoidal versions of this projection. The precision of these EPSG codes has now been improved:

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

ImprovementLuciadLightspeed

LCD-13067

The TLcdGeoJsonModelDecoder can now decode features with a null geometry. The resulting domain objects are ILcdDataObjects containing the json properties, and also implement ILcdShapeList, but contain no shapes (they are empty shape lists).

Likewise, the TLcdGeoJsonModelEncoder now supports encoding domain objects that don't have a geometry, provided that they implement ILcdDataObject. The resulting json contains the data object's properties and a null geometry.

ImprovementLuciadLightspeed

LCD-13035
The following classes now correctly implement ILcdGXYPainter#isTouched:
TLcdGXYImageIconPainter
ALcdEarthGXYPainter
TLcdEarthGXYVertexArrayPainter
TLcdGXYClippingPainterWrapper

The precision of ILcdGXYPainter#isTouched for ALcdRasterPainter and TLcdMultivaluedRasterPainter has been improved.

ImprovementLuciadLightspeed

The TLcdOBJModelDecoder now supports setting a default reference, which will be used in case the model reference decoder doesn't provide one.

ImprovementLuciadLightspeed

LCD-13047
The method TLspScaleBasedStylerBuilder.styler(TLcdDimensionInterval<TLcdMapScale>, ALspStyler) has been changed to accept an ILspStyler instead of an ALspStyler. This makes it possible to use the TLspScaleBasedStylerBuilder with every ILspStyler implementation in LuciadLightspeed.

ImprovementLuciadLightspeed

LCD-12999
TLcdGXYClippingPainterWrapper now supports two modes: an inclusive (default) and exclusive mode, which respectively indicate whether only content inside or outside the clipping shapes gets painted.

ImprovementOGC Server

The WCS server's GetCoverage handling logic now reuses threads across multiple requests improving the response time depending on the used data and hardware.

ImprovementOGC Server

LCD-13074
The WFS server's capability to output features as GeoJSON has been made more robust: features that cannot be encoded to GeoJSON (for example, because of an unsupported geometry type) are now skipped with a warning instead of causing a WFS GetFeature response failure.

ImprovementOGC Server

LCD-13022, LCD-13016, LCD-8758
The WFS server is now more flexible against accepting a geometry property name in an OGC Filter condition. Next to a fully-qualified geometry property name (with a prefix bound to a namespace, such as gml:geometry), it now also accepts an unqualified property name (such as geometry). Additionally, warnings such as "Error while converting filter" are no longer logged for valid geometry property names.

ImprovementOGC Server

LCD-12995
The priority of the ILcdGXYViewEncoder is now used to determine the order of the supported image formats advertised in the capabilities of the WMS Server.

ImprovementInfrastructure Standards

TLcdDWGModelDecoder now supports Autocad 2018 DWG data files.

Bug fixLuciadLightspeed

LCD-13123
TLcdEllipsoidUtil#intersects2DLS could incorrectly return true if a point of the first segment is collinear with the points of the second segment, but outside the boundaries of the second segment.
This also influences higher level functionality, such as polygon/polygon intersection checks.

Bug fixLuciadLightspeed

LCD-13116
TLcdGXYShapePainter: when visualizing shapes that both implement an ILcdShape subtype and ILcdPointList, the painter now gives priority to the former. Refer to the painter's javadoc for more information on the supported objects.

Bug fixLuciadLightspeed

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

Bug fixLucy (LuciadLightspeed)

TLcyWCSClientAddOn and TLcyWFSClientAddOn no longer show multiple duplicate error dialogs when a communication error with the WCS / WFS service occurs.

Bug fixLuciadLightspeed

LCD-13079
TLcdOGCFilterEvaluator could not handle a spatial condition with an empty geometry property for domain objects that implemented both ILcdShape and ILcdDataObject and that contained multiple geometry properties.

Bug fixLuciadLightspeed

The locking strategy used during the decoding operations on the elements in the ILcdModel produced by the TLcdJPEG2000ModelDecoder has been optimized to allow for faster access from multiple threads.

Bug fixLuciadLightspeed

LCD-13054
TLcdOGC3DTilesModelDecoder: Fixed issue when decoding GLB files with a byteStride parameter.

Bug fixLuciadLightspeed

LCD-13139
TLcdExpressionFactory: when using the eq expression without an epsilon or an epsilon equal to 0, the expression would evaluate to false for equal numbers.

Bug fixLucy (LuciadLightspeed)

LUCY-5048
TLcyWMSClientAddOn: selecting features on a WMS layer could trigger exceptions if the WMS server did not return any results.

Bug fixDatabase Connectors

LCD-12941
From version 2.5 on, PostGIS no longer supports antipodal (180 degrees long) edges. This triggered errors when applying bounding box spatial filters to models decoded by the TLcdPostGISModelDecoder.

Bug fixOGC Server

LCD-13160
The WMS server now takes the PIXELSIZE request parameter into account when evaluating SLD scale ranges. When this request parameter is not present, the OGC default of 0.28mm per pixel is used for the scale calculation, unless the pixel size is overridden on the server using the luciad.dpi VM parameter.

Upgrade considerationLuciadLightspeed

Security updates have been applied to the following dependencies:
Group ID Artifact ID Old Version New Version
com.fasterxml.woodstox woodstox-core 5.0.3 6.5.1
org.codehaus.woodstox stax2-api 3.1.4 4.2.1

Security updates have been applied to the following sample dependencies of the OGC server sample:
Group ID Artifact ID Old Version New Version
org.springframework.boot spring-boot 2.7.8 2.7.14
org.springframework.boot spring-boot-starter 2.7.8 2.7.14
org.springframework.boot spring-boot-autoconfigure 2.7.8 2.7.14
org.springframework.boot spring-boot-starter-json 2.7.8 2.7.14
org.springframework.boot spring-boot-starter-jetty 2.7.8 2.7.14
org.springframework.boot spring-boot-starter-logging 2.7.8 2.7.14
org.springframework.boot spring-boot-starter-web 2.7.8 2.7.14
org.springframework spring-aop 5.3.25 5.3.29
org.springframework spring-tx 5.3.25 5.3.29
org.springframework spring-jdbc 5.3.25 5.3.29
org.springframework spring-beans 5.3.25 5.3.29
org.springframework spring-context 5.3.25 5.3.29
org.springframework spring-core 5.3.25 5.3.29
org.springframework spring-expression 5.3.25 5.3.29
org.springframework spring-web 5.3.25 5.3.29
org.springframework spring-webmvc 5.3.25 5.3.29
org.eclipse.jetty.websocket javax-websocket-client-impl 9.4.50.v20221201 9.4.51.v20230217
org.eclipse.jetty.websocket javax-websocket-server-impl 9.4.50.v20221201 9.4.51.v20230217
org.eclipse.jetty jetty-annotations 9.4.50.v20221201 9.4.51.v20230217
org.eclipse.jetty jetty-client 9.4.50.v20221201 9.4.51.v20230217
org.eclipse.jetty jetty-continuation 9.4.50.v20221201 9.4.51.v20230217
org.eclipse.jetty jetty-http 9.4.50.v20221201 9.4.51.v20230217
org.eclipse.jetty jetty-io 9.4.50.v20221201 9.4.51.v20230217
org.eclipse.jetty jetty-plus 9.4.50.v20221201 9.4.51.v20230217
org.eclipse.jetty jetty-security 9.4.50.v20221201 9.4.51.v20230217
org.eclipse.jetty jetty-server 9.4.50.v20221201 9.4.51.v20230217
org.eclipse.jetty jetty-servlet 9.4.50.v20221201 9.4.51.v20230217
org.eclipse.jetty jetty-servlets 9.4.50.v20221201 9.4.51.v20230217
org.eclipse.jetty jetty-util 9.4.50.v20221201 9.4.51.v20230217
org.eclipse.jetty jetty-util-ajax 9.4.50.v20221201 9.4.51.v20230217
org.eclipse.jetty jetty-webapp 9.4.50.v20221201 9.4.51.v20230217
org.eclipse.jetty jetty-xml 9.4.50.v20221201 9.4.51.v20230217
org.eclipse.jetty.websocket websocket-api 9.4.50.v20221201 9.4.51.v20230217
org.eclipse.jetty.websocket websocket-client 9.4.50.v20221201 9.4.51.v20230217
org.eclipse.jetty.websocket websocket-common 9.4.50.v20221201 9.4.51.v20230217
org.eclipse.jetty.websocket websocket-server 9.4.50.v20221201 9.4.51.v20230217
org.eclipse.jetty.websocket websocket-servlet 9.4.50.v20221201 9.4.51.v20230217
org.apache.tomcat.embed tomcat-embed-el 9.0.71 9.0.78
org.yaml snakeyaml 1.33 2.0
ch.qos.logback logback-core 1.2.11 1.2.12
ch.qos.logback logback-classic 1.2.11 1.2.12

Upgrade considerationLuciadLightspeed

TLcdMBTilesModelDecoder has been moved from the SQLite component to a dedicated MBTiles component. It is now contained in the package com.luciad.format.mbtiles Upgrading users will get a compiler error because of this, which can be resolved by adapting the affected import statements. Furthermore, build configurations may need to be updated to include the new lcd_mbtiles.jar file.

Upgrade considerationLuciadLightspeed

TLcdMBTilesModelDecoder now requires the Google Protocol Buffer library (protobuf-java-3.19.4.jar) to support files which contain vector tiles.

Upgrade considerationLuciadLightspeed

The return type of the method TLspScaleBasedStyler.getStylersByScaleRange has been changed from ALspStyler to ILspStyler.

Upgrade considerationInfrastructure Standards

LCD-12414
Meshup now uses Draco mesh compression by default. To disable, call TLcd3DTilesProcessorBuilder#meshCompression() with argument NONE or pass --meshCompression NONE as a parameter to the command line Meshup sample.

Upgrade considerationInfrastructure Standards

The names of the DWG native jar files, which the lcd_dwg.jar jar depends on, have been changed. The libraries used to follow the pattern lcd_dwg-native.{platform}.jar, but they have now been renamed to follow the pattern libdwg-${version}-native.${platform}.jar.

The available DWG native jar files, at the time of writing, are:

  • libdwg-24.8.lcd-1-native.linux.jar
  • libdwg-24.8.lcd-1-native.linux64.jar
  • libdwg-24.8.lcd-1-native.macos_64.jar
  • libdwg-24.8.lcd-1-native.win32.jar
  • libdwg-24.8.lcd-1-native.win64.jar

The names of these libraries have also been changed in the Maven POM files. The Maven groupId:artifactId:version of these libraries used to follow the pattern com.luciad:lcd_dwg-native.{platform}:{version}. This has now been changed to com.luciad:libdwg-native.{platform}:{version}, we also added the module com.luciad:libdwg:24.8.lcd-1, which depends on all DWG native modules.

The available DWG Maven modules, at the time of writing, are:

  • com.luciad:libdwg:24.8.lcd-1
  • com.luciad:libdwg-native.linux:24.8.lcd-1
  • com.luciad:libdwg-native.linux64:24.8.lcd-1
  • com.luciad:libdwg-native.mac_os64:24.8.lcd-1
  • com.luciad:libdwg-native.win32:24.8.lcd-1
  • com.luciad:libdwg-native.win64:24.8.lcd-1

Upgrade considerationInfrastructure Standards

The names of the DGN native jar files, which the lcd_dgn.jar jar depends on, have been changed. The libraries used to follow the pattern lcd_dgn-native.{platform}.jar, but they have now been renamed to follow the pattern libdgn-${version}-native.${platform}.jar.

The available DGN native jar files, at the time of writing, are:

  • libdgn-24.8.lcd-1-native.linux.jar
  • libdgn-24.8.lcd-1-native.linux64.jar
  • libdgn-24.8.lcd-1-native.macos_64.jar
  • libdgn-24.8.lcd-1-native.win32.jar
  • libdgn-24.8.lcd-1-native.win64.jar

The names of these libraries have also been changed in the Maven POM files. The Maven groupId:artifactId:version of these libraries used to follow the pattern com.luciad:lcd_dgn-native.{platform}:{version}. This has now been changed to com.luciad:libdgn-native.{platform}:{version}, we also added the module com.luciad:libdgn:24.8.lcd-1, which depends on all DGN native modules.

The available DGN Maven modules, at the time of writing, are:

  • com.luciad:libdgn:24.8.lcd-1
  • com.luciad:libdgn-native.linux:24.8.lcd-1
  • com.luciad:libdgn-native.linux64:24.8.lcd-1
  • com.luciad:libdgn-native.mac_os64:24.8.lcd-1
  • com.luciad:libdgn-native.win32:24.8.lcd-1
  • com.luciad:libdgn-native.win64:24.8.lcd-1

Upgrade considerationInfrastructure Standards

Added a dependency on the third party library libjpeg-turbo. This library is used in the Meshup pipeline to improve performance when reading and writing JPEG textures.