2023.0

2023.0.12

ImprovementLuciadFusion

LCD-13042
TLcdOGC3DTilesModelDecoder: Fixed issue when loading 3D Tiles payload files with an invalid roughness or metallic value. These values should be inside the range of 0 to 1. Values that lie outside of this range will be set to 1, which is the glTF 2.0 default.

ImprovementLuciadFusion

LCD-13122
SLD icon rendering in GXY and Lightspeed now supports well-known mark icons to represent the following additional shapes:
  • shape://slash or slash: a forward diagonal line
  • shape://backslash or backslash: a backward diagonal line
  • shape://plus or plus: a plus mark
  • shape://times or times: a times mark

ImprovementInfrastructure Standards

LCD-13042
TLcd3DTilesProcessorBuilder: Fixed issue when processing GLB files with an invalid roughness or metallic value. These values should be inside the range of 0 to 1. Values that lie outside of this range will be set to 1, which is the glTF 2.0 default.

Bug fixLuciadFusion

A TLfnDataQueryEvent is now published when performing an RSQL query using the GET /data/filter endpoint of the REST API.

Bug fixLuciadFusion

LCD-13114
TLcdWFSProxyModel did not work well with a WFS server that required authentication: if the correct credentials were specified through a TLcdOWSHttpTransport, fetching of resources such as XML Schemas could still lead to authentication failures.

Bug fixLuciadFusion

LCD-13120

Resolved an issue where the TLcdOGCFilter containing a TLcdOGCBinarySpatialOperator would try to convert the condition's ILcdShape to the ILcdModelReference of the domain object when it was not necessary to do so. For instance, when the shape used by the spatial operator and the shape used by the domain object, had a different ILcdGeoReference containing the same ILcdGeodeticDatum.

This could cause an IllegalArgumentException to be thrown when evaluating the TLcdOGCFilter, stating the spatial condition and domain object had incompatible references.

Bug fixLuciadFusion

The red hatched pattern returned by the WCS Server in case the requested data is too detailed is now only returned for datasets with RGBA images. In other cases an empty image that complies with the band semantics of the dataset is returned.

Bug fixLuciadFusion

LCD-13126
The use of the well-known mark icons horline and vertline resulted in a visual gap between the symbols when they were used for a fill pattern.

Bug fixLuciadFusion

LCD-13113
An SLD point symbolizer did not support a has-a-shape domain object in a GXY view if the geometry property name was missing in the SLD. Similar as for other SLD symbolizers, the shape will now be automatically discovered based on a TLcdHasGeometryAnnotation available on the domain object's data model.

Bug fixAviation Standards

LCD-13088
Fixed a geometry edge case in the handling of AIXM 5.1 airspace compositions. Small inaccuracies in a composition could prevent its use in a new airspace composition, causing the warning message "Could not process airspace geometry SurfaceType[anonymous] due to an invalid topology".

Bug fixDefense Standards

LCD-12308
TLcdNITFModelDecoder#canDecodeSource is now more strict when checking CADRG frame files. This decreases the chance of the NITF model decoder falsely indicating that it can decode a file with a CADRG frame file extension.

Bug fixInfrastructure Standards

LCD-13054
TLcd3DTilesProcessorBuilder: Fixed issue when processing GLB files with a byteStride parameter.

Bug fixRadar Connectors

LCD-13125
The scaling factor included in ASTERIX Category 8 data was not taken into account when decoding the range, length and coordinate parameters. This factor is now used if it is available in the data and if no external ALcdASTERIXScalingFactorProvider is configured on the ASTERIX decoder. In all other cases, a default value (7) is used, similar as before.

2023.0.11

ImprovementLuciadFusion

LF-2492
Improved the performance of retrieving service resources through the LuciadFusion REST API when access control is enabled.

ImprovementLuciadFusion

LCD-13099
TLcdEPSGReferenceParser now also documents which EPSG codes are not supported.

ImprovementLuciadFusion

LF-2494
It's now possible to add your own ErrorController implementation to LuciadFusion. The default error controller provided by LuciadFusion will not be activated in that case. Previously, adding your own error controller would result in an ambiguous mapping error about the /error endpoint.

ImprovementLuciadFusion

LCD-12947
Generated B3DM files and their contained glTF data now adhere to the padding requirements in their specifications. This improves the compatibility of data sets created by the 3D Tiles Processing Engine with third party tools and with a wider range of display drivers.

ImprovementLuciadFusion

LCD-12969
A new standard symbol TLcdSymbol.PLUS_DIAMOND was added.

ImprovementInfrastructure Standards

LCD-12687
TLcdIFCModelDecoder now supports IfcTriangulatedFaceSet and IfcIndexedColourMap.

ImprovementInfrastructure Standards

LCD-12915
Fixed a bug where the conversion of an erroneous Binz dataset seemed to succeed. The conversion will now fail, instead of generating an empty 3DTiles dataset.

Bug fixLuciadFusion

LCD-13103
Fixed an issue where creating 3D Tiles for meshes without primitives would create invalid glTF. Such meshes are skipped now.

Bug fixLuciadFusion

LCD-13093
Models containing one or more elements of type TLcdShapeList that themselves contains an ILcdShape that implements both ILcdPolyline and ILcdPolygon are now correctly exported to LVDB and Geopackage databases.

Bug fixLuciadFusion

LCD-13085
The WCS server's GetCoverage performance improvement introduced by LCD-12948 could result in too many open threads, causing OutOfMemoryError issues on certain platforms.

Bug fixLuciadFusion

LCD-13108
When sending a WMTS request without request parameter, the returned exception report did not refer to the correct exception code: this should be MissingParameterValue instead of InvalidParameterValue.

Bug fixLuciadFusion

LCD-13107
Fixed a memory leak that occurred when using a grid on a Lightspeed view with labels enabled.

Bug fixLuciadFusion

LCD-13104
The method TLcdWFSProxyModel#getGeometryPropertyName could trigger a NullPointerException when it was called from multiple threads concurrently.

Bug fixLuciadFusion

LCD-13049
ALcdWMSProxy#toDataSource now takes ATLcdSLDNamedLayer#isQueryable into account. This fixes the problem that the "enable feature info" checkbox in the Connect-To panel in Lucy was broken for SLD styled layers.

Bug fixLuciadFusion

LF-2488
Fixed an issue that prevented the "Last Run Only" filter on the crawl job detail page from working and showing any results when applied.

Bug fixLuciadFusion

LCD-13107, LCD-13218
Fixed a memory leak that could occur for layers with labeled objects that are added, updated and removed frequently.

Bug fixAviation Standards

LCD-13087
Fixed the handling of an airspace segment that follows a geographical border for only one point.

Bug fixDefense Symbology

LCD-13089
Resolved an issue that caused an exception to be thrown when different cornerSmoothness values were configured on the military symbology styles of the TLcdNVGGXYLabelPainterProvider and the TLcdNVGGXYPainterProvider.

Bug fixDefense Symbology

LCD-13100
Resolved an issue that caused certain Task Graphics symbols, such as "Seize" and "Turn", to be rendered with a straight line instead of an arc. This only occurred when visualizing an NVG file using a GXY view.

Bug fixDefense Symbology

LCD-13080
Resolved an issue that would cause exceptions to occur during the calculation of label positions. These exceptions only occurred when decoding NVG containing "Forward edge of Battle Area (FEBA)" symbols in a GXY view.

Bug fixDefense Symbology

LCD-13021
The fix for issue LCD-12502, where the NVG fill-pattern "DiagonalUpwardLine" was misspelled as "DiagonalUpLine", has been backported to 2018.2.

2023.0.10

ImprovementDefense Symbology

LCD-13065
Fixed an issue in Lightspeed views, where military tactical graphics we're no longer painted with a dashed stroke when their status was set to "Anticipatted/Planned", and haloed style was applied to them (with TLcdDefaultAPP6AStyle.setHaloEnabled or TLcdDefaultMS2525bStyle.setHaloEnabled).

Bug fixLuciadFusion

LF-2481
Resolved an issue, introduced in version 2022.0, where the labels on WMS GetMap responses could intersect with the map boundaries, resulting in cut-off labels in the WMS map tiles.

Bug fixLuciadFusion

LCD-13078
Fixed a bug in the TLcdE57ModelDecoder: when creating panoramic images from input pinhole images, multiple locations could end up in one Luciad Panorama if they differ only in their Z coordinate.

Bug fixInfrastructure Standards

LCD-13082
IFCFeatures decoded by the TLcdIFCModelDecoder no longer contains children that don't exist in the model.

2023.0.09

Bug fixLuciadFusion

LCD-13063
Fixed a NullPointerException in TLspSLDStyler that could happen when adding an SLD-styled raster layer to the view.

Bug fixLuciadFusion

LCD-13061
TLsp3DIconStyle: an exception was thrown when styling an oriented point with a TLsp3DIconStyle on a 2D cartesian view.

Bug fixLuciadFusion

LCD-13050
Fixed some controller rendering issues in the ILcdGXYView implementations when using HiDPI rendering.

Bug fixLuciadFusion

LCD-13066
The built-in custom OGC functions START_POINT_FUNCTION_NAME, END_POINT_FUNCTION_NAME, START_ANGLE_FUNCTION_NAME, END_ANGLE_FUNCTION_NAME, INTERIOR_POINT_FUNCTION_NAME and VERTICES_FUNCTION_NAME in TLcdOGCVendorSpecificFunctions could not handle GML geometry properties.

Bug fixDefense Symbology

LCD-13031
Fixed an issue with the Block, Contain and Penetrate tactical graphic task symbols that could cause the vertical line of the symbol to not be painted perpendicular to the horizontal line of the symbol.

2023.0.08

Bug fixLuciadFusion

LCD-12930
The correct forward slash separator is now always used to find child resources instead of the system dependent java.io.File#separatorChar.

Bug fixLuciadFusion

LCD-13036
Fixed an issue where OSGB datasets with paths containing non-latin scripts characters would not be served correctly by LuciadFusion

Bug fixLuciadFusion

LCD-13032
The TILcdDatabaseEncoder2 now uses PreparedStatement#getParameterMetaData to determine the SQL type of a parameter when setting null values. This corrects the situation where a null value for a nullable boolean column resulted in an error when saving.

Bug fixLuciadFusion

LCD-13046
Fixed a NPE that could occur when using the TLspEditController to edit an object, and simultaneously modifying that object programmatically.

Bug fixLuciadFusion

LCD-12888
The TLcdMBTilesModelDecoder now interprets the minzoom value stored in the metadata table. As a result tiles are now shown which previously where not.

Bug fixLuciadFusion

LCD-12664
The TLcdLVDBModelDecoder and the TLcdGeoPackageModelDecoder now return null instead of 0 when the NULL value is stored in the database.

Bug fixLuciadFusion

LCD-12861
The TLcdMBTilesModelDecoder and TLcdGeoPackageModelDecoder no longer create empty directories when trying to open non-existing sources.

Bug fixLuciadFusion

LCD-13029
To avoid threading issues, the collections returned by ILspInteractivePaintableLayer#getObjectsWithPaintState are now protected by read or write locks, managed by TLcdLockUtil. Before this locking mechanism was introduced, a rare ConcurrentModificationException could occur for example when changing a layer filter, while simultaneously (de)selecting objects on that layer.

We recommended checking your codebase for any custom usages of #getObjectsWithPaintState and apply the proper locking. An example snippet of how to take a read or write lock is included in the method javadoc. This recommendation is mostly relevant for dynamic layers, in which for example the layer filter may frequently change, and in which the elements can be selected or edited.

2023.0.07

ImprovementLuciadFusion

LCD-13004
Improved the labeling position for polygons crossing the date line in several Lightspeed and GXY scenarios.

ImprovementLuciadFusion

LCD-12948
The WCS server's GetCoverage handling logic now takes better advantage of multiple CPU cores, improving the response time with up to 50% depending on the used data and hardware.

ImprovementLuciadFusion

LCD-13014
SLD icon rendering in GXY and Lightspeed now supports well-known mark icons to represent a horizontal line and a vertical line. The supported well-known names are horline or shape://horline for a horizontal line and vertline and shape://vertline for a vertical line.

ImprovementLuciadFusion

LCD-13030
The WMTS client will now use the tile matrix set which is in the EPSG:4326 reference and has a quad tree tile structure, if there's any.

ImprovementAviation Standards

LCD-12950
A new package com.luciad.ais.model.finalapproachpath has been added to AIS containing domain objects to model a final approach path.

ImprovementAviation Standards

LCD-12950
A new DAFIFT decoder TLcdDAFIFTPrecisionApproachPathDecoder has been added to support the decoding of Precision Approach Path objects. The data type of the decoded objects is TLcdDAFIFTDataTypes#PrecisionApproachPath, which extends from the new FinalApproachPath type in AIS.

ImprovementRadar Connectors

LCD-13002
Support for ASTERIX Category 34 has been added, cfr. TLcdASTERIXCategory34. As a result, TLcdASTERIXLiveModelDecoder and TLcdASTERIXModelDecoder can now decode ASTERIX Category 34 datasets. The data type of the decoded objects is TLcdASTERIXDataTypes#Category34RadarServiceMessageType.

Bug fixLuciadFusion

LF-2471
The OGC services sample failed to start if the lcd_fusionplatform.jar was on the classpath. This has now been fixed.

Bug fixLuciadFusion

LCD-13008
TLcdWKTReferenceParser didn't parse WKT strings using the 'Albers_Equal_Area' projection name correctly and TLcdWKTReferenceFormatter used an invalid name with a 't'. This issue was introduced in patch version 2022.1.13.

Bug fixLuciadFusion

LF-2469
In the LuciadFusion Studio web application, hovering the mouse cursor over a line on the charts of the Status page now shows the corresponding chart value instead of an empty popup.

Bug fixLuciadFusion

LCD-12980
Fixed an issue where, in some scenarios, raster data using an IndexColorModel was displayed with incorrect colors when zoomed out.

Bug fixLuciadFusion

LCD-12983
Fixed an issue where the TLspPopupMenuSelectionCandidateHandler did not handle correctly selection candidates correctly when they were already selected.

Bug fixLuciadFusion

LCD-13000
The TLcdDatabaseModelDecoder now correctly handles the optional maxCacheSize parameter, disabling the caching when the value is less or equal to 0.

Bug fixLuciadFusion

LCD-13006
SLD icon rendering in GXY did not support foot for the uom property of a point symbolizer, in contrast with Lightspeed. To ease using this uom, a new method foot has been added to the builder of TLcdSLDPointSymbolizer.

Bug fixLuciadFusion

LCD-13020
The utility method ILcdPropertyRetrieverProvider#createDefaultPropertyRetrieverProvider could result in model read access without an appropriate lock.

Bug fixAviation Standards

LCD-12850
Made the calculation of the connection between an airspace segment and a geographical border more robust to avoid a self-intersecting geometry. A self-intersecting geometry prevents the use of the airspace in an airspace aggregation.

Bug fixAviation Standards

LCD-12852
Fixed a geometry edge case in the handling of AIXM 5.1 airspace compositions. A composition of several equal airspaces could introduce small inaccuracies. This could prevent its use in a new airspace composition, causing the warning message "Cause: found non-noded intersection between LINESTRING ... and LINESTRING ...".

Bug fixInfrastructure Standards

LCD-13012
TLcdIFCModelDecoder no longer throws a ClassCastException when an IfcSpatialStructureElement has invalid bounds.

Bug fixInfrastructure Standards

LCD-13013
TLcdIFCModelDecoder now supports IfcArcIndex with a radius that is different from 1.0.

Bug fixInfrastructure Standards

LCD-12934
TLcdIFCModelDecoder now decodes ISO8859 characters that have been encoded with the \S\ and \P\ control directives.

Bug fixInfrastructure Standards

LCD-12935
TLcdIFCModelDecoder no longer throws an IndexOutOfBoundsException when openings are defined on an IfcElement, but none of them could get converted for some reason.

2023.0.06

ImprovementLuciadFusion

LF-2397
It is now prohibited and not possible to create data resource access rules for the user role LFN_ADMINISTRATOR.

Upgrade considerationAdvanced Raster Services

LF-2453, LF-2464
The ECWP service's native library has been updated to ECWP3Java version 16.8.0.3133. Verifying that the ECWP service can handle a data file is now delegated to this library.

2023.0.05

ImprovementLuciadFusion

LF-2460
It is now possible to configure the LDAP authentication to perform a subtree search for groups by setting the fusion.security.ldap.groupSearch.searchSubtree property to true in config/application-fusion.production.yml. By default, LuciadFusion does not perform a subtree search for performance reasons.

ImprovementLuciadFusion

LF-2437
The number of threads used by the LTS preprocessor engine can now be configured using the fusion.lts.preProcessing.engineThreadCount property. The default value of this property is the number of processors divided by two.

ImprovementLuciadFusion

LF-2214
TLcdDataModelBuilder and TLfnCustomPropertyDefinitions now allow type names and property names that include periods and dashes.

Bug fixLuciadFusion

LCD-12996
com.luciad.io.TLcdStatusInputStreamFactory now excludes wrapping created input streams for GeoTIFF files as reading this format requires random file access.

Bug fixLuciadFusion

LF-2457
Resolved an issue that caused Product names to not be sanitized during creation. This could cause a Product to have a name that is not URL safe when this Product is published in a Service.

2023.0.04

ImprovementLuciadFusion

LCD-12337
TLcdWKTReferenceParser now supports compound references with an ellipsoidal vertical datum: VERT_DATUM tag with value 2002 (ellipsoid).

ImprovementLuciadFusion

LCD-11990
TLcdWKTReferenceParser now recognizes "North American 1983 CSRS", "North American Datum 1983 CSRS" and variants as aliases for the "NAD83 Canadian Spatial Reference System" geodetic datum name.

ImprovementLuciadFusion

LF-2278
The LuciadFusion version can now be found in the web application by clicking on the Help menu and selecting Version.

ImprovementLuciadFusion

LF-2279
The LuciadFusion version can now be obtained using the GET /api endpoint of the REST API. The productInfo.version property contains the version of LuciadFusion.

ImprovementLuciadFusion

LF-2284
A stack trace is now shown in the detail page of a file that the crawler failed to decode. The stack trace provides more insight into why the file could not be crawled.

ImprovementLuciadFusion

LF-2416
Requests to stopped services now return an HTTP 404 Not Found response, instead of a 503 Service Unavailable response.

ImprovementDefense Symbology

LCD-12973
It is now possible to configure the size of the icon of the "Biological Contaminated Area", "Chemical Contaminated Area", "Radiological Contaminated Area" and "Nuclear Contaminated Area symbols". The icon size of these symbols can be configured using the methods TLcdDefaultMS2525bSymbologyStyle.setSizeSymbol(int) and TLcdDefaultAPP6ASymbologyStyle.setSizeSymbol(int)

ImprovementInfrastructure Standards

LCD-12938
The algorithm to detect pixel colors to texture simplified meshes has gotten a make-over, which lead to a significant performance improvement.

Bug fixLuciadFusion

LF-2458
Fixed a checksum error that prevented upgrading LuciadFusion from versions 2022.0 - 2022.0.3 to a later version when using SQL Server as a database.

Bug fixLuciadFusion

LCD-9650
Fixed a rare crash in TLspLabelPainter that could happen when removing a layer that contains labels with pins, or disposing the view.

Bug fixLuciadFusion

LCD-12726
TLcdWKTReferenceParser now more consistently assigns the correct datum transformation parameters to "Amersfoort / RD New" references.

Bug fixLuciadFusion

LCD-12471
Some of the EPSG references parsed by TLcdEPSGReferenceParser had incorrect projection parameters. This affected references where the EPSG database defines parameters in a different unit than meters or degrees:
  • EPSG:3359
  • EPSG:22391 and EPSG:22392
  • EPSG:22780
  • EPSG:26191 to EPSG:26195
  • EPSG:26814 and EPSG:26815
  • EPSG:26819 to EPSG:26822
  • EPSG:26825 and EPSG:26826
  • EPSG:26830 to EPSG:26833
  • EPSG:26836 and EPSG:26837
  • EPSG:26841 to EPSG:26844
  • EPSG:30491 and EPSG:30492
  • EPSG:30791 and EPSG:30792

Bug fixLuciadFusion

LCD-12979
Fixed an issue in TLcd2DBoundsIndexedModel model bounds calculation. In certain edge cases, the Z/depth of the model bounds could be too small, causing model.getBounds().contains3D(modelObject.getBounds()) to fail.

Bug fixLuciadFusion

LF-2422
Fixed an issue that prevented crawling files whose file name consisted entirely of non-alphanumeric characters in combination with using an Oracle database for LuciadFusion Studio. If the data is used in a WFS service, the feature type id will now have a random uuid part.

Bug fixLuciadFusion

LF-2396
Fixed an issue that caused the getDataSource method of the TLfnData in a TLfnDataUpdatedEvent to return null when re-crawling changed data.

Bug fixLuciadFusion

LF-2416
Resolved an issue that caused LuciadFusion to continue executing requests to stopped services, after sending an error response.

Bug fixLuciadFusion

LCD-12967
The WFS server could reject a valid property name filter if the requested feature type was backed by a model with multiple data types.

Bug fixLuciadFusion

LCD-6724
The OGC WCS client no longer creates lmap-geotiff* files in the temporary folder.

Bug fixLuciadFusion

LF-2432
Fixed an issue that caused the createdBy property of a PreprocessJob to be empty when using the REST API.

Bug fixDefense Symbology

LCD-11917, LCD-12636
Resolved an issue that caused exceptions to be thrown when editing NVG symbols when using an asynchronous GXY view.

Bug fixInfrastructure Standards

LCD-12987
Fixed a bug where a large amount of zero-uv-area faces in the input data lead to an unusually large-sized texture.

Upgrade considerationLuciadFusion

LF-2429, LF-2430
The following jackson dependencies have been upgraded:
Group ID Artifact ID Old Version New Version
com.fasterxml.jackson.dataformat jackson-dataformat-xml 2.9.7 2.14.0
com.fasterxml.jackson.dataformat jackson-dataformat-cbor 2.9.7 2.14.0
com.fasterxml.jackson.datatype jackson-datatype-jdk8 2.9.7 2.14.0
com.fasterxml.jackson.datatype jackson-datatype-jsr310 2.9.7 2.14.0
com.fasterxml.jackson.module jackson-module-afterburner 2.9.7 2.14.0
com.fasterxml.jackson.module jackson-module-jaxb-annotations 2.9.7 2.14.0

2023.0.03

ImprovementLuciadFusion

LCD-12640
The TLspEditController can now handle external changes to the edited object that result in a change in the amount of edit handles generated for those objects. For example when adding or removing points of a polyline.

Bug fixLuciadFusion

LCD-12952
Fixed an issue where the height of some types of 3D Tiles data sets was not correctly computed in 3D views when using a view dependent height provider.

Bug fixLuciadFusion

LCD-12793, LCD-9529, LCD-7035
SLD icon rendering in GXY / Lightspeed now supports the uom property of a symbolizer. This property can be used to draw icons with a world size. When omitted, a pixel size is applied by default.

Upgrade considerationAdvanced Raster Services

LCD-12970
TLcdECWModelDecoder: the libecw-6.1.*.jar libraries were upgraded to a newer build of the ECW SDK to fix a certificate issue on Mac. This prevented the decoder from loading libecw61.dylib, and could trigger a malware warning on the client.

2023.0.02

ImprovementLuciadFusion

LCD-12933
The WFS server did not properly log issues when the data in response to a GetFeature request could not be encoded to the requested format (GML or GeoJSON).

ImprovementAviation Standards

LCD-12842
The DAFIFT decoder TLcdDAFIFTMinimumSectorAltitudeDecoder now supports the decoding of the MSA Type property, which gives information about the type of the terminal procedure of the record. The property can be accessed via TLcdDAFIFTSectorDataProperties#MSA_TYPE.

Bug fixLuciadFusion

LCD-12905
Decoding IMS icons can no longer result in icons having a size of -1.

Bug fixLuciadFusion

LCD-12963
TLcdDurationFormat: rounding could lead to invalid durations such as "1m 60s". This has been fixed.

Bug fixLuciadFusion

LCD-12955
The WFS server could not serve data defined in a topocentric geographical reference.

Bug fixLuciadFusion

LCD-12944
The WCS server's caching capabilities did not work for WCS 1.1.0 GetCoverage requests that defined a desired output resolution instead of an image size.

2023.0.01

ImprovementLuciadFusion

LF-2398
Requests to stopped services now return an HTTP 404 Not Found response, instead of a 503 Service Unavailable response.

ImprovementLuciadFusion

LF-2394
It is now possible to create a new data root without automatically enqueuing the corresponding crawl job to run. To accomplish this, provide the crawlJob.enqueueJob property with value false in the REST API POST /api/data-roots endpoint.

ImprovementLuciadFusion

LCD-12863
TLcdEPSGReferenceParser now additionally supports the following datums, and coordinate references that make use of it:
  • Korean Datum 1985
  • Macao 1920

ImprovementLuciadFusion

LCD-12863
TLcdGeodeticDatum now supports the Molodensky-Badekas 10-parameter transformation. On top of the previous 7 parameters, it is now possible to set 3 additional parameters that define a pivot point. See
  • TLcdGeodeticDatum#setPivotX
  • TLcdGeodeticDatum#setPivotY
  • TLcdGeodeticDatum#setPivotZ

ImprovementLuciadFusion

LCD-12917
The TLcdGeoTIFFModelDecoder now can read single band float data for which a mask image is used to indicate the 'no data' values. The elevation data for which the mask indicates there is no value is mapped onto the value TLcdDTEDTileDecoder.UNKNOWN_ELEVATION. This mapped no data value is exposed in the ALcdImage semantics and as the default value for ILcdRaster.

Bug fixLuciadFusion

LF-2415
Resolved an issue with the build/maven/deploy.xml which cause some artifacts from the ecw-native dependency to be deployed with incorrect classifiers. This caused the Maven sample project to fail.

Bug fixLuciadFusion

LF-2414
Removed an --add-opens parameter from StartFusionPlatformServer.sh and StartFusionPlatformServer.sh which caused the script to fail when running on JDK 8.

Bug fixLuciadFusion

LF-2405
Resolved a race condition during shutdown of LuciadFusion that could cause running jobs to not be restarted automatically when LuciadFusion gets restarted. This race condition was much more likely to occur when access control was enabled.

Bug fixLuciadFusion

LF-2398
Resolved an issue that caused LuciadFusion to continue executing requests to stopped services, after sending an error response.

Bug fixLuciadFusion

LCD-9092
The TLcdGeoTIFFModelEncoder could produce incorrectly located GeoTIFF files. This could happen for references using a custom datum with a prime meridian different from 0. Now an exception is thrown to indicate the encoding does not support it.

Bug fixLuciadFusion

LCD-12920
The TLcdGeoTIFFModelEncoder could produce incorrectly located GeoTIFF files. This could happen for grid references having a rotation value different from zero and for which there is no EPSG code available.

2023.0

New featureLuciadFusion

LuciadFusion now supports role-based access control for data resources. You can use the new LuciadFusion REST API to configure data access rules.

Read the access control in LuciadFusion developer guide for more information.

New featureLuciadFusion

The Spring Boot dependencies of LuciadFusion have been upgraded from version 2.1 to version 2.7. This newer version brings numerous new features and fixes. It's advisable to read through the release notes of every version to know what is new, what has changed and what has been deprecated.

Check out our LuciadFusion troubleshooting guide for a list of major changes caused by the Spring Boot upgrade.

New featureLuciadFusion

It is now possible to configure multiple named styles for WMS and WMTS Services. To accomplish this, new endpoints /api/products/{id}/style-sets and /api/products/{id}/data are now part of the REST API. The endpoint /api/products/{id}/styled-data is now deprecated.

You can find more explanation on how to create named styles for WMS and WMTS services within the LuciadFusion REST API Developer Guide webpage.

New featureMaritime Standards

LuciadLightspeed and LuciadFusion now fully support AML V3 object class and attributes modeling, as well as visualization according to the Portrayal Specification 3.0.0, including the proper scale ranges based on the cell levels.

AML V2 data is also still supported.

This change is automatic for AML V2 and V3 data.

AML v3 example
AML v3 example

ImprovementLuciadFusion

LCD-12439
The make_osgi_bundles script now comes with an upgraded BND library and Felix framework, improving compatibility with Java 11 and higher.

ImprovementLuciadFusion

LF-2371
The length of the database column of the pre-process path has been increased to the maximum allowed size. The pre-process path was previously limited to around 255 characters.

ImprovementLuciadFusion

LCD-12864
Support has been added for an OGC strReplace function in TLcdOGCVendorSpecificFunctions that can replace a pattern in a String property. This function can be used when querying a model (see ILcdModel#query), when creating an OGC Filter or when creating an SLD style.

ImprovementLuciadFusion

LCD-11611
Split packages have been eliminated from all lcd_*.jar files. This improves compatibility with JDK 9 and higher.

ImprovementLuciadFusion

The lcd_3dtiles.jar file has been renamed to lcd_tiled3d.jar, so Java can generate an automatic module for it. The name change also applies to the corresponding maven pom file.

ImprovementLuciadFusion

LCD-11985
The vertical view controllers (TLcdVVAltitudeRangeSliderJPanel, TLcdVVStartEndIndexJSlider, and TLcdVVStartEndIndexJSlider) no longer reset when the vertical view's ILcdVVModel fires a change event. Usually those controllers only need to be reset when the view displays an entirely different profile. You can achieve this by maintaining a 1-to-1 mapping between the domain object and the vertical view model, as shown in the sample class FlightSelectionListener. In addition, TLcdVVTerrainModel has a new constructor making it easier to create a fully initialized terrain profile to achieve that 1-to-1 mapping. The other constructors have been deprecated. If you don't have a 1-to-1 mapping, you can unset and set the vertical view's model (i.e. vview.setVVModel(null); vview.setVVModel(model);) whenever you want to reset the controllers.

ImprovementLuciadFusion

It is now possible to perform comparison between two queryable properties using e.g. lfn.type=ic=${aStringPropName}, when querying data resources. This change applies to the REST API GET api/data/filter endpoint.

ImprovementLuciadFusion

The EPSG database has been updated to the latest version: 10.088.

ImprovementLuciadFusion

LF-2379
Use of deflate compression can now be disabled for OGC 3D Tiles, Panoramics, and HSPC services. See the config/application-fusion.common.yml file on how to disable this. Disabling compression is useful if the servlet container that LuciadFusion is running in already handles compression. For example, LuciadFusion running in a Tomcat container with compression turned on.

ImprovementLuciadFusion

LF-2390
The Product details page of the LuciadFusion Studio web app now also shows the Product id.

ImprovementAdvanced Raster Services

LF-2296
The ECWP service's native library has been updated to ECWP3Java version 16.8.0.3004

ImprovementDefense Symbology

LCD-12827
The lcd_ms2525b.jar has been renamed to lcd_military_symbology.jar, to better reflect its contents. The name change also applies to the corresponding maven pom file. In addition, some resources have been split off into a separate lcd_military_symbology_resources.jar file.

ImprovementMaritime Standards

ELcdS57ProductType now has a convenience method fromModel to retrieve the S-57 product type from an ILcdModel.

ImprovementMaritime Standards

You can now retrieve a cell's level (also known as navigational purpose) TLcdS57ModelDescriptor#getLevel.

Bug fixLuciadFusion

LF-2393
Fixed an issue that caused WFS feature types to change name if the underlying data had changed and the data was re-crawled or refreshed.

Bug fixLuciadFusion

LF-2384
Resolved an issue that caused LuciadFusion to fail to start when the studio thread pool configuration properties (fusion.studio.configuration.jobs.threadPool) were not defined.

Bug fixLuciadFusion

LCD-12923
TLcdCSWDecoder would enforce the same reference system unto all decoded content, which could trigger a TLcdOutOfBoundsException. This is no longer the case.

Bug fixLuciadFusion

LCD-12910
TLcdSVGIcon painted a world-sized icon too large when the icon was smaller than the SVG document size.

Bug fixLuciadFusion

LCD-12909
The SLD XML decoder and encoder implementation did not support decoding and encoding the uom property of a symbolizer. Reading or setting the property through ALcdSLDSymbolizer#getUom and ALcdSLDSymbolizer#setUom is now aligned with the XML representation.

Bug fixLuciadFusion

LCD-12800
The use of an SLD style defining an SVG icon in combination with a dynamic rotation property could result in incorrectly sized icons in GXY / Lightspeed.

Bug fixLuciadFusion

LCD-12896
The Well-Known Binary CIRCULARSTRING type is now correctly read from the database for both 2D and 3D shapes.

Bug fixDatabase Connectors

LCD-12912
TLcdOracleSpatialModelDecoder now uses the dimension of the spatial index to construct the where statement for a BBOX. This solves the problem that an Oracle exception was thrown when querying 3d data when a 2d spatial index is defined.

Upgrade considerationLuciadFusion

The ECWP service of LuciadFusion has been disabled by default to avoid a Studio styling issue on Linux when the customization of the Studio front-end is enabled (= by default in the development profile). To enable ECWP again, you can set the property fusion.ecwp.enabled=true in the config/application-fusion.common.yml file. If you are using Linux, make sure to disable the customization of the Studio front-end in this case by setting the property fusion.studio.webapp.theme.enabled=false.

Upgrade considerationLuciadFusion

The minimum OpenGL version required by ILspView is now 4.2. GPUs or drivers which do not support this version will no longer be able to use the hardware-accelerated Lightspeed view. For more information please contact support.luciad.gsp@hexagon.com.

Upgrade considerationLuciadFusion

LuciadLightspeed no longer supports Oculus devices. For more information please contact support.luciad.gsp@hexagon.com.

Upgrade considerationLuciadFusion

LCD-11985
TLcdAltitudeRangeSliderAdapter has been deprecated. Its functionality is now handled automatically by TLcdVVAltitudeRangeSliderJPanel. You can safely remove it from your code.

Upgrade considerationLuciadFusion

The vmoptions files used by start.jar and the launcher scripts have been simplified and moved to config/vmoptions to avoid split packages. If you want to override the startup parameters of a sample or product, look for a vmoptions file in that directory starting with the relevant package, such as com.luciad.lucy.vmoptions for com.luciad.lucy.TLcyMain.

Upgrade considerationLuciadFusion

The logback version has been upgraded to version 1.2.11 due to the Spring Boot upgrade from version 2.1 to 2.7:
Group ID Artifact ID Old Version New Version
ch.qos.logback logback-classic 1.2.3 1.2.11

Upgrade considerationLuciadFusion

LCD-12446, LCD-12445
The com.luciad.ogc.filter.model package is no longer split between multiple jars. To achieve this, the following API has been moved:
Class or interface Old package New package
ILcdGenericExpression
ILcdOGCCondition
ILcdOGCExpression
ILcdOGCSortBy
com.luciad.ogc.filter.model com.luciad.ogc.filter
ILcdOGCFeatureIDRetriever com.luciad.ogc.filter com.luciad.ogc.filter.evaluator
TLcdOGCFilterCapabilitiesConstants com.luciad.ogc.filter N/A
If you encounter any compile errors due to these changes, simply update the relevant import statement. There should be no need for the TLcdOGCFilterCapabilitiesConstants class. If you require some of its constants, you can define these yourself.

Upgrade considerationLuciadFusion

LCD-12445
The com.luciad.geometry package is no longer split between multiple jars. To achieve this, the following API has been moved:
Class or interface Old package New package
ILcd2DAdvancedBinaryTopology
ILcd2DBinaryTopology
ALcd2DBasicBinaryTopology
ALcd2DBasicBinaryTopologyMultiShape
ELcdGeometryDimension
ELcdGeometryRegion
ILcd2DLineIntersectionTopology
ILcdIntersectionMatrix
ILcdIntersectionMatrixPattern
com.luciad.geometry com.luciad.geometry.topology
TLcdCartesianAdvancedBinaryTopology
TLcdCartesianBasicBinaryTopology
com.luciad.geometry.cartesian com.luciad.geometry.topology.cartesian
ILcd2DEllipsoidalBinaryTopology
TLcdEllipsoidalAdvancedBinaryTopology
TLcdEllipsoidalBasicBinaryTopology
com.luciad.geometry.ellipsoidal com.luciad.geometry.topology.ellipsoidal
TLcdSphericalAdvancedBinaryTopology
TLcdSphericalBasicBinaryTopology
com.luciad.geometry.spherical com.luciad.geometry.topology.spherical
ILcdConstructiveGeometry com.luciad.geometry com.luciad.geometry.constructive
TLcdCartesianConstructiveGeometry com.luciad.geometry.cartesian com.luciad.geometry.constructive.cartesian
TLcdSphericalConstructiveGeometry com.luciad.geometry.spherical com.luciad.geometry.constructive.spherical
TLcdEllipsoidalConstructiveGeometry com.luciad.geometry.ellipsoidal com.luciad.geometry.constructive.ellipsoidal
TLcdEllipsoidalShapePointEnumerationFactory com.luciad.geometry.ellipsoidal N/A
ILcd2DBasicBinaryTopology com.luciad.geometry N/A
If you encounter any compile errors due to these changes, just update the relevant import statement. If you were still using ILcd2DBasicBinaryTopology, you can replace it with the identical ILcd2DBinaryTopology interface. If you still have a need for TLcdEllipsoidalShapePointEnumerationFactory, please reach out to support.luciad.gsp@hexagon.com.

Upgrade considerationLuciadFusion

Security updates have been applied to the following dependencies:
Group ID Artifact ID Old Version New Version
org.apache.commons commons-text 1.6 1.10.0
org.apache.commons commons-configuration2 2.2.4 2.8.0
commons-beanutils commons-beanutils 1.9.3 1.9.4

The following dependencies have been added:
Group ID Artifact ID Version
org.sharegov mjson 1.4.1

Upgrade considerationLuciadFusion

The package com.luciad.format.gml, containing legacy support for GML 2, has been removed. Its functionality has been deprecated for more than a decade, with com.luciad.format.gml2.xml.TLcdGML2ModelDecoder and com.luciad.format.gml2.xml.TLcdGML2ModelEncoder in the com.luciad.format.gml2.xml package as direct replacements.

Upgrade considerationLuciadFusion

The utility class TLcdJDOM2OGCFilter which was deprecated since 2017 has been removed. If you are using this class, you can replace it with the following code: ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); new XMLOutputter().output(element, outputStream); TLcdOGCFilterDecoder filterDecoder = new TLcdOGCFilterDecoder(); filterDecoder.setInputStreamFactory(string -> new ByteArrayInputStream(outputStream.toByteArray())); return (TLcdOGCFilter) filterDecoder.decode("");

Upgrade considerationLuciadFusion

Security updates have been applied to the following dependencies:
Group ID Artifact ID Old Version New Version
com.fasterxml.jackson.core jackson-databind 2.14.0 2.14.2
com.fasterxml.jackson.core jackson-core 2.14.0 2.14.2
com.fasterxml.jackson.core jackson-annotations 2.14.0 2.14.2
org.apache.xmlgraphics batik-xml 1.11 1.16
org.apache.xmlgraphics batik-util 1.11 1.16
org.apache.xmlgraphics batik-transcode 1.11 1.16
org.apache.xmlgraphics batik-swing 1.11 1.16
org.apache.xmlgraphics batik-svggen 1.11 1.16
org.apache.xmlgraphics batik-svg-dom 1.11 1.16
org.apache.xmlgraphics batik-script 1.11 1.16
org.apache.xmlgraphics batik-parser 1.11 1.16
org.apache.xmlgraphics batik-i18n 1.11 1.16
org.apache.xmlgraphics batik-gvt 1.11 1.16
org.apache.xmlgraphics batik-gui-util 1.11 1.16
org.apache.xmlgraphics batik-ext 1.11 1.16
org.apache.xmlgraphics batik-dom 1.11 1.16
org.apache.xmlgraphics batik-css 1.11 1.16
org.apache.xmlgraphics batik-constants 1.11 1.16
org.apache.xmlgraphics batik-codec 1.11 1.16
org.apache.xmlgraphics batik-bridge 1.11 1.16
org.apache.xmlgraphics batik-awt-util 1.11 1.16
org.apache.xmlgraphics batik-anim 1.11 1.16
org.apache.xmlgraphics xmlgraphics-commons 2.3 2.7
org.slf4j slf4j-api 1.7.25 1.7.36
org.postgresql postgresql 42.3.6 42.5.4
com.github.mreutegg laszip4j 0.7 0.9
org.jdom jdom2 2.0.5 2.0.6.1
org.apache.commons commons-text 1.6 1.10
org.apache.commons commons-lang3 3.8.1 3.12
org.apache.commons commons-compress 1.5 1.22

The following dependencies have been removed:
Group ID Artifact ID Version
xalan xalan 2.7.2
xalan serializer 2.7.2
org.jdom jdom 1.1.3
javax.servlet javax.servlet-api 3.1.0

The following dependencies have been added:
Group ID Artifact ID Version
jakarta.servlet jakarta.servlet-api 4.0.4
org.apache.xmlgraphics batik-shared-resources 1.16

Upgrade considerationLuciadFusion

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.1.2.RELEASE 2.7.8
org.springframework.boot spring-boot-starter 2.1.2.RELEASE 2.7.8
org.springframework.boot spring-boot-autoconfigure 2.1.2.RELEASE 2.7.8
org.springframework.boot spring-boot-starter-json 2.1.2.RELEASE 2.7.8
org.springframework.boot spring-boot-starter-logging 2.1.2.RELEASE 2.7.8
org.springframework.boot spring-boot-starter-web 2.1.2.RELEASE 2.7.8
org.springframework spring-aop 5.1.4.RELEASE 5.3.25
org.springframework spring-beans 5.1.4.RELEASE 5.3.25
org.springframework spring-context 5.1.4.RELEASE 5.3.25
org.springframework spring-core 5.1.4.RELEASE 5.3.25
org.springframework spring-expression 5.1.4.RELEASE 5.3.25
org.springframework spring-jdbc 5.1.4.RELEASE 5.3.25
org.springframework spring-tx 5.1.4.RELEASE 5.3.25
org.springframework spring-web 5.1.4.RELEASE 5.3.25
org.springframework spring-webmvc 5.1.4.RELEASE 5.3.25
com.zaxxer HikariCP 3.2.0 4.0.3
org.ow2.asm asm 5.0.4 9.4
com.fasterxml.jackson.datatype jackson-datatype-jdk8 2.9.8 2.14.2
com.fasterxml.jackson.datatype jackson-datatype-jsr310 2.9.8 2.14.2
com.fasterxml.jackson.module jackson-module-parameter-names 2.9.8 2.14.2
org.eclipse.jetty.websocket javax-websocket-client-impl 9.4.3.v20170317 9.4.50.v20221201
org.eclipse.jetty.websocket javax-websocket-server-impl 9.4.3.v20170317 9.4.50.v20221201
org.eclipse.jetty jetty-annotations 9.4.3.v20170317 9.4.50.v20221201
org.eclipse.jetty jetty-client 9.4.3.v20170317 9.4.50.v20221201
org.eclipse.jetty jetty-continuation 9.4.3.v20170317 9.4.50.v20221201
org.eclipse.jetty jetty-http 9.4.3.v20170317 9.4.50.v20221201
org.eclipse.jetty jetty-io 9.4.3.v20170317 9.4.50.v20221201
org.eclipse.jetty jetty-plus 9.4.3.v20170317 9.4.50.v20221201
org.eclipse.jetty jetty-security 9.4.3.v20170317 9.4.50.v20221201
org.eclipse.jetty jetty-server 9.4.3.v20170317 9.4.50.v20221201
org.eclipse.jetty jetty-servlet 9.4.3.v20170317 9.4.50.v20221201
org.eclipse.jetty jetty-servlets 9.4.3.v20170317 9.4.50.v20221201
org.eclipse.jetty jetty-util 9.4.3.v20170317 9.4.50.v20221201
org.eclipse.jetty jetty-util-ajax 9.4.3.v20170317 9.4.50.v20221201
org.eclipse.jetty jetty-webapp 9.4.3.v20170317 9.4.50.v20221201
org.eclipse.jetty jetty-xml 9.4.3.v20170317 9.4.50.v20221201
org.slf4j jul-to-slf4j 1.7.25 1.7.36
org.slf4j slf4j-api 1.7.25 1.7.36
org.apache.logging.log4j log4j-api 2.11.1 2.17.2
org.apache.logging.log4j log4j-to-slf4j 2.11.1 2.17.2
ch.qos.logback logback-classic 1.2.3 1.2.11
ch.qos.logback logback-core 1.2.3 1.2.11
org.yaml snakeyaml 1.23 1.33
org.eclipse.jetty.websocket websocket-api 9.4.3.v20170317 9.4.50.v20221201
org.eclipse.jetty.websocket websocket-client 9.4.3.v20170317 9.4.50.v20221201
org.eclipse.jetty.websocket websocket-common 9.4.3.v20170317 9.4.50.v20221201
org.eclipse.jetty.websocket websocket-server 9.4.3.v20170317 9.4.50.v20221201
org.eclipse.jetty.websocket websocket-servlet 9.4.3.v20170317 9.4.50.v20221201

The following dependencies have been added:
Group ID Artifact ID Version
org.springframework.boot spring-boot-starter-jetty 2.7.8
jakarta.annotation jakarta.annotation-api 1.3.5
jakarta.websocket jakarta.websocket-api 1.1.2
org.apache.tomcat.embed tomcat-embed-el 9.0.71
org.ow2.asm asm-commons 9.4
org.ow2.asm asm-tree 9.4

The following dependencies have been removed:
Group ID Artifact ID Version
org.eclipse.jetty jetty-unixsocket 9.4.3.v20170317
org.eclipse.jetty jetty-schemas 9.4.3.v20170317
org.eclipse.jetty jetty-rewrite 9.4.3.v20170317
org.eclipse.jetty jetty-quickstart 9.4.3.v20170317
org.eclipse.jetty jetty-proxy 9.4.3.v20170317
org.eclipse.jetty jetty-proxy 9.4.3.v20170317
org.eclipse.jetty jetty-nosql 9.4.3.v20170317
org.eclipse.jetty jetty-memcached-sessions 9.4.3.v20170317
org.eclipse.jetty jetty-jndi 9.4.3.v20170317
org.eclipse.jetty jetty-jmx 9.4.3.v20170317
org.eclipse.jetty jetty-jaspi 9.4.3.v20170317
org.eclipse.jetty jetty-jaas 9.4.3.v20170317
org.eclipse.jetty jetty-infinispan 9.4.3.v20170317
org.eclipse.jetty jetty-gcloud-session-manager 9.4.3.v20170317
org.eclipse.jetty jetty-deploy 9.4.3.v20170317
org.eclipse.jetty jetty-alpn-server 9.4.3.v20170317
org.eclipse.jetty jetty-continuation 9.4.3.v20170317
org.eclipse.jetty jetty-continuation 9.4.3.v20170317
org.eclipse.jetty.cdi cdi-core 9.4.3.v20170317
org.eclipse.jetty.cdi cdi-servlet 9.4.3.v20170317
org.eclipse.jetty.cdi cdi-websocket 9.4.3.v20170317
com.fasterxml.jackson.core jackson-core 2.9.8
com.fasterxml.jackson.core jackson-databind 2.9.8
javax.annotation javax.annotation-api 1.3.2
javax.websocket javax.websocket-api 1.0

Upgrade considerationLuciadFusion

The following dependencies have changed due to the Spring Boot upgrade from version 2.1 to 2.7:
Group ID Artifact ID Old Version New Version
org.springframework.boot spring-boot-actuator-autoconfigure 2.1.2.RELEASE 2.7.8
org.springframework.boot spring-boot-actuator 2.1.2.RELEASE 2.7.8
org.springframework.boot spring-boot-autoconfigure 2.1.2.RELEASE 2.7.8
org.springframework.boot spring-boot-configuration-processor 2.1.0.RELEASE 2.7.8
org.springframework.boot spring-boot-starter-actuator 2.1.2.RELEASE 2.7.8
org.springframework.boot spring-boot-starter-freemarker 2.1.2.RELEASE 2.7.8
org.springframework.boot spring-boot-starter-jdbc 2.1.2.RELEASE 2.7.8
org.springframework.boot spring-boot-starter-json 2.1.2.RELEASE 2.7.8
org.springframework.boot spring-boot-starter-logging 2.1.2.RELEASE 2.7.8
org.springframework.boot spring-boot-starter-web 2.1.2.RELEASE 2.7.8
org.springframework.boot spring-boot-starter-websocket 2.1.0.RELEASE 2.7.8
org.springframework.boot spring-boot-starter-validation / 2.7.8
org.springframework.boot spring-boot-starter 2.1.2.RELEASE 2.7.8
org.springframework.boot spring-boot 2.1.2.RELEASE 2.7.8
org.springframework.ldap spring-ldap-core 2.3.4.RELEASE 2.4.1
org.springframework.security spring-security-config 5.1.1.RELEASE 5.8.1
org.springframework.security spring-security-core 5.1.1.RELEASE 5.8.1
org.springframework.security spring-security-ldap 5.1.1.RELEASE 5.8.1
org.springframework.security spring-security-web 5.1.1.RELEASE 5.8.1
org.springframework spring-aop 5.1.4.RELEASE 5.3.25
org.springframework spring-context-support 5.1.4.RELEASE 5.3.25
org.springframework spring-context 5.1.4.RELEASE 5.3.25
org.springframework spring-expression 5.1.4.RELEASE 5.3.25
org.springframework spring-jdbc 5.1.4.RELEASE 5.3.25
org.springframework spring-messaging 5.1.2.RELEASE 5.3.25
org.springframework spring-web 5.1.4.RELEASE 5.3.25
org.springframework spring-webmvc 5.1.4.RELEASE 5.3.25
org.springframework spring-websocket 5.1.2.RELEASE 5.3.25
org.springframework spring-beans 5.1.4.RELEASE 5.3.25
org.springframework spring-core 5.1.4.RELEASE 5.3.25
org.springframework spring-tx 5.1.4.RELEASE 5.3.25
org.springdoc springdoc-openapi-common 1.6.9 1.6.14
org.springdoc springdoc-openapi-security 1.6.9 1.6.14
org.springdoc springdoc-openapi-ui 1.6.9 1.6.14
org.springdoc springdoc-openapi-webmvc-core 1.6.9 1.6.14
io.swagger.core.v3 swagger-annotations 2.2.0 2.2.7
io.swagger.core.v3 swagger-core 2.2.0 2.2.7
io.swagger.core.v3 swagger-models 2.2.0 2.2.7
org.webjars swagger-ui 4.11.1 4.15.5
org.webjars webjars-locator-core 0.50 0.52
org.apache.tomcat.embed tomcat-embed-el / 9.0.71
org.yaml snakeyaml 1.23 1.33
com.zaxxer HikariCP 3.2.0 4.0.3
org.hdrhistogram HdrHistogram 2.1.9 2.1.12
io.github.classgraph classgraph 4.8.147 4.8.149
com.fasterxml classmate 1.4.0 1.5.1
org.freemarker freemarker 2.3.28 2.3.32
org.hibernate.validator hibernate-validator 6.0.14.Final 6.2.5.Final
org.jboss.logging jboss-logging 3.3.2.Final 3.4.1.Final
org.slf4j jul-to-slf4j 1.7.25 1.7.36
org.slf4j jcl-over-slf4j 1.7.25 1.7.36
org.slf4j log4j-over-slf4j 1.7.25 1.7.36
org.apache.logging.log4j log4j-api 2.11.1 2.17.2
org.apache.logging.log4j log4j-to-slf4j 2.11.1 2.17.2
ch.qos.logback logback-classic 1.2.3 1.2.11
ch.qos.logback logback-core 1.2.3 1.2.11
com.fasterxml.jackson.datatype jackson-datatype-jdk8 2.9.8 2.14.2
com.fasterxml.jackson.datatype jackson-datatype-jsr310 2.9.8 2.14.2
com.fasterxml.jackson.module jackson-module-parameter-names 2.9.8 2.14.2
com.fasterxml.jackson.dataformat jackson-dataformat-yaml 2.9.8 2.14.2
io.micrometer micrometer-core 1.1.2 1.9.7

The following dependencies have been added:
Group ID Artifact ID Version
org.springframework.security spring-security-crypto 5.8.1
org.springframework.boot spring-boot-starter-security 2.7.8
jakarta.validation jakarta.validation-api 2.0.2

The following dependencies have been removed:
Group ID Artifact ID Version
com.google.code.gson gson 2.8.5
com.fasterxml.jackson.dataformat jackson-dataformat-cbor 2.9.8
com.fasterxml.jackson.dataformat jackson-dataformat-xml 2.9.8
com.fasterxml.jackson.module jackson-module-afterburner 2.9.8
com.fasterxml.jackson.module jackson-module-jaxb-annotations 2.9.8
javax.annotation javax.annotation-api 1.3.2
org.glassfish.web javax.el 2.2.4
javax.el javax.el-api 3.0.0
org.springframework.plugin spring-plugin-core 1.2.0.RELEASE
org.springframework.plugin spring-plugin-metadata 1.2.0.RELEASE
javax.validation validation-api 2.0.1

LuciadFusion can be used with a jetty embedded servlet container. The jetty sample dependencies are used in this situation. The following sample dependencies related to jetty have changed:
org.ow2.asm asm 5.0.4 9.4
org.eclipse.jetty.websocket javax-websocket-client-impl 9.4.3.v20170317 9.4.50.v20221201
org.eclipse.jetty.websocket javax-websocket-server-impl 9.4.3.v20170317 9.4.50.v20221201
org.eclipse.jetty jetty-annotations 9.4.3.v20170317 9.4.50.v20221201
org.eclipse.jetty jetty-client 9.4.3.v20170317 9.4.50.v20221201
org.eclipse.jetty jetty-continuation 9.4.3.v20170317 9.4.50.v20221201
org.eclipse.jetty jetty-http 9.4.3.v20170317 9.4.50.v20221201
org.eclipse.jetty jetty-io 9.4.3.v20170317 9.4.50.v20221201
org.eclipse.jetty jetty-plus 9.4.3.v20170317 9.4.50.v20221201
org.eclipse.jetty jetty-security 9.4.3.v20170317 9.4.50.v20221201
org.eclipse.jetty jetty-server 9.4.3.v20170317 9.4.50.v20221201
org.eclipse.jetty jetty-servlet 9.4.3.v20170317 9.4.50.v20221201
org.eclipse.jetty jetty-servlets 9.4.3.v20170317 9.4.50.v20221201
org.eclipse.jetty jetty-util 9.4.3.v20170317 9.4.50.v20221201
org.eclipse.jetty jetty-util-ajax 9.4.3.v20170317 9.4.50.v20221201
org.eclipse.jetty jetty-webapp 9.4.3.v20170317 9.4.50.v20221201
org.eclipse.jetty jetty-xml 9.4.3.v20170317 9.4.50.v20221201
org.slf4j slf4j-api 1.7.25 1.7.36
org.eclipse.jetty.websocket websocket-api 9.4.3.v20170317 9.4.50.v20221201
org.eclipse.jetty.websocket websocket-client 9.4.3.v20170317 9.4.50.v20221201
org.eclipse.jetty.websocket websocket-common 9.4.3.v20170317 9.4.50.v20221201
org.eclipse.jetty.websocket websocket-server 9.4.3.v20170317 9.4.50.v20221201
org.eclipse.jetty.websocket websocket-servlet 9.4.3.v20170317 9.4.50.v20221201

The following sample dependencies related to jetty have been added:
Group ID Artifact ID Version
org.springframework.boot spring-boot-starter-jetty 2.7.8
jakarta.annotation jakarta.annotation-api 1.3.5
jakarta.websocket jakarta.websocket-api 1.1.2
org.ow2.asm asm-commons 9.4
org.ow2.asm asm-tree 9.4

The following sample dependencies related to jetty have been removed:
Group ID Artifact ID Version
org.eclipse.jetty jetty-unixsocket 9.4.3.v20170317
org.eclipse.jetty jetty-schemas 9.4.3.v20170317
org.eclipse.jetty jetty-rewrite 9.4.3.v20170317
org.eclipse.jetty jetty-quickstart 9.4.3.v20170317
org.eclipse.jetty jetty-proxy 9.4.3.v20170317
org.eclipse.jetty jetty-proxy 9.4.3.v20170317
org.eclipse.jetty jetty-nosql 9.4.3.v20170317
org.eclipse.jetty jetty-memcached-sessions 9.4.3.v20170317
org.eclipse.jetty jetty-jndi 9.4.3.v20170317
org.eclipse.jetty jetty-jmx 9.4.3.v20170317
org.eclipse.jetty jetty-jaspi 9.4.3.v20170317
org.eclipse.jetty jetty-jaas 9.4.3.v20170317
org.eclipse.jetty jetty-infinispan 9.4.3.v20170317
org.eclipse.jetty jetty-gcloud-session-manager 9.4.3.v20170317
org.eclipse.jetty jetty-deploy 9.4.3.v20170317
org.eclipse.jetty jetty-alpn-server 9.4.3.v20170317
org.eclipse.jetty jetty-continuation 9.4.3.v20170317
org.eclipse.jetty jetty-continuation 9.4.3.v20170317
org.eclipse.jetty.cdi cdi-core 9.4.3.v20170317
org.eclipse.jetty.cdi cdi-servlet 9.4.3.v20170317
org.eclipse.jetty.cdi cdi-websocket 9.4.3.v20170317
javax.websocket javax.websocket-api 1.0

Upgrade considerationLuciadFusion

LCD-12684
The following methods have been removed in favor of #getInputStreamFactory and #setInputStreamFactory:
  • TLcdGeoTIFFModelDecoder#getImageInputStreamFactory
  • TLcdGeoTIFFModelDecoder#setImageInputStreamFactory
  • TLcdTABRasterModelDecoder#getImageInputStreamFactory
  • TLcdTABRasterModelDecoder#setImageInputStreamFactory
  • TLcdTFWRasterModelDecoder#getImageInputStreamFactory
  • TLcdTFWRasterModelDecoder#setImageInputStreamFactory
  • TLcdRasterModelDecoder#getTileInputStreamFactory
  • TLcdRasterModelDecoder#setTileInputStreamFactory
  • TLcdDIMAPModelDecoder#getImageInputStreamFactory
  • TLcdDIMAPModelDecoder#setImageInputStreamFactory
Any usages of these removed input stream factories have been modified to use the above-mentioned sibling methods instead. Please change any calls to these methods to #getInputStreamFactory or #setInputStreamFactory.

Upgrade considerationAdvanced Raster Services

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

Upgrade considerationTerrain Analysis Engine

TLcdVVTerrainProfileModel and TLcdUpdateTerrainModelAction have been deprecated in favor of the more capable TLcdVVTerrainModel. The corresponding vertical view sample has been removed.

Upgrade considerationInfrastructure Standards

Added a dependency on the third party library xatlas for efficient packing of texture islands in a texture map, which is used in the Meshup pipeline.

Upgrade considerationMaritime Standards

LuciadLightspeed and LuciadFusion now apply the proper scale ranges for the levels in the AML cell files that are in a CATALOG.031. Before, AML data had no scale range. Usually, these scale ranges are beneficial to your application, both to reduce loading time and to reduce visual clutter. For details, see TLcdS52DisplaySettings#getScaleDenominators.

If you relied on always displaying all AML information in a catalog without scale range, you will now have to configure that. You can do this by setting [100000000, 100000000, 100000000, 100000000, 100000000, 100000000, 100000000, 100000000, 100000000, 100000000] as scale denominators on TLcdS52DisplaySettings.

2022.1

2022.1.09

ImprovementAviation Standards

LCD-12899
Fixed the decoding of AIXM 5.1 data defined using the FAA SubscriberFile extension. This extension is used by the NASR data distribution available at https://www.faa.gov/air_traffic/flight_info/aeronav/aero_data/NASR_Subscription/.

ImprovementAviation Standards

LCD-12901
Improved the visualization of AIXM 5.1 InformationService features: the features are now painted on terrain with an appropriate AIS icon that indicates the presence of a communication service.

ImprovementDefense Symbology

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

Bug fixLuciadFusion

LCD-12849
TLcdE57ModelDecoder no longer throws an exception when the optional images2D and data3D nodes are missing in the e57root XML element of the data.

Bug fixLuciadFusion

LCD-12810
The SLD well-known mark icon "star" looked like an asterisk instead of a star. This has now been fixed, ensuring visual alignment with the SLD styling capabilities of other products in the Luciad Portfolio.

Bug fixDefense Symbology

LCD-12891

Resolved some issues with the TLcdAPP6AObjectCustomizer and TLcdMS2525bObjectCustomizer where the possible values in the combo boxes were not updated properly after setting a new object on them using the .setObject(Object) method.

Additionally resolved an issue where the customized object's symbol code was not always updated properly when selecting an new value in the customizer's combo boxes.

Bug fixDefense Symbology

The default hierarchy icon line color for Sea Mine symbols is now always Color.BLACK instead of the symbology style's color (TLcdDefaultAPP6AStyle.getColor or TLcdDefaultMS2525bStyle.getColor).

This improves consistency with the other symbols where the symbology style's color is only used to color offset lines, direction of movement arrows and other icon decorations.

2022.1.08

Bug fixDefense Symbology

LCD-12819
Resolved an issue where NVG arrow, corridor and multipoint elements, when configured with a military symbol, were painted with an incorrect width. These elements were painted half as wide as the width specified.

Bug fixDefense Symbology

LCD-12866

Resolved an issue where the first two values of the 'Additional Information' modifier were used instead of the 'Altitude/Depth' modifier in the following APP-6A symbol. Additionally, the first value of the 'Additional Information' is now used in the width label instead of the third value for the same symbol in both APP-6A and APP-6B.

Standard(s) Hierarchy Code Name
APP-6A & APP-6B 2.X.2.1.2.2.3 Standard-Use Army Aircraft Flight Route (SAAFR)

Bug fixDefense Symbology

LCD-12865

Resolved an issue where the value of the 'Additional Information' modifier was used instead of the 'Width' modifier in the labels of following symbols:

Standard(s) Set Code Symbol Code Name
APP-6D & MIL-STD-2525d 25 170100 Air Corridor
APP-6D 25 170101 Air Corridor With Multiple Segments
APP-6D & MIL-STD-2525d 25 170200 Low-Level Transit Route
APP-6D & MIL-STD-2525d 25 170300 Minimum-Risk Route
APP-6D & MIL-STD-2525d 25 170400 Safe Lane
APP-6D & MIL-STD-2525d 25 170500 Standard Use Army Aircraft Flight Route (SAAFR)
APP-6D & MIL-STD-2525d 25 170600 Transit Corridors
APP-6D & MIL-STD-2525d 25 170700 Unmanned Aircraft (UA) Route

Bug fixDefense Symbology

LCD-12855
The missing static/dynamic modifier was added to symbols of the METOC branch of the MIL-STD-2525c symbol hierarchy. The value of this modifier can be accessed by calling the method ILcdMS2525bCoded.getTextModifierValue with the modifier key ILcdMS2525bCoded.sStaticDynamic.

Bug fixDefense Symbology

LCD-12855
Fixed an issue were the possible values of the status modifier of MIL-STD-2525c symbols were not properly configured. All the MIL-STD-2525c symbols were configured with the same set of possible values. The list of possible values of the status modifier are now configured so the symbols from the different branches of the symbol hierarchy (War Fighting, Tactical, Signals Intelligence, Stability Operations and Emergency Management) have the correct set of possible values, as defined in the MIL-STD-2525c standard.

2022.1.07

ImprovementAdvanced Raster Services

LCD-12801
The maximum size of a Luciad Panorama image tile is now configurable in the TLcdLuciadPanoramaModelEncoder constructor. Higher values of this parameter will cause the full-quality output panoramic images to have fewer tiles with bigger file sizes.

Bug fixLuciadFusion

LCD-12848
Added detection and abort mechanism for a potential infinite recursion loop in TLcdGeoJsonModelEncoder. This loop could occur when a cyclic reference exists between model element properties that also implement ILcdDataObject.

Bug fixAviation Standards

LCD-12845
Fixed a geometry edge case in the handling of AIXM 5.1 airspace compositions. Small inaccuracies in a composition could prevent its use in a new airspace composition, causing the warning message "Invalid number of points in LinearRing (found 3 - must be 0 or >= 4)".

2022.1.06

Bug fixLuciadFusion

LF-2365
Fixed an issue that prevented the deployment version of LuciadFusion that uses the embedded jetty servlet container from starting. This was due to multiple versions of the jackson-core, jackson-databind and jackson-annotations being part of the LuciadFusion installation.

Bug fixLuciadFusion

LF-2359
Fixed an issue where the version of the TLfnService in a ALfnServiceEvent was not always up to date. Additionally, a TLfnServiceUpdatedEvent now gets published when a Product gets added to a Service as this causes a change in the Service metadata.

Bug fixLuciadFusion

LCD-12821
When passing a parallel rhumbline, TLcdEllipsoidRhumblineUtil.intersectionGeodesicRhumblineSFCT would sometimes return an intersection point that lies outside of that rhumbline.

Bug fixLuciadFusion

LCD-12798
TLcdGMLTransformer: fixed a problem where GML files produced with LuciadLightspeed 2021.1 or earlier could no longer be decoded, because of a change in global element names.

Bug fixLuciadFusion

LCD-12835
TLcdImageIcon: fixed a regression that caused the paintIcon method taking custom dimensions to ignore these parameters.

Bug fixWeather & Environment Standards

LCD-12822
Resolved an issue where a ConcurrentModificationException could be thrown when disposing of a TLcdNetCDFFilteredModel.

Bug fixAviation Standards

LCD-12841
Enabling time filtering for AIXM 5.1 data containing holding patterns could trigger a NullPointerException.

Bug fixDefense Symbology

LCD-12823
Fixed the width label of corridor type symbols like Air Corridor, Minimum Risk Route (MRR), Standard-Use Army Aircraft Flight Route (SAAFR), Unmanned Aircraft (UA) Route and Low Level Transit Route (LLTR). The label displayed a width value that was half the width of the symbol; the width label now displays the full width of the symbol.

Bug fixDefense Symbology

LCD-12619
TLcdAPP6AGXYPainterProvider/TLcdMS2525bGXYPainterProvider: improved robustness when the same model is asynchronously painted in multiple views.

Bug fixDefense Symbology

LCD-12811
Fixed a typo in the display name of the ILcdAPP6ACoded.sDateTimeGroup/ILcdMS2525bCoded.sDateTimeGroup modifiers. The display name used to be "Data/Time Group". This has been changed to "Date/Time Group".

Upgrade considerationLuciadFusion

LF-2358, LF-2362
The indexing behaviour of metadata for Service resources has been changed. Changes to Service metadata caused by adding Products to a service were only committed to the Lucene index periodically, by a background job. Currently, all changes to Service metadata will be committed to the Lucene index as soon as the metadata gets updated, the background job has been removed. This change required some changes to the database.

Upgrade considerationLuciadFusion

LF-2368
The following jackson dependencies have been upgraded:
Group ID Artifact ID Old Version New Version
com.fasterxml.jackson.dataformat jackson-dataformat-xml 2.9.8 2.14.0
com.fasterxml.jackson.dataformat jackson-dataformat-cbor 2.9.8 2.14.0
com.fasterxml.jackson.datatype jackson-datatype-jdk8 2.9.8 2.14.0
com.fasterxml.jackson.datatype jackson-datatype-jsr310 2.9.8 2.14.0
com.fasterxml.jackson.module jackson-module-afterburner 2.9.8 2.14.0
com.fasterxml.jackson.module jackson-module-jaxb-annotations 2.9.8 2.14.0

Upgrade considerationLuciadFusion

LF-2368
The following OGC server sample dependencies have been upgraded:
Group ID Artifact ID Old Version New Version
com.fasterxml.jackson.core jackson-core 2.9.8 2.14.0
com.fasterxml.jackson.core jackson-databind 2.9.8 2.14.0
com.fasterxml.jackson.datatype jackson-datatype-jdk8 2.9.8 2.14.0
com.fasterxml.jackson.datatype jackson-datatype-jsr310 2.9.8 2.14.0
com.fasterxml.jackson.module jackson-module-parameter-names 2.9.8 2.14.0

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
TLspXYGridLayerBuilder: Fixed a crash when building a grid 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.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 now supports LIDAR data containing 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 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.

2022.0

2022.0.16

ImprovementLuciadFusion

LCD-12643
TLcdEPSGReferenceParser now supports references based on the IG05/12 Intermediate datum:
  • EPSG:6988
  • EPSG:6989
  • EPSG:6990
  • EPSG:6991

ImprovementLuciadFusion

The builder of TLcdSLDGraphic has a new method anchorPoint to set the anchor point of the graphic.

ImprovementAviation Standards

LCD-12656
Two new methods have been added to com.luciad.ais.model.procedure.ILcdProcedureLeg:
  • getOriginalAltitudeUpper
  • getOriginalAltitudeLower
These methods return the upper and lower altitude with the same value and unit of measure as stored in the source file.

ImprovementAviation Standards

LCD-12661
The AIXM 5.1 decoder now also supports resolving feature links that use the prefix "urn:uuid." instead of the common "urn:uuid:" prefix.

ImprovementInfrastructure Standards

LCD-12682
TLcdIFCModelDecoder now supports the IFC4 IfcPolygonalFaceSet element.

Bug fixLuciadFusion

LCD-12694
TLspLabelPainter: fixed a memory leak that could happen when removing objects from a model and firing a style event in the styler (ALspStyler#fireStyleChangeEvent) at the same time.

Bug fixLuciadFusion

LCD-12681
The 2020.1 release caused unexpected shifting of layer content when the deprecated ILcdGXYView#setPaintInBackground functionality was active. This has been resolved.

Bug fixLuciadFusion

LF-2306
Fixed an issue with the title of the 'Upload window' after data has been uploaded in the LuciadFusion Studio web app. The title will no longer contain the word 'Upload' twice.

Bug fixLuciadFusion

LCD-12691
Fixed an issue that in some scenarios could cause exceptions to be thrown when painting images with very large resolutions.

Bug fixLuciadFusion

LCD-12679
The WMS server now generates WMS capabilities responses using the official XML schemas for WMS and the Styled Layer Descriptor (SLD) extension.

Bug fixAviation Standards

LCD-12639
The ARINC layer builder TLspARINCLayerBuilder defines a list of ARINC-specific SLD files in location TLspARINCLayerBuilder#SYMBOLOGY_ENCODING_FILES_LOCATION. The default style for runways Runway.sld did not define the fill style correctly and has been fixed.

Bug fixAviation Standards

LCD-12662
The AIXM 5.1 decoder did not support holding pattern locations defined by a link to another AIXM 5.1 feature.

Bug fixDefense Standards

LCD-12685
TLcdNITFModelDecoder#decode now throws an IOException instead of an OutOfMemoryError when parsing a corrupt NITF tagged record extension.

Bug fixDefense Symbology

LCD-12683
TLcdGARSFormat now also parses GARS coordinate strings with a cell column consisting of fewer than 3 digits.

2022.0.15

ImprovementLuciadFusion

LCD-12655
A WMS GeoJSON GetFeatureInfo response could not be generated if the geometry of the included feature(s) was too complex for GeoJSON. To improve this, the response now uses the bounding box of those geometries, encoded as a GeoJSON-compatible polygon.

ImprovementLuciadFusion

LCD-12670
New custom OGC functions have been introduced which operate on dates: see TLcdOGCVendorSpecificFunctions.DATE_FORMAT_FUNCTION_NAME and TLcdOGCVendorSpecificFunctions.DATE_PARSE_FUNCTION_NAME.

ImprovementLuciadFusion

LCD-12669
The OGC SE function FormatDate now also supports properties of type String, java.util.Date and java.util.GregorianCalendar.

ImprovementInfrastructure Standards

LCD-12382
TLcdIFCModelDecoder now supports the IFC4 IfcIndexedPolyCurve element.

ImprovementInfrastructure Standards

LCD-12633
Fixed a bug where conversion of small objects from a CAD input dataset to OGC 3D Tiles could lead to an incorrect mesh.

Bug fixLuciadFusion

LCD-12665
The WFS server did not support the DESC SortBy parameter in WFS 2.0 GetFeature HTTP GET requests.

Bug fixAdvanced Raster Services

LCD-12454
Fixed a bug that caused inaccurate results when calculating Luciad Panorama images from a Pegasus dataset decoded with TLcdPegasusModelDecoder.

Bug fixDatabase Connectors

LCD-12652
Fixed an issue that prevented the TLcdMSSQLModelDecoder from determining the geometry type if a schema was used in the table name. This also fixes the issue of not being able to load any data when a schema was used in the table name.

2022.0.14

Bug fixLuciadFusion

LCD-12647
A change in the default XML element name suffix used by WFS GetFeature responses since version 2022.0 could lead to feature type identification issues when using WFS transactions. This has been fixed.

Bug fixLuciadFusion

LF-2303
Fixed an incorrectly formatted table in the article "Pre-processing raster data using the tiling engine".

Bug fixInfrastructure Standards

LF-2285
TLcd3DTilesProcessorBuilder: Fixed an issue that could cause very high levels of subdivision with certain referenced GLB datasets.

2022.0.13

ImprovementLuciadFusion

LCD-11239
The accuracy of the TLcdCoverageModelDecoder#canDecodeSource methods has been improved to only accept LuciadFusion coverage XML sources.

Bug fixLuciadFusion

LCD-12618
The Lightspeed map scale configuration improvements introduced in 2022.0 caused that Lightspeed layers styled with SLD were not always correctly refreshed at different scales.

Bug fixLuciadFusion

LCD-12598
When setting the quality setting of TLspOnPathLabelingAlgorithm (and other labeling algorithms) to 100%, it could still happen that the algorithm didn't try to place all labels.

Bug fixLuciadFusion

LCD-12598
TLspOnPathLabelingAlgorithm could become very slow for objects with many labels.

Bug fixLuciadFusion

LCD-12542
When using a property name filter in a WFS GetFeature request, it is no longer needed to include the unique identifier property, if defined for the requested data; this is a property annotated with a TLcdPrimaryKeyAnnotation. This fix makes sure that the response contains a valid unique identifier for each feature, regardless of any WFS property name filter.

Bug fixLuciadFusion

LCD-12609
The WMS client proxy did not filter out WMS layers from the request when they declare a dimension (range) and the client dimension value was out of range for the WMS layer. In such case the WMS server responds with an invalid sample dimension value. This was specifically problematic when requesting multiple layers having the same dimension but with different non-overlapping ranges.

Bug fixLuciadFusion

LCD-12608
When making a WMS request using a single dimension value for a layer which declares to have a range with resolution 0, the server would incorrectly return an error response with invalid sample dimension value.

Bug fixLuciadFusion

LCD-12558
Fixed an issue that would cause OBJs containing faces without texture coordinates to not show textures at all.

Bug fixLuciadFusion

LCD-12624
In a Lightspeed view, labels that are anchored to an other label using a different TLspPaintRepresentation were sometimes not updated correctly when the domain object changes.

Bug fixAdvanced Raster Services

LCD-12591
TLcdGeospatialPDFModelDecoder#decode will now correctly parse UTF-16 Little Endian encoded metadata.

Bug fixAviation Standards

LCD-12611
The ARINC handler TLcdARINCMinimumSectorAltitudeHandler did not correctly support ARINC 424 version 15, which uses a different Minimum Sector Altitude data structure than more recent versions.

Bug fixDefense Symbology

LCD-12598
Military graphics with a lot of labels didn't always have all their labels placed.

Bug fixDefense Symbology

LCD-12615
Fixed a NullPointerException that could occur when painting symbols with a large number of points when strict segmentation is disabled (see TLcdDefaultAPP6AStyle.setStrictSegmentationEnabled(boolean) and TLcdDefaultMS2525bStyle.setStrictSegmentationEnabled(boolean)) and the corner smoothness is set to 0.0 (see TLcdDefaultAPP6AStyle.setCornerSmoothness(double) and TLcdDefaultMS2525bStyle.setCornerSmoothness(double)).

Upgrade considerationLuciadFusion

LF-2299
The jackson-core, jackson-databind and jackson-annotations libraries have been updated to version 2.14.0. The previous version of jackson-databind contained a security vulnerability: CVE-2021-20190.

2022.0.12

ImprovementDefense Symbology

LCD-12586

It is now possible to enable/disable strict segmentation of tactical graphics. Disabling strict segmentation will limit the amount of times information is repeated on a symbol. Strictly speaking, the military standards defines that some symbols need to repeat all information for each segment of 2 consecutive anchor points. This is not very useful in realistic situations.

For example, if you create a "Main Supply Route" that matches an actual route in the real world. It could be constructed out of many thousands of anchor points, forming very small segments. Having to repeat the information thousands of times is not desired as labels will overlap with each other and can cause performance issues when zooming out far enough where you are able to see the whole symbol.

This strict segmentation can be enabled/disabled with the following methods:

Bug fixLuciadFusion

LCD-12604
Fixed an issue where the Bill Of Materials (BOM) POM file used in Maven contained incorrect groupIds for Luciad dependencies.

Bug fixLuciadFusion

LCD-12601
When using the TLspPopupMenuSelectionCandidateHandler and clicking on a menu item, the corresponding object will no longer be deselected and reselected multiple times. If it was already selected it will just keep its selection state.

Bug fixLuciadFusion

LCD-12606
The OGC Web Client HTTP(S) connection class TLcdOWSHttpTransport no longer throws an exception when the server returns a valid but empty response.

Bug fixLuciadFusion

LCD-12597
The OGC Web Client HTTP(S) connection class TLcdOWSHttpTransport did not support services that redirect from HTTPS to HTTP or vice versa in combination with HTTP(S) Basic Authentication.

Bug fixDatabase Connectors

LCD-12596
Fixed an issue with the TLcdPostGISModelEncoder that caused the following warning to appear in the database log when exporting: WARNING: OGC WKB expected, EWKB provided - use GeometryFromEWKB() for this.

Bug fixDefense Symbology

LCD-12603
Fixed an issue where the zOrder of ALspStyles submitted to a TLspAPP6ASymbolStyler or TLspMS2525bSymbolStyler got ignored for tactical graphics symbols.

Bug fixDefense Symbology

LCD-12593
Resolved a performance issue in Lightspeed views that occurred when painting tactical graphics with many labels. Previously a new ILspLabelingAlgorithm was created each time a label was placed. We now reuse the ILspLabelingAlgorithm where feasible.

Bug fixDefense Symbology

LCD-12502
Fixed an issue where the NVG fill-pattern "DiagonalUpwardLine" was misspelled as "DiagonalUpLine".

Bug fixDefense Symbology

LCD-12501
Resolved an issue where NVG files containing empty text elements would cause a NullPointerException in GXY views.

2022.0.11

ImprovementLuciadFusion

LF-1541
Uploading a metadata file for a data item resulted in an error if the uploaded metadata was incomplete and didn't contain all the required metadata. This is now fixed by merging the uploaded metadata with the TLcdModelMetadata decoded from the data itself.

ImprovementInfrastructure Standards

LCD-12564
Improved conversion of large circular and elliptical objects from a CAD input dataset to OGC 3D Tiles, leading to smoother curves at the highest level of detail.

Bug fixLuciadFusion

LCD-12566
TLspOnPathLabelingAlgorithm didn't always clean up its terrain listeners correctly, due to a memory leak. When using a lot of different algorithm instances, this could have a noticeable effect on performance, even after removing the layer using these algorithms.

Bug fixLuciadFusion

LCD-12575
Fixed an issue where the relaxngDatatype library was downloaded twice and therefore found twice in the classpath in Maven-based projects built using the product POM files.

Bug fixLuciadFusion

LCD-12588
samples.common.dimensionalfilter.model.FilterProvider and TLcyDimensionalFilterAddOn now correctly interpolate non-double Number types. Previously, interpolation could lead to a ClassCastException.

Bug fixLuciadFusion

LCD-12580
TLcdGXYShapePainter now correctly edits polygons that implement ILcd3DEditablePolygon.

Bug fixLuciadFusion

LCD-12573
The TLcdDTEDDirectoryModelDecoder would attempt to use incorrect filenames in specific cases. This happened for DTED directory data sets where the bounding box extent would cross the 180 meridian. As example for a data extent with a location of (172.0, -44.0) and a width of 21.0 and height 116.0.

Bug fixAviation Standards

LF-2290, LCD-12201, LCD-10311
The TLcdDAFIFModelDecoder now returns data series when decoding model metadata.

Bug fixMaritime Standards

LCD-12560

Fixed an erroneous warning about missing cell update files in case of cell re-issues.

This was just a warning, the actual updates were applied correctly.

Note that all available update files are attempted to be applied, regardless of missing intermediate updates.

2022.0.10

ImprovementAviation Standards

LCD-12524
A new ARINC handler TLcdARINCMinimumSectorAltitudeHandler has been added to support the decoding of Minimum Sector Altitude objects. These objects define the lowest altitudes that may be used safely in the presence of terrain and obstacles. Decoded objects are of the type ILcdMinimumSectorAltitude, which can contain one or more ILcdSector objects that define the minimum altitude for an area represented by an arc band. The data types of these objects are respectively TLcdARINCDataTypes#MinimumSectorAltitude and TLcdARINCDataTypes#Sector.

ImprovementDefense Symbology

LCD-12549

It is now possible to configure the icon type of the "Antitank Obstacles, Tetrahedrons, Dragon’s Teeth and Other Similar Obstacles" symbols in APP-6A and APP-6B. These symbols can have different icons depending on their type: "Fixed And Prefabricated", "Movable" or "Movable And Prefabricated". Unfortunately the APP-6A and APP-6B specifications do not indicate how this obstacle type should be encoded in the symbol.

The approach taken here is similar to other products: the obstacle type is encoded in the "Type Of Equipment" text modifier of the symbol. The value should either be one of the following values (casing is not important):

Obstacle Type Possible values
Fixed And Prefabricated "Fixed And Prefabricated", "F", "01"
Movable "Movable", "M", "02"
Movable And Prefabricated "Movable And Prefabricate"1, "P", "03"
1There is no "d" at the end "Movable And Prefabricate" because the max length of the "Type Of Equipment" text modifier is 24.

ImprovementInfrastructure Standards

LCD-12555
We now support IFC files larger than 1.5GB.

Bug fixLuciadFusion

LCD-12563
Fixed an issue where the Bill Of Materials (BOM) POM file contained incorrect groupId and/or artifactId for some dependencies.

Bug fixLuciadFusion

LCD-12561
When a rotated grid reference is formatted as WKT and parsed again, it's possible that the rotation changes slightly due to rounding errors. The transformation classes now take this into account, and consider the rotation as equal in that case.

Bug fixReal-time Engine

LCD-12541
TLspRadarVideoLayerBuilder: the afterglow duration set on TLspRadarVideoStyle wasn't applied correctly when the intensity was not set to 1, blips would disappear to fast.

Bug fixAviation Standards

LF-2289
The TLcdDAFIFModelDecoder#canDecodeSource method allowed transaction files (files in T_TRANS directory) even though these files are not supported yet. To prevent issues when decoding these files, TLcdDAFIFModelDecoder#canDecodeSource now returns false for transaction files.

2022.0.09

ImprovementDatabase Connectors

LCD-12538
The PostGIS decoder will now decode the following M-dimensional geometries to ILcdShape objects that provide access to the M coordinate:

Bug fixLuciadFusion

LCD-12550
Fixed potential ConcurrentModificationException when trying to take a read lock on a TLcdModelList, while a different thread is adding or removing models to this list, even when that thread correctly took a write lock.

Bug fixLuciadFusion

LCD-12527
In a Lightspeed view, labels that are anchored to an other label were sometimes not displayed.

2022.0.08

ImprovementLuciadFusion

It is now possible to use custom metadata files by registering ILcdMetadataDecoder implementations using the @LcdService annotation.

Bug fixLuciadFusion

LCD-12540
Fixed an issue in the Maven POM files which caused that the native libraries of the LWJGL library could not be resolved.

Bug fixLuciadFusion

LCD-12533
Fixed an issue where the Bill Of Materials (BOM) POM file was ignored during the dependency resolution of the sample maven project.

Bug fixLuciadFusion

LF-2282
When crawling data files where the discoverDataSources method of the corresponding ILcdModelDecoder returns more than one ILcdDataSource, a Data entry is created for every ILcdDataSource. However, if a ISO19103 metadata file existed next to the data file, only an entry for the first ILcdDataSource was created. This has been fixed.

Bug fixLuciadFusion

LCD-12534
Fixed an issue in decoding of GLTF data related using translation-rotation-scale parameters instead of a transformation matrix. Affected data would have objects with a bad scale, which has now been corrected. This affects the 3D Tiles format, as that is based on GLTF internally.

Bug fixLuciadFusion

LF-2272
Fixed an issue that could leave the Lucene index lock in a bad state when shutting down LuciadFusion.

Bug fixInfrastructure Standards

LCD-12530
TLcd3DTilesProcessorBuilder: Fixed a potential StackOverflowError when processing modeled 3D data, with very long, thin triangles.

Bug fixInfrastructure Standards

LCD-12518
TLcd3DTilesProcessorBuilder: Fixed a NullPointerException in some edge cases when converting a GLB file to 3D Tiles with a mix of repeating textures and base colors.

2022.0.07

ImprovementLuciadFusion

LCD-12521
A new TLcdEllipsoidUtil#computeBufferContour2D method was added with an additional parameter to control the amount of points that is used for caps and joins. This can for example be used to simplify buffer contours and improve rendering performance when you show a large amount of buffers on the view.

ImprovementInfrastructure Standards

LCD-12506, LCD-12525, LCD-12535
Fixed several bugs where converting specific cylinder objects from a CAD input dataset to OGC 3D Tiles could lead to an incorrect mesh.

Bug fixLuciadFusion

LCD-12482
TLcdLASModelDecoder 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.

2022.0.06

ImprovementLuciadFusion

LCD-12488, LCD-12487
A Bill Of Materials (BOM) POM file is now provided with the Maven POM files in a release (build/maven/pom).

ImprovementLuciadFusion

LCD-12511
The WFS server could return a service exception report for a valid WFS 2.0 GetFeature request that included an OGC Filter combining an IsLike condition with other property-based conditions.

ImprovementAviation Standards

LCD-12500
The AIXM 5.1 features RunwayCentrelinePoint and RunwayBlastPad were not painted on terrain, causing the features to disappear on a 3D view in case terrain data was loaded.

Bug fixLuciadFusion

LCD-12508

Due to a regression triggered by 2022.0 enhancement LF-2159, WMS GetMap requests with a non-null STYLES parameter but without an SLD could no longer be processed, resulting in a service exception report.

Bug fixLuciadFusion

LCD-12504
TLcdOBJModelDecoder: fixed regression in decoding speed that was introduced in 2022.0.

Bug fixLuciadFusion

LCD-12451
Fixed an issue in the Maven deployment script (build/maven/deploy.xml), where it would consider some thirdparty libraries that aren't available on the central Maven repository as public.

Bug fixLuciadFusion

LF-2275
Fixed an issue that prevented clearing the keywords and abstract text of a product or service.

Bug fixLuciadFusion

LCD-11627
An image outline style defined in an SLD raster symbolizer was not visualized in a Lightspeed view.

Bug fixLuciadFusion

LCD-12498
The SLD Lightspeed implementation now supports offset lines having a stroke-width smaller than 1.

Bug fixLuciadFusion

LF-2271
Fixed an issue that could cause a crawl job to hang when requesting information about the crawl jobs through the REST API or web application.

Bug fixReal-time Engine

LCD-12510
When a Lightspeed view is configured on a TLcdSimulator, the simulator now uses that view's ILspView#invokeLater for updating the simulator model. Previously, it would always schedule model changes on the AWT Thread, which was not compatible with TLspFXView.

2022.0.04

ImprovementLuciadFusion

LF-2270

A new property wms.additionalParametersForViewPoolCacheKey has been added to fusion.common.yml to specify additional WMS request parameters that need to be taken into account for the view pool cache. This applies when you plug in a custom WMS layer factory that changes the visualization based on additional request parameters beyond the standardized WMS parameters.

ImprovementAviation Standards

LCD-12489
Upgraded the included Digital NOTAM Event XML Schema to support AIXM 5.1.1.

ImprovementDefense Symbology

LCD-12452
The decluttering of text modifier labels of military icon symbols is now enabled by default in Lightspeed views, bringing it in line with the default functionality of GXY views. It is now possible to configure the declutter group of military icon symbol labels by submitting a group along with a TLspAPP6ASymbolStyle/TLspMS2525bSymbolStyle in your label styler implementation.

ImprovementInfrastructure Standards

LCD-12486
Improved performance for TLcd3DTilesProcessorBuilder for reality capture meshes.

Bug fixLuciadFusion

LF-2269
Fixed an issue that resulted in a liquibase migration failure on startup when using LuciadFusion with an Oracle database.

Bug fixLuciadFusion

LF-2266
The thread that reloads theme changes is now cleaned up correctly when shutting down LuciadFusion.

Bug fixAdvanced Raster Services

LCD-12481
TLcdGeospatialPDFModelDecoder#decode will now correctly parse UTF-16 encoded metadata.

Bug fixDefense Symbology

LCD-12464
Encirclement and Strong Point symbols are now painted with a dashed stroke when set to the Planned/Anticipated state.

Bug fixInfrastructure Standards

LCD-12469
Fixed an issue where face classification in a boolean operation could fail.

2022.0.03

ImprovementLuciadFusion

LF-2254
It is now possible to sort results by bounding box when performing a CSW GetRecords request. Sorting by bounding box will perform the sort based on the area of the bounding box. That is, bounding boxes with smaller areas will be sorted before bounding boxes with larger areas, when using the ascending sort order.

ImprovementRadar Connectors

LCD-12240
TLcdASTERIXCategory48: now supports Asterix category 48 revision 1.21. It incorporates cumulative changes since Asterix category 48 revision 1.15. As a result TLcdASTERIXLiveModelDecoder and TLcdASTERIXModelDecoder can now decode Asterix datasets in compliance with Asterix category 48 revision 1.21 and earlier revisions.

Bug fixLuciadFusion

LF-2262
A regression introduced in version 2022.0 caused that a custom ILcdWMSGXYLayerFactory was no longer picked up by LuciadFusion's WM(T)S services to render products.

Bug fixLuciadFusion

LF-2261
Fixed an issue that prevented the REST API console from being loaded or caused the wrong character encoding to be used when LuciadFusion was deployed in a Tomcat servlet container.

2022.0.02

ImprovementLuciadFusion

LCD-12457
Improved the detection of Leica Pegasus panoramic images when reading a E57 datasets. This fixes the issue where panoramic images were rotated 90° after conversion into the Luciad Panorama Format.

ImprovementLuciadFusion

LCD-12459
Fixed issue in TLspKML22LayerBuilder where 3D models would be incorrectly rotated on their heading property.

ImprovementLuciadFusion

LCD-12286
The TLcdCoverageModelDecoder method discoverDataSources now returns a list with a single data source when the source is a coverage XML file on the local file system.

Bug fixLuciadFusion

LCD-12237
ALcdTransformingModel: when applying a new TLcdDimensionFilter the clusters wouldn't always update accordingly.

Bug fixInfrastructure Standards

LCD-12468
Fixed an issue where IFCTrimmedCurves with senseAgreement false could lead to self-intersecting contours.

Bug fixInfrastructure Standards

LCD-12412
Fixed an issue where I-profile contours were not nicely closed.

Bug fixInfrastructure Standards

LCD-12455
Several issues were fixed:
  • A single invalid object (NaN bounds) will no longer make binz-conversion fail.
  • Sweeps no longer have inverted normals when the sweep contour is closed.
  • Sweeps no longer have a dark line at the closing point of the sweep contour.
  • Planes no longer fail during tesselation when the cause was a faulty normal.

2022.0.01

ImprovementLuciadFusion

The EPSG database was updated to the latest version: 10.072.

ImprovementLuciadFusion

LCD-12266
Added the possibility to define the precision of joins and caps for ILcdGeoBuffers. To change it, you can change the discretization parameters in the TLspShapeDiscretizationParameters and extend the TLspShapeDiscretizer to fit your needs.

ImprovementLuciadFusion

LCD-12261
The SLD GXY implementation now supports the optional PerpendicularOffset property on the LineSymbolizer and PolygonSymbolizer symbolizers. To help implement this improvement, TLcdSLDSymbolizerPainterFactory now overloads createStrokePainterProvider with a variant that takes a TLcdSLDContext. The new method deprecates the previous variant.

ImprovementLuciadFusion

LCD-12429
The TLcdModelMetadata.Builder.resourceMetadata method will now try to extract dimensional information from the given ILcdResourceMetadata. It will specifically extract the temporal and vertical axis information, if it is available.

ImprovementLuciadFusion

LCD-12342
Improved the default rendering (using TLcdServiceLoader) for GML tree nodes in an ILcdGXYView.

ImprovementLuciadFusion

LCD-12406
The artifact name of the el-api dependency was changed to javax.el-api, to follow the artifact naming convention used in public repositories since version 2.2.1.

ImprovementInfrastructure Standards

LCD-12375
The TLcdIFCModelDecoder is now reporting concrete progress to its registered ILcdStatusListeners.

Bug fixLuciadFusion

TLcdModelReferenceEncoder and TLcdModelReferenceDecoder didn't take into account geoids with different horizontal transformation parameters.

Bug fixLuciadFusion

EPSG:7404 could be decoded by TLcdEPSGReferenceParser, even though it was not correctly supported. Trying to decode EPSG:7404 now throws a ParseException as expected.

Bug fixLuciadFusion

LCD-12228, LCD-7715
Fixed an issue with the POM files provided with the release, where the versions of dependencies in third party POM files were incorrect. The versions used where the ones that were actually used in the release instead of the versions the thirdparty libraries depended on.

Bug fixLuciadFusion

Updated the versions of Proguard and the exec-maven-plugin used in the Maven documentation articles. These versions enable support for JDK 17.

Bug fixLuciadFusion

LCD-12369
Updated the version of the exec-maven-plugin to 3.1.0 in the sample Maven project. This version enabled support for JDK 17 on Windows.

Bug fixLuciadFusion

LCD-12347
BlackLimeLookAndFeel: fixed an issue when using Java 17, resulting in incorrect text colors in a JXTreeTable.

Bug fixLuciadFusion

LCD-12453
TLcdModelReferenceDecoder could throw an IllegalArgumentException instead of an IOException.

Bug fixLuciadFusion

LCD-12408
When performing a WFS GetFeature request with property name filtering, the GeoJSON output still contained all property names, where the filtered properties had a null value. This has been fixed: the filtered properties are no longer present in the json response.

Bug fixLuciadFusion

LCD-12434
Using TLcdWKTReferenceParser with certain compound references could modify the references that are returned by TLcdGeoidGeodeticDatumFactory.

Bug fixLuciadFusion

LF-2253
Fixed an issue where the temporalExtends were stripped from the ISO metadata file when a ISO metadata file was found during crawling or when it was uploaded.

Bug fixLuciadFusion

LCD-12234
TLspIconStyle: when the application was switched to another screen with different DPI, an endless repaint loop could occur when icons were made invisible.

Bug fixLuciadFusion

LCD-12433
The GeoTIFF decoder includes fixes for creating references with a vertical datum when defined within the GeoTIFF tags. In some cases the vertical datum was not applied to the reference.
Note that a vertical datum is only applied when the GeoTIFF decoder is configured with com.luciad.format.raster.TLcdGeoTIFFModelDecoder.setSupportGeoidDatums.

Bug fixLuciadFusion

LCD-12447
The GeoTIFF decoder now also applies the GDAL_NODATA tag when using the legacy ILcdRaster API. The no data tag was already used when working with the imaging API.

Bug fixInfrastructure Standards

LCD-12371
Fixed a bug where the optional presentation information of the material was not processed while decoding the IFC Geometry Model.

Bug fixInfrastructure Standards

LCD-12407
TLcd3DTilesProcessorBuilder: Now uses absolute file paths for caching textures. This fixes an issue that in some rare cases, textures would be cached twice with a different key.

Bug fixInfrastructure Standards

LCD-12356
TLcd3DTilesProcessorBuilder: Fixed an issue that would bad UV coordinates to be generated in trimmed tiles. The effects of this bug were blurriness in some higher level tiles, and a inflated output data size. With this fix, output datasets for reality captures should be smaller and the simplified levels should be slightly sharper.

Upgrade considerationLuciadFusion

The TLcdGeoJsonModelEncoder will now detect a primary key that has been declared on a supertype of a TLcdDataType. The primary key property is used as id value of the GeoJson feature, and is omitted from the properties list.

      {
        "type" : "Feature",
        "id" : "0001",
        "geometry" : { ... },
        "properties" : {
          "nonPrimaryKeyProperty" : "someValue",
          ...
        }
      }
    

Upgrade considerationInfrastructure Standards

Due to changes in how the GeoJson encoder handles primary keys of objects, the GeoJson output of the BinzConverter will now have the FeatureID encoded as the id member of the features, instead of having it as a property.


      {
        "type" : "Feature",
        "id" : 0,
        "geometry" : { ... },
        "properties" : { ... }
      }
    

When reading GeoJson files from Binz datasets, you can use this snippet to get the primary key property for both new and old GeoJson files:


      ILcdModel model = new TLcdGeoJsonModelDecoder().decode("path\\to\\features.geojson");
      TLcdDataType dt = ((ILcdDataObject) model.elements().nextElement()).getDataType(); // assuming the model has at least one element
      TLcdPrimaryKeyAnnotation annotation = dt.getAnnotation(TLcdPrimaryKeyAnnotation.class);
      TLcdDataProperty property = annotation != null ? annotation.getProperty() : dt.getProperty("FeatureID");
    

2022.0

New featureLuciadFusion

The TLfnPointCloudPreprocessor now supports Draco compression. You can use this new functionality through the API: builder.pointCloudCompression(ELcdOGC3DTilesMeshCompressionType.DRACO). It is also available in LuciadFusion Studio when you create an OGC3DTiles service from point cloud data, and in the PointCloudPreprocessorTool.

The samples.fusion.pointcloud.PointCloudPreprocessorTool also supports Draco compression. It can be activated through a "--compression=draco" program argument.

New featureInfrastructure Standards

Added support for the IFC data format. The IFC format is an open international standard for Building Information Model (BIM) data covering entities such as buildings or facilities.

For more details, see the IFC entry in the Data Formats documentation section

LuciadRIA showing a sample IFC file
LuciadRIA showing a sample IFC file

ImprovementLuciadFusion

When creating a WFS service for a product consisting of multiple data sources, the corresponding WFS feature types now each have as title a combination of the product title and the data source title. Before, only the product title was used, which made it difficult to differentiate between the WFS feature types in client applications.

ImprovementLuciadFusion

LCD-2839, LCD-8405
ILcdDataObject objects that have been decoded from XML no longer return the default attribute value in the getValue method if the attribute value is missing. Instead, the default value can be retrieved from the corresponding TLcdDataProperty. This improves consistency when encoding these objects again.

ImprovementLuciadFusion

The default metadata configuration properties of the LuciadFusion development profile, config/application-fusion.development.yml, are now empty.

ImprovementLuciadFusion

It is now possible to create WMS or WMTS services that are DGIWG-compliant in accordance with the following specifications: Defence Profile of OGC Web Map Service 1.3, version 3.0.0 and Defence Profile of OGC Web Map Tile Service 1.0, version 1.0.0. This is described in the following article: How to make your LuciadFusion WMS or WMTS service DGIWG-compliant.

ImprovementLuciadFusion

LCD-12265
ILcdModelReferenceDecoder has a new method findAndDecodeModelReference. Apart from decoding the model reference like its sibling method decodeModelReference, this new method also provides the source file from which the reference was decoded, when it exists and is known. An implementation of this method has been added to all ILcdModelReferenceDecoder classes which are provided in the API, or as an LcdService.

ImprovementLuciadFusion

LCD-11939
The OGC server sample now integrates with Spring Boot. It takes advantage of Java Servlet 3.0 annotations, which makes it much easier to set up. Additionally, a new article How to use Spring Boot with the OGC Web Server Suite explains how to integrate your own server created with the OGC Web Server Suite in a Spring Boot application.

ImprovementLuciadFusion

LCD-6306
A new WMS Client sample has been added that illustrates the use of ECDIS data through a WMS in a Lightspeed view: samples.wms.client.ecdis.lightspeed.MainPanel.

ImprovementLuciadFusion

The new method ILcdInputStreamFactory.canCreateInputStream checks whether a factory supports creating an input stream for a given source name. This makes it possible to ignore factories that have no chance of succeeding when alternatives are available, for instance in the new TLcdCompositeInputStreamFactory. A default implementation is available in the interface that always returns true.

ImprovementLuciadFusion

Added new properties to configure default contact information, these values will be pre-filled in the create service form in LuciadFusion Studio. All available default metadata properties are described in the following article: Configuring LuciadFusion Studio.

ImprovementLuciadFusion

Some exotic model implementations such as TLcd2DRegularTiledBoundsIndexedModel and their related API have been deprecated, because they are only used to support deprecated formats.

ImprovementLuciadFusion

The WMS and WMTS server now support GetFeatureInfo requests with text/html or text/xml as output format. When setting the output format to text/xml, the generated XML is based on the WMTS GetFeatureInfo XSD, which can be found here.

ImprovementLuciadFusion

LCD-10029
You can now easily calculate the area of a complex polygon using the following new methods:
  • TLcdEllipsoidUtil.geodesicArea(ILcdShape, ILcdEllipsoid)
  • TLcdSphereUtil.geodesicArea(ILcdShape, double)
  • TLcdCartesian.area(ILcdShape)

ImprovementLuciadFusion

ImprovementLuciadFusion

LF-2159

It is now possible to implement request-based SLD rendering customizations for a LuciadFusion product with an SLD style. To accomplish this, a new method has been added to the WMS API: ALcdSLDWMSGXYLayerFactory#createGXYLayer(ILcdModel aModel, ALcdWMSLayer aWMSLayer, TLcdSLDFeatureTypeStyle[] aStyle, TLcdWMSRequestContext aRequestContext) Based on the request stored in the TLcdWMSRequestContext changes can be applied to the TLcdSLDFeatureTypeStyle[] to allow for SLD rendering customizations.

It is now also possible to configure feature type styles on the server side. This is done by plugging in a custom implementation of a ILcdWMSSLDFeatureTypeStyleProvider in the ALcdOGCWMSCommandDispatcherFactory by overriding the method ALcdOGCWMSCommandDispatcherFactory#createSLDFeatureTypeStyleProvider(ServletConfig aServletConfig).

ImprovementLuciadFusion

The following core API classes now implement ILcdCurve: The following core API classes now implement ILcdRing:

ImprovementLuciadFusion

The WMS client now supports server-side map rotations if you are using non-tiled visualization in GXY views with a projection supported by the WMS server. You can enable this capability with the boolean System property com.luciad.wms.client.serverMapRotation. If you set it to true, map rotations are propagated to the WMS server through the custom GetMap request parameter angle. When used in combination with LuciadFusion or other WMS servers supporting this parameter, it ensures that labels on rotated maps are always upright, and that oriented icons still have their intended orientation.

ImprovementLuciadFusion

The WMS server now supports map rotations: by means of a new custom GetMap request parameter angle, WMS clients can indicate the map rotation in degrees, measured clockwise around the center of the map.

ImprovementLuciadFusion

The user can now register their own ILcdWMTSGetLegendGraphicRequestEncoder or ILcdWMSGetLegendGraphicRequestEncoder using the mechanism of the TLcdServiceLoader. This way it is possible to generate custom legends for GetLegendGraphic requests coming from WMS or WMTS clients.

ImprovementLuciadFusion

LCD-7979, LF-2236
The WMS and WMTS server now support GetLegendGraphic requests. The default response is an icon that depends on the type of model used: elevation, raster or vector.

ImprovementLuciadFusion

It is now possible to configure access constraint and contact information for services of type WMS, WMTS, WFS and WCS directly in LuciadFusion Studio. This information will be included in the service capabilities.

ImprovementLuciadFusion

The WMS client can now parse contact information from the GetCapabilities response. This information gets added to the ALcdWMSServiceMetaData

ImprovementLuciadFusion

It is now possible to configure access constraints and contact information of the service metadata of the WMS server capabilities. This information can be configured using the ALcdWMSServiceMetaData.

ImprovementLuciadFusion

LCD-12187
TLcdGML2ModelEncoder and TLcdGML31ModelEncoder's generated feature collection element is now in the _FeatureCollection substitution group. This improves embedding feature collections into other data models, such as WMTS feature info responses.

ImprovementLuciadFusion

LCD-11854
For scale based stylers and SLD stylers, it is now possible to control the styler's scale level independently of the view scale by implementing a custom ILspMapScaleProvider. The map scale provider can be added to a layer with TLspLayer#setMapScaleProvider, or it can be added to other layers by overriding ILspLayer#getMapScaleProvider. See the map scale provider how-to article for more info.

ImprovementLuciadFusion

The WMTS server now supports HTTP GET operation using RESTful encodings.

ImprovementLuciadFusion

The WMTS server now supports the following additional Well Known Scale Sets: EPSG:3395, EPSG:4326, EPSG:5041 and EPSG:5042.

ImprovementLuciadFusion

The SLD implementation now supports adding a box around a label. Using an SLD text symbolizer, you can configure the fill and stroke of the box, as well as the desired padding between the box and the label. The new article How to draw a box around labels illustrates the addition of a label box with an example.

ImprovementLuciadFusion

The WMTS and WMS services now support image/gif as output format.

ImprovementLuciadFusion

Added extra methods to TLcdGXYPolylineLabelPainter making it possible to specify the color and line width of the frame surrounding the labels.

ImprovementLuciadFusion

LCD-11314
The TLcdCSVModelDecoder now creates models that implement ILcdMultiDimensionalModel, when at least one of the columns is specified to contain values of type TLcdCSVDataSource.ColumnType.DATE_TIME. The resulting model contains one time dimension for each column of that type.

ImprovementLuciadFusion

LCD-12039
Introduced a new method named TLspViewNavigationUtil#animatedZoom, which performs an animated zoom to a target map scale on a Lightspeed view.

ImprovementLuciadFusion

LCD-12088
ILspView implementations now fire property change events for the background and paintingOrder properties.

ImprovementLuciadFusion

TLcdJPEG2000ModelDecoder: the decoder can now parse the model reference from embedded GMLJP2 in the file. The decoder supports versions 1.0, 2.0 and 2.1 of the GMLJP2 specification, and will only parse the model reference, other elements will be ignored but are accessible via the TLcdJPEG2000ModelDescriptor.

ImprovementLuciadFusion

LCD-10677
Calling ILcdModel#dispose() on the output of TLcdJPEG2000ModelDecoder now closes the JPEG2000 file.

ImprovementLuciadFusion

LCD-8189
The JPEG2000 model decoder now decodes geo-references using the RPC00B coefficients without requiring a world file. When no geo-reference data is available as GeoTIFF tags the decoder looks for the existence of the optional _rpc.txt which contains the RPC00B coefficients.

ImprovementLuciadFusion

LCD-8903
JPEG2000's native library now requires GLIBC 2.3.4, down from 2.14. This improves compatibility with Red Hat Enterprise Linux 6.

ImprovementLuciadFusion

The TLcdJPEG2000ModelDecoder and TLcdJPIPModelDecoder have been updated to handle monochrome, RGB and multi band images. The number of bands that can be decoded is unlimited with the limitation that each band consists of up to 16 bits. These improvements are only available via the imaging API. Please refer to the class javadoc for more information.

ImprovementLuciadFusion

The TLcdJPEG2000ModelDecoder and TLcdJPIPModelDecoder have been adapted for integration with the new imaging API. They now produce models with domain objects that extend ALcdImage. Please refer to the class javadoc, com.luciad.imaging package javadoc and to the developer's guide for more information.

ImprovementLuciadFusion

LCD-4415
The JPIP model decoder now verifies that the provided source name points to a valid JPIP server in its canDecode method. Previously it would only verify that the source name is a valid URI. You can get the old behavior by calling setQueryServerOnCanDecode(false).

ImprovementLuciadFusion

LCD-4332
The JPEG2000 and JPIP model decoders now document that image components may be scaled. The model descriptors also expose the necessary information to allow computing the original values in the image.

ImprovementLuciadFusion

LCD-4252
The JPEG2000 performance for tiled data has improved.

ImprovementLuciadFusion

LCD-4241
The TLcdJPEG2000ModelDecoder can now also decode the raster bounds from a j2w files.

ImprovementLuciadFusion

TLcdJPEG2000ModelDecoder now has a default model reference decoder.

ImprovementLuciadFusion

Closing the connection of a JPIP model explicitly while the model is still being used is handled more gracefully.

ImprovementLuciadFusion

The TLcdJPEG2000ModelDescriptor now exposes some additional metadata such as embedded XML. This metadata is also available on the TLcdJPIPModelDescriptor.

ImprovementLuciadFusion

Added the com.luciad.format.raster.TLcdJPIPModelDecoder which supports decoding images retrieved through the JPEG2000 Interactive Protocol (JPIP).

ImprovementLuciadFusion

LMAP-4075
The JPEG2000 native decoder pool size has been increased to 10, which is better suited for the most common scenarios (several files of less than 10 GBytes, instead of 1-2 huge files).

ImprovementLuciadFusion

The TLcdJPEG2000ModelDecoder did not correctly decode images having multiple color channels with a color depth other than 8 bit. This limitation has been removed.

ImprovementLuciadFusion

TLcdJPEG2000ModelDecoder now ignores a fourth channel if it is not an alpha channel.

ImprovementLuciadFusion

The JPEG2000 format is now also supported on 64-bits SPARC Solaris.

ImprovementLuciadFusion

The JPEG2000 format is now also supported on 64-bits Windows.

ImprovementLuciadFusion

The JPEG2000 format is now also supported on 64-bits Linux.

ImprovementLuciadFusion

The native JPEG2000 library has been updated to the latest version. Please make sure you are using the proper versions of the native libraries, corresponding to the LuciadMap jars.

ImprovementLuciadFusion

TLcdJPEG2000ModelEncoder now checks if the user-requested number of DWT levels does not exceed an acceptable limit (dependent on the tile size).

ImprovementLuciadFusion

TLcdJPEG2000ModelDecoder now also accepts "file:" URLs.

ImprovementLuciadFusion

TLcdJPEG2000ModelDecoder now has a property maximumResidualTiePointError to control when to reject rasters whose tie points do not precisely define an affine transformation (throwing an IOException instead).

ImprovementLuciadFusion

The new TLcdJPEG2000ModelEncoder provides functionality to encode raster models as georeferenced JPEG2000 images.

ImprovementAviation Standards

The following AIS API classes now implement ILcdCurve: The following AIS API classes now implement ILcdRing: The following AIS API interfaces now extend ILcdRing: ILcdAirspaceCorridor now extends ILcdCurve.

ImprovementDefense Symbology

LCD-12336

The forced color style is now also applied to tactical graphic symbols instead of only to icon symbols. The forced color can be inspected/edited with the following methods:

  • ILcdMS2525bStyle.setForcedColor
  • ILcdMS2525bStyle.getForcedColor
  • ILcdAPP6AStyle.setForcedColor
  • ILcdAPP6AStyle.getForcedColor

ImprovementDefense Symbology

LCD-12140, LCD-10328

It is now possible to override the default line style of the outer frame of an icon. To support this, the following methods are added to the interfaces ILcdMS2525bStyle and ILcdAPP6AStyle:

  • ILcdMS2525bStyle.setForcedFrameLineStyle
  • ILcdMS2525bStyle.getForcedFrameLineStyle
  • ILcdAPP6AStyle.setForcedFrameLineStyle
  • ILcdAPP6AStyle.getForcedFrameLineStyle

These new methods are implemented by the existing API classes TLcdDefaultMS2525bStyle and TLcdDefaultAPP6AStyle.

ImprovementInfrastructure Standards

The Binz decoder sample now has DRACO compression enabled by default when converting a Binz dataset to OGC 3D Tiles.

ImprovementInfrastructure Standards

It is now possible to convert multiple Binz datasets into a single OGC 3D Tiles dataset by using an index file.
For more information, refer to the how to article in the Binz documentation section.

ImprovementRadar Connectors

The ASTERIX API class TLcdASTERIXTrajectory now implements ILcdCurve.

Bug fixLuciadFusion

LCD-12265
The TLcdOBJModelDecoder now includes the MTL and referenced texture files in the supporting sources of its models' TLcdModelMetadata.

Bug fixLuciadFusion

LCD-12265
The TLcdIGRFModelDecoder and TLcdWMMModelDecoder now set the correct source names on their model descriptor and TLcdModelMetadata.

Bug fixLuciadFusion

LCD-12265
The TLcdMIFModelDecoder now includes the MID file in the supporting sources of its models' TLcdModelMetadata.

Bug fixLuciadFusion

LCD-12265
The TLcdBILModelDecoder now includes the BIL and HDR files in the supporting sources of its models' TLcdModelMetadata.

Bug fixLuciadFusion

LCD-12265
When a model reference is decoded from an external model reference file, the following model decoders now include this reference file in the supporting sources of the TLcdModelMetadata. For example, the model reference file can be a PRJ file that lives next to the data source, having the same file name or "directory.prj".

Bug fixLuciadFusion

LCD-12258
TLcdSHPModelDecoder now sets the correct data category and support files in the TLcdModelMetadata of its models.

Bug fixLuciadFusion

LCD-12254
TLcdSHPModelEncoder now also uses its output stream factory for encoding the model reference.

Bug fixLuciadFusion

LCD-12191
TLcdGML31ModelEncoder's generated feature collection type now extends AbstractFeatureCollectionType. The behavior for TLcdGML32ModelEncoder (which deprecated built-in feature collection types) remains unchanged.

Bug fixLuciadFusion

The TLcdCSVModelDecoder now also parses the time component of a date by default, using a SimpleDateFormat with pattern "yyyy-MM-dd HH:mm:ssXXX" for columns of type TLcdCSVDataSource.ColumnType.DATE_TIME. This DateFormat can be modified with TLcdCSVModelDecoder#setDateFormat.

Bug fixLuciadFusion

Fixed an issue with the sample maven project where the proguard obfuscation would fail on Windows, when executing mvn package, because the command was too long.

Bug fixLuciadFusion

Fixed Windows compatibility issues with the sample Maven project script build/maven/setup-sample-project.xml.

Bug fixLuciadFusion

LCD-11185
TLcdJPEG2000ModelDecoder: fixed a potential NullPointerException when reading the TIFF IFD from a JPEG 2000 file.

Bug fixLuciadFusion

LCD-11036
TLcdJPEG2000ModelDecoder: in some cases, attempting to decode a non-georeferenced JPEG2000 file would result in a NullPointerException rather than the expected IOException.

Bug fixLuciadFusion

LCD-8840
TLcdJPIPModelDecoder will now start a new session if the JPIP server returns a HTTP 503 response (invalid channel ID).

Bug fixLuciadFusion

LCD-8841
Fixed an issue with TLcdJPIPModelDecoder's cache management. This resulted in gray tiles being rendered.

Bug fixLuciadFusion

LCD-8824
TLcdJPEG2000ModelDecoder now respects the sampling mode (point vs. area-sampled) defined in a geoJP2 header.

Bug fixLuciadFusion

LCD-8496
Increased maximum allowed quality of TLcdJPEG2000ModelEncoder from 1.0 to 8.0, to allow encoding of higher-quality JPEG2000 files.

Bug fixLuciadFusion

Fixed an issue in TLcdJPEG2000ModelDecoder where, in some cases, alpha channels were not properly detected.

Bug fixLuciadFusion

LCD-7914
Fixed an issue in TLcdJPIPModelDecoder where RGB data with 16 bits per component could not be decoded.

Bug fixLuciadFusion

LCD-7893
Resolved an issue where reading simultaneously from many different JPEG2000 files could result in a deadlock.

Bug fixLuciadFusion

The JPEG2000 decoder canDecode method could return false for some absolute paths on windows.

Bug fixLuciadFusion

LCD-6500
The JPEG2000 and JPIP data decoders produced an ALcdMultilevelImage/ILcdMultilevelRaster with 1 level too few. The least detailed level was missing. This negatively affected the performance for large files when zoomed out.

Bug fixLuciadFusion

LCD-6495
The JPEG2000 decoder could not decode paths longer than 260 characters on windows.

Bug fixLuciadFusion

LCD-6354
TLcdJPEG2000ModelDecoder sometimes created ALcdImage's with incorrect semantics: there could be an alpha band that is not actually available.

Bug fixLuciadFusion

LCD-6010
A JPIP model could return incorrect values when using its ILcdRaster.retrieveValue method from multiple threads.

Bug fixLuciadFusion

LCD-5773
Fixed possible deadlock when using ILcdRaster.retrieveValue on a JPIP raster that is also being painted in a Lightspeed view.

Bug fixLuciadFusion

LCD-4400
The JPEG2000 decoder could not handle file names with non-ASCII characters on Windows.

Bug fixLuciadFusion

LCD-4257
Fixed a bug in the decoding of 16-bit JPIP data.

Bug fixLuciadFusion

LCD-3550
Fixed a concurrency issue in the JPIP native library which could result in an application crash on some systems.

Bug fixLuciadFusion

LCD-3537
Fixed a memory leak in JPIP models. This regression was introduced by the earlier fix LCD-3492 in the LuciadMap core library.

Bug fixLuciadFusion

LCD-3502
The connection of a JPIP model can now be closed explicitly. You can find details on how to do this in the TLcdJPIPModelDecoder javadoc.

Bug fixLuciadFusion

LCD-3481
The JPEG2000 and JPIP decoders could not decode monochromatic 16-bit data.

Bug fixLuciadFusion

LCD-2627
The JPEG2000 decoder allocated buffers that were larger then necessary.

Bug fixLuciadFusion

LMAP-5974
Some raster files could not be rectified properly during decoding. This has been fixed.

Bug fixLuciadFusion

LMAP-5479, LCD-94
The positioning of JPEG2000 rasters based on JPW files with arbitrary rotations has been corrected. Additionally, sheared rasters now supported.

Bug fixLuciadFusion

The name of the system property controlling the JPEG2000 native decoder pool size has been changed from JPEG2000_POOL_SIZE to jpeg2000.pool.size, in line with the usual naming conventions. The old system property name is still used as a fallback, for backwards compatibility.

Bug fixLuciadFusion

Attempting to load a non-existing file no longer crashes the application.

Bug fixLuciadFusion

LMAP-3932
Loading a corrupted JPEG2000 file no longer crashes the entire application.

Bug fixLuciadFusion

LMAP-3850
TLcdJPEG2000ModelDecoder was allocating large amounts of native memory. On 32 bit platforms this was sometimes exceeding the virtual memory space of the process, leading to a crash. LuciadMap now uses a pool of "connections" to the native JPEG2000 library, limiting the amount of memory used. The size of this pool can modified by setting the JPEG2000_POOL_SIZE system property (the default value is 2).

Bug fixLuciadFusion

The Linux 64-bit version of the libLcdJPEG2000.so depended on an older version of the standard C++ library (libstc++.so.5). The library is now linked against libstdc++.so.6.

Bug fixLuciadFusion

TLcdJPEG2000ModelDecoder now correctly supports JPEG2000 images with color maps.

Bug fixAdvanced Raster Services

LCD-12265
The TLcdPegasusModelDecoder now includes the 'Internal Orientation.csv' and referenced image files in the supporting sources of its models' TLcdModelMetadata.

Bug fixAdvanced Raster Services

LCD-12265
TLcdGeoSPOTModelDecoder now adds the supporting sources and data series to the TLcdModelMetadata of its decoded models.
  • When decoding a REP file, the model metadata contains the BIL, HDR and RSC files as supporting sources.
  • When decoding a DSC file, the model metadata contains every referenced REP subset as data series, each containing their respective BIL, HDR and RSC as supporting sources.

Bug fixDefense Standards

LCD-12265
TLcdBCIRasterModelDecoder now adds the supporting sources to the TLcdModelMetadata of its decoded models. These supporting sources are all the individual QDR files, as well as the vqtable file, if it exists.

Bug fixMaritime Standards

LCD-9921
The S-57 and S-63 decoders can now decode catalog files from URL's or with custom input stream factories. Multi-Catalogues (MULTICATALOG.031) are not supported, because they require specific file system operations like listing directory contents.

Upgrade considerationLuciadFusion

Third party libraries used in the samples have been moved to the samples/lib/thirdparty directory.

Upgrade considerationLuciadFusion

The two modules lcd_jpeg2000_decoder and lcd_jpeg2000_encoder have been merged into one module lcd_jpeg2000, which contains the JPEG2000 model decoder and encoder.

Upgrade considerationLuciadFusion

The swaggerV2Url property of the response returned by the /api endpoint has been renamed to apiSpecification.

Upgrade considerationLuciadFusion

The LuciadFusion Studio REST API specification now follows the OpenAPI 3 specification. Previously this followed the Swagger 2 specification. If you are using a tool to automatically generate an API based on the LuciadFusion Studio REST API specification then you now need to make sure it supports the OpenAPI 3 specification. The interactive console and REST API documentation have been updated to use the OpenAPI 3 version of the specification and can be used as before.

To support the upgrade from Swagger 2 to OpenAPI 3, the following dependencies were added to LuciadFusion:

Group ID Artifact ID Version
org.springdoc springdoc-openapi-ui 1.6.9
org.springdoc springdoc-openapi-common 1.6.9
org.springdoc springdoc-openapi-webmvc-core 1.6.9
org.springdoc springdoc-openapi-security 1.6.9
io.swagger.core.v3 swagger-annotations 2.2.0
io.swagger.core.v3 swagger-core 2.2.0
io.swagger.core.v3 swagger-models 2.2.0
io.github.classgraph classgraph 4.8.147
org.webjars swagger-ui 4.11.1
org.webjars webjars-locator-core 0.50
com.fasterxml.jackson.dataformat jackson-dataformat-yaml 2.9.8

Dependencies related to Springfox and the older version of Swagger have been removed.

Upgrade considerationLuciadFusion

The com.luciad.format.raster package is no longer split between multiple jars. This means that the following classes have been moved to their own sub package:

Class New Package
TLcdJPEG2000AssociationBox com.luciad.format.jpeg2000
TLcdJPEG2000Box com.luciad.format.jpeg2000
TLcdJPEG2000ImageDecoder com.luciad.format.jpeg2000
TLcdJPEG2000ModelDecoder com.luciad.format.jpeg2000
TLcdJPEG2000ModelDescriptor com.luciad.format.jpeg2000
TLcdJPIPModelDecoder com.luciad.format.jpeg2000
TLcdJPIPModelDescriptor com.luciad.format.jpeg2000
TLcdJPEG2000ModelEncoder com.luciad.format.jpeg2000
TLcdBCIRasterModelDecoder com.luciad.format.bci
TLcdBCIRasterModelDescriptor com.luciad.format.bci
TLcdBCITileDecoder com.luciad.format.bci
TLcdDIMAPModelDecoder com.luciad.format.dimap
TLcdDIMAPModelDescriptor com.luciad.format.dimap
TLcdECWConfiguration com.luciad.format.ecw
TLcdECWImageDecoder com.luciad.format.ecw
TLcdECWModelDecoder com.luciad.format.ecw
TLcdECWModelDescriptor com.luciad.format.ecw
TLcdGeoSPOTSubsetDescriptor com.luciad.format.geospot
TLcdGeoSPOTSceneDescriptor com.luciad.format.geospot
TLcdGeoSPOTRasterDescriptor com.luciad.format.geospot
TLcdGeoSPOTRaster com.luciad.format.geospot
TLcdGeoSPOTModelDescriptor com.luciad.format.geospot
TLcdGeoSPOTModelDecoder com.luciad.format.geospot
TLcdMrSIDImageDecoder com.luciad.format.mrsid
TLcdMrSIDModelDecoder com.luciad.format.mrsid
TLcdMrSIDModelDescriptor com.luciad.format.mrsid
TLcdCADRGBoundaryRectangleDescriptor com.luciad.format.cadrg
TLcdCADRGDirectoryModelDecoder com.luciad.format.cadrg
TLcdCADRGFrameDescriptor com.luciad.format.cadrg
TLcdCADRGImageDecoder com.luciad.format.cadrg
TLcdCADRGModelDecoder com.luciad.format.cadrg
TLcdCADRGModelDescriptor com.luciad.format.cadrg
TLcdCADRGMultilevelRasterModelDescriptor com.luciad.format.cadrg
TLcdCADRGRaster com.luciad.format.cadrg
TLcdCADRGTile com.luciad.format.cadrg
TLcdECRGMediaMetadata com.luciad.format.ecrg
TLcdECRGModelDecoder com.luciad.format.ecrg
TLcdECRGModelDescriptor com.luciad.format.ecrg
TLcdECRGMultilevelRasterModelDescriptor com.luciad.format.ecrg
TLcdECRGTile com.luciad.format.ecrg
ELcdNITFBandRepresentation com.luciad.format.nitf
TLcdNITFGXYLayerFactory com.luciad.format.nitf
TLcdNITFModelDecoder com.luciad.format.nitf
TLcdNITFModelDescriptor com.luciad.format.nitf
TLcdNITFTextSegment com.luciad.format.nitf
TLcdNITFUncompressedImageDecoder com.luciad.format.nitf
TLspNITFLayerFactory com.luciad.format.nitf
TLcdSwissDHMMatrixModelDecoder com.luciad.format.swissdhm
TLcdSwissDHMMatrixModelDescriptor com.luciad.format.swissdhm
TLcdUSRPAccuracyDescriptor com.luciad.format.usrp
TLcdUSRPDatasetModelDescriptor com.luciad.format.usrp
TLcdUSRPLegend com.luciad.format.usrp
TLcdUSRPModelDecoder com.luciad.format.usrp
TLcdUSRPModelDescriptor com.luciad.format.usrp
TLcdUSRPTile com.luciad.format.usrp
TLcdUSRPZoneDescriptor com.luciad.format.usrp

If you encounter any compile errors due to these changes, simply update the relevant import statement.

Upgrade considerationLuciadFusion

Upgraded the PostgreSQL JDBC driver to version 42.3.6.

Upgrade considerationLuciadFusion

The samples now depend on the HikariCP third-party library. It is used to illustrate how the database model decoders can use a database connection pooling framework.

Upgrade considerationLuciadFusion

The SQLiteJ library has been updated to version 3.36.0.lcd-2 to improve compatibility with Hibernate 5.

Upgrade considerationLuciadFusion

To allow for greater extensibility, the signature of the method ILcdWMSGetLegendGraphicRequestEncoder#encode(ALcdWMSLayer,ALcdSLDLayer,TLcdSLDStyledLayerDescriptor,String,String,float,int,int,OutputStream,TLcdWMSRequestContext) has been changed into #encode(TLcdWMSGetLegendGraphicRequestContext,TLcdWMSRequestContext,OutputStream). TLcdWMSGetLegendGraphicRequestContext gives access to the original method arguments and a number of additional arguments.

The change impacts WMS implementations that use an implementation of ILcdWMSGetLegendGraphicRequestEncoder.

Upgrade considerationLuciadFusion

Support for 32-bit Windows will be phased out. Starting with LWJGL, new or upgraded native libraries will no longer include 32-bit versions.

Upgrade considerationLuciadFusion

The JAXB implementation which is used in LuciadFusion has been upgraded to 2.3.6.

Upgrade considerationLuciadFusion

LCD-12054
The LWJGL Java binding for the OpenGL and OpenCL APIs has been updated to version 3.3.1. For Linux, the glibc (GNU C Library) minimum version has been raised to 2.27.

Upgrade considerationLuciadFusion

The third-party library dependencies Apache HttpClient, HttpClient Cache and HttpMime have been updated from version 4.5.6 to 4.5.13. Their dependencies have also been updated accordingly: Apache HttpCore from version 4.4.10 to 4.4.13, Apache Commons Codec from version 1.10 to 1.11.

Upgrade considerationLuciadFusion

LCD-12142
The version of Ehcache was updated from 3.2.0 to 3.10.0 to improve compatibility with Java 17.

Upgrade considerationLuciadFusion

The ILcdPolyline constructor parameter of TLcdSHPPolylineZ now also needs to be an instance of ILcdCurve.

Upgrade considerationLuciadFusion

The createFilteredModel(ILcdModel aSourceModel, TLcdWFSGetFeatureConstraints aConstraints) method of ILcdWFSFilteredModelFactory now imposes new conditions on the elements in the model. Any ILcdPolyline or ILcdPolygon model elements now also need to implement ILcdCurve or ILcdRing, respectively.

Upgrade considerationLuciadFusion

By default, TLspLonLatGridLayerBuilder's layers now generate lines that use the same ILcdGeodeticDatum as the world reference of the view, even when the world reference of the view changes. It always used the WGS 84 datum before this change. It is still possible to use a fixed geodetic datum by using the TLspLonLatGridLayerBuilder#createModel method that takes an ILcdGeodeticDatum as argument.

Upgrade considerationDatabase Connectors

Upgraded the PostgreSQL JDBC driver to version 42.3.6.

Upgrade considerationAviation Standards

TLcdAISPolygon#set3DEditablePolygon now requires an ILcdRing as parameter. TLcdAISPolyline#set3DEditablePolyline now requires an ILcdCurve as parameter. The following AIS API methods of ALcdAISGeometryFactory now need to return an instance of ILcdCurve:
  • ALcdAISGeometryFactory#createPolyline()
  • ALcdAISGeometryFactory#createPolyline(ILcd3DEditablePointList aPointList)
The following AIS API methods of ALcdAISGeometryFactory now need to return an instance of ILcdRing:
  • ALcdAISGeometryFactory#createPolygon()
  • ALcdAISGeometryFactory#createPolygon(ILcd3DEditablePointList aPointList)

Upgrade considerationDefense Symbology

LCD-11404, LCD-12138
The following Military Symbology classes have been removed from the API. These API classes have been deprecated for more than a decade and have not been maintained since.

Upgrade considerationDefense Symbology

LCD-4341, LCD-8814

The paint representations used for the direction of movement arrows have been removed from the API.

  • TLspMS2525bLayerBuilder.ARROW_PAINT_REPRESENTATION
  • TLspAPP6ALayerBuilder.ARROW_PAINT_REPRESENTATION

The direction of movement arrows are now painted in the TLspPaintRepresentation.BODY paint representation.

If you had a custom TLspPaintingOrder handling the ARROW_PAINT_REPRESENTATION, you can replace it with a default TLspPaintingOrder.

2021.1

2021.1.15

ImprovementLuciadFusion

LCD-12129

The Maven sample project setup script 'build/maven/setup-sample-project.xml' now uses NodeJS instead of the Nashorn JavaScript engine. This means you now have to install NodeJS before running the setup script.

In addition, the ProGuard version used by the script was upgraded from ProGuard 6 to ProGuard 7.

These changes make it possible to run the setup script with JDK 17.

ImprovementLuciadFusion

LCD-12335
The WFS server now also accepts DescribeFeatureType XML requests with an unbound TypeName element to improve interoperability with non-compliant third-party OGC WFS clients.

ImprovementAviation Standards

LCD-12283
The AIXM 5.1(.1) rendering logic for GXY and Lightspeed views now uses a default visualization style for custom feature types defined in AIXM extensions.

Bug fixLuciadFusion

LCD-12322
TLcdGXYLocationListLabelingAlgorithm: When a selected label is larger or smaller than when it is not selected, the algorithm would place the selected label at an incorrect location after selecting it.

Bug fixLuciadFusion

LCD-12325
The TLcdResizeableIcon's paint method could hang when used with certain display scale factors. This has been fixed.

Bug fixReal-time Engine

LCD-12331
TLcdGXYContinuousLabelingAlgorithm didn't always take selection into account. For labels with a selected size that differs from their non-selected size, this could lead to incorrect decluttering results.

Bug fixDefense Symbology

LCD-12321

Fixed an issue which caused the selection color to not be applied when selecting certain meteorological symbols that have multiple colors. The affected meteorological symbols are:

  • Stationary Front
  • Upper Stationary Front
  • Stationary Frontogenesis
  • Stationary Frontolysis
  • Inter-Tropical Discontinuity

The selection color of a symbol can be inspected/edited with the following methods:

  • ILcdMS2525bStyle.setSelectionColor
  • ILcdMS2525bStyle.getSelectionColor
  • ILcdAPP6AStyle.setSelectionColor
  • ILcdAPP6AStyle.getSelectionColor

Bug fixDefense Symbology

LCD-12333
Resolved an issue that caused the TLcdMS2525bObjectCustomizer to throw a StringIndexOutOfBoundsException when setting a MIL-STD-2525d symbol on it to be customized.

2021.1.14

ImprovementInfrastructure Standards

LCD-12305
Fixed the problem where pruning outliers in Binz datasets could cause too many objects to be skipped: outlier detection will now be disabled by default, but can be turned on by setting the system property com.luciad.bim.tiling.pruneOutliers to true.

Bug fixLuciadFusion

LCD-12323
TLcdRasterModelHeightProviderFactory#canCreateHeightProvider now takes the appropriate model lock when inspecting the given model's elements. This also avoids potential warnings from being logged about incorrect model locking.

Bug fixLuciadFusion

LCD-12307
Calling the print method on an ILcdGXYView implementation could cause a NullPointerException when performance logging (see TLcdMBeanPerformanceLogHandler) is configured.

Bug fixLuciadFusion

LCD-12306
TLcdEllipsoidRhumblineUtil#intersectionGeodesicRhumblineSFCT didn't work correctly for rhumb lines that cross the date line.

Bug fixLuciadFusion

LCD-12312
TLcdRangeSlider no longer performs illegal reflective access operations.

Bug fixLuciadFusion

LF-2241
Fixed an issue that prevented starting or stopping services in the Studio web application when the list of services was filtered using search.

Bug fixLuciadFusion

LCD-12316
The error message returned by the TLcdGeoTIFFModelEncoder could be confusing about why the model was not accepted. The error message now contains more detailed information on the reason of rejecting a model.

Bug fixAdvanced Raster Services

LF-2231
Resolved a performance issue that caused ECWP responses to only be closed after at least 1 second.

Bug fixAdvanced Raster Services

LCD-12302
TLcdGeospatialPDFModelDecoder#discoverDataSources will now return multiple data sources when decoding a Geospatial PDF with multiple map frames.

Bug fixMaritime Standards

LCD-11980
Fixed an issue where certain cells were not displayed on a GXY view. This problem only manifested when using ECDIS in WMS with certain projections.

2021.1.13

ImprovementInfrastructure Standards

LF-2237
Meshup will now check if a .mtl file exists next to a .obj file with the same name. This is added fallback behavior in case there is no direct mtllib reference inside the .obj file to the .mtl file.

Bug fixLuciadFusion

LCD-12289
TLcdGML31LinearRing/TLcdGML32LinearRing's bounds are now properly updated when adding or removing points.

Bug fixLuciadFusion

LCD-12287
TLcdKML22GXYPainterProvider: when rendering polygons with inner rings, superfluous lines could appear. This has been fixed.

Bug fixLuciadFusion

LCD-12303
Fixed an issue where the mime type could not be determined properly if an OGC service returned a response with the 301 Moved Permanently response code.

Bug fixTerrain Analysis Engine

LCD-12292
GXY hypsometry layers now correctly process missing or unknown data for earth tile sets. Previously, areas without elevation data could be incorrectly colored.

Bug fixWeather & Environment Standards

LCD-12284
Fixed an issue where the color of the arrow of a SIGWX cloud label was not changed when setting the cloud label border color. This issue happened when visualizing SIGWX clouds in a GXY view.

2021.1.12

ImprovementLuciadFusion

LCD-12275
TLspFixedOnPathLabelLocationProvider has a new property: allowUpsideDown. This property allows you keep the text upside down instead of flipping it 180 degrees.

ImprovementLuciadFusion

LCD-12276
TLcdWKTReferenceParser now supports WKT strings that contain a "Local" projection parameter, which corresponds to an orthographic projection.

ImprovementAviation Standards

LCD-12281
Added support for AIXM 5.1.1 data defined according to the ASRN XML Schema extension, identified by the namespace "http://www.aixm.aero/schema/5.1.1/asrn".

ImprovementAviation Standards

LCD-12259
The AIXM 5.1 decoder TLcdAIXM51ModelDecoder now allows to configure whether the interpolation of linear GML elements needs to be geodesic in case of a geodetic reference, through the newly introduced methods setLinearElementsUseGeodesicInterpolationForGeodeticSrs and isLinearElementsUseGeodesicInterpolationForGeodeticSrs. This impacts the AIXM-compatible GML elements LineStringSegment and LinearRing. Although these GML elements conceptually represent geometries with a linear interpolation, they are often used to represent geometries with lon/lat coordinates and a geodesic interpolation. The default setting is to use geodesic interpolation.

2021.1.11

Bug fixLuciadFusion

LF-2235
Fixed several broken links in the REST API documentation.

Bug fixAdvanced Raster Services

LCD-12271
TLcdECWModelDecoder: fixed incorrect positioning of images that use feet as their unit of measure.

Bug fixDefense Symbology

LCD-12213
Resolved an issue in GXY views which rendered the outline style of NVG military symbols for the following NVG 2.0 geometry elements:
  • arcband
  • circle
  • ellipse
  • rectangle

Upgrade considerationLuciadFusion

LF-2234
The spring-security-oauth2 library has been upgraded to version 2.5.2. This version fixes the CVE-2022-22969 vulnerability.

2021.1.10

ImprovementTerrain Analysis Engine

LCD-11680
The hypsometry layer in the lightspeed hypsometry sample now more smoothly updates when using the hypsometry controls for a specific elevation layer.

Bug fixAdvanced Raster Services

LCD-12257
TLcdECWModelDecoder: fixed issue where accessing an ECW image would fail silently if the ECW file became unavailable after decoding the model but before first accessing the data.

Bug fixDefense Symbology

LCD-12255
Fixed issue where modifier labels were not painted for NVG elements containing military symbols.

2021.1.09

ImprovementLuciadFusion

LCD-12244
The TLcdTransformingModelFactory now takes into account if the view allows asynchronous operations to determine if data transformations are executed on a dedicated thread.

ImprovementInfrastructure Standards

LCD-12246
Added support for a textured polyMesh, it is now treated as a regular polyMesh, the actual texture is not used.

2021.1.08

ImprovementLuciadFusion

LCD-12232
TLcdProj4ReferenceParser and TLcdProj4ReferenceFormatter now also support the krovak projection.

ImprovementRadar Connectors

LCD-12242
You can now configure the position field to be used for tracks within ASTERIX Category 48: by default, the Calculated Position in Cartesian Coordinates (X / Y) field is used. This can be changed to the Measured Position in Slant Polar Coordinates (Rho / Theta) field by setting the System property com.luciad.format.asterix.cat48.usePolarCoordinates to true.

Bug fixLuciadFusion

LF-2227
Add runtime file needed to fix startup issues related to Logback when deploying to newer versions of WildFly.

Bug fixLuciadFusion

LCD-12230
ILcdLogger: some methods didn't log the correct class or method when using java.util.logging (see TLcdJULLoggerFactory).

Bug fixLuciadFusion

LCD-12233
A non-visible TLspAWTView could trigger a high usage of the Event Dispatch Thread (EDT). This has been fixed.

Bug fixLuciadFusion

LCD-12243
Fixed an issue with TLspPointToPointSnapper where ILcdPoint shapes would not be considered as valid snap targets for other overlapping ILcdPoint shapes.

Bug fixLuciadFusion

LF-2228
A workaround has been applied to mitigate the vulnerability introduced by CVE-2022-22965. For more information on this vulnerability and to see if you are affected visit https://tanzu.vmware.com/security/cve-2022-22965. LuciadFusion implements the suggested workaround of declaring a WebMvcRegistrations bean with a modified RequestMappingHandlerAdapter as detailed on https://spring.io/blog/2022/03/31/spring-framework-rce-early-announcement#suggested-workarounds. If you add your own @ControllerAdvice that sets the disallowed fields on the WebDataBinder make sure to include "class.*", "Class.*", "*.class.*", "*.Class.*" in the disallowed fields list.

2021.1.07

ImprovementLuciadFusion

LCD-12215
TLcdGXYPointListPainter: a new method retrievePointList makes it easier to change how to derive the ILcdPointList from the domain object.

ImprovementLuciadFusion

LCD-12225
You can now configure the latitude extent of a TLcdPolarStereographic projection. The latitude extent is how far the projection extends outwards from the poles, expressed in degrees latitude. For example, you can use this to show data located in the southern hemisphere, on a map with a north polar stereographic projection.

ImprovementAviation Standards

LCD-12196
A new package com.luciad.ais.model.sector has been added to AIS containing domain objects to model sector-based minimum safety altitudes.

ImprovementAviation Standards

LCD-12196
A new DAFIFT decoder TLcdDAFIFTMinimumSectorAltitudeDecoder has been added to support the decoding of Minimum Sector Altitude objects. The data type of the decoded objects is TLcdDAFIFTDataTypes#MinimumSectorAltitude, which extends from the new MinimumSectorAltitude type in AIS.

ImprovementInfrastructure Standards

LCD-12222
TLcdDGNModelDecoder: Text with true-type fonts are now displayed in italics or bold where needed.

ImprovementInfrastructure Standards

LCD-12221
TLcdDGNModelDecoder: Adjusted the width, height and justification of text elements with true-type fonts to match the Bentley Microstation display.

Bug fixLuciadFusion

LCD-12226
TLcdOGC3DTilesModelEncoder: fixed an issue where Draco encoding failed for tiles with an empty mesh.

Bug fixLuciadFusion

LF-2224
Fixed an issue where CSW queries would fail when using an Oracle database and when a service has multiple products and a bounding box which is larger than or equal to one-half the surface of the Earth. Queries are now performed against the bounding boxes of each product of each service instead of the bounding box of each service (i.e. the union of the bounding boxes of the products of a service).

Bug fixLuciadFusion

LCD-12202
TLspShapeLayerBuilder: the outline of a polygon with points on the poles would be clipped on the equator in the Lambert Conformal projection.

Bug fixAviation Standards

LCD-12220
AIXM 5.1 navaids of type DME were incorrectly visualized using a VOR_DME icon instead of a DME icon.

Bug fixDefense Standards

LCD-12212
TLspVPFLayerBuilder: the ILspLayer.LayerType set on the builder was not correctly set on the layers build.

2021.1.06

ImprovementInfrastructure Standards

LCD-12208
Improved the conversion of Binz datasets that contain outliers: the erroneous objects are skipped.

Bug fixLuciadFusion

TLcdGXYAsynchronousPaintQueue: after a period of inactivity, the isEmpty method could incorrectly return false.

Bug fixDefense Standards

LCD-12204
The TLcdUSRPModelDecoder now returns data series and supporting files when decoding model metadata.

2021.1.05

ImprovementLuciadFusion

LF-2215
Creating a WFS service for an unsupported product name - containing characters other than letters, digits or underscores - led to a broken service. To avoid this, the creation no longer works for unsupported product names and the user gets notified of the reason.

ImprovementAdvanced Raster Services

LCD-12186
The panorama converter now uses area sampling to determine the color of an image pixel, leading to fewer artifacts in the resulting Luciad Panorama image.

ImprovementAviation Standards

LCD-12197
The DAFIFT Runway decoder could not cope with runway records containing empty values for the take off or landing distance available fields.

Bug fixLuciadFusion

LCD-12185
TLcdOGC3DTilesModelDecoder: fixed a NullPointerException that could occur when decoding a 3D Tiles dataset containing GLTF without primitives.

Bug fixLuciadFusion

LF-2219

Resolved an issue with the default values of the cache configuration of LuciadFusion Platform services. The cache.enabled and cache.maxAge properties were uninitialized if the properties were missing from the configuration profile. Meaning that caching was disabled by default, while the yml configuration files mentioned caching is enabled by default. The default values have been changed so caching is enabled by default and the maxAge property is set to 30 days by default.

The following caching properties have been affected:

  • fusion.ogctilesservice.cache.enabled
  • fusion.ogctilesservice.cache.maxAge
  • fusion.panoramics.cache.enabled
  • fusion.panoramics.cache.maxAge
  • fusion.hspc.cache.enabled
  • fusion.hspc.cache.maxAge
  • fusion.studio.webapp.cache.enabled
  • fusion.studio.webapp.cache.maxAge

Bug fixLuciadFusion

LCD-12199
TLspComplexStrokedLineStyle: a TLcdLonLatCompositeRing or TLcdXYCompositeRing containing TLcdCompositeCurve was visualized incorrectly when styled with a complex stroke.

Bug fixAviation Standards

LCD-12192
AIXM 5.1 airspace volume subtractions were not visible in GXY and Lightspeed 2D views if their vertical extent did not include the vertical extent of the base airspace volume.

Bug fixInfrastructure Standards

LCD-12168
TLcd3DTilesProcessorBuilder: fixed a potential deadlock that could occur when processing GLB files. This fix also generally improves the performance of processing GLB files.

Bug fixS-63

LCD-12190
The S-57 and S-63 model decoders now properly differentiate multi catalog (MULTICATALOG.031) datasets of the right type. Before, the S-57 decoders would pick up multi catalogs containing S-63 data and vice-versa.

2021.1.04

ImprovementLuciadFusion

LCD-11989
It's now easier to obfuscate LuciadLightspeed and LuciadFusion applications that don't depend on JavaFX.

ImprovementLuciadFusion

LCD-12172
Added support for the SLD vendor option "composite=copy" in a Lightspeed view. This vendor option can be used on a point symbolizer to make sure that any transparent pixels found in a referred icon are copied to the line style provided by a line or polygon symbolizer in the same styling rule. A common use case is to introduce a gap between the visible icon part and the surrounding line style: if there are transparent pixels around the visible icon part, they will remove the surrounding line style accordingly.

ImprovementLuciadFusion

LF-2210
The ISO metadata of Studio's services now includes the revision date.

ImprovementAviation Standards

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

ImprovementInfrastructure Standards

LCD-12182
TLcd3DTilesProcessorBuilder: repeating textures will now be scaled to the nearest power of two resolution. This improves compatibility with some clients that don't support repeating textures for non power-of-two resolutions.

Bug fixLuciadFusion

LF-2216
Fixed the issue where OGC 3D Tiles service could not be created from BINZ data after obfuscation.

Bug fixLuciadFusion

LCD-10415
In certain scenarios TLcdImageModelHeightProviderFactory and other implementations of ILcdModelHeightProviderFactory could change the value of the optional ALcdRasterModelHeightProviderFactory#KEY_PIXEL_DENSITY property that is provided when creating a height provider. This side effect no longer happens.

Bug fixLuciadFusion

LCD-12169
A few EPSG reference are defined using axes that point west and south, instead of the usual east and north:
  • EPSG:2065
  • EPSG:5513
  • EPSG:8352
The coordinates of these references are now correctly interpreted and transformed.

Bug fixLuciadFusion

LCD-12179
The SLD label painting pipeline incorrectly interpreted XML Label element content encoded on multiple lines as a multiline label. This should only be the case if the newline characters are part of a CDATA XML element, as illustrated in the How to define multiline labels SLD article.

Bug fixLuciadFusion

LCD-12173
The OGC Filter functions startAngle and endAngle incorrectly added a rotation of 90 degrees to the evaluated values. This could led to an incorrect icon rotation when used in combination with an SLD icon symbolizer.

Bug fixAviation Standards

LCD-12067
Fixed a bug that caused unexpected and superfluous turn circles in the trajectory of a CF-based IAP procedure.

2021.1.03

New featureLuciadFusion

LCD-12148
A best effort has been made to add support for version 100 of OSGB for the TLcdOSGBModelDecoder, including support for
  • Binary brackets
  • DrawElementsUInt
  • Vec2Array
  • Vec3Array

ImprovementLuciadFusion

LCD-12146
The warning that eye-dome lighting (see TLspEyeDomeLightingSettings) cannot be used in a 2D view is now logged as a debug message.

ImprovementLuciadFusion

LCD-10529
SLD graphics rendering in GXY / Lightspeed now supports the optional AnchorPoint property for icons.

ImprovementDefense Symbology

LCD-12136
Icon symbols with uncertain affiliation ("Assumed Friend" or "Suspect") and the "Present" status now get painted with a dotted outline instead of a dashed outline when the symbol fill is disabled. Additionally, icon symbols with the uncertain affiliation ("Assumed Friend" or "Suspect") and the "Planned" status will be painted with an alternating black and white dashed outline instead of a black and white dotted outline. These changes make it possible to differentiate between "Present" and "Planned" icon symbols with uncertain affiliations.

Bug fixLuciadFusion

LCD-11533
Fixed NullPointerException when retrieving the TLcdModelMetadata from an ILcdMultiDimensionalModel with unbounded dimensions.

Bug fixLuciadFusion

LCD-12102
TLspRasterLayer 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.

Bug fixLuciadFusion

LF-2201
Fixed an issue where requesting resources using the REST API could return a totalPages of 0 when fetching the first page of a request that returns no results. The totalPages will now be 1 in case of no results to match the page property.

Bug fixLuciadFusion

LF-2125
Fixed an issue that prevented information about styles being loaded in the Studio web application if the defaultRasterData or defaultVectorData had not been set.

Bug fixLuciadFusion

LCD-12137
Fixed an issue within the ALcdMeasureProvider created by TLcdImageModelMeasureProviderFactory which could result in ClassCastExceptions when used from multiple threads.

Bug fixAdvanced Raster Services

LF-2195
Updated the native ecwp libraries which fixes a bug on Linux, which caused the same cached results to be used by all requests.

Bug fixTerrain Analysis Engine

LCD-12047
Fixed a bug that caused an ArrayIndexOutOfBoundsException when calling TLcdLOSCoverageFactory.createLOSCoverageRaster. This could happen in certain scenarios when the provided LOS coverage has a max radius that is not a multiple of the radius step.

Bug fixDefense Symbology

LCD-12071
Fixed an issue where the halo of a movement direction arrow was partially painted white for ground units in a Lightspeed view.

Bug fixInfrastructure Standards

LCD-12011
Fixed a bug in the TLcdBinzModelDecoder where metadata could be skipped in BINZ version 5. BINZ data created by Hexagon Smart Interop Publisher up to version 15.2 are supported.

Bug fixS-63

LCD-12150
Fixed an issue when separately decoding multiple S-63 cells or catalogues in parallel on different threads. This would result in various errors and decoding failures.

2021.1.02

ImprovementLuciadFusion

LF-2194

Windows Authentication when using a MSSQL database account is now supported. There is also a detailed explanation on how to enable support for Windows Authentication when using a MSSQL database account.

ImprovementLuciadFusion

Moved some How to articles from the FAQ section to the How to section.

ImprovementLuciadFusion

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.

ImprovementLuciadFusion

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 fixLuciadFusion

LCD-12090
Label placement on a Lightspeed view was very slow when domain objects have a lot of labels. This could for example happen when on-path or in-path labels are used, or when adding icons to raster data using TLspParameterizedRasterIconStyle.

Bug fixLuciadFusion

Added a logging threshold filter to the default logback configuration, which was unintentionally removed.

Bug fixLuciadFusion

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 fixLuciadFusion

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 fixLuciadFusion

LF-2196
Fixed an issue that caused all data that was added manually using the Add Data functionality to be deleted if a data root was removed by a user.

Bug fixLuciadFusion

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

Bug fixLuciadFusion

LF-2188
Fixed an issue where CSW queries with PropertyIsLike and PropertyIsEqualTo operators would fail when querying the Dublin Core dc:type property.

Bug fixLuciadFusion

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 fixLuciadFusion

LF-2151
Fixed an issue that prevented some ECDIS data from being deleted.

Bug fixLuciadFusion

LF-2182
Fixed a bug where performing CSW query request failed when the bounds of the data being queried were larger than or equal to one-half the surface of the Earth. This bug only affected LuciadFusion instances running against Oracle databases.

Bug fixLuciadFusion

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.

Bug fixAdvanced Raster Services

LF-2199
Fixed issue with the ECWP native library logger, which got garbage collected after initialization. The logger now remains active while the server is running.

2021.1.01

Bug fixLuciadFusion

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 fixLuciadFusion

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

Bug fixLuciadFusion

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

Bug fixLuciadFusion

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 fixLuciadFusion

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-12104
TLcdNVGGXYPainterProvider: Fixed editing issue with arrow symbols where the editing preview would not be painted correctly.

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

Upgrade considerationLuciadFusion

LF-2193
There database schema for PostgreSQL databases was changed. The type of the bounding box columns has been changed from Polygon to Geometry.

2021.1

New featureLuciadFusion

The OGC3DTiles service now supports Draco mesh compression. It can be used when creating an OGC3DTiles Service for Binz, OSGB or any other mesh data type. It can be activated by choosing Draco from the mesh compression drop down.

New featureLuciadFusion

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 featureLuciadFusion

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 Services

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.

ImprovementLuciadFusion

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

ImprovementLuciadFusion

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

ImprovementLuciadFusion

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.

ImprovementLuciadFusion

TLspKML22LayerBuilder/TLcdKML22GXYLayerFactory: improved the default layer label.

ImprovementLuciadFusion

LuciadFusion now supports importing of GLB files. GLB is the binary variant of GLTF, and can now be preprocessed into OGC 3D Tiles.

ImprovementLuciadFusion

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.

ImprovementLuciadFusion

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.

ImprovementLuciadFusion

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.

ImprovementLuciadFusion

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

ImprovementAdvanced Raster Services

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

ImprovementAdvanced Raster Services

The ECWP service type now supports 64-bit Linux systems.

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 fixLuciadFusion

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 fixLuciadFusion

LF-2139
The upgrade of the Oracle JDBC driver fixes an issue that prevented LuciadFusion from starting up if an Oracle database with a specific character set was used. See Oracle support document 2278611.1 for more information on this issue.

Bug fixLuciadFusion

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 considerationLuciadFusion

The Oracle JDBC driver has been upgraded to version 19.12.0.0.

Upgrade considerationLuciadFusion

The SQLite library has been updated to version 3.36.0.

Upgrade considerationLuciadFusion

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 considerationLuciadFusion

For Java 17 support, the version of spring-ldap-core was updated from 2.3.2.RELEASE to 2.3.4.RELEASE.

Upgrade considerationLuciadFusion

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 considerationLuciadFusion

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.

2021.0

2021.0.11

ImprovementLuciadFusion

The OGC Filter functions startAngle / endAngle and startPoint / endPoint now fallback to the domain object's embedded geometry if the provided geometry property name does not exist and if the domain object itself is of type ILcdShape.

ImprovementLuciadFusion

LCD-12017
TLcdSHPModelEncoder now creates buffered output streams by default, which greatly improves encoding speed.

Bug fixLuciadFusion

LCD-12081
The OGC Filter functions startAngle / endAngle and startPoint / endPoint can now also be applied to ILcdPointList geometries that do not implement ILcdCurve.

Bug fixLuciadFusion

LCD-12078
Fixed issue in TLcdGeoTIFFModelDecoder for TIFF files with an index color model where setting an index as transparent value, using setForcedTransparentColorIndex, was not applied correctly.

Bug fixLuciadFusion

LF-2178
TLcdCSWRecordTransformationFactory would incorrectly apply ISO metadata CRS information to ISO metadata WGS 84 bounding boxes. This resulted in CSW and ATOM records with inconsistent bounding boxes.

Bug fixLuciadFusion

LF-2179
ALcdCSWCommandDispatcherFactory would return an exception when asking to include {http://www.opengis.net/ows}BoundingBox in the response of a GetRecords request.

Bug fixLuciadFusion

LCD-12062
TLspComplexStrokedLineStyle: On some GPUs you could get shader compile errors on the console when zooming in very close on a line styled with a TLspComplexStrokedLineStyle.

Bug fixLuciadFusion

LCD-12073
TLcdClusteringTransformer could throw an ArrayIndexOutOfBoundsException, leading to incorrect clustering results. This has now been fixed.

Bug fixLuciadFusion

LF-2173
TLcdOGCWMSCommandDispatcher threw a runtime exception when performing a GetMap request with duplicate layers.

Bug fixTerrain Analysis Engine

LF-2170
The description of the TEA sample has been updated to use the correct url for the API documentation.

2021.0.10

ImprovementLuciadFusion

LCD-12046
TLcdOGCFilterEvaluator now accepts a TLcdOGCBinarySpatialOperator with a shape that's not a point nor bounds object, provided that the source and target reference are equal.

ImprovementAviation Standards

LCD-12033
The 3D visualization of ATS routes decoded by the AIS-based data formats DAFIF(T), ARINC 424 and AIXM 3 and 4 now takes the altitude of the route segments into account.

Bug fixLuciadFusion

Fixed issue with the TLcdGXYGeoBufferPainter where it was no longer possible to add or remove points by CTRL+clicking the buffer axis.

Bug fixLuciadFusion

LCD-12031
Fixed an issue with the TLspEditController where domain objects that were selected before the controller was activated stayed in the edited state, even after deselection.

Bug fixLuciadFusion

LCD-12035
TLcdGML31DirectPositionList and TLcdGML32DirectPositionList did not handle coordinates correctly for non-geodetic references with inverse axis order (i.e. Y-axis, X-axis).

Bug fixLuciadFusion

LCD-12034
TLcdMultilevelGridLayer: you no longer need to override ILcdMultilevelGrid#createGridCoordinate to support grids with more than 5 levels.

Bug fixAdvanced Raster Services

LCD-12032
TLcdECWModelDecoder: fixed a potential JVM crash when attempting to decode a corrupted ECW file.

Bug fixAviation Standards

LCD-12050
The property ILcdDAFIFNavaidFeature#ICAO_CODE was not correctly decoded from DAFIFT navaid data: it received the same value as the ILcdDAFIFNavaidFeature#ICAO_REGION property.

Bug fixDefense Symbology

TLcdNVGGXYPainterProvider: Fixed editing issue with arrow symbols where the arrow direction would be reversed during editing.

Bug fixDefense Symbology

LCD-12122
TLcdNVGGXYLayerFactory: Fixed an editing issue in NVG GXY views where area symbols were painted without edit handles and lost some required styling (Affiliation color, corner roundness, etc).

Bug fixS-63

LCD-12043

Fixed an issue when using an S-63 hardware ID directly using the system property com.luciad.format.s63.encryptedHardwareID or using the call setEncryptedHardwareID. Decoding of the corresponding S-63 cell permits would fail if that ID had a letter in its hexadecimal form, for example 0xA2345.

This did not affect hardware IDs based on Luciad-provided User Permits embedded in the Luciad license.

2021.0.09

ImprovementLuciadFusion

LCD-12005
The TLcdGeoTIFFModelDecoder now supports GeoTIFF files with a photometric interpretation Palette Color that have two bands of type BYTE rather than having a single band. The second band is interpreted as an alpha value.

Bug fixLuciadFusion

LF-2162

LuciadFusion now detects usage of the 'X-Forwarded-Proto' HTTP header to detect if requests were sent to a LuciadFusion instance running behind a HTTPS reverse proxy. The endpointUrl of Service resources will now start with a secure protocol (e.g. HTTPS) when the 'X-Forwarded-Proto' header indicates HTTPS was used. The URI passes to the getEndpointBaseURI method of ILfnServiceTypeConfiguration instances, will similarly use an HTTPS protocol when the 'X-Forwarded-Proto' header indicates HTTPS was used.

Bug fixLuciadFusion

LCD-12028
Fixed the handling of WMS GetFeatureInfo requests for features with a geometry consisting of an extruded shape or a composite curve.

Bug fixAviation Standards

LCD-12019
Fixed an issue that could lead to an AIXM 5.1 airspace aggregation error in a Lightspeed 3D view for airspaces that contain multiple levels of aggregations.

Bug fixAviation Standards

LCD-12018
Fixed an issue that could lead to an AIXM 5.1 airspace aggregation error for airspaces that cross the 0th meridian.

2021.0.08

Bug fixLuciadFusion

LCD-12009
TLcdGXYGeoBufferPainter:
  • Fixed a bug where the buffer width would be edited instead of the shape when trying to translate the first or last axis point of the buffer.
  • The TLcdGXYGeoBufferPainter#getMinimumEditDelta value will now be taken into account before applying edit operations which translate or reshape the buffer outline/axis. This helps prevent accidentally editing the buffer when selecting it.

Bug fixAviation Standards

LCD-12014
Fixed an AIXM 5.1 airspace decoding issue that could cause "Cannot connect arc" warnings for airspaces containing arc and geographical border segments.

Bug fixAviation Standards

LCD-12012
Fixed a geometry edge case in the handling of AIXM 5.1 airspace volumes containing consecutive arcs. This could lead to a self-intersecting airspace geometry, which prevented the use of the airspace in an airspace aggregation.

Bug fixDefense Symbology

LCD-12007
TLspCGRSGridLayerBuilder: fixed an issue where CGRS grid lines were appearing outside of the CGRS grid area.

Bug fixDefense Symbology

LCD-12008
TLspCGRSGridLayerBuilder: fixed CGRS labels which were appearing and disappearing at wrong locations when panning in and out of the CGRS grid area.

2021.0.07

Bug fixLuciadFusion

LCD-12000
Fixed the UnsupportedOperationException that occurred when querying a TLspLayer that contains view-spaced icons with a TLspIconStyle that uses orientation.

Bug fixLuciadFusion

LCD-11994
TLspRadarVideoLayerBuilder: a NegativeArraySizeException could sometimes occur during visualization of a radar.

Bug fixReal-time Engine

LCD-11994
TLspRadarVideoLayerBuilder: a NegativeArraySizeException could sometimes occur during visualization of a radar.

2021.0.06

ImprovementLuciadFusion

You can now connect to OpenStreetMap tile services providing imagery data. The article How to load data from an OpenStreetMap tile server describes how to do this. A potential use case is to republish the service as an OGC WM(T)S service.

ImprovementLuciadFusion

To ease connecting to OpenStreetMap tile services, a new sample decoder samples.earth.decoder.osm.OpenStreetMapModelDecoder as well as layer factories for GXY (samples.earth.decoder.osm.OpenStreetMapLayerFactory) and Lightspeed maps (samples.lightspeed.decoder.osm.OpenStreetMapLayerFactory) have been added. The articles Visualize OpenStreetMap raster tiles data on a GXY map and Visualize OpenStreetMap raster tiles data on a Lightspeed map provide more information about their usage.

ImprovementLuciadFusion

LCD-11911
The maven sample project has been expanded. The sample project is now able to work with release which have a deployment license. The sample project will now come with a ProGuard configuration and a packaging configuration that creates production ready artifacts.

Bug fixLuciadFusion

LCD-11996
Reduced memory usage of rounded shapes created by TLcdShapeUtil and of military symbols with rounded lines in the Military Symbology module.

2021.0.05

New featureDefense Symbology

The new TLspCGRSGridLayerBuilder allows visualizing Common Grid Reference System (CGRS) grid data. This is demonstrated in the new military grid sample in the samples.lightspeed.grid.military package.
CGRS keypads
A CGRS grid where each cell is split into 10-minute keypads

Bug fixLuciadFusion

LF-2152
Fixed an issue where the LuciadFusion installer would install 2 versions of the PostgreSQL JDBC driver (version 42.0.0 and 42.2.19). When LuciadFusion uses the older version (42.0.0) of the driver, this could result in an "authentication type is not supported" error on startup if LuciadFusion Studio was configured to use a PostgreSQL database that uses scram-sha-256 for password authentication. Only the newer version (42.2.19) of the PostgreSQL JDBC driver has support for scram-sha-256 password authentication. The older version will no longer be installed.

Bug fixLuciadFusion

LCD-11993
TLspXYGridLayerBuilder didn't work correctly when creating a layer with only horizontal or only vertical lines. On certain zoom levels, lines would not be displayed or would be cut off at the wrong location.

Bug fixLuciadFusion

LCD-11978
To increase compatibility, the TLcdE57ModelDecoder will no longer enforce the presence of the isAtomicClockReferenced element. Although this element is mandatory, some data may not have it.

Bug fixLuciadFusion

LCD-11988
The TLspSelectController could forward null events to its chained controller in some cases.

Bug fixLuciadFusion

LF-2154
Fixed an issue that prevented loading the REST API console or documentation page when deploying LuciadFusion in Tomcat. The context path was not taken into account when fetching the REST API specification, which is needed to load the content of those pages.

Bug fixDefense Symbology

LCD-11987
Setting a forced color incorrectly introduced a fill in case of unfilled icon symbols.

Bug fixDefense Symbology

LCD-11933
Fixed an issue where symbols with a Headquarters (HQ) echelon, that are painted without Headquarters Staff Indicator, were anchored incorrectly. These symbols will now always be anchored in the center of the icon.

Upgrade considerationLuciadFusion

The CGRS and GARS GXY grid sample code has moved to the Defense Symbology component. It is showcased as a dedicated sample in the samples.gxy.grid.military package.

2021.0.04

ImprovementLuciadFusion

Scale-dependent stylers created by TLspScaleBasedStylerBuilder are now instances of the newly introduced class TLspScaleBasedStyler. This class allows to inspect the configured stylers and their scale ranges for easy reuse.

ImprovementLuciadFusion

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.

ImprovementLuciadFusion

LF-2110
Added support for spatially filtering services when using a CSW service. The spatial geometry of a service that is used while querying is a spatial union of the bounding boxes of the products in this service.

ImprovementLuciadFusion

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

Bug fixLuciadFusion

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

Bug fixLuciadFusion

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 fixLuciadFusion

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

Bug fixLuciadFusion

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

Bug fixLuciadFusion

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

Bug fixLuciadFusion

LF-2149
Removed spatial indices for Oracle databases that were added in a previous patch release of LuciadFusion (2020.1.31), since this leads to some spatial queries to produce incorrect results. If you did not have this patch installed, the spatial indices were not added and therefore no changes are needed on the database schema

Bug fixLuciadFusion

LCD-11979
TLspComplexStrokedLineStyle: fixed errors that could lead to redundant compilation of shader programs when using multiple style instances that are actually equal.

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.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 fixLuciadFusion

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.

Bug fixLuciadFusion

LF-2108
Added support for spatial filter operations when using a CSW service with an Oracle database. Previously, this resulted in a NullPointerException. The CSW capabilities have also been updated to better reflect which spatial filter operations are possible.

Bug fixLuciadFusion

LF-2137
Fixed an issue in the LuciadFusion Studio frontend that prevented users from being able to remove a service from the service list page, when a text search filter was active.

2021.0.02

ImprovementLuciadFusion

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.

ImprovementLuciadFusion

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 fixLuciadFusion

LF-2130
Fixed an issue where the OGC 3D Tiles service could not be created from E57 data containing point cloud data.

Bug fixLuciadFusion

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

Bug fixLuciadFusion

LF-2093
Fixed an issue that prevented uploaded files from being deleted from disk when removing data in LuciadFusion Studio. This could cause removed data to reappear after uploading new files to LuciadFusion Studio.

Bug fixLuciadFusion

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.

2021.0.01

ImprovementLuciadFusion

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

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 fixLuciadFusion

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 fixLuciadFusion

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 fixLuciadFusion

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 fixLuciadFusion

LF-2115
Fixed an issue that caused no intermediate progress to be reported for crawl jobs.

Bug fixLuciadFusion

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

Bug fixLuciadFusion

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

Bug fixLuciadFusion

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

Bug fixLuciadFusion

LF-2120
Fixed an issue that could cause styles to be duplicated when crawling if deleted file was detection enabled on the crawl job.

Bug fixLuciadFusion

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

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 featureLuciadFusion

The WMTS service now supports KVP GetFeatureInfo requests. The GetFeatureInfo response is always in GeoJSON format. The GetFeatureInfo operation is listed in the operations metadata of the capabilities and the supported info format is listed for all layers.

New featureLuciadFusion

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 featureLuciadFusion

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 featureLuciadFusion

You can now add custom service types to LuciadFusion. Adding a custom service type allows you to serve geospatial data managed in LuciadFusion Studio using a custom protocol. As a result, you gain access to a vast range of options for getting your data to clients. Custom service types can be used in addition to the built-in service types such as WMS, WFS, OGC 3D Tiles, etc.

Take a look at the com.luciad.fusion.platform.services.configuration package on how to get started with adding a custom service type. The classes in the com.luciad.fusion.platform.repository package contain the repositories necessary to access services, products, data from your custom service endpoint. There is also a detailed tutorial on how to add a custom service type to LuciadFusion.

New featureLuciadFusion

Maven POM files are now provided for LuciadFusion releases. There are Maven POM files available for each product tier (Essential, Advanced, Pro), which depend on all non-optional components of their respective tiers. In addition there are maven POM files for each optional component for each tier.

The product tier POM dependencies are:

Group ID Artifact ID
com.luciad luciadfusion_essential
com.luciad luciadfusion_advanced
com.luciad luciadfusion_pro

The optional component POM dependencies are:

Group ID Artifact ID
com.luciad luciadfusion_database_connectors
com.luciad luciadfusion_google_earth_enterprise
com.luciad luciadfusion_graph_and_routing_engine
com.luciad luciadfusion_terrain_analysis_engine
com.luciad luciadfusion_weather_environment_standards
com.luciad luciadfusion_aviation_standards
com.luciad luciadfusion_infrastructure_standards
com.luciad luciadfusion_maritime_standards
com.luciad luciadfusion_defense_standards
com.luciad luciadfusion_radar_connectors
com.luciad luciadfusion_s63
com.luciad luciadfusion_defense_symbology

New featureLuciadFusion

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 featureLuciadFusion

LuciadFusion Studio now includes an HSPC service type. This service can be used to serve Hexagon Smart Point Cloud (HSPC) data.

New featureLuciadFusion

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 Services

LuciadFusion Studio now includes an ECWP service type. This service can be used to serve ECW and JPEG2000 data.

New featureAdvanced Raster Services

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.

ImprovementLuciadFusion

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").

ImprovementLuciadFusion

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

ImprovementLuciadFusion

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

ImprovementLuciadFusion

The service resource in the LuciadFusion Studio REST api now has a new property service.endpointUrl. This property contains a url that clients can use to connect to the service.

ImprovementLuciadFusion

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.

ImprovementLuciadFusion

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.

ImprovementLuciadFusion

LF-1378
Crawl jobs can now be configured to recrawl all files, even it seems like they haven't changed since the last successful crawl. This can be enabled by setting the crawl job property forceRecrawlFiles to true using the REST API or changing the 'Force Recrawl Files' option of a crawl job to 'Enable' in the web interface. Enable this feature when noticing that some files have changed, but are not being processed again. Note that reprocessing all files will impact time to completion.

ImprovementLuciadFusion

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.

ImprovementLuciadFusion

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.

ImprovementLuciadFusion

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.

ImprovementLuciadFusion

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.

ImprovementLuciadFusion

LF-1511
The background data used in the map preview can now be set to any valid geospatial data. It is no longer required that the data needs to be crawled, uploaded or added to Studio as Data for it to be used as background data. To change the map preview background data in the Studio web application, go to Settings -> Map Preview and set the file path for the data you want to use a background data.

ImprovementLuciadFusion

LF-1481
LuciadFusion will now automatically combine NetCDF data sources that are related into a single Data item instead of having a Data item for every source. For example, a NetCDF file with both u- and v-wind components were previously added as separate Data items, and are now combined into a single Data item. Note this will only happen for newly crawled, uploaded, or added NetCDF data.

ImprovementTerrain Analysis Engine

The TEA sample service has been updated to make use of the LuciadFusion API to add additional service types. TEA services can now be created within LuciadFusion Studio like all other services. This means that the data in a TEA service no longer needs to be configured in a configuration file, but instead uses data available within LuciadFusion Studio.

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 fixLuciadFusion

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.

Bug fixLuciadFusion

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 fixLuciadFusion

LF-1556
Failed or skipped files will be retried when recrawling. For example, a SHP file may fail to be processed due to a missing REF file. When adding the missing REF file and recrawling the files, the SHP file will be processed again.

Bug fixAdvanced Raster Services

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

Bug fixAdvanced Raster Services

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

Upgrade considerationLuciadFusion

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

Upgrade considerationLuciadFusion

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 considerationLuciadFusion

The property service.endpointPath of the service resource in the LuciadFusion Studio REST api has been deprecated. We recommended to use the new property service.endpointUrl instead.

Upgrade considerationLuciadFusion

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 considerationLuciadFusion

LF-1813

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

Upgrade considerationLuciadFusion

Upgraded the JDBC drivers to version 42.2.19. PostgreSQL 13 is now supported as a database for LuciadFusion Studio. 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 considerationLuciadFusion

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 considerationLuciadFusion

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 considerationLuciadFusion

Some Spring Boot Cloud dependencies have been upgraded from the Milestone version (2.1.0.M1) to the release version (2.1.0.RELEASE). Because of this change we needed to upgrade some of the transitive dependencies of the Spring Boot Cloud dependencies. Here is an overview of the dependency changes:
Group ID Artifact ID Old Version New Version
org.springframework.cloud spring-cloud-netflix-archaius 2.1.0.M1 2.1.0.RELEASE
org.springframework.cloud spring-cloud-starter-netflix-hystrix 2.1.0.M1 2.1.0.RELEASE
org.springframework.cloud spring-cloud-netflix-eureka-server 2.1.0.M1 2.1.0.RELEASE
org.springframework.cloud spring-cloud-netflix-zuul 2.1.0.M1 2.1.0.RELEASE
org.springframework.cloud spring-cloud-starter 2.1.0.M1 2.1.0.RELEASE
org.springframework.cloud spring-cloud-starter-netflix-zuul 2.1.0.M1 2.1.0.RELEASE
org.springframework.cloud spring-cloud-netflix-hystrix N/A 2.1.0.RELEASE
org.springframework.cloud spring-cloud-context 2.1.0.M1 2.1.0.RELEASE
org.springframework.cloud spring-cloud-netflix-ribbon 2.1.0.M1 2.1.0.RELEASE
org.springframework.cloud spring-cloud-commons 2.1.0.M1 2.1.0.RELEASE
org.springframework.cloud spring-cloud-starter-netflix-ribbon 2.1.0.M1 2.1.0.RELEASE
org.springframework.cloud spring-cloud-netflix-eureka-client 2.1.0.M1 2.1.0.RELEASE
org.springframework.boot spring-boot-starter-actuator 2.1.0.RELEASE 2.1.2.RELEASE
org.springframework.boot spring-boot-actuator-autoconfigure 2.1.0.RELEASE 2.1.2.RELEASE
org.springframework.boot spring-boot-starter 2.1.0.RELEASE 2.1.2.RELEASE
org.springframework.boot spring-boot-autoconfigure 2.1.0.RELEASE 2.1.2.RELEASE
org.springframework.boot spring-boot-starter-web 2.1.0.RELEASE 2.1.2.RELEASE
org.springframework.boot spring-boot-starter-aop 2.1.0.RELEASE 2.1.2.RELEASE
org.springframework.boot spring-boot-starter-freemarker 2.1.0.RELEASE 2.1.2.RELEASE
org.springframework.boot spring-boot-starter-json 2.1.0.RELEASE 2.1.2.RELEASE
org.springframework spring-boot-starter-jdbc N/A 2.1.2.RELEASE
org.springframework.boot spring-boot 2.1.0.RELEASE 2.1.2.RELEASE
org.springframework.boot spring-boot-actuator 2.1.0.RELEASE 2.1.2.RELEASE
org.springframework.boot spring-boot-starter-logging 2.1.0.RELEASE 2.1.2.RELEASE
org.springframework spring-context-support 5.1.2.RELEASE 5.1.4.RELEASE
org.springframework spring-webmvc 5.1.2.RELEASE 5.1.4.RELEASE
org.springframework spring-aop 5.1.2.RELEASE 5.1.4.RELEASE
org.springframework spring-beans 5.1.2.RELEASE 5.1.4.RELEASE
org.springframework spring-context 5.1.2.RELEASE 5.1.4.RELEASE
org.springframework spring-core 5.1.2.RELEASE 5.1.4.RELEASE
org.springframework spring-expression 5.1.2.RELEASE 5.1.4.RELEASE
org.springframework spring-web 5.1.2.RELEASE 5.1.4.RELEASE
org.springframework spring-tx 5.1.2.RELEASE 5.1.4.RELEASE
org.springframework spring-jdbc 5.1.2.RELEASE 5.1.4.RELEASE
org.hibernate.validator hibernate-validator 6.0.13.Final 6.0.14.Final
com.netflix.eureka eureka-client 1.9.3 1.9.8
com.netflix.eureka eureka-core 1.9.3 1.9.8
com.netflix.hystrix chystrix-core 1.5.12 1.5.18
com.netflix.hystrix hystrix-javanica 1.5.12 1.5.18
com.netflix.hystrix hystrix-metrics-event-stream 1.5.12 1.5.18
com.netflix.hystrix hystrix-serialization 1.5.12 1.5.18
com.netflix.ribbon ribbon-transport 2.2.5 2.3.0
com.netflix.ribbon ribbon 2.2.5 2.3.0
com.netflix.ribbon ribbon-core 2.2.5 2.3.0
com.netflix.ribbon ribbon-httpclient 2.2.5 2.3.0
com.netflix.ribbon ribbon-loadbalancer 2.2.5 2.3.0
com.fasterxml.jackson.dataformat jackson-dataformat-xml 2.9.7 2.9.8
com.fasterxml.jackson.dataformat jackson-dataformat-cbor 2.9.7 2.9.8
com.fasterxml.jackson.datatype jackson-dataformat-jsr310 2.9.7 2.9.8
com.fasterxml.jackson.datatype jackson-dataformat-jdk8 2.9.7 2.9.8
com.fasterxml.jackson.module jackson-module-jaxb-annotations 2.9.7 2.9.8
com.fasterxml.jackson.module jackson-module-afterburner 2.9.7 2.9.8
com.fasterxml.jackson.module jackson-module-parameter-names 2.9.7 2.9.8
io.micrometer micrometer-core 2.9.7 2.9.8
org.aspectj aspectjweaver 1.9.1 1.9.2

Upgrade considerationLuciadFusion

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 considerationLuciadFusion

LF-2068
Database schema change: a column was added to the Studio database to store the option to force recrawl files (see LF-1378).

Upgrade considerationLuciadFusion

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 Services

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 Services

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 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.

2020.1

2020.1.25

ImprovementLuciadFusion

LCD-11866
Support has been added for an OGC strTrim function in TLcdOGCVendorSpecificFunctions that can trim a String property. This function can be used when querying a model (see ILcdModel#query), when creating an OGC Filter or when creating an SLD style.

ImprovementLuciadFusion

LCD-9858
Support has been added for an OGC Recode function in TLcdOGCVendorSpecificFunctions that can transform a property value to another value. The intended use case is to define an SLD styling property as a function of the contents of a data property. For example, an SLD polygon fill style can be defined that uses a Recode function to map property values to fill colors.

Bug fixLuciadFusion

LCD-11880
When decoding a DTED directory using the TLcdDTEDDirectoryModelDecoder and disposing the model would result in not being able to delete the DTED folder right after. Some resources used within the decoder were not promptly closed after usage.

Bug fixLuciadFusion

LCD-11874
Layers created with TLspXYGridLayerBuilder using a TLcdCartesianReference didn't work correctly, nothing was painted.

Bug fixLuciadFusion

LCD-11770
TLcdSHPModelDecoder now prints a warning when it fails to parse a number property.

Bug fixLuciadFusion

LCD-11873
ALcdCompassNavigationControl: fixed a small inconsistency between the visual highlighting of the compass elements and their actual priorities when receiving mouse events.

Bug fixLuciadFusion

LCD-11862
TLspPlotLayerBuilder: fixed a deadlock that could occur in a plot layer when model changes were fired.

Bug fixLuciadFusion

LCD-11677
TLfnClientFactory.createLTSClient now sanitizes the provided LTS URL by removing request parameters reserved by the LTS protocol. This avoids requests with duplicate LTS request parameters, which can lead to request handling errors in a LuciadFusion server.

Bug fixLuciadFusion

LCD-11860

The caching in the WMS server now takes additional request parameters into account for generated images.

There is also the possibility to configure which additional request parameters must be taken into account when trying to reuse views from the view pool. This is only intended for the case where you have extended the WMS server with one or more non-standard parameters that affect the layer creation.

Bug fixDefense Symbology

LCD-11867
TLcdMS2525bGXYEditorProvider/TLcdAPP6AGXYEditorProvider: Fixed a regression that prevented editing of buffer-like shapes.

2020.1.24

ImprovementLuciadFusion

LCD-11850
SLD text rendering in GXY / Lightspeed now supports disabling label placement conflict resolution (label decluttering). This can be achieved by configuring an SLD vendor option with name conflictResolution and value false on a TLcdSLDTextSymbolizer.

ImprovementRadar Connectors

LCD-11809
TLcdASTERIXLiveDecoder#decodeBlockSFCT could throw an ArrayIndexOutOfBoundsException in case of an ASTERIX record of which the encoded record length exceeds the actual record length. Such a record is now skipped and logged.

Bug fixLuciadFusion

LCD-11803
Fixed a NullPointerException that could occur in some cases when using a TLcdEarthTerrainElevationProvider on sparse raster data.

Bug fixLuciadFusion

LCD-11795
The WFS server could not handle DescribeFeatureType requests for multiple feature types that share the same namespace.

Bug fixLuciadFusion

LCD-11848
Fixed an issue where calling the refresh on a TLcdDatabaseModel resulted in a connection leak when using a connection pooling JDBC driver, such as the Proxool driver.

Bug fixLuciadFusion

LCD-11799
The XML Schema response to a WFS DescribeFeatureType request affecting multiple feature types now uses a more sensible target namespace (one of the feature types' namespaces) instead of always using http://www.opengis.net/gml.

Bug fixLuciadFusion

LCD-11808
The WFS capabilities now list the feature types' namespaces on the root element, which enhances interoperability with 3rd party WFS clients. Additionally, the feature types's namespace prefixes are now always used instead of an automatically determined prefix.

Bug fixInfrastructure Standards

LCD-11840

Fixed a bug where decoding certain Binz datasets would cause the application to crash with a ClassCastException.

2020.1.23

ImprovementLuciadFusion

LCD-11825
The TLspSwipeController, TLspFlickerController and TLspPortholeController can now be used in a JavaFX view.

ImprovementLuciadFusion

LCD-11843
The detection of using a fall-back reference has improved in the WMS client painting. In case the map reference is Transverse Mercator and the WMS service supports one of the AUTO (Universal) Transverse Mercator codes (AUTO(2):42001 or AUTO(2):42002) they are used as preferred fall-back reference for the GetMap requests.

ImprovementInfrastructure Standards

LCD-11834
The 3D Tiles Processor now is more compatible with the OGC 3D Tiles 1.0 standard. It encodes OGC 3D Tiles with asset version 1.0 as a string instead of as a number. Using number as a version caused some issues with 3rd party software. This has now been fixed. On top of that, the 3D Tiles Processor will now encode 3D tiles using "uri" instead of "url".

Bug fixLuciadFusion

LF-2080
The WFS capabilities did not advertise GeoJSON as supported output format for feature types backed by an Oracle, Informix, IBM Db2 or Microsoft SQL Server database.

Bug fixLuciadFusion

LF-2103
TLcdCSWRecordPropertyRetrieverProvider now supports the {http://www.opengis.net/ows}BoundingBox property.

Bug fixLuciadFusion

LCD-11833
The WCS GetCapabilities response did not include the title in the service identification section in case of WCS 1.1.

Bug fixLuciadFusion

LCD-11822
Rounded point lists that are outside the projection bounds could cause a NullPointerException when rendered in an ILcdGXYView. This has been fixed.

Bug fixLuciadFusion

LCD-11807
TLcdWKTReferenceParser and TLcdEPSGReferenceParser didn't always correctly take a non-zero prime meridian and a different angular unit into account. This could result in:
  • an incorrect prime meridian shift
  • a prime meridian shift that was applied twice
  • incorrect projection parameters

Bug fixLuciadFusion

LCD-11832
The TLcdDEMModelDecoder did not use a custom set ILcdInputStreamFactory everywhere.

Bug fixInfrastructure Standards

LCD-11796
Fixed an issue in TLcd3DTilesProcessorBuilder that would cause missing data and holes in some large datasets.

Bug fixInfrastructure Standards

LCD-11697
Fixed an issue that would cause incorrect textures at simplified levels to be incorrect when dealing with repeating textures, or multiple materials for the same object.

Bug fixInfrastructure Standards

LCD-11298
TLcd3DTilesProcessorBuilder no longer logs long data structures when logging with logging level DEBUG. Previously this would cause the console output to flood, causing performance issues with logging enabled. This was especially an issue when using logback classic with its default settings.

2020.1.22

ImprovementLuciadFusion

LCD-11792
SLD raster rendering in GXY / Lightspeed now supports removing the alpha channel from an image. This can be achieved by configuring an SLD vendor option with name removeAlphaChannel and value true on a TLcdSLDRasterSymbolizer.

ImprovementLuciadFusion

LCD-11798
The EPSG database was updated to the latest version: 10.018.

Bug fixLuciadFusion

LCD-11791
Improved the auto-detection of SLD raster normalization intervals by means of a more accurate histogram operation.

Bug fixLuciadFusion

LCD-11785
The SLD Lightspeed implementation now also takes the optional PerpendicularOffset property into account for icon-based line strokes.

Bug fixLuciadFusion

LCD-11786
The SLD Lightspeed implementation now accurately applies the optional PerpendicularOffset property for solid line strokes.

Bug fixLuciadFusion

LCD-11720
When using setApplyGeoidDatums(true) on TLcdDMEDModelDecoder, TLcdDTEDModelDecoder, or TLcdDTEDDirectoryModelDecoder the geoid values where not applied when accessing the data using the imaging API. It was only applied when using the raster API.

Bug fixLuciadFusion

LCD-11743
The AUTO and AUTO2 reference formatters did not check for the false easting and false northing values to be 0.0 for some of the codes. Also the auto equirectangular code resulted in the projection using spherical formulas but this must be the ellipsoidal formulas.

Bug fixAdvanced Raster Services

LCD-11806
Fixed an issue in TLcdGDALModelDecoder that made it fail to recognize certain .IMG files as containing elevation data.

Bug fixWeather & Environment Standards

LCD-11805
Fixed an issue where world-covering datasets decoded with the TLcdNetCDFModelDecoder could be shifted along the longitude axis.

Bug fixDefense Standards

LCD-11710
TLcdNITFModelDecoder: nested NITF segments (with ALVL>0) are now correctly positioned relative to their parents' position.

Bug fixDefense Standards

LCD-11155
Some fill patterns were incorrectly visualized in an ILcdGXYView when using display scaling.

Bug fixMaritime Standards

LCD-11813
Features with complex strokes were not rendered correctly on macOS. This has been fixed.

2020.1.21

ImprovementLuciadFusion

LCD-11769
TLcdEPSGReferenceParser now uses more precise parameters to transform from S-JTSK to WGS 84. This affects to following codes:
  • EPSG:2065
  • EPSG:4156
  • EPSG:4818
  • EPSG:5221
  • EPSG:5513
  • EPSG:5514

Bug fixLuciadFusion

LCD-11777
Fixed a regression caused by SLD enhancement LCD-11733, resulting in the behavior that an SLD PerpendicularOffset was no longer taken into account for basic line styles in a Lightspeed view.

Bug fixLuciadFusion

LCD-11787
The order of line and polygon symbolizers within an SLD rule was not always respected during rendering in a Lightspeed view.

Bug fixLuciadFusion

TLspLayerTreeNodeCellRenderer did not always correctly calculate its enabled state when using a 3D world reference.

Bug fixLuciadFusion

LCD-11768
When using a world reference with a TLcdLambertConformal projection, geometries were sometimes painted incompletely.

Bug fixLuciadFusion

LCD-11789
TLcdLonLatLine and TLcdLonLatHeightLine didn't have correct bounds. They could either be too small or too large. This has now been aligned with the bounds calculation of TLcdLonLatPolyline and TLcdLonLatHeightPolyline, so they have correct and tight-fitting bounds.

Bug fixInfrastructure Standards

LCD-11778
Fixed an IndexOutOfBoundsException that would occur when processing an OBJ that contained multiple object names.

2020.1.20

ImprovementLuciadFusion

LCD-11733
The SLD Lightspeed implementation now supports adding a gap in pixels at the start and/or end of a line geometry. This capability can be enabled on a TLcdSLDLineSymbolizer by configuring the SLD vendor options with name startGap and endGap. Both take a value in pixels that defines the size of the gap.

ImprovementDefense Symbology

LF-2092
Military symbols can now be retrieved with transparency in the affiliation colors. You can now provide an affiliation color as rgba string, as defined in the CSS standards.

Bug fixLuciadFusion

LF-2089
Fixed an issue with the Panoramics service where cached models were not cleared on product updates.

Bug fixLuciadFusion

LCD-11757
Fixed an issue that prevented decoding GeoPackage files containing a data table with a name that started with a number or contained special characters. This would previously result in an unrecognized token error.

Bug fixLuciadFusion

LCD-11754
TLsp3DIconStyle.ScalingMode.VIEW_SCALING now respects the print feature scale and display scaling.

Bug fixLuciadFusion

LCD-11738
The last ALspController in the controller chain now consumes the JavaFX events after handling them. This solves the issue where tab panes stole the focus of the contained TLspFXView.

Bug fixLuciadFusion

LF-2086
Modified config/application-fusion.production-template.yml autoReloadingOnChange property spacing to assure it is under fusion.studio.webapp.theme to prevent property validation errors.

Bug fixLuciadFusion

LCD-11739
TLcdGXYIconPainter#paint now sets a default Graphics stroke before painting its icon. This avoids unexpected rendering effects caused by stroke changes from other painters.

Bug fixLuciadFusion

LCD-11765
TLcdWFSProxyModel's builder did not accept a feature type name String containing a prefix.

Bug fixLuciadFusion

LCD-11748
Using an SLD raster symbolizer containing both a gray channel selection and a color map did not work for floating point elevation data.

Bug fixLuciadFusion

LF-2089
Fixed an issue with the OGC 3DTiles service where cached models were not cleared on product updates.

Bug fixLuciadFusion

LCD-11767
TLspShapeLayerBuilder: fixed a memory leak that could occur when using a TLspComplexStrokedLineStyle with a text decoration.

Bug fixAdvanced Raster Services

LCD-11762
TLcdGDALModelDecoder left files open even after ILcdModel#dispose was called. As a result, decoded files could not be renamed or removed until the JVM process exited.

2020.1.19

ImprovementLuciadFusion

LCD-11741

Bug fixLuciadFusion

LCD-11745
Fixed a regression that caused the optional SLD geometry functions startPoint and endPoint to be no longer working in GXY views since version 2019.1.01 and beyond.

Bug fixLuciadFusion

LCD-11746
Fixed an issue that prevented the use of multiple SLD geometry functions inside one SLD rule in a Lightspeed view.

2020.1.18

ImprovementLuciadFusion

LCD-11736
TLcdWKTReferenceParser now supports "Australian 1984" (and variants) as alias for AGD84.

Bug fixLuciadFusion

LCD-11737
TLcdOGCModelReferenceFormatter and TLcdCRSReferenceFormatter would incorrectly format references similar to, but different from NAD83 as CRS:83.

Bug fixLuciadFusion

LCD-11734
TLcdEPSGReferenceFormatter: WKT strings using the NAD83 (National Spatial Reference System 2011) datum and without TOWGS84 parameter were incorrectly formatted as an EPSG code using an other NAD83 version.

Bug fixLuciadFusion

LCD-11494
The first record in a ShapeFile written by TLcdShpTiler now starts with record number 1, as prescribed in the shapeFile technical specification. Previously, record numbers would start at 0.

Bug fixAviation Standards

The AIXM 5.1 features AircraftStand, StandMarking and GuidanceLineMarking were not painted on terrain, causing the features to disappear on a 3D view in case terrain data was loaded.

Bug fixAviation Standards

LCD-11732
The decimal part of an AIXM 5.1 vertical distance value that used a comma instead of a dot as decimal separator was ignored.

2020.1.17

Bug fixLuciadFusion

LCD-11729
The tiled WMS proxy painter (TLspTiledWMSProxyPainter) made during initialization a single GetMaprequest to the WMS server on the Event Dispatch Thread (EDT) used for the Lightspeed view. This could make the UI of the application unresponsive. This was only noticeable when using a slow WMS server.

2020.1.15

ImprovementLuciadFusion

LCD-10211
It is now possible to create connections with an SQLite database when also decoding GeoPackage or other sqlite based formats. The sqlite driver used by LuciadLightspeed to decode these sqlite formats no longer conflicts with the regular sqlite driver.

ImprovementLuciadFusion

LCD-11719, LCD-11842
The detection of using a fall-back reference has improved in the WMS client painting. In case the map reference is Mercator it now falls back on Pseudo-Mercator when Mercator is not supported but Pseudo-Mercator is. Vice-verse when the map reference is Pseudo-Mercator falls back on Mercator if needed.

ImprovementLuciadFusion

LCD-11706
Improved the visualization of TLcdLonLatBuffer and TLcdLonLatHeightBuffer on GXY views (using TLcdGXYGeoBufferPainter) and 2D Lightspeed views.

Bug fixLuciadFusion

LCD-11725
TLcdMercator and TLcdPseudoMercator: Fixed an issue where points on the date line were transformed incorrectly.

Bug fixLuciadFusion

LCD-11703
TLspLabelPainter and TLspEditController: fix a few small memory leaks. When removing a domain object from a model, that object could sometimes not be garbage collected.

Bug fixAdvanced Raster Services

Fixed bug where decoding a .sid image with the TLcdMrSIDModelDecoder would eventually produce an image with the wrong colors in a GXY view due to incorrect processing of the alpha channel.

Bug fixAdvanced Raster Services

Fixed a threading issue that could lead to a JVM crash when disposing an ECW model.

Bug fixDefense Standards

LCD-11711
TLcdNITFModelDecoder: nested NITF segments (with ALVL>0) now correctly inherit their parents' reference if they don't define one themselves.

Bug fixMaritime Standards

LCD-11666
Fixed an issue when displaying AML data: in some cases, disjoint edges where connected, causing an incorrect display of lines.

Upgrade considerationDefense Standards

LCD-11716
TLcdNITFModelDecoder.decodeImageBounds now has the display and attachment level of the image segment bounds to decode as additional arguments.

2020.1.13

Bug fixLuciadFusion

Fixed an issue that prevented users from creating more than one instance of TLspExternalView.

Bug fixLuciadFusion

The fallback vector layer factory for GXY views created layers that did not take into account the layer visibility when an out-of-scale red hatching pattern was drawn. This vector layer factory is registered on TLcdServiceLoader with low priority; aligned with TLcdServiceLoader's priority mechanism, it is returned and used when there is no registered layer factory with a higher priority (for instance, a format-specific layer factory) available.

Bug fixLuciadFusion

TLcdCurveConnectorUtil.connectCompositeRing threw an exception when an empty composite ring was supplied.

Bug fixAviation Standards

LCD-11715
The AIXM 5.1 feature ApronMarking was not painted on terrain, causing the feature to disappear on a 3D view in case terrain data was loaded.

2020.1.12

ImprovementLuciadFusion

LCD-11695, LUCY-4921
The TLcdSHPModelEncoder now uses UTF-8 by default for writing DBF files, which supports non-latin text characters as well. It also writes the used charset to a CPG file now.

ImprovementLuciadFusion

LCD-11541
Added new method TLspFXView#getImage. This method returns a snapshot of the view after making sure that it is completely (re-)painted if it was invalidated before.

ImprovementAviation Standards

LCD-11676
The AIXM 5.1 layer factory for GXY views, TLcdAIXM51GXYLayerFactory, now also supports creating layers for model containers that include multiple AIXM 5.1 models. The resulting layer is a layer tree node that includes a layer for each AIXM 5.1 model in the container.

ImprovementInfrastructure Standards

LCD-11580
The 3D Tiles Processing Engine will now automatically fallback to a black color when input textures could not be decoded. Previously this would cause the entire process to abort. Instead an error is logged on the console and the faulty image is replaced with a fallback texture containing a black color.

ImprovementInfrastructure Standards

LCD-11692
The 3D Tiles Processing engine will now automatically pick up material with transparent color and output this in the resulting 3D Tiles dataset. You no longer have to explicitly force it to encode to the png file format.

ImprovementInfrastructure Standards

LCD-11673
TLcdTilesProcessorBuilder#outputPath will now automatically append a file separator if it was not and the end of the output directory string. Previously this would end up with corrupted output datasets.

Bug fixLuciadFusion

LCD-11688
Fixed memory leak in native memory, that was triggered by resizing a TLspSwingView or TLspFXView.

Bug fixLuciadFusion

LCD-11702
The WMS in the OGC server sample samples.ogc.server.StartOGCServices always advertised world bounds for models that were not of type ILcd2DBoundsIndexedModel - which is for example the case for SQLite-based formats such as GeoPackage. The bounds calculation logic has now been improved to be able to advertise accurate bounds in these cases.

Bug fixLuciadFusion

LCD-11698
TLspIconStyle: fixed a NullPointerException that could occur in very rare occasions.

Bug fixLuciadFusion

LCD-11684
Fixed an issue in TLcdGeoPackageModelEncoder that prevented the encoding of vector data with a primary key property that is not of type long.

Bug fixWeather & Environment Standards

LCD-11709
Fixed an exception when trying to visualize some NetCDF data sets. This exception occurred during the creation of a color map when the min and max data values that are estimated for that dataset are equal.

Bug fixAviation Standards

LCD-11693
The style property of an AIXM 5.1 MarkingElement was not taken into account during visualization; this defines whether a line-based marking should be rendered with a solid, dashed or dotted line style.

Bug fixAviation Standards

LCD-11672
Fixed a geometry edge case in the handling of AIXM 5.1 airspace volumes containing one or more segments located at the poles. This could lead to a self-intersecting airspace geometry, which prevented the use of the airspace in an airspace aggregation.

Bug fixDefense Standards

LCD-11687
Fixed an issue where NITF 2.10 files with NBPPBV or NPPBH equal to zero could not be decoded, even if NBPR and NBPC are equal to 1.

Bug fixDefense Symbology

LCD-11698
Fixed issue with the hashcode calculation of Direction of Movement arrow icons in that could cause NullPointerException when painting icons in Lightspeed views.

Bug fixInfrastructure Standards

LCD-11595
Fixed an issue in 3D Tiles Processing Engine that would prevent OBJ files from being encoded in temporary cache files coming from multiple sources. This fixes the "Mesh can only have one source path" exceptions thrown when processing large input dataset with many input OBJ files at close proximity.

Bug fixMaritime Standards

LCD-11690
Changed the display name of the TLcdS52DisplaySettingssafetyContour property to Safety contour. It used to be incorrectly labeled Shallow contour.

Bug fixMaritime Standards

LCD-11707
Fixed an issue with selecting S57 area icons in the GXY view. If the icons were anchored, or a-symmetrical, they were difficult to select.

2020.1.11

ImprovementDefense Symbology

LCD-11665
NVG now accepts xml namespaces with added or missing trailing slashes in the URI of the xmlns attribute. For example, the Dublin-Core metadata namespace should be defined as xmlns:dc="http://purl.org/dc/elements/1.1/", but we now also accept xmlns:dc="http://purl.org/dc/elements/1.1".

Bug fixLuciadFusion

LCD-11681
The use of an SLD text symbolizer for raster data was not supported in GXY views.

Bug fixLuciadFusion

LF-2073
Improved the performance of recrawling and updating styles or data that are used in a lot of products.

Bug fixLuciadFusion

LCD-11669
The creation of a property-based OGC filter condition through TLcdOGCFilterFactory.property failed in case of subsequents calls for both GML 2 and GML 3.1 properties. This could cause errors when trying to load and visualize both GML 2 and GML 3.1 data on a map.

Bug fixAviation Standards

LCD-11671
Fixed a geometry edge case in the handling of AIXM 5.1 airspace volumes containing one or more segments based on a geographical border. This could lead to a self-intersecting airspace geometry, which prevented the use of the airspace in an airspace aggregation.

Bug fixDefense Symbology

LCD-11664
Fixed issue where a point list was cast to a com.luciad.symbology.app6a.model.ILcdRestrictedLengthPointList instead of a com.luciad.symbology.milstd2525b.model.ILcdRestrictedLengthPointList in TLcdEditableMS2525bObject.

Bug fixDefense Symbology

LCD-11670
Fixed the spelling of the security.classification metadata tag (was security.classifcation).

2020.1.10

ImprovementLuciadFusion

LF-2066
Improved speed of data search requests.

ImprovementLuciadFusion

LCD-11650
It is now possible to customize the maximum length of a HTTP GET request sent by the OGC clients, by means of the System property com.luciad.ogc.ows.model.TLcdOWSHttpTransport.maxGetQueryLength. This is mainly relevant for the WMS and WFS clients, which can generate large requests. When the maximum length is reached (default is 2048 characters), a HTTP POST query is used instead if supported by the server. Adjusting the maximum length can be useful to improve interoperability with servers that do not support HTTP POST.

Bug fixLuciadFusion

LCD-11651
The WMS layer name included in the metadata of each feature in a GeoJSON GetFeatureInfo response was not correct in case the WMS layer combined multiple data sources.

Bug fixLuciadFusion

LCD-11661
Fixed an issue where the undo functionality wouldn't work correctly after modifying a polyline or polygon that was created using a continuous drag motion.

Bug fixLuciadFusion

LUCY-4915
The BlackLime Look and Feel used by Lucy Map Centric and a few samples did not link Copy/Paste behavior to Ctrl+c/v on some platforms.

Bug fixLuciadFusion

LF-2069
Setting the resource metadata on a TLcdModelMetadata.Builder object no longer clears the data categories if the resource metadata doesn't contain any.

Bug fixLuciadFusion

LF-2069
Fixed an issue that prevented point cloud or mesh data to be added to an OGC 3D Tiles service if an ISO metadata file was placed alongside the data when it was crawled/added to LuciadFusion.

2020.1.09

Bug fixLuciadFusion

LCD-11645
TLspIconStyle: fixed a NullPointerException that could occur in very rare occasions.

Bug fixAviation Standards

LCD-11648
The ARINC decoder TLcdARINCModelDecoder did not decode the Restrictive Airspace property TLcdARINCRestrictiveAirspaceDataProperties.CYCLE_DATE.

Bug fixDefense Symbology

LCD-11646
Fixed an issue in GXY views that could cause a performance regression when configuring a default style for every military object.

2020.1.08

Bug fixLuciadFusion

LCD-11604
Fixed UnsupportedOperationException in ILcdGL#glGetActiveUniform().

Bug fixLuciadFusion

LF-2054
Fixed an issue where a connection was being held longer than necessary when deleting a data root. This could case LuciadFusion to run out of database connections under higher load.

Bug fixLuciadFusion

LCD-11629
The optional gap value specified on an SLD graphic stroke was not properly taken into account in GXY views: it was not used if there was no initial gap configured as well and a stroke's graphic was painted less frequent than possible.

Bug fixLuciadFusion

LCD-11630
TLspLayer#query: when performing queries on a layer from multiple threads a NullPointerException could occur.

Bug fixAdvanced Raster Services

LCD-11635
Fixed issue where encoding panoramas with TLcdLuciadPanoramaModelEncoder failed if a ILcdOGCFeatureIDRetriever was provided.

Bug fixDefense Symbology

LCD-11621
Fixed an issue in GXY views that caused the configured halo style to be ignored for polygon symbols.

2020.1.07

Bug fixLuciadFusion

LF-2048
Fixed an issue where serving mesh data in an ogc 3D tiles service could result in 404 responses when fetching the b3dm files.

Bug fixLuciadFusion

LF-2058
Fixed an issue where the metadata of a composite dataset could become incorrect after it was updated and crawled. Crawling composite datasets will now be faster initially, but can be slower when recrawling.

Bug fixLuciadFusion

LCD-11470
TLspComplexStrokedLineStyle: when anti-aliasing is enabled it could occur that some pixels on a line were missing near corners.

Bug fixS-63

LCD-11617

Fixed an issue where S-63 catalogs were not recognized, and decoded as S-57 catalogs instead, resulting in low-level errors.

This happened when an S-63 catalog had entries for cells (.000 files) that were missing on disk.

2020.1.06

ImprovementInfrastructure Standards

LCD-11615

Added the ability to recognize numeric values in feature metadata in Binz datasets.
In the Binz data format, all feature metadata are stored as String values, even if they represent numerical values. If the metadata reader discovers that for a given metadata key, the values for all features represent a number, the metadata for that key will now be decoded as numbers.
By doing this, we make sure that these numerical values are encoded as binary values in OGC 3D Tiles, and can be used in styling expressions in LuciadRIA.

2020.1.05

New featureLuciadFusion

LCD-11601
The TLcdE57ModelDecoder can now decode panoramic imagery from E57 files.

ImprovementLuciadFusion

LCD-11607
A GeoJSON GetFeatureInfo response now includes the layer name for each encoded feature, to ease traceability between selected features and the WMS layer(s) in which they are contained. This layer name is encoded as a foreign member in the GeoJSON output, aligned with the GeoJSON RFC (https://tools.ietf.org/html/rfc7946#section-6).

ImprovementLuciadFusion

LCD-9953
The method TLcdWMSDataSource.Builder.layer has been renamed to TLcdWMSDataSource.Builder.addLayer to be in line with the other addLayer methods. The former method has been deprecated. The documentation for the methods TLcdWMSDataSource.Builder.addLayer now mention that added layers are placed on top of earlier added layers.

ImprovementLuciadFusion

LCD-11331
The display name for fusion coverage models does no longer contain the server name/address. This aligns the display name with other model descriptors which also do not include the server name/address.

ImprovementAviation Standards

LCD-11610
The AIXM 3/4 decoder TLcdAIXMModelDecoder can now also decode stand-alone AIXM-Update files, without requiring to load an AIXM-Snapshot file upfront.

Bug fixLuciadFusion

LCD-11448
Fixed bug where a TLspFXView would sometimes disappear after resizing it.

Bug fixAviation Standards

LCD-11606
Fixed a NullPointerException that could occur when decoding an AIXM-Update file with route segment updates containing a missing start and/or end point.

Bug fixDefense Symbology

Fixed an issue in GXY views that caused the configured symbology style to be ignored when selecting a symbol in an asynchronously rendered layer.

Bug fixDefense Symbology

Fixed an issue that caused TLcdAPP6AGXYLabelPainterProvider and TLcdMS2525bGXYLabelPainterProvider not to take the configured default style into account for some symbols.

2020.1.03

ImprovementLuciadFusion

LCD-11598
TLcdGeoTIFFModelDecoder uses, in non-strict mode, better default values for user defined ellipsoids for which the corresponding GeoTIFF tags are missing. The default values are based on the WGS-84 ellipsoid.

ImprovementDefense Symbology

LCD-11592
The labeling performance of several tactical graphics in a GXY view has been improved significantly.

ImprovementDefense Symbology

LCD-11582
Ensured all Maritime Control Point (Symbol set 25, code 210000) symbols have a Unique Designation label in APP-6D.

ImprovementDefense Symbology

LCD-11582
Ensured all Maritime Control Point (Symbol set 25, code 210000) symbols have a Unique Designation label in MIL-STD 2525D.

ImprovementDefense Symbology

LCD-11531
Point lists passed to TLcdEditableMS2525bObject.set2DEditablePointList and TLcdEditableAPP6AObject.set2DEditablePoint no longer have to implement the ILcdRestrictedLengthPointList or ILcdRestrictedLengthPointList interfaces.

Bug fixLuciadFusion

LF-2041
Fixed an issue that could result in a deadlock when deleting/updating products and services concurrently if an Oracle database was used for LuciadFusion Studio.

Bug fixLuciadFusion

LCD-11602
Fixed a potential deadlock in TLspExternalView when navigating in 3D.

Bug fixLuciadFusion

LCD-11599
Fixed bug in TLcdSHPModelEncoder that caused corrupt ShapeFiles when encoding 3D complex polygons.

Bug fixLuciadFusion

LCD-11593
Fixed a rare race condition when using asynchronous layer wrappers that could trigger a NullPointerException.

Bug fixAdvanced Raster Services

LCD-11577
Fixed an issue where the Luciad Panoramas had visual defects after encoding specific cubemap input images with TLcdLuciadPanoramaModelEncoder.

Bug fixAdvanced Raster Services

LCD-11586
Fixed issue where the TLcdPegasusModelDecoder failed to decode url-based sources on linux.

Bug fixInfrastructure Standards

LCD-11597
Fixed issue that would occur when encoding OBJ files with multiple repeating textures and metadata. Before this would produce errors in the output batch table, causing certain simplified tiles to be missing when visualized.

Upgrade considerationLuciadFusion

LF-2044
The Studio database was missing several indexes for foreign key columns, which could result in issue LF-2041. The creation of these indexes have been added to the set of database changes, and will be added to the Studio database next time you start up LuciadFusion.

2020.1.02

ImprovementLuciadFusion

LCD-11555
The OGC Filter functions startAngle / endAngle and startPoint / endPoint can now be used without arguments inside an SLD style. While they previously required an argument that pointed to the domain object's geometry, these functions can now automatically find the geometry if the argument is left out.

ImprovementLuciadFusion

LCD-11553
Fixed an issue in TLcdOGC3DTilesModelDecoder where data with no byteOffset would not be loaded. That offset now defaults to 0.

Bug fixLuciadFusion

LCD-11563
Fixed an issue where not all connections to a GeoPackage file were closed after disposing a GeoPackage model.

Bug fixLuciadFusion

LF-2037
Fixed an issue that prevented adding 3D Tiles data to an OGC 3D Tiles service if the data was added using the Add Data functionality. This happened if the root tileset of the 3D Tiles data only referenced other json files. Existing OGC 3D Tiles data that couldn't be added to an OGC 3D Tiles service will need to be refreshed (or removed and then added again) before you can add it an OGC 3D Tiles service.

Bug fixLuciadFusion

LCD-11579
TLcdXYGridLayer: the grid origin setting didn't work correctly for grids with non-meter spacings.

Bug fixLuciadFusion

LCD-11579
TLspXYGridLayerBuilder: the grid origin setting didn't work correctly for grids with non-meter spacings.

Bug fixLuciadFusion

LCD-11566
ALcdMeasureProviders created by TLspImageLayerMeasureProviderFactory now properly take the ALcdBandSemantics#getNoDataValue into account. Values equal to the no-data value are not included in the result of ALcdMeasureProvider#retrieveMeasuresAt.

Bug fixLuciadFusion

LCD-9826
TLspPlotLayerBuilder: fixed an issue where a plot layer would fail to paint some of its data after it received a model change event. Note, however, that the change event will still cause the layer to invalidate and recompute all of its cached state. For data that changes frequently, we therefore strongly recommend using TLspShapeLayerBuilder and TLspParameterizedIconStyle.

Bug fixLuciadFusion

LCD-11549
Fixed an issue that prevented TLcdDataSource objects from being decoded by the TLcdGeoPackageModelDecoder.

Bug fixLuciadFusion

LCD-11514
TLspIconStyle: when using multiple TLspIconStyles, only one icon was taken into account for selection. Thus, an object could only be selected by one of the icons it was styled with.

Bug fixAviation Standards

LCD-11547
Fixed the handling of AIXM 5.1 airspace aggregations for airspaces with the following characteristics:
  • Airspaces that crossed the 180th meridian,
  • Airspaces that started with an arc segment.
In both cases, the resulting AIXM 5.1 airspace aggregation could have an incorrect airspace boundary.

Bug fixDefense Symbology

LCD-11557
Fixed issue in Lightspeed views where the arrow stroke of the "Direction of Attack For Feint" symbol was drawn past the arrow tip.

Bug fixDefense Symbology

LCD-11562
Fixed issue where part of the Direction of Movement arrow was not painted in Lightspeed 2D views.

Bug fixDefense Symbology

LCD-11510
The military icon offsets are now also applied in 3D views. The offset can be configured using the methods ILcdMS2525bStyle.setOffset and ILcdAPP6AStyle.setOffset.

Bug fixDefense Symbology

LCD-11544
Fixed issue where MIL-STD-2525 C icon symbols with the 'Joker' affiliation were always painted with a black and white outline instead of a black outline.

2020.1.01

ImprovementAdvanced Raster Services

LCD-11523
Errors while fetching pixel data from an ECW file were silently ignored, which could result in black tiles appearing on the map. This will now result in an IOException instead.

ImprovementInfrastructure Standards

LCD-11532

When decoding Binz data, and no georeference information can be found, the TLcdBinzModelDecoder will use a cartesian reference as fallback. If no reference information can be found next to the input data, the decode method will now load the data in its original, non-georeferenced coordinate system, instead of failing.
Note: Data that is decoded in its original coordinate system, can not be visualized on a geographical map. The dataset must be geo-located with an external tool, after conversion has been done.

ImprovementS-63

LCD-11543
Fixed an issue where cell permit subscription expiry date warnings (SSE 15 and SSE 20) didn't show up when there were cell permits in the old ENC.PMT format. This ENC.PMT file doesn't contain the necessary subscription information, while the PERMIT.TXT does. Now, the permits from the PERMIT.TXT file take precedence over those from the ENC.PMT file.

Bug fixLuciadFusion

LF-2031
Added missing 'Panorama' category to the possible Product types. Additionally, empty products, which were previously categorized as 'Unknown', will now be categorized as 'Empty'. In existing products, these changes will only be apparent upon an update of their product contents.

Bug fixLuciadFusion

LCD-11534
Fixed an issue related to the previous SLD fix LCD-11421, which caused that the SLD graphic size setting was not always taken into account for world-sized SVG icons.

Bug fixLuciadFusion

LF-2034
Fixed an issue in the LuciadFusion Studio CSW server causing a CSW dc:date query to fail.

Bug fixLuciadFusion

TLcdLonLatGeoBuffer#setJoinStyle changed the end cap style. This has been fixed.

Bug fixAviation Standards

LCD-11548
TLcdARINCModelDecoder: fixed a potential NullPointerException that could occur when decoding Start / End data properties within Restrictive Airspace continuation records.

Upgrade considerationLuciadFusion

LF-1964
The http method is now included when http requests to LuciadFusion are logged. Important to note is that the fusion.logback.xml has been updated to use a different logger for requests. Make sure you use the updated logback when upgrading LuciadFusion.

2020.1

New featureLuciadFusion

The LuciadFusion documentation now contains a dedicated section on creating a configuration with multiple servers in a failover and/or load balancing scenario.

Refer to the Multi-node section of the LuciadFusion Platform documentation for detailed instructions.

New featureLuciadFusion

New featureLuciadFusion

Raster layers now support bicubic interpolation, which greatly improves the image quality at high zoom levels. Bicubic filtering is enabled by setting the interpolation type of TLspRasterStyle to ELcdInterpolationType.CUBIC.

New featureLuciadFusion

The LuciadFusion Studio web app now allows users to add Data or Styles directly without the need for the source files to be part of a Data Root. This can be done clicking the ADD DATA or ADD STYLE on the DATA or STYLES page and providing the file path to the source file of the Data or Style. The Data or Style can be updated by clicking the REFRESH button on the detail page of the Data or Style. Data added directly can also be removed by clicking the REMOVE button.

New featureLuciadFusion

LuciadFusion administrators have the option to disable the advanced indexing of data. This may affect the performance of searches in the Studio UI but makes it possible to deploy Studio in multi-node mode. See configuration file fusion.common.yml.

New featureLuciadFusion

The LuciadFusion Studio REST API now allows users to add Data or Styles directly without the need for the source files to be part of a Data Root. This can be done by supplying the path of the source file for the Data or Style to Studio through the REST API. Operations to update and remove Data or styles that were added directly have also been added to the REST API.

More specifically, the following additions have been made to the REST API:

  • POST /api/data: allows Data to be added directly to Studio.
  • POST /api/styles: allows Styles to be added directly to Studio.
  • PUT /api/data/{id}/refresh: allows Data to be updated based on the changes made to the source file(s).
  • PUT /api/styles/{id}/refresh: allows Styles to be updated based on the changes made to the source file.
  • DELETE /api/data/{id}: allows Data to be removed from Studio.
  • DELETE /api/styles/{id}: allows Styles to be removed from Studio.

You can try out these new operations in the API Console, available at /api/console of a running Fusion development server. You can read in more detail about all the operations in the Developer's guide, available at /api/documentation.

Users will notice that adding certain Data directly to LuciadFusion Studio will be much quicker than crawling if the Data consists of many individual files (e.g. OGC 3D Tiles). This is because adding Data directly to LuciadFusion does not require evaluating all individual files.

New featureLuciadFusion

TLcdGeoPackageModelEncoder and TLcdGeoPackageModelDecoder now support the GeoPackage 1.1, 1.2.1, and the 1.3.0 specifications.

New featureLuciadFusion

You can now decode and visualize MBTiles files with image tiles in Lightspeed and GXY views, and LuciadFusion WMS/WMTS services.

For more details, see:

New featureAdvanced Raster Services

Data formats that contain panoramic images can now be decoded and served with LuciadFusion for visualisation in LuciadRIA.

Out-of-the-box, the Luciad products support reading panorama data from from E57 files and Pegasus spherical image tracks.

For unsupported formats, the API provides means to create custom data models. See packages com.luciad.panorama.model and com.luciad.panorama.transformation.

The API provides a way to export any valid panorama model to a standardized CubeMap model. See TLcdLuciadPanoramaModelEncoder for more information. The CubeMap model can be served with LuciadFusion as a Panoramics service.

cubemap
Example of a cubemap created from panoramic image data

For more details, see the Panoramic images reference guide in the documentation.

New featureAdvanced Raster Services

LuciadFusion Studio now includes a Panoramics service. This service can be used to serve panoramic image data. Panoramic image data is automatically preprocessed into the Luciad Panorama Format.

New featureDefense Symbology

All APP-6D symbols are now supported.
APP-6D space debris
The APP-6D symbology now supports all symbols, such as the space debris icons shown here.

ImprovementLuciadFusion

TLcdGXYCompositeCurvePainter now paints the entire composite shape in a single pass, retrieving the TLcdGeneralPath or TLcdAWTPath from the subpainters. This allows better visual results in combination with complex line styles.

ImprovementLuciadFusion

You can now also load image data from E57 files.

To do this you will need the LuciadFusion "Advanced Raster" option.

You cannot use TLcdE57ModelDecoder directly for this. Please refer to the LuciadFusion "Panoramic image data" documentation for details.

ImprovementLuciadFusion

It is now possible to format or parse 2D and 3D TLcdCartesianReference instances as WKT using the TLcdWKTReferenceFormatter or TLcdWKTReferenceParser classes respectively.

ImprovementLuciadFusion

The new class TLcdGARSPointFormat allows easy conversion of GARS strings to lon lat points and vice versa.

ImprovementLuciadFusion

Added ILcdEditableTimeBounds#setToUnion to easily include another time interval in a time bounds object.

ImprovementLuciadFusion

LCD-8112
Improved the way TLcdGeoJsonModelDecoder automatically constructs a TLcdDataModel. It now detects nested properties objects and creates separate data types for them as well.

ImprovementLuciadFusion

To simplify the sample code, some exotic GXY touch samples have been removed (multi-edit, multi-view, multi-user, gestures).

ImprovementLuciadFusion

TLcdGXYStampLabelPainter: deprecated the setGXYInteractiveLabelProvider method to avoid confusion with the TLcdGXYInteractiveLabelsController.

ImprovementLuciadFusion

LCD-10513
Improved compatibility with JDK 9 and higher by removing illegal reflective access calls from the API and sample code.

ImprovementLuciadFusion

LCD-11207
ILcdGXYController now has a getLayered method to add temporary layers to the view. When the controller is active, the layers are painted and the view's label placer takes those layers into account. The TLcdAdvancedMapRulerController now makes use of this if it's not configured to add a measurement layer to the view.

ImprovementAviation Standards

LCD-10738
The model descriptor of decoded AIXM 3/4 models now has a more meaningful display name based on the source of the data, instead of the fixed string "AIXM Data".

ImprovementAviation Standards

LCD-10738
The model descriptor of decoded ARINC models now has a more meaningful display name based on the source of the data, instead of the fixed string "ARINC Data".

ImprovementDefense Symbology

LCD-2941, LCD-9819, LCD-10478, LCD-10658, LCD-10916, LCD-10922, LCD-11186, LCD-11445, LCD-11480
The visualization of several tactical graphics in a GXY view has been improved significantly. The GXY visualization is now more accurate and consistent with the Lightspeed visualization. Rendering performance has been improved as well, especially when zoomed in closely or when using halo rendering.

ImprovementDefense Symbology

TLcdEditableAPP6AObject and TLcdEditableMS2525bObject now expose their buffer width as a modifier when appropriate, similar to the speed and movement direction modifiers.

ImprovementInfrastructure Standards

TLcd3DTilesProcessorBuilder: Added support for metadata when processing OBJ mesh files. This metadata can be used for selection. By default every single OBJ processed by the 3D fusion engine will have a unique id. On top of that, if the OBJ file contains grouping information, every single group will also get a unique id.

The unique id is stored as an integer in the batch table of the produced 3D Tiles dataset.

Next to this, the source file and group name are also stored in the batch table.

ImprovementInfrastructure Standards

Added the ability to customize what metadata ends up in a dataset processed by TLcd3DTilesProcessorBuilder.

Have a look at the ILcd3DTilesProcessorMetadataMapper, which can be implemented using the TLcd3DTilesProcessorBuilder#metadataMapper method.

The details on how to use this are described in the customize metadata guide.

ImprovementInfrastructure Standards

LCD-11385
TLcd3DTilesProcessorBuilder can now preserve mesh borders during mesh simplification. This feature, when activated, improves the visual appearance of low quality LODs with a minor computation cost. Refer to the preserveBorders method for more information.

ImprovementInfrastructure Standards

LCD-11368

TLcd3DTilesProcessorBuilder can now configure the number of vertices and the texture size for individual tiles.

We also decreased the default number of vertices and texture size for enhanced performance. Refer to the verticesPerTile and textureSize methods for more information.

On top of that, we also added an option to automatically drop geometrically complex objects in their entirety on simplified levels. You can find this option in the method TLcd3DTilesProcessorBuilder.dropSmallComplexParts().

ImprovementInfrastructure Standards

TLcd3DTilesProcessorBuilder: improved the Clustering simplification algorithm in terms of speed and visual result.

Bug fixDefense Symbology

LCD-11518
Fixed issue with "Boundaries - Line" symbol where the labels would not be attached on the polyline when zooming in.

Bug fixDefense Symbology

LCD-11355
Disabled the Leadership Indicator modifier for APP-6D Control Measure symbols. This SIDC modifier would operate on the same SIDC position as the Echelon modifier, so having them both enabled would cause unexpected behaviour.

Upgrade considerationLuciadFusion

All date-time properties used in the LuciadFusion Studio REST API now conform to RFC 3339. This means that a date-time property will now include a time-offset. The time-offset will be based on the time zone of the machine that LuciadFusion Studio runs on. If e.g the creationTime of a product was previously 2020-01-01T00:00:00.000 and LuciadFusion Studio is running on a machine in the CET timezone, then the creationTime returned by the REST API is now 2020-01-01T00:00:00.000+01:00. A creationTime that was previously 2020-08-01T00:00:00.000 will now return 2020-08-01T00:00:00.000+02:00 on that same machine.

Upgrade considerationLuciadFusion

LCD-11352
The Jaxen and Batik libraries have been upgraded to version 1.2.0 and 1.11, respectively. This improves compatibility with JDK 11.

Upgrade considerationLuciadFusion

The optional ArcSDE component has been removed from the Tiling Engine module as it has been discontinued by Esri as of ArcGSI 10.3. Consequently, ArcSDE data sources can no longer be preprocessed using Tiling Engine.

Upgrade considerationLuciadFusion

The optional ArcSDE component (com.luciad.format.arcsde) has been removed from the product after being deprecated since the 2016.0 release.

This component provided support for visualize data from an ESRI ArcSDE. However ArcSDE has been discontinued by Esri as of ArcGIS 10.3 in 2015, and you cannot buy it anymore.

As we're not aware of any customers using ArcSDE anymore, we removed it from all our products including LuciadFusion and Lucy. Consult the release notes of those products for more details.

Upgrade considerationLuciadFusion

The SQLite library has been updated to version 3.31.1.

Upgrade considerationLuciadFusion

The library libgpkg has been updated to version 1.0.1 to support newer versions of the GeoPackage specification.

Upgrade considerationAdvanced Raster Services

LCD-11435, LCD-11437
The third-party library 'GDAL' was updated to version 3.1.2 and has its PDF driver enabled. With this update, the TLcdGDALModelDecoder can now decode Geospatial PDF files. This is not supported on Linux 32-bit platforms, or Linux distributions that still use the old ABI (such as RHEL 7).

Upgrade considerationDefense Symbology

LCD-11404
The following Military Symbology classes have been removed:
  • ALcdMS2525bIconProvider
  • TLcdMS2525bIconProvider
  • TLcdMS2525bSelectionIconProvider
  • TLcdEditableMS2525bUnitCustomizer
  • TLcdEditableMS2525bUnitBeanInfo
  • ALcdMS2525bModifier
  • TLcdMS2525bAffiliationModifier
  • TLcdMS2525bCountryModifier
  • TLcdMS2525bEchelonModifier
  • TLcdMS2525bMobilityEquipmentModifier
  • TLcdMS2525bOrderOfBattleModifier
  • TLcdMS2525bStatusModifier
  • TLcdTextModifiersPanel
  • TLcdMS2525bGXYLayerFactory
  • TLcdMS2525bUnitIconPainterEditor
  • TLcdMS2525bUnitNewControllerModel
These API classes have been deprecated for more than a decade and have not been maintained since.

2020.0

2020.0.16

ImprovementLuciadFusion

LCD-11493
GXY XY grids can now also define the origin of the grid: the point at which the grid has coordinate (0.0, 0.0). See TLcdXYGridStyle.Builder#origin

ImprovementLuciadFusion

LCD-11493
Lightspeed XY grids can now also define the origin of the grid: the point at which the grid has coordinate (0.0, 0.0). See TLspXYGridStyle.Builder#origin

ImprovementLuciadFusion

LCD-11507
The KML label styler no longer processes TLcdKML22Placemark objects without a name. This will improve performance for files with many placemarks.

ImprovementLuciadFusion

LCD-11492
The construction of an evaluator for a TLcdOGCFilter contained some expensive log, error and debug messages that were always created, even when they were not logged. This has a negative impact on the performance. Those expensive calls are now only done when the resulting message is actually used.

ImprovementAviation Standards

LCD-9619
TLcdAIXM51ModelDecoder now supports decoding AIXM 5.1.1 data.

ImprovementAviation Standards

LCD-11481
The heights of the sectors of an AIXM 5.1 SafeAltitudeArea feature now use the CircleSector's height as fallback if the obstacle height information is missing.

ImprovementInfrastructure Standards

LCD-11351
Transparent textures now keep their transparency info in the output OGC 3D Tiles dataset. Previously the transparent pixels would be rendered against a white background. Now the rendering can be configured specifically in a client. Note: Make sure that if you want to preserve transparent textures, you set TLcd3DTilesProcessorBuilder.forcePNGEncoding() to true.

ImprovementInfrastructure Standards

LCD-11499
Added a safeguard to prevent a StackOverflowError from occuring when a very large number of points maps to the exact same location. We now cap the depth of our spatial acceleration structure, and log a warning when to many levels have been created. This usually indicates a problem with the data.

Bug fixLuciadFusion

LF-2018
Fixed the ClassNotFoundException exceptions that would occur when running the application or processing a point cloud data after LuciadFusion was obfuscated using the deployment script.

Bug fixLuciadFusion

LCD-11516
Fixed the issue where using touch in a 3D JavaFX view to create a polyline by dragging your finger on the screen would cause a nullpointer issue.

Bug fixLuciadFusion

LCD-11496
Exceptions thrown by controllers used in TLspFXView are now catched and logged by the view. Because of a bug in the JDK (JDK-8199673), the internal state of JavaFX could break when errors where thrown in event handlers. This sometimes occured when using touch controllers.

Bug fixLuciadFusion

LCD-11524
TLcdGXYRoundedPointListPainter: fixed a sensitivity problem when trying to insert a new point on a segment.

Bug fixLuciadFusion

LCD-11502
OGC filters: the performance regression when creating an evaluator for a filter (introduced by the enhancement LCD-11278) is now fixed.

Bug fixLuciadFusion

LCD-11500
When using the TLspTouchNavigateController without enabling combined gestures, rotating the map in 2D could feel choppy.

Bug fixAviation Standards

LCD-11491
The angles of the sectors of an AIXM 5.1 SafeAltitudeArea feature were not correctly interpreted in case of an angle direction towards the center, a counterclockwise arc direction and/or angles defined against the magnetic north; this could lead to incorrectly placed angle labels.

Bug fixDefense Symbology

LCD-11475
Fixed the label positions of several Meteorological line symbols in APP-6C, APP-6D and MIL-STD 2525D when painted in a GXY view.

Bug fixRadar Connectors

LCD-11490
TLcdASTERIXLiveDecoder#decodeBlockSFCT could throw an ArrayIndexOutOfBoundsException in case of an ASTERIX data block that defines a zero length. A zero length is now interpreted as the end of the data stream.

2020.0.15

ImprovementLuciadFusion

LF-1905
The Redoc library is now included with LuciadFusion which makes it possible to view the REST API Developer Guide without an internet connection.

ImprovementLuciadFusion

LCD-11488
Fixed an issue in the OGC 3DTiles encoding where references to the same texture would be duplicated, resulting in above necessary memory usage.

Bug fixLuciadFusion

LUCY-4900
Fixed issue where the TLspSelectController would not handle a mouse release event correctly after it consumed the event.

Bug fixLuciadFusion

LCD-11484
TLcdComplexPolygonContourFinder et al. now perform proper geodetic interpolation between points if necessary. This fixes issues with contour finding on data that crosses the date line or lies close to the poles.

Bug fixLuciadFusion

LCD-11489
TLcdGXYNewController2, TLcdAdvancedMapRulerController, and ALcdGXYSmartController did not remove their actions from the view's ActionMap.

Bug fixLuciadFusion

LCD-11479
TLspLabelPainter: labels that are updated often would sometimes disappear temporarily.

Bug fixLuciadFusion

LCD-11482
Calling TLspLonLatGridLayerBuilder#model caused the spacingRange settings to be ignored.

Bug fixWeather & Environment Standards

LCD-11485
TLcdGRIBModelDecoder sometimes couldn't decode GRIB files with longitude bounds of [0, 360]

Bug fixWeather & Environment Standards

LCD-11485
TLcdNetCDFModelDecoder sometimes couldn't decode GRIB files with longitude bounds of [0, 360]

2020.0.14

Bug fixLuciadFusion

LF-2011
Fixed an issue that prevented the values for Heap used and Nonheap used to be drawn in the graphs on the status page.

Bug fixAviation Standards

LCD-11468
Fixed the handling of AIXM 5.1 SafeAltitudeArea features with a sector centre point referring to another AIXM 5.1 feature (e.g., an AirportHeliport).

2020.0.13

ImprovementLuciadFusion

LCD-11454
Added GML decoding/encoding support for ILcdDataModel instances with java.time.Instant property values.

ImprovementLuciadFusion

LCD-11457
Fixed a bug where TLcdEllipsoidalConstructiveGeometry could not deal with TLcdSHPPolygonZ.

ImprovementLuciadFusion

LCD-11438
It is now possible to define a lon lat grid using a different geodetic datum than WGS84 in a Lightspeed view. See TLspLonLatGridLayerBuilder#createModel.

ImprovementS-63

LCD-11453
The ECDIS S-63 decoder can now always open the IHO S-63 demo dataset, which is also delivered with our release sample data. Before, you could not open this dataset if your Luciad license contained a specific (non-demo) User Permit.

Bug fixLuciadFusion

LCD-11452
When adding a grid layer with a non default ALspLayerStyle to a Lightspeed view, it was not painted.

Bug fixLuciadFusion

LCD-11436
Fixed an issue in the OGC 3DTiles encoding where textures would be encoded multiple times, resulting in an unnecessary large size of the result files.

Bug fixAviation Standards

LCD-11463
The width of an AIXM 5.1 airspace corridor was incorrectly interpreted as the width from axis to border instead of the width from border to border.

Bug fixAviation Standards

LCD-11449
Fixed two issues related to the handling of AIXM 5.1 airspace volume segments based on a geographical border:
  • The connection from the previous and next airspace volume segment with the geographical border was not visible.
  • The determined connection point on the geographical border could lead to a geometry edge case, which prevented the use of the airspace in an airspace aggregation.

Bug fixDefense Symbology

LCD-11450
The MIL-STD 2525d "Probable Line of Deployment" symbol (symbol set 25, code 141200) did not have the correct stroke when visualized in a Lightspeed view.

Bug fixDefense Symbology

LCD-11418
Added missing text modifier labels for the following APP6-B symbols:
  • 1.X.4.5.1 - S*S*ED----***** - Ditched Aircraft
  • 1.X.4.5.2 - S*S*EP----***** - Person in Water
  • 1.X.4.5.3 - S*S*EV----***** - Distressed Vessel
  • 1.X.4.6.1 - S*S*ZM----***** - Sea Minelike
  • 1.X.4.6.2 - S*S*ZN----***** - Navigational
  • 1.X.4.6.3 - S*S*ZI----***** - Iceberg

Bug fixInfrastructure Standards

LCD-11447

Fixed a bug where invalid data inside a Binz file could make the decoder fail.
The decoder should handle all valid elements, and skip the invalid ones.

Upgrade considerationLuciadFusion

LCD-11443

When evaluating an OGC filter through the TLcdOGCFilterEvaluator, the ILcdPropertyRetrieverProvider will now cache and re-use the created ILcdPropertyRetriever instances which results in improved performance.

Since the introduction of LCD-11278 the ILcdPropertyRetrieverProvider is queried more often. By introducing caching, there is no performance penalty anymore.

This is achieved by decorating the property retriever provider which is passed in the constructor of the TLcdOGCFilterContext. The result is that the corresponding getter returns an instance which isn't the same as the one which is passed into the constructor.

Upgrade considerationLuciadFusion

LCD-11443

When visualizing a Lightspeed or GXY layer using SLD the ILcdPropertyRetrieverProvider will now cache and re-use the created ILcdPropertyRetriever instances which results in improved performance.

This is achieved by decorating the property retriever provider which is passed in the constructor of the TLcdSLDContext. The result is that the corresponding getter returns an instance which isn't the same as the one which is passed into the constructor.

2020.0.12

ImprovementLuciadFusion

LF-2006
LuciadFusion Studio will now try to re-open the lucene index if it got closed due to an error.

Bug fixLuciadFusion

LCD-11425
In a Lightspeed view, imagery with an IndexColorModel could sometimes be visualized with incorrect colors.

Bug fixLuciadFusion

LF-2007
Fixed an issue where a completed preprocess job would fail to update its status if it had been resumed after a restart of LuciadFusion Studio.

Bug fixLuciadFusion

LF-1997
Fixed an issue where CSW queries on certain properties (e.g. CreationDate) would incorrectly return zero results.

Bug fixAdvanced Raster Services

LCD-11320
Fixed an issue that would cause the JVM to crash when loading the ECW native libraries on macOS Catalina with recent builds of OpenJDK.

2020.0.11

Bug fixLuciadFusion

LCD-11421
The SLD graphic size setting was not taken into account for world-sized SVG graphics.

Bug fixLuciadFusion

LCD-11422
The TLcdWMSDataSource now checks that a layer name (id) is passed which is either a null value or an empty value. An exception is thrown to prevent creation of an invalid WMS data source.

2020.0.10

ImprovementLuciadFusion

LCD-11392
The WCS service now uses a non-persistent cache for tiled GetCoverage requests, similar to the existing capability in WMS and WMTS services. This cache makes sure that subsequent tile requests are handled much faster, improving the performance and scalability of the WCS service when using tiled requests. The tile cache settings (disk cache size, memory cache size, ...) for WCS, WMS and WMTS can be configured in config/fusion.common.yml.

ImprovementLuciadFusion

LCD-11392

The WCS server now uses a non-persistent cache for tiled GetCoverage requests. This cache makes sure that subsequent tile requests are handled much faster, improving the performance and scalability of the WCS server when using tiled requests. See ALcdOGCWCSCommandDispatcherFactory for more information and configuration options.

This implies that for data that changes dynamically, extra care needs to be taken to make sure caches are invalidated. To this end, the API ILcdCoverageOffering#getUpdateSequence and TLcdDefaultCoverageOffering#setUpdateSequence is introduced to indicate that a WCS coverage has changed. By default, the implementations of these methods (mostly) assume static data/coverages. For WCS servers that serve data that changes over time (for example data updates), these methods should be used correctly. Note that the LuciadFusion Platform already takes care of this. An alternative is to disable the caches.

Bug fixLuciadFusion

LCD-11397
When requesting application/json the result of GetFeatureInfo was limited to features from the first layer. Now all features are returned within the GeoJSON response. The geometries of the features are all converted to WGS-84.

Bug fixDefense Symbology

Fixed the SIDC code for the APP-6D and MIL-STD 2525d civilian "Spy" symbols (symbol set 11, code 110800).

2020.0.09

ImprovementLuciadFusion

LCD-11395
When calling TLcdE57ModelDecoder.decodeModelMetadata the bounds and resource metadata will only be calculated when accessed. This means that the whole model doesn't need to be decoded anymore to get other parts of the metadata like the model reference.

ImprovementLuciadFusion

LCD-11395
The bounds and resource metadata of TLcdModelMetadata will now only be computed during first usage of respectively getBounds and getResourceMetadata.

ImprovementLuciadFusion

LF-1991
The LuciadFusion Studio REST API Data object now contains a categories property. This is a list of categories describing the different kinds of data contained in the Data.

ImprovementLuciadFusion

LCD-11388
A new method getModelReferenceFormatter() has been added to TLcdWFSClientModelEncoderFactory to ease access to the model reference formatter property in extensions. Additionally, the factory method ALcdOGCWFSCommandDispatcherFactory#createClientModelEncoderFactory now configures a default model reference formatter on created instances using the model reference formatter returned by ALcdOGCWFSCommandDispatcherFactory#getModelReferenceFormatter().

ImprovementLuciadFusion

LCD-11413
TLcdCartesianReference now implements the loadProperties and writePropertiesSFCT methods. This allows this reference to be written to file using TLcdModelReferenceEncoder, and to be read back using TLcdModelReferenceDecoder.

ImprovementLuciadFusion

TLcdDurationFormat now uses the same default Locale as the JDK (Locale.getDefault(Locale.Category.FORMAT)).

Bug fixLuciadFusion

LCD-11187
Improved touch event support in Swing/AWT based GXY and Lightspeed views when using display scaling/HiDPI displays on Java 11.

Bug fixLuciadFusion

LCD-11382
When using the TLspCreateController, MouseEvents with id MOUSE_RELEASED can not start creation anymore. This could cause issues with some editing handles. Note that MouseEvents with MOUSE_MOVED or MOUSE_PRESSED can still start creation.

Bug fixLuciadFusion

LCD-11402
Fixed potential deadlock when using a TLspBalloonManager in a TLspSwingView.

Bug fixLuciadFusion

LF-2001
Fixed issue with WFS GetFeature requests returning an error when 2 typenames from the same product were specified.

Bug fixLuciadFusion

LCD-11393
Fixed an issue where tiles from a geopackage were painted at the wrong place and scale if the row and column count of the tile matrix didn't double every zoom level.

Bug fixLuciadFusion

LCD-11386

OGC filters: the changes made for LCD-11278 introduced a performance regression for the evaluation of a filter with nested OR or AND conditions. This performance regression is now avoided, unless you're using an or condition nested inside an and condition (or vice-versa).

Bug fixLuciadFusion

LCD-11389
The WFS server's GeoJSON feature encoding support (provided by TLcdWFSClientModelEncoderFactory) now uses the ILcdOGCFeatureIDRetriever of the requested feature type to uniquely identify objects.

Bug fixLuciadFusion

LF-1981
Corrected the REST API specification that incorrectly marked some properties as having the date-time format.

Bug fixLuciadFusion

LCD-11412
ALspSwingLabelStyler would paint Swing labels with incorrect letter-spacing when using a display scaling value other than 100%.

Bug fixLuciadFusion

LCD-11405
TLspLabelLocations could throw a NPE when calling the updateLabelLocations with a null label location for a non-existing label.

Bug fixLuciadFusion

LCD-11401
TLcdWKTReferenceFormatter didn't correctly format the axes for compound references with both a horizontal and vertical datum.

Bug fixLuciadFusion

LCD-11401
TLcdWKTReferenceParser didn't correctly parse the axis information for compound references with both a horizontal and vertical datum.

Bug fixDefense Symbology

LCD-11387
Enabled all required amplifiers for the "Air Missile" symbol set for the APP-6D and MIL-STD 2525d symbologies.

2020.0.08

ImprovementLuciadFusion

LCD-11376
Made the TLspEditController more robust in cases where the edit controller was removed from the view when still editing objects.

ImprovementLuciadFusion

LF-1979
Studio's catalog server now supports OpenSearch queries with time and geometry parameters.

Bug fixLuciadFusion

TLcdGML3xEnvelope is now undefined if it does not have an upper or lower corner.

Bug fixLuciadFusion

LCD-11373
TLcdDTEDModelDecoder#decodeModelMetadata can now handle DTED files with non-standard source names.

Bug fixLuciadFusion

LCD-11372
TLspKeyActionController will not request focus anymore when the mouse only hovers over a JavaFX view.

Bug fixLuciadFusion

LF-1975
Fixed an issue where concurrently adding a lot of products to the same service could result in SQL Server reporting a deadlock.

Bug fixLuciadFusion

LF-1960
Fixed an issue that allowed two products that have the same name to be added to the same service. Now, the last product with the same name that is added is kept. This caused a Duplicate key error when requesting the layers or feature types of that service.

Bug fixLuciadFusion

LCD-11358
It is now possible to fit on topocentric-referenced models.

Bug fixLuciadFusion

LF-1963
Fixed an issue where files were marked as skipped even if they were successfully crawled. This occurred when those files were marked as failed in a previous run.

Bug fixAviation Standards

LCD-11374
TLcdARINCModelDecoder: fixed a potential NullPointerException that could occur when decoding Restrictive Airspace data with continuation records.

Bug fixDefense Symbology

LCD-11356
Fixed issue with arc symbols where the start and end angles were interpreted as angles after rotation instead of angles before rotation, as the standard specifies.

Bug fixInfrastructure Standards

LCD-11377
TLcd3DTilesProcessorBuilder: Fixed an issue where processing an OBJ would result in a "too many files open" exception.

2020.0.07

ImprovementLuciadFusion

LCD-11361
The default WFS model decoder TLcdWFSModelDecoderDecorator now allows to configure whether the interpolation of linear GML elements need to be geodesic in case of a geodetic reference, through the newly introduced methods setLinearElementsUseGeodesicInterpolationForGeodeticSrs and isLinearElementsUseGeodesicInterpolationForGeodeticSrs. This impacts the GML elements LineString, LineStringSegment and LinearRing. Although these GML elements conceptually represent geometries with a linear interpolation, they are often used to represent geometries with lon/lat coordinates and a geodesic interpolation. The default value of this property is true, for optimal interoperability with 3rd party WFS solutions.

ImprovementLuciadFusion

LCD-11354
TLcdOSGBModelDecoder now supports OSGB version 97.

Bug fixLuciadFusion

LCD-11303
The WFS server could not correctly cope with custom models in which the content of the used TLcdDataType could change at runtime (for instance, triggered by an additional request property, a user role, ...).

Bug fixLuciadFusion

LCD-11342
In case of a WFS request including an OGC Filter 1.x with GmlObjectId or FeatureId elements, the WFS server did not automatically translate this into an OGC Filter with a condition. Aligned with the API documentation of TLcdOGCFilter, this is now addressed by translating the received OGC Filter into a TLcdOGCFilter with a TLcdOGCResourceIdsOperator condition. The default filtering logic in the WFS server was not affected by this bug; it is only of relevance when a custom TLcdWFSFilteredModelFactory is used to customize the filtering logic.

Bug fixLuciadFusion

LCD-11353
XML framework: in some cases, decoding an xsi:type attribute value without a namespace prefix could trigger an exception.

Bug fixLuciadFusion

LCD-11348

The TLcdOGCDistanceBuffer and TLcdOGCBinarySpatialOperator need to transform their shape to match the reference of the shape that is being evaluated. This was not done in the past, causing wrong results of the spatial test.

Seeing as not all shapes can be converted from one reference to another, the documentation of both classes has been updated to clearly document that this transformation is needed when mixing references, and that it is recommended to avoid this case.

We support a limited number of shape transformations out of the box (currently only points and bounds). When the transformation fails, evaluating the filter will now throw a clear exception instead of providing the wrong results.

Bug fixLuciadFusion

LCD-11350
An empty SLD raster symbolizer didn't use a default color map to render elevation data in a Lightspeed view, causing the data to remain invisible.

Bug fixLuciadFusion

LCD-10718
The SLD opacity setting was not taken into account for (inline/external) SVG icons.

Bug fixAviation Standards

LCD-11357
Decoding AIXM 4 procedure leg data that specified optional navigation system information failed with a NullPointerException.

2020.0.06

ImprovementLuciadFusion

LCD-11341
TLcdGeoJsonModelDecoder now configures a display name provider on the TLcdDataModel of its decoded models. This ensures that TLcdDataProperty#getDisplayName always provides the property name as it is written in the source file, even when the name contains special characters. Lucy picks up these display names automatically.

ImprovementLuciadFusion

LCD-11338
The XML framework now trims leading and trailing whitespace from anyURI values.

ImprovementLuciadFusion

Added convenience API to ease working with SLD geometries based on an OGC function:

ImprovementLuciadFusion

LCD-11330
Added support for the BMP format for SLD bitmap graphic icons.

ImprovementLuciadFusion

LCD-11293
Improved the auto-detection of SLD raster normalization intervals by means of a more accurate histogram operation.

ImprovementLuciadFusion

LCD-11339
TLcdOGCModelReferenceParser now also has support for http://www.opengis.net/def/crs/OGC/1.3/CRS84 and http://www.opengis.net/def/crs/OGC/0/CRS84h.

ImprovementLuciadFusion

LCD-11335
The URI provided to the WMS client API is now checked for reserved parameter names at the time of creation. Such parameters are removed from the URI when requesting the WMS capabilities. Due to improvement LCD-7918 addition of for example LAYERS=layername could leak through the GetMap request and the LAYERS could appear twice within the request. Having this parameter twice in the request may lead to undefined results or WMS services responding with an error message.

ImprovementDefense Symbology

LCD-11336
The painting of the Seize symbol has been improved when it is used in the 4 points painting mode. The arrow stroke is now anchored to the center point of the circle instead of the point that defines the radius of the circle.

ImprovementDefense Symbology

LCD-11334
The editing behaviour of the 4-point painting mode of the "Seize" symbol was changed. Translating the first point will now translate the whole symbol.

Bug fixLuciadFusion

LCD-11347
TLspLayerStyle was broken when used in a TLspFXView with a 3D projection.

Bug fixLuciadFusion

LCD-11343
Evaluating a spatial filter on raster data would result in a ClassCastException. Now it correctly throws an IllegalArgumentException as documented.

Bug fixLuciadFusion

LCD-11337
Fixed an SLD icon rendering issue that occurred in case of a line symbolizer that defined a stroke based on a world-sized SVG icon and a non-zero rotation and/or non-zero transparency.

Bug fixLuciadFusion

LCD-11318
The WFS client did not properly encode output formats containing spaces (e.g., "application/gml+xml; version=3.2") in GetFeature requests.

Bug fixDefense Symbology

LCD-11333
Fixed issue where decorations were repeated on the arrow stroke of the "Seize" symbol.

2020.0.05

ImprovementInfrastructure Standards

LCD-11295
TLcd3DTilesProcessorBuilder: Improved robustness of the 3D tiling engine in the case where indices for vertices, uv coordinates or normals are missing for parts of a dataset.

ImprovementInfrastructure Standards

LCD-11306
TLcd3DTilesProcessorBuilder: Improved support for OBJ files that contained duplicate triangles. Previously this would cause some z-fighting, but this has been improved so only the last defined triangle in the OBJ ends up in the dataset. This improves visual quality for an edge-case that typically occured in handcrafted 3D models.

ImprovementInfrastructure Standards

LCD-11315
TLcd3DTilesProcessorBuilder: Improved robustness of decoding of material files. We now replace backslashes in paths with OS-dependent file separators. This allows some OBJ files which were encoded in Windows environments to be decoded on other operating systems.

Bug fixLuciadFusion

LF-1954
Fixed an issue where the abstract was not being shown in the Fusion Studio web interface for Data. The abstractText property has also been added to the Data object in the REST API

Bug fixLuciadFusion

LF-1956
Fixed an issue where the default style of a data source would not be recognized if the data was crawled before the style.

Bug fixLuciadFusion

TLcdCSVModelDecoder: fixed the incorrect parsing of days in DateTime fields.

Bug fixDefense Symbology

LCD-11325
The following APP6-D symbols did not display a (correct) dimension icon:
Set Code Symbol Code Name
10 111001 LAND UNIT - Command and Control - Signal – Radio
10 111002 LAND UNIT - Command and Control - Signal - Radio Relay
10 111003 LAND UNIT - Command and Control - Signal – Teletype
10 111004 LAND UNIT - Command and Control - Signal - Tactical Satellite
10 111005 LAND UNIT - Command and Control - Signal - Video Imagery (Combat Camera)

Bug fixDefense Symbology

LCD-11323
Fixed symbol with id 25272100 - "Minimum Safe Distance Zone" in APP-6D and MIL-STD 2525d. It was incorrectly painted with a movement direction arrow, and could throw an exception when interactively created in APP-6D.

Bug fixDefense Symbology

LCD-11319
Changed the way plain line symbols are painted to ensure consistent draping behaviour with patterned line symbols in Lightspeed 3D views.

Bug fixDefense Symbology

LCD-11327
Added missing text modifier labels for some icon symbols.

Bug fixInfrastructure Standards

LCD-11316
TLcd3DTilesProcessorBuilder: When encoding material files, the illum value is now correctly interpreted as an integer instead of a floating point value.

2020.0.04

ImprovementLuciadFusion

TLcdCSVModelDecoder now automatically skips any "\uFEFF" byte order mark.

ImprovementLuciadFusion

TLcdCSVModelDecoder can now parse non-standard date formats (see setDateFormat).

ImprovementLuciadFusion

LCD-11311
Added ILcdEditableTimeBounds#setToIncludeTime to easily include a single time in a time bounds object.

ImprovementLuciadFusion

LF-1774
Fusion crawl job progress reporting will now account for child data. This should ensure a more fluent progress.

Bug fixLuciadFusion

LF-1952
Fixed a bug where preprocess jobs that encountered an error during preprocessing would not get removed from the active job list, preventing the preprocess job from being executed again. Preprocess jobs that encounter an error are now correctly removed so that they can be queued again.

Bug fixLuciadFusion

LCD-11292
The SLD band-specific raster normalization style incorrectly used the histogram of the R band for all RGB bands.

Bug fixLuciadFusion

LCD-11305
TLcdGMLTransformer would close 3D polygons with a 2D point, regardless of the CRS. This has been fixed.

Bug fixDefense Symbology

LCD-11309
Fixed issue in GXY views where symbol decorations would disappear when zooming out far enough and back in.

2020.0.02

ImprovementLuciadFusion

LF-1947
A new configuration property has been added to allow users to specify whether OGC3DTiles service responses can be cached by clients and how long they can be cached. See the fusion.ogctilesservice.cache property in the fusion.common.yml config file for more information.

ImprovementLuciadFusion

It is now possible to add products containing OBJ mesh data to an OGC 3D Tiles service. The mesh data will be processed into OGC 3D Tiles before it is served. A preprocess job will be created for the product to perform the preprocessing.

ImprovementLuciadFusion

LF-1930
Recrawling a data root does no longer marks failed files as skipped if they are unchanged. This allows for the errors te remain visible even after recrawling.

ImprovementDefense Symbology

LCD-11256
Changed placement of echelon symbols for "Boundaries - Line" symbols so they disappear less quickly when zooming out.

Bug fixLuciadFusion

LF-1901
Changing the data in a product published to an OGC 3D Tiles service will now cause the service preprocessing job to reprocess the data so that the updated state of the product is correctly reflected in the service.

Bug fixLuciadFusion

LF-1950
For very specific combinations of coverage settings and very detailed data the fusion engine could fail with a NullPointerException. This could happen when defining a tile matrix set in WGS:84 covering the entire world, using 4 columns and 2 rows at the top-level and using 32x32 pixels per tile, to fuse data where each pixel is about a few centimeters. This case is handled correctly now. Additionally threshold values internally have been adjusted to allow such global coverages up till 1cm resolution.

Bug fixLuciadFusion

LCD-11276
SLD raster rendering in GXY / Lightspeed did not support the application of a color map on the result of a single band selection for multi-band raster data.

Bug fixLuciadFusion

LCD-11291
Addressed an issue where WMTS services that can be accessed with custom parameters (e.g. access token) added to the URL couldn't be displayed on the map. These custom parameters in the URL were treated as dimensions by the WMTS client.

Bug fixDefense Symbology

LCD-11246
Enabled 4 points painting mode for MIL-STD 2525c "Seize" (2.X.1.23) symbols. To paint these symbols with 4 points you have to create a TLcdEditableMS2525bObject with 4 points in its point list or create a TLcdEditableMS2525bObject with a ILcdRestrictedLengthPointList or a ILcdRestrictedLengthPointList with a minimum point count of 4 points.

Upgrade considerationLuciadFusion

LCD-11278

ILcdEvaluatorFactory: the canBuildEvaluator method could not perform a decent check because it did not receive the same arguments as the buildEvaluator method. This could result in the creation of evaluators which would throw exceptions when used.

This has been fixed by introducing a new default canBuildEvaluator method which has the same arguments as the buildEvaluator method. The old method has been deprecated.

The result of this change is that calling TLcdOGCFilterEvaluator#buildFilter for a filter containing expressions that cannot be evaluated will now throw an IllegalArgumentException in all cases, and never return a filter with undefined behavior at runtime.

The ILcdEvaluatorFactory interface should not be implemented nor used by customers, so this change should not affect your code base.

2020.0

New featureLuciadFusion

LuciadLightspeed now comes with a native JavaFX Lightspeed view called TLspFXView. All controller and editing API has been adjusted to work with FX input events. In addition, the following API has been added to kick-start your JavaFX development:

Refer to the samples.lightspeed.javafx package for samples demonstrating the new FX view.

Note that the LuciadLightspeed API provides numerous Swing UI components. However, only the UI elements explicitly listed above are currently available for JavaFX.

New featureWeather & Environment Standards

BUFR files containing World Area Forecasting System (WAFS) Significant Weather (SIGWX) data can now be decoded and visualized in Lightspeed and GXY views, and LuciadFusion WMS/WMTS/WFS services.

BUFR Lightspeed visualisation
Example of a BUFR dataset visualized in Lightspeed

For more details, see:

New featureDefense Standards

XML files containing data for the MGCP 2.0.1 Portrayal standard can now be decoded and visualized in Lightspeed and GXY views, and LuciadFusion WMS/WMTS services.

MGCP dataset
Example of a dataset rendered with MGCP styling

For more details, see:

New featureInfrastructure Standards

Support for the Hexagon PPM Binz data format. For more details, see

ImprovementLuciadFusion

Support for topocentric reference systems was added to TLcdWKTReferenceParser and TLcdWKTReferenceFormatter. The WKT format loosely follows the topocentric example in the OGC WKT CRS 1.0 specification.

ImprovementLuciadFusion

A new model encoder TLcdOGC3DTilesModelEncoder was added. It can be used to encode tiled and multi-leveled mesh models into OGC 3D Tiles. Currently it can only be used to encode models loaded from OSGB, BINZ or other Luciad-provided decoders.

ImprovementLuciadFusion

Balloon managers can now automatically pick up any content provider that is annotated with LcdService. See the appropriate constructor for more information.

ImprovementLuciadFusion

TLcdModelList and TLcd2DBoundsIndexedModelList now override the query() method and pass the query to the delegate model. This can greatly help performance if delegate models optimize the query internally.

ImprovementLuciadFusion

ALcdScaleIndicator: you can now toggle between the scale bar icon and a textual representation of the scale (e.g. 1 : 5000). Refer to the class javadoc for more information on how to use this new feature.

ImprovementLuciadFusion

ILcdGXYView: added several methods that were already present in all view implementations.

ImprovementLuciadFusion

TLspMagnifierController: this new controller allows users to zoom in on a part of the view, that is then displayed in a square overlay that follows the mouse position.
In the magnifier overlay, world sized objects are scaled while view sized objects have the same size as in the original view.

The new controller is available in all samples with visual inspection tools (e.g. samples.lightspeed.decoder)

ImprovementLuciadFusion

TLcdGXYShapePainter: considerably improved anti-aliased appearance of shapes that are discretized into many small line segments.

ImprovementLuciadFusion

LCD-10079
GXY label placement can now be configured at the layer level. This means you can configure label visualization as well as label placement in your layer factory. Refer to TLcdGXYLayer#setGXYLabelingAlgorithmProvider and its sample code usages for more information.

ImprovementLuciadFusion

Support for the Krovak projection was added, see TLcdKrovak. TLcdWKTReferenceParser and TLcdEPSGReferenceParser have been modified to support this new projection. For the latter, the following EPSG codes that use the Krovak projection are now supported:
  • EPSG:2065
  • EPSG:5221
  • EPSG:5513
  • EPSG:5514
  • EPSG:8352
  • EPSG:8353

ImprovementDefense Standards

LCD-11166
MGCP zip files are now supported. In order to use the .zip files they must be renamed to .mgcp.zip.

ImprovementDefense Symbology

The initial/uncached symbol icon rendering speed has been significantly improved.

ImprovementInfrastructure Standards

We have added the TLcd3DTilesProcessorBuilder to the API. This class lets you create a processor that converts 3D meshes into the OGC 3D Tiles format. We also added a command line sample that allows you to invoke the processor without writing code.

ImprovementMaritime Standards

The GXY-specific ECDIS sample has been removed. You can open S-57 data using the generic GXY Decoder sample.

If you need the S-52 display settings UI panel in GXY, you can easily plug that in and use the S52GXYLayerFactory to pick up the S-52 display settings instance. For more information, see the tutorial article "How to customize the S-52 visualization".

ImprovementS-63

The S-63-specific sample have been removed. You can open S-63 data using the regular ECDIS Lightspeed sample, or the generic Lightspeed and GXY Decoder samples.

All these samples will automatically pick up the TLcdS63UnifiedModelDecoder to load S-63 data. Place your Cell Permit files (ENC.PMT or PERMIT.TXT) next to the source data, and make sure you are using the Luciad license that has the corresponding User Permit.

Bug fixLuciadFusion

LCD-11244
Fixed a potential deadlock when loading BINZ data in a TLspFXView.

Bug fixInfrastructure Standards

LCD-11264
TLcd3DTilesProcessorBuilder: fixed an issue that would cause small triangles to disappear when processing OBJ files with a geodetic reference.

Upgrade considerationLuciadFusion

You now need to manually initialize touch support for Swing applications by calling TLcdTouchDevice#getInstance() at application startup. Any touch enabled application that checks the touch device status automatically fulfills this requirement. Additionally, the TLcdAWTEventDispatcher no longer dispatches touch events.

Upgrade considerationLuciadFusion

TLcdTouchEvent#getSource and TLcdAWTEvent#getSource: the return type has been changed from Component to Object. This allows using the Lightspeed touch controllers in a Lightspeed JavaFX view. If you were using those methods in your application, you may need to cast the result to a Component.

Upgrade considerationLuciadFusion

The data category in the model metadata of OBJ models produced by TLcdOBJModelDecoder has been changed from VECTOR to MESH.

Upgrade considerationLuciadFusion

TLspExternalView is now deprecated. Integration of LuciadLightspeed in C++ applications is no longer actively supported as of V2020.0. Please contact your account manager or support.luciad.gsp@hexagon.com to discuss possible alternatives.

Upgrade considerationLuciadFusion

To improve the separation between AWT and JavaFX code paths, the return type of TLspEditHandleResult#getProcessedEvent() was changed from EventObject to AWTEvent. In practice, this change should have no impact on existing applications, since
  • API users are not expected to have overridden getProcessedEvent();
  • Other parts of the API and implementation did enforce the use of AWTEvent.

Upgrade considerationLuciadFusion

The GXY view implementations now have the following useful options enabled by default:
  • All views now have label placing enabled by default. If you don't want advanced label placement or decluttering, you can disable it by calling view.setGXYViewLabelPlacer(null).
  • All views now use anti-aliasing by default. To disable this, call view.setAntiAliased(false).
  • All views no longer use smart panning by default. To revert this, call view.setSmartPan(true).
  • All map implementations (e.g. TLcdMapJPanel) now come with sensible minimum and maximum scale ranges. To revert this, call view.setMinScale(0) and view.setMaxScale(Double.MAX_VALUE).

2019.1

2019.1.11

ImprovementLuciadFusion

The EPSG resources are updated to EPSG database v9.8.6.

2019.1.10

ImprovementLuciadFusion

LF-1926
A new REST API call /api/services/types/validate-products is available which allows to check which services can be created for the given products.

ImprovementLuciadFusion

LF-1923
LuciadFusion system administrators can now configure LuciadFusion to use Oracle 19c database for the catalog (see config/application-fusion.development.yml for details).

ImprovementLuciadFusion

LF-1922
Added the ability to modify the set of CRS codes exposed in LuciadFusions' WMS responses. See the following new properties in config/fusion.common.yml for more details.
  • wms.crsReferences
  • wms.epsgReferences
  • wms.auto2References
  • wms.autoReferences

ImprovementLuciadFusion

LF-1924
LuciadFusion system administrators can now configure LuciadFusion to use a PostgreSQL version 12 (with PostGIS 3) database for the catalog (see config/application-fusion.development.yml for details).

ImprovementLuciadFusion

LF-1887
LuciadFusion system administrators can now configure LuciadFusion to use a SQL Server 2019 database for the catalog (see config/application-fusion.development.yml for details).

ImprovementLuciadFusion

LF-1939
Improve job execution handling for jobs stuck in running who could no longer be queued or stopped. These jobs can now be queued or stopped to recover them from the running state without having to restart LuciadFusion as was required previously.

ImprovementLuciadFusion

LCD-10644
TLcdBingMapsModelDecoder now uses the new on-demand variants for imagery requests when using ELcdBingMapsMapStyle.ROAD and ELcdBingMapsMapStyle.AERIAL_WITH_LABELS.

ImprovementLuciadFusion

LCD-10394
TLcdOBJModelDecoder now uses a TLcdCompositeModelReferenceDecoder with all default available ILcdModelReferenceDecoder instances (i.e. all model reference decoders annotated with the @LcdService annotation). This means that the default TLcdOBJModelDecoder can now also decode OBJ files with, for example, a PRJ reference.

ImprovementMaritime Standards

LCD-11262
The M_SREL object class in IENC can have the INFORM attribute, even if the spec doesn't prescribe this. It is now added.

Bug fixLuciadFusion

LCD-11263
TLcdCompositeStringTranslator: improved robustness for null strings.

Bug fixLuciadFusion

LF-1941
LuciadFusion Platform now uses a custom cookie name to as to not conflict with other Spring web applications that use the default cookie name set within the Spring framework.

Bug fixLuciadFusion

LF-1938
Addressed an issue where the results of services published by LuciadFusion Platform could not be cached by web clients. Headers that cause the results not to be cached have been removed from the HTTP responses.

Bug fixLuciadFusion

LCD-11243
Fixed an issue where navigating around a geopackage file would keep opening new connections to the file, which could result in a system running out of usable file descriptors. The amount of connections to a geopackage file is now capped to a fixed amount.

Bug fixLuciadFusion

LCD-123
TLcdGXYCircularArcPainter and TLcdGXYCircleBy3PointsPainter: disallowed some snapping scenarios that would result into degenerate shapes.

Bug fixLuciadFusion

LCD-11248
A TLcdGML*LinearRing now implements ILcdInvalidateable and automatically invalidates itself when replacing its posGroup.

Bug fixLuciadFusion

A TLcdGML*LinearRing with an empty TLcdGML*CoordinatesposGroup would throw an exception when inserting a point. This has been fixed.

Bug fixLuciadFusion

LCD-6488
The TLcdGeoTIFFModelEncoder now encodes the tiff tag GDAL_NODATA when the source model contains a ALcdImage with semantics specifying a no data value.

Bug fixLuciadFusion

LCD-10947
TLsp2DPointListEditor/TLsp3DPointListEditor: fixed an issue that prevented customizing the create handle to append points to both the start and end of a pointlist using freehand ELspCreationMode.FREEHAND_AND_CLICK and ELspCreationMode.FREEHAND_SINGLE_SWIPE.

Bug fixLuciadFusion

LCD-11260
The TLcdJAIRasterModelDecoder could not handle certain PNG files. The decoding for such image files is now done via ImageIO.

Bug fixLuciadFusion

LCD-10926
Fixed bug in TLcdSHPModelDecoder that could cause incorrect String properties in the decoded features.

Bug fixDefense Symbology

LCD-11257
Fixed issue where Rectangular symbols would become triangular when zoomed in in GXY.

Bug fixDefense Symbology

LCD-11201
Removed label gaps that appear in the fill patterns of following symbols
Code Mask Name
G*F*AKPC--****X Purple Kill Box, Circular
G*F*AKPR--****X Purple Kill Box, Rectangular
G*F*AKPI--****X Purple Kill Box, Irregular
G*F*AKBC--****X Blue Kill Box, Circular
GG*F*AKBR--****X Blue Kill Box, Rectangular
G*F*AKBI--****X Blue Kill Box, Irregular
G*F*ACNR--****X No Fire Area (NFA), Rectangular
G*F*ACNC--****X No Fire Area (NFA), Circular
G*M*NM----****X Minimum safe Distance Zones

Bug fixDefense Symbology

LCD-11152
The lines at the back of the "Support by Fire Position" and "Attack by Fire Position" symbols now appear as dashed when the symbol status is Planned/Anticipated.

Bug fixDefense Symbology

LCD-11266
Fixed issue where labels of circles, ellipses, rectangles, etc were not centered properly.

2019.1.09

ImprovementLuciadFusion

LCD-7828
TLcdDatabaseModel now has a method #refresh that updates all cached elements with data in the database. This method also picks up elements that were added to the database. Previously, a workaround was needed that involved clearing the cache and querying the model in order for the cached elements to be updated. Note that this method only works for Oracle Spatial, PostgreSQL, MSSQL and Geopackage databases.

Bug fixLuciadFusion

LCD-5170
TLcdSVGIcon: improved rendering accuracy for small icons.

Bug fixLuciadFusion

LCD-11208
Fixed erratic scale calculation when tilting the camera in a 3D grid reference.

Bug fixLuciadFusion

LCD-11224
ALspComplexStroke: When creating a stroke with icons, it was possible that small gaps were visible between adjacent icons on the stroke.

Bug fixLuciadFusion

LCD-9110
Fixed an issue where GeoTIFF data was interpreted as elevation data but a multilevel version of the data was not.

Bug fixLuciadFusion

LCD-11184
SLD raster rendering in GXY / Lightspeed did not take the optional opacity attribute for SLD ColorMapEntry elements into account; the colors in these elements were assumed to be non-transparent.

Bug fixDefense Standards

LCD-11192
TLcdVPFModelDecoder: If the decoder was configured to decode features using ELEMENT_PER_FEATURE, some geometries could be missing.

Bug fixDefense Symbology

LCD-11183
Added the following symbols which were missing from the APP-6D hierarchy.
Set Code Symbol Code Name
10 111001 LAND UNIT - Command and Control - Signal – Radio
10 111002 LAND UNIT - Command and Control - Signal - Radio Relay
10 111003 LAND UNIT - Command and Control - Signal – Teletype
10 111004 LAND UNIT - Command and Control - Signal - Tactical Satellite
10 111005 LAND UNIT - Command and Control - Signal - Video Imagery (Combat Camera)
10 160501 LAND UNIT - Sustainment - Band - Army Music

Bug fixDefense Symbology

LCD-10377
APP-6C icons with "Exercise/Hostile" or "Exercise/Suspect" affiliation were incorrectly painted as hostile and are now painted with the friendly affiliation frame. Constant values of AFFILIATION_EXERCISE_HOSTILE and AFFILIATION_EXERCISE_SUSPECT are marked as deprecated and redirect to AFFILIATION_JOKER and AFFILIATION_FAKER respectively.

Upgrade considerationDefense Symbology

TLcdAPP6AEchelonNode.getCodeMask and TLcdMS2525bEchelonNode.getCodeMask have been deprecated. These methods are not compatible with the more recent symbology standards which no longer use code masks (MIL-STD 2525d, APP-6C, APP-6D,...). These methods now always return the name of the echelon.

Use TLcdAPP6AEchelonNode.getName() or TLcdMS2525bEchelonNode.getName() to identify an echelon.

Use TLcdAPP6AEchelonNode.applyOn(ILcdEditableAPP6ACoded) or TLcdMS2525bEchelonNode.applyOn(ILcdEditableMS2525bCoded) to apply the echelon to a symbol.

2019.1.08

ImprovementLuciadFusion

LF-1916
A method was added to the REST API that allows you to add keywords to a service (POST /api/services/id/keywords). Previously you were required to request the service with the list of keywords, adjust the list and then update the service with the new list.

ImprovementLuciadFusion

LF-1899
A method was added to the REST API that allows you to add products to a service (POST /api/services/id/products). Previously you were required to request the list of products on a service, adjust the list and then set the updated list of products.

ImprovementLuciadFusion

LCD-11142
The TLcdGeoTIFFModelDecoder now supports the tiff tag GDAL_NODATA value nan.

Bug fixLuciadFusion

LCD-11203
TLcdGXYDensityLayer: resolved an issue when using HiDPI rendering.

Bug fixLuciadFusion

LCD-11132
TLcdVVJPanel: improved behavior for profiles with vertical lines.

Bug fixLuciadFusion

LCD-11190
Corrected a multi-threading issue in the transformation code. This fixes visual artifacts which could appear in some scenarios. For example, displaying some kinds of raster data in Lightspeed views.

Bug fixLuciadFusion

LF-1918
Added the missing configuration settings in config/fusion.common.yml to enable or disable the OGC 3D Tiles and File Server services. These need to be disabled when disabling Studio in the fusion.common.yml file.

Bug fixLuciadFusion

LCD-11121
Fixed a memory leak that could occur when regularly creating a new TLspParameterizedIconStyle.

Bug fixLuciadFusion

LF-1917
Fixed a race condition problem where using the "most detailed" geometry from a tiled vector feature triggered an error about an incorrect amount of fills. This could happen when you iterate over the elements of a tiled vector model and used their geometry.

Bug fixDefense Symbology

LCD-11139
Fixed several icon symbols in MIL-STD 2525d and APP-6D that would be displayed with an incorrect hierarchy icon.

2019.1.06

ImprovementDefense Symbology

LCD-11100

Support was added for the engagement bar graphical amplifier for the MIL-STD-2525c, MIL-STD-2525d and APP-6D standards.

A new text modifier was added which can be used to set the content of the engagement bar. The name of this text modifier can be accessed trough the static properties ILcdAPP6ACoded.sEngagementBar and ILcdMS2525bCoded.sEngagementBar.

Styling options for the engagement bar are configured using the new class TLcdEngagementBarStyle, which can be set and retrieved from ILcdAPP6AStyle and ILcdMS2525bStyle.

ImprovementMaritime Standards

LCD-11124

Added an option to disable certain painting optimizations in TLcdS52GXYCatalogueLayer.

By default, these optimizations are enabled, and typically reduce the amount of elements to be painted by 30%. The cost of determining which elements to skip is offset by faster subsequent paints because of spatial locality.

In the context of a WMS server however, you have multiple threads/layers handling requests of multiple users, in different areas. In this case, each layer has to build up the visibility information separately and can re-use it a lot less in subsequent requests.

When using tiled WMS or WMTS, requests don't overlap and are typically cached on the client and/or server.

To use this option in WMS or WMTS, plug in your own ILcdGXYLayerFactory:

      @LcdService(service = ILcdWMSGXYLayerFactory.class, priority = LcdService.HIGH_PRIORITY)
      public class MyWMSLayerFactory implements ILcdWMSGXYLayerFactory {
         @Override
         public ILcdGXYLayer createGXYLayer(ILcdModel aModel, ALcdWMSLayer aWMSLayer, String aStyleID, TLcdWMSRequestContext aContext) {
            TLcdS52GXYCatalogueLayer layer = (TLcdS52GXYCatalogueLayer)
            TLcdS52ProductConfiguration.getInstance(ELcdS57ProductType.ENC).createGXYLayerFactory(displaySettings).createGXYLayer(aModel);
            layer.setMultileveledObjectVisibilityCalculations(false);
            return layer;
         }
      }
    

2019.1.05

ImprovementLuciadFusion

LF-1907
LuciadFusion server will now include stacktraces in the log file when reporting errors. This required enabling debug logging previously.

Bug fixLuciadFusion

LF-1835
Fix bug where LuciadFusion Studio notifications would stop occurring if there is no notification activity for a period of time.

Bug fixMaritime Standards

LCD-11106
Resolved a very rare issue where polygons were wrongly displayed with holes and spikes.

2019.1.04

Bug fixLuciadFusion

LF-1904
When using an invalid feature type name within the WFS, the service should return a 400 status, not a 500 status.

Bug fixLuciadFusion

LF-1903
The WFS feature type title should use the product title, not the data source title in the features metadata.

Bug fixLuciadFusion

LCD-11091
Data obstructed by fully transparent pixels of a raster layer, was not always visible in a 3D view.

Bug fixLuciadFusion

LCD-11102
Using an SLD Recode function inside a text symbolizer label element triggered an exception during rendering.

Bug fixDatabase Connectors

LCD-11098
Fixed an issue where an incorrect value was set for the dimensions property when decoding 3D data from an Oracle database.

Bug fixDatabase Connectors

LCD-11047
Fixed an issue where 3D points were encoded as 2D points when saving it to an Oracle database.

Bug fixDatabase Connectors

LCD-11046
Fixed an issue where 3D lines stored in an Oracle database were decoded as 2D lines.

Bug fixAviation Standards

LCD-11101
The behavior of TLcdSegmentBasedRoute.set3DEditablePolyline was incorrect: when the supplied polyline contained 2 or more existing points, some of these points were incorrectly included in the resulting route geometry.

2019.1.03

ImprovementLuciadFusion

LF-1891
Improved logging when Fusion fails to enqueue crawl job by including the causing exception in the logging output.

Bug fixLuciadFusion

LCD-11087
Fixed UnsupportedOperationException in ILcdGL#glGetProgramInfoLog()

Bug fixLuciadFusion

LCD-11093
Conversion to 3DTiles: Fixed a bug where the normals would have an incorrect direction, thus negatively affecting the lighting.

Bug fixLuciadFusion

LF-1893
Fixed an issue that could introduce a deadlock when updating the products of a service using the REST API.

Bug fixLuciadFusion

LF-1890
Fixed an issue that made it possible for a Data Root to be created without a corresponding Crawl Job.

Bug fixLuciadFusion

LF-1885
Fixed an issue where using the REST API trying to obtain a Data item based on a path that started with a double backslash returned nothing.

2019.1.01

ImprovementLuciadFusion

TLcdGXYCompositeController now also works with ILcdAWTEventListener delegates.

ImprovementLuciadFusion

LCD-10958

SLD now supports the use of functions inside SLD Geometry and ParameterValue (such as rotation) elements. On top of the existing capability to use property names, this provides additional flexibility to determine the desired value.

Additionally, support has been added for 4 new functions in TLcdOGCVendorSpecificFunctions that operate on a geometry defined by a given property name:
  • startAngle(propertyName) and endAngle(propertyName): determine respectively the start and end angle of the referred geometry, measured in degrees clockwise from the direction at 12 o'clock.
  • startPoint(propertyName) and endPoint(propertyName): determine respectively the start and end point of the referred geometry.

An example use case combining these new functions and the possibility to use them inside SLD Geometry and ParameterValue elements is the configuration of an arrow head at the end of a polyline. By using a point symbolizer with a geometry defined by the endPoint of the polyline and a rotation defined by the endAngle of the polyline, an oriented arrow icon can be drawn at the end of the polyline.

ImprovementLuciadFusion

LCD-11038
The TLcdOBJModelDecoder will no longer throw exceptions when encountering 'map_d' lines with empty reference in an MTL file.

ImprovementLuciadFusion

LCD-10183
The magnetic north data files for WMM and IGRF have been updated to cover the period 2005-2025. The IGRF decoder now decodes the official coefficients file as downloaded from NOAA (i.e. igrf13coeffs.txt).

ImprovementDefense Symbology

LCD-11027
Allow creation of icon symbols for the following top-level symbols for the APP-6D and MI-STD-2525d standards.
  • Air
  • Air Missile
  • Space
  • Space Missile
  • Land Unit
  • Land Civilian Organization
  • Land Equipment
  • Land Installation
  • Dismounted Individual
  • Sea Surface
  • Sea Subsurface
  • Mine Warfare
  • Activities
  • Signals Intelligence - Space
  • Signals Intelligence - Air
  • Signals Intelligence - Land
  • Signals Intelligence - Surface
  • Signals Intelligence - Subsurface
  • Cyberspace - Space
  • Cyberspace - Air
  • Cyberspace - Land
  • Cyberspace - Surface
  • Cyberspace - Subsurface

Bug fixLuciadFusion

LCD-11017
TLspSwipeController and TLspPortholeController did not work correctly on HiDPI screens.

Bug fixLuciadFusion

LCD-11037
SLD raster rendering in GXY / Lightspeed incorrectly applied color interpolation in case of a color map defined by an SLD Categorize function. To enable interpolation, support has been added for color maps defined with an SLD Interpolate function.

Bug fixLuciadFusion

LCD-11016
Fixed an issue that prevents to create balloons with TLcdGeoAnchoredBalloonDescriptor in a Lightspeed view without any layer.

Bug fixLuciadFusion

LF-1876
In certain cases the fusion engine would not immediately stop processing when an exception occurred. This could for example happen when there is no disk space left to store data. Now the exception makes the processing fail fast.

Bug fixLuciadFusion

LF-1882
Fixed case where the creation of the engine session failed with a IllegalStateException.

Bug fixDefense Symbology

LCD-11024
Fixed a military symbology issue that could cause a RuntimeException when editing symbols on a GXY view in some cases where label editing and/or label decluttering was enabled.

2019.1

ImprovementLuciadFusion

ILcdLayered: added a default addLayeredListener method which triggers the listener for all current and future layers.

ImprovementLuciadFusion

ILcdLayeredListener: 2 static factory methods have been added to the interface to easily listen for added and removed layers, respectively.

ImprovementLuciadFusion

LCD-10862
The ServiceRegistry interface is deleted from the sample code. All samples now use TLcdServiceLoader to query the service registry. This makes the sample code less complex.

ImprovementLuciadFusion

LCD-7602
TLcdLonLatPointFormat now has a strict mode using setOnlyAllowStrictValidCharacters. In strict mode no invalid characters will be allowed. By default this will be set to false.

ImprovementLuciadFusion

LuciadLightspeed now supports the eye-dome lighting (EDL) technique to improve depth perception in point cloud data sets. For more details, see the how-to article on eye-dome lighting.

The functionality of changing the EDL parameters is also available in the Lucy UI.

ImprovementLuciadFusion

LCD-7424
TLcdSymbol now allows configuring the border width for the outline of the symbol.

ImprovementLuciadFusion

LCD-9399
The TLcdCSVModelDecoder has been improved to handle coordinate data in a single column. Valid coordinate data will be automatically detected. See TLcdCSVDataSource for more info on how to specify column types.

ImprovementLuciadFusion

LCD-9358
Made the TLcdColorMapCustomizer more user friendly by adding hover indications and tooltips. These should make it clear for the user that the components can be edited.

ImprovementLuciadFusion

LCD-10811
The JVM option optimize.raster.color.model no longer affects the TLcdGeoTIFFModelDecoder. The behavior is now always the same whether you have a graphics environment or not.

ImprovementLuciadFusion

LCD-10498
Added support for registering an ILcdStringTranslator as a service. It will be automatically picked up by all our classes that use an ILcdStringTranslator. This makes it easy to translate all the UI components. Just like other service interfaces we added a TLcdCompositeStringTranslator which makes it easy to work with all registered instances.

ImprovementLuciadFusion

LCD-9540
TLcdOGCModelReferenceParser is extended to support WKT content with or without the 'urn:ogc:def:crs:' prefix.

ImprovementLuciadFusion

LCD-8425
Deprecated ILcdModel.FIRE_NOW as proper usage of model locks only allow for use cases with ILcdModel.NO_EVENT or ILcdModel.FIRE_LATER.

ImprovementLuciadFusion

LCD-10430
ILcd2DEditablePointList now includes a default method append2DPoint to append a point to the back of the list.

ImprovementLuciadFusion

LCD-9949
The TLcdCSVModelDecoder has been improved to handle GeoJson geometry data. Valid GeoJson data will be automatically detected. See TLcdCSVDataSource for more info on how to specify column types.

ImprovementLuciadFusion

LCD-9714
Improvements have been made to the WKT (well known text) format parser. It is now possible to place the UNIT before the PROJECTION tag.

ImprovementLuciadFusion

LCD-9560
TLcdOGCFilterContext#fromModel: this new utility method makes it easier to create a filter context for filtering domain objects from a model.

ImprovementLuciadFusion

LCD-9241
TLcdOGCFilterFactory: added new bbox methods facilitating the creation of a BBOX filter.

ImprovementLuciadFusion

LCD-10559
The ILcdPointList2 interface added no extra methods compared to the ILcdPointList interface. There was no more reason to use the ILcdPointList2 interface, so it has been deprecated.

ImprovementLuciadFusion

LCD-9148
The WMS client samples now show when connecting to a new WMS URL the layers of the newly added WMS layer.

ImprovementLuciadFusion

LCD-4977
A new TLcdAngleFormat is available to format angles specified in TLcdAngleUnit. The format works similar as the TLcdSpeedFormat, TLcdAltitudeFormat and TLcdDistanceFormat where an internal programming unit is used along with a display unit.

ImprovementLuciadFusion

LCD-9691
Made sure that runtime exceptions are wrapped into an IOException when creating an output stream using an ILcdOutputStreamFactory.

ImprovementLuciadFusion

LCD-5035
The ILcdLogger interface now has default methods that accept an array of message parameters, making it easier to log parameterized messages. A custom ILcdLogger implementation must detect and handle these message parameters. The log implementation must check whether or not it is receiving a single message parameter or an array of message parameters and format the message accordingly.

ImprovementLuciadFusion

LCD-11018
TLcdGeoJsonModelEncoder now respects the input file's feature property order.

ImprovementLuciadFusion

LCD-10925
Improved the interoperability with legacy WFS clients that do not recognize the reference notation urn:ogc:def:crs:OGC:1.3:CRS84; for this reference, the WFS capabilities now also include the legacy CRS:84 notation als additional reference.

ImprovementTerrain Analysis Engine

TLcdAltitudeMatrixViewFactory: a new overloaded version of createPathAltitudeMatrixView has been added which retrieves the elevation values for the point of an ILcdCurve from the curve itself, instead of relying on an altitude provider.

ImprovementTerrain Analysis Engine

TLcdAltitudeDescriptor and TLcdVisibilityDescriptor: added generics to the map of special values.

Bug fixLuciadFusion

TLcdDomainObjectContext: The equals method did not use an identity check to compare domain objects. As a result, contexts with different ILcdShape instances as domain object could be indicated as equal. It now compares the different domain objects using an identity check.

Bug fixLuciadFusion

LF-1843
Modified the sample deployment script to include lcd_geoid_resources.jar by default. See the commented out exclude attribute in the obfuscate target within build/fusionplatform/deploy_fusionplatform_service.xml.

Bug fixLuciadFusion

LF-1342
Several WFS functional and interoperability fixes have been made.
  • Removed the enableFeatureTypeNameCompatabilityMode option, now the default behavior should be similar to the behavior that happened when it existed and was set to true.
  • Allow multiple data sources within a product that is included in a WFS service. Feature type names will be a combination of product and data name.
  • Fixed an issue with quick service creating a product with a name that contains dashes which are not valid in the resulting WFS XML.
  • Fixed an issue with GeoMedia not being able to read the LuciadFusion WFS because the namespace definitions don't match between GetCapabilities and DescribeFeatureType.
  • Fixed an issue with ArcGIS not able to read 2.0.0 version of WFS because of not handling "(" separated feature types in DescribeFeatureType.

Bug fixLuciadFusion

LCD-10618, LCD-873, LCD-10797
Fixed a bug where TLcdLonLatEllipse#getBounds could return undersized bounds that would not contain the entire ellipse. Now the bounds calculation is more accurate and consistent with TLcdLonLatArc.

Bug fixLuciadFusion

LCD-10466
TLcdInputStreamFactory: can now create input streams for zipped data, independent of whether the data uses zlib/gzip compatible compression or not.

Bug fixLuciadFusion

The SLD decoder now ignores leading newline and/or leading spaces when decoding a text symbolizer label element.

Bug fixLuciadFusion

LCD-10991
The SLD label rotation implementation for Lightspeed views did not properly take into account a possible label offset introduced by a an SLD label anchor point and/or label displacement property.

Bug fixTerrain Analysis Engine

Explicitly set the default elevation mode in TLspLOSCoverageStyle.Builder to ElevationMode.ABOVE_ELLIPSOID.

Bug fixDefense Symbology

LCD-11006
Fixed a performance issue that occurred on GXY views when zooming in for the following symbols:
  • Single Fence
  • Double Fence
  • Double Apron Fence
  • Low Wire Fence
  • High Wire Fence
  • Antitank Ditch - Under Construction
  • Antitank Ditch - Complete
  • Wire Obstacle - Unspecified

Upgrade considerationLuciadFusion

The eye-dome lighting technique will be enabled by default when visualizing point cloud data sets. To disable, a custom TLspPointCloudStyle should be used for 3DTile point clouds, or a custom TLspPlotStyle for LIDAR point clouds.
For more details, see the how-to article on eye-dome lighting.

Upgrade considerationLuciadFusion

LCD-10695
The Java version handling in TLcdSystemPropertiesUtil has been improved with a new method isJavaVersion(JavaVersion). Java version check methods below the minimum Java requirement have been removed.

Upgrade considerationLuciadFusion

TLcdOGCFilterFactory: the public constructor has been removed. This class only contains static factory methods and was never designed to be instantiated. To make the intended usage of this class crystal clear, the public constructor has been removed.

Upgrade considerationLuciadFusion

LCD-7667
A new version of the JAI ImageIO library is used.
  • Fix for possible IndexOutOfBoundsException when encoding a GeoTIFF with JPEG compression.

Upgrade considerationLuciadFusion

LCD-10754
Removed com.luciad.view.lightspeed.action.TLspDeleteSelectionAction in favor of com.luciad.view.TLcdDeleteSelectionAction. This is an incompatible change which can be resolved by using TLcdDeleteSelectionAction.

Upgrade considerationAviation Standards

LCD-10586
com.luciad.ais.model.TLcd2DBoundsIndexedModelList has been removed since it duplicated com.luciad.model.TLcd2DBoundsIndexedModelList. Existing usages of the removed class can simply be replaced with com.luciad.model.TLcd2DBoundsIndexedModelList.

2019.0

2019.0.11

ImprovementLuciadFusion

LCD-11004
Improved TLcdBoxIcon's frame in HiDPI rendering.

ImprovementLuciadFusion

LCD-11003
TLcdSymbol: improved anti-aliased/HiDPI rendering of several shape types.
TLcdRotatingIcon also works better with anti-aliased/HiDPI symbols.

ImprovementLuciadFusion

LCD-10996
TLspLabelPainter has the behavior to not display labels when they are obscured by the terrain. It is now possible to disable this behavior, i.e. allow labels to remain visible, even if their anchor is located behind the terrain. See TLspLabelPainter#setUseTerrainForCulling.

ImprovementLuciadFusion

LCD-10981
The TLcdGXYRoundedPointListPainter did not correctly paint polygons that crossed the date line.

ImprovementLuciadFusion

LCD-10973
Improved the accuracy of TLcdLonLatParser.

Bug fixLuciadFusion

LCD-11010
Fixed a potential synchronization issue between the calling thread and the Swing EDT in TLspExternalView#display().

Bug fixLuciadFusion

LCD-10984
TLcdGXYLabelPainter and TLcdGXYPolylineLabelPainter's clone method didn't do a correct deep clone of all fields. This could lead to incorrectly painted labels when enabling asynchronous painting.

Bug fixLuciadFusion

LCD-11005
It is now possible to enable only a subset of the navigation actions when the combined gestures property is activated using the TLspTouchNavigateController#setCombineGestures(true). See the javadoc of setShouldRotate, setShouldPan, setShouldZoom and TLspTouchNavigateController(aShouldRotate, aShouldZoom, aShouldPan) for more details.

Bug fixDefense Symbology

LCD-10997
Fixed an issue that caused a VM crash when closely zooming in on the Line Of Contact symbol with planned status in a GXY view.

Bug fixDefense Symbology

LCD-10986
Fixed caching issue which could cause the default symbology style configured on the TLcdMS2525bGXYLabelPainterProvider to be used by painters provided by the TLcdMS2525bGXYPainterProvider and vice versa. Same issue has also been resolved for TLcdAPP6AGXYLabelPainterProvider and TLcdAPP6AGXYPainterProvider

Bug fixDefense Symbology

LCD-10964
Fixed a performance issue that occurred on GXY views when zooming in for the following symbols:
  • Follow And Assume
  • Follow And Support
  • Direction Of Attack - Main Attack
  • Direction Of Attack - Supporting Attack
  • Abatis
  • Crossing Site/Water Crossing - Lane
  • Crossing Site/Water Crossing - Ferry
  • Crossing Site/Water Crossing - Raft Site
  • Foxhole, Emplacement or Weapon Site
  • Linear Target
  • Linear Smoke Target
  • Final Protective Fire
  • Line Of Contact

Bug fixDefense Symbology

LCD-10983
Fixed a performance issue that occurred on GXY views when zooming in for the following symbols:
  • Seize
  • Withdraw
  • Withdraw Under Pressure
  • Relief In Place

Bug fixDefense Symbology

LCD-10977
Fixed a performance issue that occurred on GXY views when zooming in for the following symbols:
  • Isolate
  • Occupy
  • Retain
  • Secure

Upgrade considerationLuciadFusion

LCD-10526, LCD-10974
To simplify implementing an ILcdGXYChainableController, the view no longer dispatches the same event twice to controllers implementing both MouseListener/MouseMotionListener/MouseWheelListener and ILcdAWTEventListener. For example, the view used to dispatch a mouse drag event to both handleAWTEvent and mouseDragged. This is no longer the case.
If you have a controller like this, you can dispatch events yourself as follows:
      @Override
      public void handleAWTEvent(AWTEvent aEvent) {
        // delivers drag events to #mouseDragged, wheel events to #mouseWheelMoved, and so on
        com.luciad.gui.TLcdAWTUtil.dispatchAWTEvent(aEvent, this);
      }
    

2019.0.10

ImprovementDefense Symbology

LCD-10952
Added Hostility indication labels (ENY) to the "Obstacle Effect - Block" symbol

ImprovementDefense Symbology

Increased spacing between letters of ENY decorations on line symbols in GXY views.

Bug fixLuciadFusion

LF-1858
Fixed Fusion Studio notifications when deployed in WebLogic server.

Bug fixLuciadFusion

LCD-10966
TLcdServiceLoader no longer throws an exception when the current thread's context class loader is null.

Bug fixLuciadFusion

LCD-10960
Fixed the handling of the SLD label placement offset for lines in Lightspeed views: while the implementation previously positioned the label at a random side of the shape depending on the current view extent, it now takes the offset sign into account to consistently position the label at one side of the shape.

Bug fixLuciadFusion

LCD-10959
Improved the TLcdGeoTIFFModelEncoder#canExport to check that the image within the model does have values of type double. If this is the case the method returns false as encoding such images is not supported by the GeoTIFF encoder.

Bug fixAdvanced Raster Services

LF-1855
The ECW decoder now actively loads the Microsoft Visual C++ runtime libraries on Windows.

Bug fixDefense Symbology

LCD-10893
Fixed ArrayIndexOutOfBoundsException that could occur when editing the second to last sector of "Weapon/Sensor Range - Sector Fan" symbols with an uneven number of points in their point list.

Bug fixDefense Symbology

LCD-10936
Fixed a performance issue that occurred on GXY views when zooming in for the following symbols:
  • Fortified Line
  • Bearing Line
  • Retirement
  • Antitank Wall
  • Obstacle Restricted Area
  • Main Supply Route
  • Alternate Supply Route
  • Explosive State of Readiness 1 (Safe)
  • Explosive State of Readiness 2 (Armed But Passable)
  • Roadblock Complete
  • Single Concertina
  • Double Strand Concertina
  • Triple Strand Concertina

Bug fixMaritime Standards

LCD-10948
ECDIS S52 layers didn't pick up the value from setInteractMargin properly for text elements. This is now resolved.

2019.0.09

ImprovementMaritime Standards

LCD-10919

Added support for InlandECDIS (IENC) cells that contain regular ENC data.

While this is not according to the specification, data providers often do this. For example, often IENC cells contain both "achare" objects (part of IENC) and "ACHARE" objects (part of regular ENC).

The IENC object classes and attributes now include those from ENC that were not already part of the IENC spec. Similarly, the IENC visualization rules now include the full S-52 rules as a fallback.

If you have IENC cells or catalogs/multicatalogs with only IENC cells, all this will be picked up automatically.

If you have catalogs or multicatalogs that contain cells of product type IENC as well as regular ENC, you have to manually force IENC. This is because the cells themselves contain this information, and are lazy-loaded.

      // Decode the model
      TLcdS57CatalogueModelDecoder decoder = TLcdS57ProductConfiguration.getInstance(ELcdS57ProductType.IENC).createCatalogueModelDecoder();
      decoder.setLoadingPolicy(SOFT_REFERENCED);
      ILcdModel model = decoder.decode("/path/to/CATALOG.031");
    

Bug fixLuciadFusion

LCD-10945
In a Lightspeed view, imagery with an IndexColorModel could sometimes be visualized with incorrect colors.

Bug fixLuciadFusion

LF-1856

ILcdLoggerFactory and its implementations are no longer obfuscated so that they can be picked up by the service loader.

You don't need to do anything when you obfuscate your application and include our luciadlightspeed.pro file in your Proguard configuration, as is recommended.

If you use your own Proguard configuration file which does not include luciadlightspeed.pro, you need to add the following lines:

      -keep interface com.luciad.util.logging.ILcdLoggerFactory
      -keep class * implements com.luciad.util.logging.ILcdLoggerFactory
    

Bug fixLuciadFusion

LCD-10918
SLD raster rendering in GXY ignored any alpha band in the source image in case no channel selection and/or normalization was defined.

Bug fixLuciadFusion

LCD-10944
Improved the robustness of ALcdImageMosaic to cope with small inaccuracies between the image bounds and the mosaic's tile grid bounds.

Bug fixDefense Symbology

LCD-10929
Fixed an issue that affected GXY views where the labels of some line symbols were not properly aligned with the stroke of the symbol in some view projections.

Bug fixMaritime Standards

LCD-10937
Fixed an issue when applying cell updates that referred to non-existing fields in the base cell. This caused errors when loading these cells. Now, the cells are loaded and the update is applied.

Bug fixMaritime Standards

LCD-10943
The InlandECDIS (IENC) visualization rules had swapped the "symbolized boundaries" with the "plain boundaries". This has now been corrected.

Upgrade considerationLuciadFusion

LCD-10871
The fillOutlineArea property of TLcdGXYImagePainter is now set to false for models with multiple images when created with TLcdGXYImagePainter.create. Some layer factories use this method internally. The result is that outlines will no longer be filled for these cases. This avoids cluttering the view with red hatched rectangles in areas where they overlap.

Upgrade considerationLuciadFusion

LF-1706
Remove duplicate, older versions of slf4j-api and spring-tx. The removed jars are slf4j-api-1.7.22.jar and spring-tx-5.1.1.RELEASE.jar.

2019.0.08

Bug fixLuciadFusion

LCD-10915
Fixed a potential deadlock when initializing a TLspSwingView in certain circumstances.

Bug fixLuciadFusion

LCD-10914
3D Tiles visualisation: Fixed an issue where TLcdOGC3DTilesModelDecoder would not propagate correctly the transformation matrix from the tileset.json to the meshes.

Bug fixLuciadFusion

LCD-10905
Encoding a ALcdImage with the TLcdGeoTIFFModelEncoder could fail when the image only had ALcdBandMeasurementSemantics and no ColorModel could be associated with it. This could happen for example when applying image operators on images.

Bug fixLuciadFusion

LCD-10870
Calling TLcdDatabaseModel#clearCache now correctly invalidates the cache instead of only discarding local changes.

Bug fixDefense Symbology

LCD-10902
Fixed a performance issue that occurred on GXY views when zooming in on "Forward Line of Own Troops (FLOT)" and "Fortified Area" symbols.

2019.0.07

Bug fixLuciadFusion

LCD-10897
The clone method of the following painters didn't do a correct deep clone of all fields. This could lead to incorrectly painted labels when enabling asynchronous painting.

Bug fixLuciadFusion

LCD-10894
The TLcdTFWRasterModelDecoder did not take the provided default model reference into account as fall-back when it was provided through the class constructor.

Bug fixLuciadFusion

LCD-10879
Transforming points from a geocentric reference to a geocentric reference with an other unit of measure could result in incorrect results.

Bug fixAviation Standards

LCD-10880
The DAFIFT data preparator tool TLcdDAFIFTDataPreparatorMain could cause a NullPointerException when encountering Refueling Track data (part of file ARF/ARF_PAR.TXT).

Bug fixDefense Symbology

LCD-10872
Added the missing exercise indicator (X) for the MIL-STD-2525 C 'Moored Exercise Mine' symbol for the Unknown, Pending, Friend, Assumed Friend, Neutral and Hostile affiliations.

Bug fixDefense Symbology

LCD-10883
The affiliation and alternate fill color property could not be configured for the APP-6/MIL-STD-2525 Equipment symbol.

2019.0.06

ImprovementAviation Standards

LCD-10767
Added a "Select All" option to ease decoding of all AIXM data types at once in the samples.decoder.aixm.gxy sample.

Bug fixLuciadFusion

LF-1832
Fixed issues with LuciadFusion Studio compatibility with Microsoft Edge.

Bug fixLuciadFusion

LF-1840
Fixed the file info error message for SLD decoding failures to use the more descriptive style failure message.

Bug fixLuciadFusion

LCD-10865
A WFS 2.0 GetFeature request containing a PropertyName filter and sent as an XML POST request triggered a ClassCastException.

Bug fixLuciadFusion

LCD-10779
TLcdGXYOnPathLabelingAlgorithm sometimes put labels at the wrong side of the line when using AlignmentMode#LEFT or AlignmentMode#RIGHT.

Bug fixMaritime Standards

LCD-10868
Scale ranges set on the display settings after creating an S-52 GXY layer were not picked up. They were only picked up if set before creating the layer. This is now resolved: you can use TLcdS52DisplaySettings.setScaleRanges at any time, and your TLcdS52GXYCatalogueLayer will apply the change immediately.

2019.0.05

ImprovementLuciadFusion

LF-1335, LF-1738
The deployment build script (deploy_fusionplatform_service) does not compile the classes under the samples folder anymore, sample classes aren't added to the war and zip files that the script creates.

ImprovementLuciadFusion

The API to create new on-map navigation controls has been simplified:

ImprovementLuciadFusion

LF-1520
Some improvements have been made to improve the performance of LuciadFusion Platform. With these improvements, the application communicates less with the database, which improves the performance of the application.

ImprovementLuciadFusion

LCD-10603
TLspInteractiveLabelsController was updating labels regardless of which view they belonged to. The controller now only updates labels that belong to the view it is configured for.

ImprovementLuciadFusion

LCD-10572
It is now possible to pan a 2D map with two fingers without jitter if the two fingers are close enough to each other. See TLspTouchNavigateController#set2DPanDistanceThreshold for more details.

Bug fixLuciadFusion

LCD-10863
TLcdXYEllipse and TLcdLonLatEllipse: inversed the results of the getTangent2D method to match the direction (counter-clockwise) of the computePointSFCT method.

Bug fixLuciadFusion

LF-1821
Fixed an issue where the deployment build script deploy_fusionplatform_service failed when the src folder containing custom classes was found.

Bug fixLuciadFusion

LCD-10814
Some GeoTIFF files with multi-band data could not be decoded in a headless environment. This was due to the default value for optimize.raster.color.model which was true but cannot be used in a headless environment. The implementation has been fixed and the above flag defaults value has been set to false such that the behavior is the same in an environment with or without graphics.

Bug fixLuciadFusion

LF-1521
When creating a service from a data item and the user cancels, don't create the product.

Bug fixLuciadFusion

LCD-10795
TLspPinLineStyle#getPinVisibilityThreshold() is now evaluated correctly for pins that use PinEndPosition.MIDDLE_OF_BOUNDS.

Bug fixAdvanced GIS Engine

LCD-10409
Fixed a bug in Ellipsoidal Basic Binary Topology where checkTopology and lineIntersectionSFCT results would contradict.

Bug fixDefense Symbology

LCD-10822
Fixed a regression which caused movement direction arrows to be painted in Lightspeed views when they were disabled through styling.

Bug fixDefense Symbology

LCD-10453
Changed the label painter for Boundary lines symbol. The unique designation modifier will now be moved along the boundary so it always remains in view instead of being repeated when zooming in. This change brings the functionality of GXY views in line with Lightspeed views and resolves a number of performance issues and bugs in GXY views.

Bug fixDefense Symbology

LCD-10788
Fixed a regression which caused the painting of the APP-6A/B/C/D "Security (Screen)", "Security (Guard)" and "Security (Cover)" symbols to be broken in GXY views.

Bug fixDefense Symbology

LCD-10820
Fixed issue that caused military icon symbols configured with an invalid affiliation to be painted as a black square and also caused various NullPointerExceptions to be thrown.

Bug fixMaritime Standards

LCD-10847
Scale ranges or scale denominators set on the display settings after creating an S-52 GXY layer were not picked up. They were only picked up if set before creating the layer. This is now resolved: you can use TLcdS52DisplaySettings.setScaleDenominators at any time, and your TLcdS52GXYCatalogueLayer will apply the change immediately.

Bug fixMaritime Standards

LCD-10659
Fixed an issue when applying cell updates that referred to non-existing fields in the base cell. This caused errors when loading these cells. Now, the cells are loaded and the update is applied.

2019.0.04

ImprovementLuciadFusion

LCD-10131
Fixed an issue where the LASzip file was displayed in reverse color when both low and high bits of a 16-bit color were populated.

ImprovementLuciadFusion

LCD-10805
TLcdCassiniSoldner was added. This projection contains ellipsoidal cassini calculations. TLcdCassini has not been modified. It still only supports spherical calculations. TLcdWKTReferenceParser and TLcdEPSGReferenceParser have been modified to support this new projection.

ImprovementLuciadFusion

LF-1730
Show "Loading..." on Style detail page when the style information is being loaded from the server.

ImprovementLuciadFusion

LF-1827
LuciadFusion now reports when the fusion.studio.configuration.datastore property is not set. The prevents LuciadFusion from using an incorrect path for e.g. the uploads directory.

ImprovementLuciadFusion

LCD-10571
The distance threshold at which touch navigation switches between rotating and pitching in 3D, can now be customized. See TLspTouchNavigateController#setPitchDistanceThreshold for more details.

Bug fixLuciadFusion

LF-1819
Fix issue with database validation failures happening when changing the catalog database username.

Bug fixLuciadFusion

LF-1677
Add hatching to bounds feature drawn in the Studio preview map when the actual data isn't previewed, and removed the "almost world bounds" check which prevented the data/bounds from being rendered when the data bounds were close to world extents.

Bug fixLuciadFusion

LCD-10753
3D Tiles conversion: Reduced the memory usage of the conversion from OSGB to 3DTiles.

Bug fixLuciadFusion

LF-1820
Fixed an issue with services having NULL public_ids when migrating from older versions. During the upgrade, all services with NULL public_ids will now be given a unique one.

Bug fixLuciadFusion

LCD-10808
A WFS Transaction Update request was implemented by a delete and insert of respectively the original and updated object, instead of an actual update of the original object. This could trigger unexpected object id changes in case of a database back-end.

Bug fixLuciadFusion

LCD-10800
The SLD normalize improvement LCD-10441 caused a regression where an SLD raster symbolizer with an RGB channel selection containing the same band would throw a NullPointerException.

Bug fixLuciadFusion

LCD-10796
TLcdLonLatGridPainter: fixed a regression introduced in 2018.1 that caused vertical labels not to snap to the edge of the view anymore.

Bug fixLuciadFusion

LF-1689, LF-1753
Moved some hard-coded UI text to the translation files so that it can be localized.

Bug fixLuciadFusion

LF-1797
Fixed an issue where the product validation information was missing after updating the metadata of the product. This prevented creating a service from the product in some cases.

Bug fixLuciadFusion

LF-1779
File Server: Fixed an issue where the file download links are corrupted when a context path is used.

Bug fixLuciadFusion

LCD-10803
Performing a GetFeatureInfo request on a queryable raster layer would fail for the text/plain info format.

Bug fixLuciadFusion

LCD-10793
TLspTouchNavigateController#getMaximumNumberOfPoints incorrectly reported that it could handle up to 10 touch points. TLspTouchNavigateController does not handle more than 2 touch points.

Bug fixLuciadFusion

LF-1724
Close the user tour when the user presses ESCAPE

Bug fixLuciadFusion

LF-1470
Close the typeahead suggestions list if the fetch suggestions request returns error

Bug fixDefense Symbology

LCD-10809
Fixed an issue with MIL-STD 2525 D symbols which only defined a single possible value for status or standard identity 2 modifiers. For example, the "Friendly Planned or on Order Area" symbol defines "Friend" as the only possible standard identity 2 modifier and "Planned/Anticipated/Suspect" as only possible status. The issue caused these symbols to be painted with incorrect affiliation color and status stroke. This issue also caused the values of these modifiers to be empty in the properties customizer panel in the military symbology sample.

Bug fixDefense Symbology

LCD-10679
Changed the following display name of modifiers
  • MIL-STD-2525 B/C/D
    • 'Reinforced or Detached' got renamed to 'Reinforced or Reduced'
  • APP-6 C/D
    • 'Special Headquarters' got renamed to 'Named Headquarters'

Upgrade considerationLuciadFusion

LCD-10798
The laszip4j library has been upgraded to 0.7.

2019.0.03

ImprovementLuciadFusion

LCD-10782
TLspTouchSelectEditController now allows configuring its select controller model.

ImprovementLuciadFusion

LCD-4001
The TAB raster model decoder provides a more clear message in case the TAB file may be for MapInfo MAP (vector) files.

ImprovementLuciadFusion

LCD-10239
The GeoTIFF model decoder documentation contains information on the heuristic used to mark data as elevation.

ImprovementLuciadFusion

LCD-9862
Removed obsolete section in OGC server documentation regarding setting up of native libraries. Native libraries used within LuciadLightspeed / LuciadFusion are extracted from jars automatically.

ImprovementLuciadFusion

LCD-10740
The SERVICE request parameter validation check in the WMS, WFS, WMTS, WCS and CSW server has been made case insensitive to improve interoperability with non-compliant OGC web service clients.

ImprovementMaritime Standards

LCD-10708
Improved rendering of TLcdS52FillStyle on HiDPI displays. You should take into account HiDPI scaling if you are writing your own ILcdS52FillStyle implementations.

Bug fixLuciadFusion

LCD-10781
A regression in LuciadLightspeed 2019.0 prevented TLspSelectController from calling its protected methods.

Bug fixLuciadFusion

LCD-10746
Resolved a performance regression when rendering halo's in HiDPI displays.

Bug fixLuciadFusion

LCD-10748
TLcdMeasureFormatUtil now formats flight levels correctly, using an "FL" prefix.

Bug fixLuciadFusion

LCD-10783, LCD-7660, LCD-7633
The handling of WFS 1.1 GetFeature requests could trigger a service exception report in case of a POST request with a BBOX filter containing coordinates outside the coordinate reference's projection bounds.

Bug fixLuciadFusion

LCD-10780
TLcdAltitudeFormat no longer adds a space after the flight level prefix FL.

Bug fixLuciadFusion

LCD-10648

TLspTouchNavigateController now extends ALspConfinedTouchController. This fixes a bug where calling startInteraction or terminateInteraction would call those same methods multiple times on the rest of the controller chain.

This could cause problems in any of the appended controllers. For example, when a TLspKeyActionController was appended to it, it would trigger a NullPointerException.

Bug fixLuciadFusion

LCD-9815
Model change events must happen on the Event Dispatch Thread (EDT). The WMS client sample now fulfils this expectation.

Bug fixLuciadFusion

LCD-10756
TLcdWFSProxyModelFactory and TLcdWFSProxyModel#Builder did not take into account a configured model reference parser when decoding WFS response data.

Bug fixLuciadFusion

LCD-10657
GML model encoders: encoding an empty model could sometimes result in an exception stating "No compatible elements to export".

Bug fixLuciadFusion

LCD-10744
TLcdWKTReferenceParser didn't interpret the latitude origin for Cassini projections correctly. This also impacted TLcdEPSGReferenceParser for EPSG references EPSG:2314, EPSG:3068, EPSG:3140, EPSG:3377-3385, EPSG:4390-4398, EPSG:24500, EPSG:28191, EPSG:28193 andEPSG:30200.

Bug fixDefense Symbology

LCD-10745
Fixed a regression that was introduced by the fix for LCD-10640, causing symbols to be painted with an extra line to the symbol's start point in a GXY view.

Bug fixDefense Symbology

LCD-10250
Fixed issue with the rendering of Cover, Screen and Guard symbols in APP6 symbologies in GXY views.

Bug fixDefense Symbology

LCD-10250
An issue has been fixed that caused the labels of area symbols to be placed on the stroke instead of inside the area when label placement was set to be centered through styling. All area symbols have been converted to a new GXY painter in order to fix the label placement for area symbols in GXY views.

Bug fixDefense Symbology

LCD-10743
Fixed issue that caused some rounded polyline symbols to be painted with straight lines in GXY views.

Upgrade considerationLuciadFusion

LCD-10792
TLspTouchNavigateController: the setPitchSensivityFactor method which was accidentally added in version 2019.0.02 has been removed again.

2019.0.01

ImprovementLuciadFusion

LCD-10719
The WCS client API now automatically uses sensible settings for TLcdWCSProxy's tiled multilevel raster structure, based on the coverage bounds. This helps to efficiently query WCS raster data and avoids manual configuration of the raster structure settings (tile width, tile height, rows, columns ...).

ImprovementLuciadFusion

TLcdGXYSurfacePainter now supports creation of a surface, provided that it has an exterior ring and no inner rings.

Bug fixLuciadFusion

LF-1790
Removed -XX+UseParNewGC java command line parameter from the Fusion deployment startup scripts, which prevented the server from starting when running Java 11.

Bug fixLuciadFusion

LF-1791
Fixed an issue that prevented data from being added to an existing product in LuciadFusion Studio.

Bug fixLuciadFusion

LCD-10689
When running LuciadLightspeed on a 32-bit JVM, functionality that depends on OpenCL could cause exceptions, e.g. when using an ALcdImageOperator.

Bug fixLuciadFusion

LCD-10701
Improved rendering of SLD icons on HiDPI displays.

Bug fixLuciadFusion

TLcdIconFactory.LINK_DECO_ICON: made the 16x16 icon consistent with the other icon sizes.

Bug fixLuciadFusion

LCD-10688
TLspIconStyle: icons did not adapt correctly when switching between a HiDPI and non-HiDPI screen. As a result icons would appear to large on the non-HiDPI screen or to small when switching to a HiDPI screen.

Bug fixLuciadFusion

LCD-10687
TLcdImageIcon: the icon would not be painted with the correct resolution when switching between a HiDPI and a non-HiDPI display.

Bug fixLuciadFusion

LCD-10686
TLspSLDStyler configured an incorrect labeling algorithm for line and polygon symbolizers. This would result in polygons with labels on the outline of the polygon instead of labels inside the polygon.

Bug fixLuciadFusion

LCD-10730
TLspSelectController was no longer able to select objects with the rectangle selection feature.

Bug fixDefense Symbology

LCD-10714
Fixed issue where an exception was thrown during creation of the MIL-STD-2525 D symbol "Rectangular Target - Single Target (Aegis Only)" in a GXY view.

Bug fixDefense Symbology

LCD-10698
Fixed issue with icon symbols of the APP6-C standard where the country code label would appear in multiple places around the symbol.

2019.0

ImprovementLuciadFusion

The lightspeed.imageprojection sample has been modified to show a sample video draped onto the terrain instead of a single image icon.

ImprovementLuciadFusion

Improved the rendering of both GXY and Lightspeed views on High DPI screens. Accordingly, TLcdImageIcon now supports multiple versions of an icon for different resolutions and uses the proper one according to the DPI scale of the screen.

Note:In most Linux distributions, Java does not pick up the operating system's configured scale factor. You can use the -Dsun.java2d.uiScale VM parameter to manually set the scale factor.

Please refer to the articles Support high-resolution displays on a GXY map and Support high-resolution displays on a Lightspeed map for more information.

ImprovementLuciadFusion

LCD-10410
TLcdWFSDataSource.Builder now allows to set a QName as feature type name, next to the existing capability to set a String. This better aligns with the OGC WFS specification, which focuses on the use of qualified names for feature types.

ImprovementLuciadFusion

LCD-3558
Improved the performance of adding and removing (many) layers to a view.

ImprovementLuciadFusion

ILcdPointList now implements all methods of ILcdPointList2. As such, there is no need to use the latter anymore.

ImprovementLuciadFusion

The WFS client model decoder class TLcdWFSModelDecoderDecorator can now be instantiated with a custom ILcdOWSTransport. Example uses cases include the configuration of authentication credentials or request / response interception.

ImprovementLuciadFusion

Visualizing Bing Maps data has been simplified: Adding the Bing Maps logo and copyright information on your view is also simplified:
  • Introduced TLcdBingMapsCopyrightIcon#asComponent method allowing to convert the copyright icon in a component which can be added to a Swing UI
  • Introduced the TLcdBingMapsLogoIcon class (including a similar asComponent method), making it easy to add the Bing Maps icon to a Swing UI

ImprovementLuciadFusion

You no longer have to create and set up a TLcdGXYAsynchronousPaintQueueManager to use asynchronous layer wrappers in an ILcdGXYView.

ImprovementLuciadFusion

It is now possible to add products containing elevation data to an LTS service. The elevation data will be fused into a LuciadFusion coverage before it is served. A preprocess job will be created for every elevation data product in an LTS service to perform the fusing. The fused output of an elevation data product is optimized to be consumed by LuciadRIA.

ImprovementLuciadFusion

Luciad Fusion system administrators can now configure Fusion to use an Oracle database (versions 11g, 12c and 18c) for the catalog (see config/application-fusion.development.yml for details).

ImprovementLuciadFusion

Luciad Fusion system administrators can now configure Fusion to use a SQL Server database (versions 2012, 2014, 2016 and 2017) for the catalog (see config/application-fusion.development.yml for details).

ImprovementLuciadFusion

LCD-10526
The new TLcdGXYNavigateController allows you to zoom using the mouse wheel and pan by dragging the mouse. TLcdGXYSelectController2, TLcdGXYEditController2, TLcdGXYNewController2, TLcdGXYInteractiveLabelsController, TLcdAdvancedMapRulerController, and TLcdMagneticNorthGXYController now implement ILcdGXYChainableController, so you can simply append a navigate controller to add zoom and pan behavior.

ImprovementLuciadFusion

TLcdGXYLayer now configures a more accurate pen by default. If you need to switch back to the previous implementation, you can do so by calling layer.setGXYPen(new TLcdGXYPen());.

ImprovementLuciadFusion

The Studio web front end can now be customized through configuration files. The theme configuration file can be reloaded automatically after any changes have been made, the user interface can be adjusted automatically according to the new styling values.

ImprovementLuciadFusion

Raster painting performance has been improved in Lightspeed views for imagery that has an IndexColorModel and for RGB images without an alpha channel. The performance improvement will be automatically applied when possible, this requires no configuration.

ImprovementLuciadFusion

LF-1339
Data and styles uploaded in the LuciadFusion Studio web front end can now be deleted. Previously it was not possible to delete uploaded data or styles. The corresponding files will be deleted from the uploads folder if a data or style is deleted. Note that deleting a data or style can impact products or services.

ImprovementLuciadFusion

TLcdCSVModelDecoder now uses the TLcdHiddenDataPropertyAnnotation to annotate its geometry property and its WKT property. These properties will no longer be revealed to the end-user in Sample UI nor in Lucy UI.

ImprovementLuciadFusion

LF-1451
Crawl jobs can now be configured to delete Data and Styles if the corresponding files are found to be deleted when crawling. This can be enabled by setting the crawl job property ignoreDeletedFiles to false using the REST API or changing the 'Deleted Files' option of a crawl job to 'Detect' in the web interface.

ImprovementLuciadFusion

LF-1528, LF-1450, LF-1223
Add the ability to order the products within a service from within the LuciadFusion Studio web front end.

ImprovementLuciadFusion

LCD-10243
LAS and LAZ files which only contain black colors now will be treated as non-colored data.

ImprovementLuciadFusion

LF-1627
A new configuration property has been added to allow users to define a directory where the temporary preprocessing files will be stored in. The point cloud preprocessor creates some intermediate results during the preprocessing and deletes them afterwards, these files will be stored in this directory. See the fusion.ogctilesservice.preprocessorTempPath property in the fusion.common.yml config file for more information.

ImprovementLuciadFusion

LCD-9956
ILcdEllipsoid: introduced ILcdEllipsoid#geoc2height to calculate the height above the ellipsoid for a geocentric point.

ImprovementGraph and Routing Engine

TLcdPartitionedShortestRoutePreprocessor: the return value of the preprocess method now uses generics.

ImprovementAviation Standards

A new property separateFeatureTypes has been added to TLcdAIXM51ModelDecoder to support decoding AIXM 5.1 data as a model tree node, containing one model per separate feature type (airspace, airport/heliport, ...). This was already possible as a manual post-decoding step through a utility method in TLcdAIXM51MessageUtil, but it can now be done automatically by the decoder. Similarly, TLcdAIXM51ModelEncoder now also accepts model tree nodes containing one model per feature type.

ImprovementDefense Symbology

LCD-10640
Painting of some military symbols in GXY views now starts once the first point has been placed, as opposed to once the minimum number of points for that symbol has been placed. Which gives quicker feedback as to how the symbol would look during creation.

ImprovementDefense Symbology

Editing behaviour of circular symbols has been improved so that moving the center point now translates the whole symbol instead of only the center point.

ImprovementDefense Symbology

LCD-10432
The interfaces ILcdEditableAPP6ACoded and ILcdEditableMS2525bCoded now extend the interface ILcdCloneable interface instead of the Cloneable interface.

ImprovementDefense Symbology

LCD-10429
The classes TLcdAPP6ADataTypes and TLcdMS2525bDataTypes have now been marked as final to make it clear they should not be extended. Their default constructor was already private, meaning it was already impossible to extend these classes. This change should thus not have any impact on existing applications.

ImprovementDefense Symbology

Patterns and strokes of tactical graphics in a Lightspeed view now scale with the configured line width. This improves visualization on HiDPI devices.

Bug fixDefense Symbology

LCD-10642
Fixed issue that caused labels to be cut of when label font scaling was enabled in styling. The scaling calculation has also been changed os it is consistent across all symbols. Specifically the scaling is always made based on a combination of label font size and symbol size configured in styling. See ILcdMS2525bStyle#getLabelFont, ILcdMS2525bStyle#getSizeSymbol, ILcdMS2525bStyle#isLabelFontScalingEnabled for MIL-STD-2525 symbologies. See ILcdAPP6AStyle#getLabelFont, ILcdAPP6AStyle#getSizeSymbol, ILcdAPP6AStyle#isLabelFontScalingEnabled for APP6 symbologies.

Upgrade considerationLuciadFusion

The lib directory now contains a newer version of the httpmime jar (httpmime-4.5.3.jar -> httpmime-4.5.6.jar). The lib directory now contains a newer version of the httpclient-cache jar (httpclient-cache-4.5.3.jar -> httpclient-cache-4.5.6.jar).

Upgrade considerationLuciadFusion

The lib directory now contains a newer version of the QueryDsl jars (querydsl-*-4.1.3.jar -> querydsl-*-4.2.1.lcd-2.jar). The lib directory now contains a newer version of the Liquibase jar (liquibase-core-3.5.3.jar -> liquibase-core-3.6.3.jar).

Upgrade considerationLuciadFusion

Lightspeed views now support high DPI rendering. This means that fonts, icons and other map elements will be automatically resized in proportion to the DPI scale factor configured in the operating system. Due to the way high DPI support is implemented in Swing, however, applications that use a Lightspeed view now essentially have an additional coordinate system to deal with, which we refer to as "toolkit coordinates". In most scenarios this is merely an implementation detail. Applications may need to be adjusted to work correctly with DPI scaling if they

Please refer to the javadoc of ALspViewXYZWorldTransformation for more information on toolkit coordinates and DPI scaling.

Upgrade considerationLuciadFusion

The method TLcdWFSDataSource#getFeatureTypeName() now returns a QName instead of a String, to better reflect the focus of the OGC WFS specification on the use of qualified names for feature type names. Existing implementations can be updated by simply relying on the toString method to convert the QName to a String.

Upgrade considerationLuciadFusion

TLcdIconFactory.DRAW_VARIABLE_BUFFER_ICON has been removed since it was duplicating the TLcdIconFactory.DRAW_VARIABLE_WIDTH_BUFFER_ICON.

Upgrade considerationLuciadFusion

TLcdGXYSelectController2 now only draws a multi-select rectangle when holding down the shift key. This makes it trivial to add pan behavior by appending TLcdGXYNavigateController. To revert the previous behavior, call selectController.setMultiSelectModifierKey(0);.

Upgrade considerationLuciadFusion

ALspDensityStyle.Builder and subclasses: the public constructors have been removed. Creating your own density style (builder) instances was never supported. Removing the constructors makes this clear.

If you called the public constructor of TLspDensity...Style.Builder, use the TLspDensity...Style#newBuilder method instead.

Upgrade considerationLuciadFusion

LCD-10486

ILcdGXYPen and ILcdAWTPath now support double coordinates to improve precision in HiDPI views. Hereafter methods accepting integer coordinates accept double coordinates.

In the unlikely event that you have a custom ILcdGXYPen or ILcdAWTPath implementation, you may have to modify it to use double coordinates as well, or alternatively convert the double coordinates to integers.

The following classses inherit ALcdGXYPen, and they were updated accordingly to be able to use double coordinates.

Accordingly, the type of the protected field ALcdGXYPen#fLastAWTPoint has been changed to TLcdXYPoint and the field has been renamed as fLastViewPoint.

Upgrade considerationLuciadFusion

LCD-9310, LCD-9763
A new version of the JAI ImageIO library is used.
  • Support for decoding TIFF files using floating point predictor 3 (TIFF Technical Note 3) has been added.
  • It improves on memory usage needed for reading the image metadata for large (Big)TIFF files when decoding the model.

Upgrade considerationLuciadFusion

All public classes that depended on the legacy 3D component were removed from the API.

Upgrade considerationLuciadFusion

LuciadLightspeed now uses LWJGL as its Java binding for the OpenGL and OpenCL APIs (instead of the JogAmp libraries used by previous versions). This means that the following JAR files are no longer part of the release:

  • gluegen-rt-<version>.jar
  • gluegen-rt-<version>-natives-<platform>.jar
  • jocl-<version>.jar
  • jocl-<version>-natives-<platform>.jar
  • jogl-all-<version>.jar
  • jogl-all-<version>-natives-<platform>.jar

The following JARs have been added to replace the above:

  • lwjgl-<version>.jar
  • lwjgl-<version>-natives-<platform>.jar
  • lwjgl-jawt-<version>.jar
  • lwjgl-opencl-<version>.jar
  • lwjgl-opengl-<version>.jar
  • lwjgl-opengl-<version>-natives-<platform>.jar

Users upgrading from LuciadLightspeed V2018.x or earlier to V2019.0 may need to adapt their IDE settings or build scripts to reflect these changes.

Additionally, the migration to LWJGL has also brought with it some changes to how Lightspeed views deal with NIO buffers. The most visible result of these changes is that some data which was previously stored in native memory, will now be stored on the heap. As a result, upgrading an application from an older version of LuciadLightspeed to V2019.0 or newer may result in the application using less native memory and more heap memory. This may require some adjustment of JVM parameters, especially for applications that were tuned to run within tight memory constraints.

Finally, some of the API surrounding ALcdGLBinding has been changed incompatibly:

  • ILcdGLBuffer et al. have been removed. All API methods that used this interface now accept only java.nio.Buffer and/or primitive arrays. Applications that used these API methods will have to be updated accordingly. Note that the new class TLcdGLNIOBufferFactory should be used to allocate buffers that are intended to be passed to OpenGL calls.
  • The interface ILcdGL has been streamlined and now contains only the OpenGL core and compatibility profile API (i.e. no OpenGL extensions). It has, however, been updated to cover all OpenGL versions up to and including OpenGL 4.6. Applications that contain custom OpenGL code and use certain OpenGL extensions, can access these extensions by calling LWJGL directly. This is safe and easy to do since LWJGL exposes the OpenGL API entry points as static methods.
  • ILcdGL has also been stripped of method overloads that take a primitive array followed by an array offset parameter. Applications that use these methods should use an NIO buffer instead, positioned to the appropriate offset.
  • The methods makeCurrent(), canMakeCurrent() and release(), which were previously deprecated, have now been removed from ILcdGLDrawable. To execute code that requires an active OpenGL context, use the drawable's invokeLater() or invokeAndWait() methods instead.
  • The previously deprecated displayChanged() method has been removed from ILcdGLEventListener. The method was never called by any implementation of ILcdGLDrawable.

Upgrade considerationLuciadFusion

LCD-10581
The return types of some of the methods of the following classes were narrowed from Enumeration to ILcdAutoCloseableEnumeration. The new return type allows clients to close enumerations so resources can be cleaned up.

Upgrade considerationLuciadFusion

LCD-10353
The class com.luciad.ogc.common.log.TLcdOGCLogFilter has been removed from the API. This Servlet Filter implementation was introduced in the past for request logging purposes but was never integrated / used in any of the OGC web service (WFS / WMS / WCS) implementations. The removal of this class should not pose any impact.

Upgrade considerationAdvanced GIS Engine

ILcd2DBasicBinaryTopology: the constants defined in this interface have moved to the super interface. The ILcd2DBasicBinaryTopology no longer has any functionality left and has been deprecated as a result. It might get removed in a future release.

Upgrade considerationDatabase Connectors

The lib directory now contains the latest SQL Server JDBC driver in mssql-jdbc.jar (version 7.2.1.jre8) replacing sqljdbc4.jar (version 4.0.2206.100).

Upgrade considerationDatabase Connectors

An upgrade to the latest Oracle JDBC Driver has introduced slightly stricter connection url validation. Users that are connecting to Oracle databases without specifying a SID and not including the trailing ":" will now get an error that the connection url is invalid.  The solution is to correct the connection string to include the trailing ":". This upgrade replaces oracle_jdbc.jar (version 11.2.0.1.0) with ojdbc8.jar and sdoapi.jar (version 12.2.0.1).

Upgrade considerationTerrain Analysis Engine

TLspLOSProperties has been made final. This class was never designed to be extended and to make that clear the class has been made final.

Upgrade considerationWeather & Environment Standards

LCD-10324
Added a dependency to a customized version of the thredds library, used to parse NetCDF and GRIB files.

Upgrade considerationDefense Symbology

LCD-10662
ILcdMS2525bStyle and ILcdAPP6AStyle now extend ILcdCloneable. TLcdDefaultMS2525bStyle and TLcdDefaultAPP6AbStyle already implemented ILcdCloneable so nothing should change if you were using those classes directly. If you have your own implementation of ILcdMS2525bStyle or ILcdAPP6AStyle you will need to add a clone() method.

2018.1

2018.1.16

Bug fixLuciadFusion

LCD-10139
Fixed an issue where the bounds of an ALcdImage might not get painted if the model contained multiple images with different references.

Bug fixLuciadFusion

LF-1770
Fixed an issue where adding a tile store file to already crawled coverages would cause LuciadFusion to create duplicate data of the coverages when crawling the tile store file.

Bug fixLuciadFusion

LCD-10650
TLcdGXYLabelPainter and its extensions could paint labels of non-selected objects in the selection color.

Bug fixLuciadFusion

LF-1755
Fixed an issue with the Studio datepicker. It was broken when Studio is translated to another language.

Bug fixLuciadFusion

LF-1756
Fixed an issue where the special keyword S52-SLD was missing from the capabilities of an WMS service if it contained ECDIS data.

Bug fixLuciadFusion

LF-1754
Fixed an issue where deleting a service could fail if the preprocess output for that service could not be deleted. LuciadFusion will now delete the service even if the deletion of the preprocess output fails. Deletion of the preprocess output failing usually indicates that those files are still used by some other process.

Bug fixLuciadFusion

LCD-10645
The TLcdGXYClippingPainterWrapper performed its clipping incorrectly when the clipping geometries passed world boundaries. This could happen for example when defining a clip shape in a Lambert Conformal Conic based coordinate reference and displaying the data on the map in an Equidistant Cylindrical projection.

Bug fixLuciadFusion

LCD-10628
ALcdTransformingModel: Fixed a memory leak that could occur when modifying elements in the original model.

Bug fixLuciadFusion

LCD-10554
TLspLabelPainter: labels using a TLspTextStyle with an underline text attribute could, in some case, be painted as a label without underline.

Bug fixAviation Standards

The method to automatically sort time slices in decoded AIXM 5.1 models, TLcdAIXM51ModelDecoder#setAutoSortTimeSlices, was erroneously mapped on the behavior of TLcdAIXM51ModelDecoder#setAutoMergeFeatures.

Bug fixDefense Symbology

LCD-10656
Relaxed the validation of possible label keys that can be set using TLcdDefaultAPP6AStyle#setLabelEnabled and TLcdDefaultMS2525bStyle#setLabelEnabled so all static fields of ILcdAPP6ACoded and ILcdMS2525bCoded respectively, can be passed to them without throwing exceptions. When passing a label key of a modifier that is not a label, this will have no effect on the styling of the symbol. Validation of label keys for TLcdDefaultAPP6AStyle#isLabelEnabledTLcdDefaultMS2525bStyle#isLabelenabled has also been replaced. these methods will no longer throw IllegalArgumentException for unknown label keys, they will return false for unknown labels instead.

Bug fixDefense Symbology

LCD-10508
Fixed incorrect labeling for following MIL-STD-2525 C symbols:
Hierarchy Code Symbol Name
2.X.4.3.3.4 Censor Zone
2.X.4.3.3.4.1 Censor Zone, Irregular
2.X.4.3.3.4.2 Censor Zone; Rectangular
2.X.4.3.3.6 Critical Friendly Zone (CFZ)
2.X.4.3.3.6.1 Critical Friendly Zone (CFZ), Irregular
2.X.4.3.3.6.2 Critical Friendly Zone (CFZ), Rectangular

Bug fixDefense Symbology

LCD-10610
Fixed issue where the method TLcdNVG20Point#getZ would always return 0.0, no matter what the value of the z property was set to. TLcdNVG20Point#getZ also always returned 0.0 when decoding an nvg file where the z attribute of the point element was not 0.0.

2018.1.15

ImprovementLuciadFusion

LCD-10631
The Lightspeed demo sample was removed from the release. Refer to the Lucy Showcase for integration samples and the samples and tutorials for simple use cases.

ImprovementLuciadFusion

LCD-10611
It is now possible to customize the distance at which the pin of a label disappears. See TLspPinLineStyle.Builder#pinVisibiltyThreshold.

Bug fixLuciadFusion

LCD-10505
The axis-order was not correctly handled for all coordinate reference systems. For example the Polish CRS EPSG:2180 reverses the X and Y axis which needs to be reflected in the GetMap BBOX parameter.

Bug fixLuciadFusion

LCD-10584
Using TLspFixedOnPathLabelLocationProvider for curves with a large length (around 1000km or longer) resulted in unstable labels.

Bug fixLuciadFusion

LCD-10629
Bounds transformations from a reference with a cylindrical projection to a geodetic reference would sometimes result in bounds that are too small. This could result in data not being shown in the view when zooming out.

Bug fixAviation Standards

LCD-10636
Made the decoding of DAFIFT ATS Route data more robust in case of a missing route direction property.

Bug fixAviation Standards

LCD-10601
The method canCreateLayers in the sample Lightspeed layer factory class AISLayerFactory always assumed a non-null data model, which could lead to a NullPointerException.

Bug fixAviation Standards

Made the decoding of DAFIF(T) data more robust in case of a missing ICAO code property in holding, navaid, airspace and waypoint records.

2018.1.14

ImprovementLuciadFusion

LF-1757
Added a new method to the TLfnPointCloudPreprocessor class which returns the list of data sources.

ImprovementLuciadFusion

LCD-10612
The OGC Web Client HTTP(S) connection class TLcdOWSHttpTransport now automatically sets a "User-Agent" request header on each request (with as value the String Java followed by the Java version). This improves the interoperability with servers that require a non-empty value for this header.

Bug fixLuciadFusion

LCD-10595
TLspShapeLayerBuilder: when culling was disabled and a TLcdModelQueryConfiguration was configured, the objects on the map would not be updated when the view scale changed.

Bug fixLuciadFusion

LCD-9051
The TLcdGeoTIFFModelDecoder could result in certain cases in throwing an IllegalArgumentException. This was the case when
  • the decoder was configured to create multiple levels automatically for files having only a single level of detail
  • the data had 4 samples/pixel
Note that for performance it is always better to ensure the GeoTIFF file is well-structured, i.e., it is organized with internal tiling and having multiple levels of details.

Bug fixLuciadFusion

LCD-10604
The WMTS client could not handle WMTS services with capabilities that did not include a service identification section.

Bug fixInfrastructure Standards

LCD-10616
Fixed a NullPointerException related to the view clip when using a TLspGXYLayerAdapter to visualize DGN data.

Bug fixRadar Connectors

LCD-10619
When the records received from a radar feed (ASTERIX cat240) are not next to each other in terms of azimuth, the visualization would show artifacts.

2018.1.13

Bug fixLuciadFusion

LCD-10592
The TLcdWFSModelDecoderDecorator#decodeModel methods to manually decode WFS response data did not set a model reference in case of WFS 2.0 response data.

Bug fixLuciadFusion

LCD-10597
Fixed an issue when creating a TLcd2DEditablePointList or TLcd3DEditablePointList based on another point list that had no editable points. They assumed that the delegate points were editable, causing ClassCastExceptions.

Bug fixLuciadFusion

LCD-10578
TLspLabelPainter: curved labels with a white color (or an other light color) and no halo showed dark artifacts along the edges of the text.

Bug fixLuciadFusion

LCD-10585
An exception handler configured on ALcdWMSProxy was not called in case of a server that went offline.

Bug fixDatabase Connectors

LCD-10598
Fixed an issue that prevented a custom reference WKT string from being decoded.

Bug fixDefense Symbology

LCD-10593
Fixed a GXY symbol rendering regression introduced by LCD-10473, causing an incorrect ENY label for the Contain symbol.

Bug fixDefense Symbology

LCD-10591
Fixed an issue with GXY views which caused the 'Forward Edge of Battle Area' (MIL-STD 2525 b/c 2.X.2.4.2.1) symbols to no longer be painted.

Bug fixDefense Symbology

LCD-10251
Fixed an incorrect missile background color in the MIL-STD 2525b/c icon for the Ballistic Missile symbol.

Bug fixDefense Symbology

LCD-10253
Fixed an inaccuracy in the MIL-STD 2525b/c icon for the Backhoe symbol.

Upgrade considerationLuciadFusion

LCD-10570
The JOGL, JOCL, and GlueGen libraries have been updated to version 2.3.2+4-lcd. This is a patched version of the official 2.3.2 version of JOGL, which now also fixes a bug that could cause Lightspeed to crash in Linux + AMD setups.

2018.1.12

Bug fixLuciadFusion

LF-1745
When a coverage in a tile store was updated, a new data was created for that coverage instead of updating the original data for that coverage. This could cause the capabilities of a service to not be updated if the data for the coverage was published in a service. This has now been fixed so that the data is updated instead of creating a new one.

Bug fixLuciadFusion

LCD-10565
TLsp3DIconStyle: When the geometry to position the 3D icon was provided with an ALspStyleTargetProvider, the 3D icon was not positioned at the correct height when the elevation mode on the style was set to ABOVE_TERRAIN.

Bug fixTerrain Analysis Engine

LF-1729
Fixed an issue where the TEA sample was not able to access the LTS service that was created on the same LuciadFusion Platform application.

2018.1.11

ImprovementLuciadFusion

LCD-10557
The complex line stroking implementation TLcdGXYComplexStroke now allows to disable pattern rotations, which can be useful in case of text-based patterns. A new constructor has been added to enable/disable rotation for each pattern individually.

ImprovementLuciadFusion

LF-1743
The LuciadFusion engine now can handle GeoTIFF for which the image outline is not axis aligned. This used to result in an exception that the model reference could not be encoded in the meta data.

ImprovementLuciadFusion

LCD-10537
The SLD implementation now supports inline graphics containing Base64-encoded SVG graphic icons, next to the existing support for Base64-encoded bitmap graphic icons and XML-encoded SVG graphic icons.

ImprovementDefense Symbology

LCD-10355
Added Hostility indication labels (ENY) to the symbols Tasks - Fix, Obstacle Effect - Fix and Block.

ImprovementDefense Symbology

LCD-10473
The single letter decoration character in the Clear, Contain and Canalize symbols is now always rendered non-rotated.

Bug fixLuciadFusion

LCD-10480
TLcdDimensionFilter#createSnappingFilter snapped to the first or last interval of an axis, even though the given filter value was outside the range of that axis. No it only performs snapping when the filter value is within the axis range. For a model that defines multiple images on a time axis, this resulted in the behavior that an image was always displayed, even though the time filter specifies a time that is outside the time range of the ILcdMultiDimensionalModel.

Bug fixLuciadFusion

LCD-10297
TLcdGXYNewController2 and TLcdGXYTouchNewController: a regression triggered by LCD-9483 could trigger warnings to be logged in some exceptional cases.

Bug fixLuciadFusion

LCD-10579
TLcdWKTReferenceParser threw a NPE when trying to parse a COMPD_CS with an unsupported vertical data. It now throws a ParseException.

Bug fixWeather & Environment Standards

LCD-10480
TLcdNetCDFFilteredModel now correctly handles the case where the applyDimensionFilter method is called with a filter that doesn't match any of the images. In that case, it now makes sure that no image is available in the model. The previous behavior was to do nothing (i.e. don't change the image returned by the model) when such a filter was encountered.

Bug fixDefense Symbology

LCD-10576
Fixed a regression introduced in LuciadLightspeed 2018.1 that caused several symbols to be visualized using outdated icons.

Bug fixDefense Symbology

LCD-10448
Improved the stroke pattern of the Decoy Mined Area, Fenced symbol to better match with the standard specifications.

2018.1.10

Bug fixLuciadFusion

LF-1735
When creating a new service whose type may require preprocessing, entering a service name with invalid disk path characters no longer causes the preprocessing field to disappear from the UI.

Bug fixLuciadFusion

LF-1701
Fixed an issue where a product was not correctly updated if it was indexed at the same time.

Bug fixLuciadFusion

LF-1710
The LuciadFusion Studio Products page now includes type filters for Mesh, Point Cloud, and Unknown product types.

Bug fixLuciadFusion

LF-1726
Fixed an issue where the LuciadFusion Platform application could not be deployed to the WebLogic application server due to library conflicts.

Bug fixLuciadFusion

LF-1727
Fixed an issue in LuciadFusion Studio that caused a “Sec-Websocket-Protocol” error to occur when a WebSocket notification was sent.

2018.1.09

ImprovementLuciadFusion

LCD-10524, LCD-10412
The common GML decoder class TLcdGMLModelDecoder now allows to configure whether the interpolation of linear GML elements needs to be geodesic in case of a geodetic reference, through the newly introduced methods setLinearElementsUseGeodesicInterpolationForGeodeticSrs and isLinearElementsUseGeodesicInterpolationForGeodeticSrs. This impacts the GML elements LineString, LineStringSegment and LinearRing. Although these GML elements conceptually represent geometries with a linear interpolation, they are often used to represent geometries with lon/lat coordinates and a geodesic interpolation.

Bug fixLuciadFusion

LCD-10546
TLcdVVJPanel: fixed an accuracy problem when horizontally zooming in on a vertical view.

Bug fixLuciadFusion

LCD-10545
TLcdVVTerrainModel: when computing the terrain for a buffer with purely vertical segments, the calculation could get stuck in an infinite loop.

Bug fixAviation Standards

LCD-10544
Fixed a selection issue which occurs if there is imagery without terrain for AIXM5 airspaces in a 3D view.

Bug fixDefense Standards

LCD-10548
TLcdVPFModelDescriptor: a NullPointerException was thrown when calling #getDataModel for models not containing VPF features (e.g. the library model).

Bug fixDefense Symbology

LCD-10014
Set the outline for military symbol icons to black and white dots for the "Assumed Neutral" affiliation in APP-6B.

Bug fixDefense Symbology

LCD-10542, LCD-10474
Corrected arrow points for the "bypass easy", "obstacle effect - disrupt", and "counterattack by fire" symbols in a Lightspeed view.

Bug fixDefense Symbology

LCD-10540
Isotach symbols now use the correct color.

2018.1.08

ImprovementLuciadFusion

LCD-10532
The SLD Lightspeed implementation now supports the rendering of curved labels that follow a feature's geometry, a capability already supported in the SLD GXY implementation. A common example is the labeling of road names. This capability can be enabled on a TLcdSLDTextSymbolizer by configuring an SLD vendor option with name followLine and value true.

ImprovementTerrain Analysis Engine

LCD-10525
TLcdLOSCoverageFactory.createLOSCoverageContours now creates contours that wrap around if the angle arc spans 360 degrees. It does this even if the angle step is not a divisor of 360.

ImprovementDefense Symbology

LCD-10495
Added a subset of 'Control Measure' tactical graphics for APP-6D. The added symbols are:
  • 25110101: Boundary - Lateral
  • 25110102: Boundary - Forward
  • 25110103: Boundary - Rear
  • 25110200: Light Line
  • 25110300: Engineer Work Line
  • 25120100: Area Of Operations
  • 25120200: Named Area Of Interest
  • 25120300: Target Area Of Interest
  • 25120400: Airfield Zone
  • 25120500: Base Camp
  • 25120600: Guerrilla Base
  • 25140100: Forward Line Of Troops
  • 25140300: Phase Line
  • 25140400: Forward Edge Of The Battle Area
  • 25140900: Limit Of Advance
  • 25141000: Line Of Departure
  • 25141100: Line Of Departure / Line Of Contact
  • 25141500: Holding Line (HL)
  • 25150200: Assembly Area (AA)
  • 25150501: Action Area - Joint Tactical Action Area (JTAA)
  • 25150502: Action Area - Submarine Action Area (SAA)
  • 25150503: Action Area - Submarine-Generated Action Area (SGAA)
  • 25150700: Extraction Zone (EZ)
  • 25150800: Landing Zone (LZ)
  • 25151000: Fortified Area
  • 25151200: Battle Position
  • 25151203: Battle Position - Strong Point
  • 25151205: Battle Position - Retain
  • 25151300: Engagement Area (EA)
  • 25151403: Axis Of Advance - Main Attack
  • 25151404: Axis Of Advance - Supporting Attack
  • 25151600: Attack Position
  • 25151700: Objective Area
  • 25151800: Encirclement
  • 25170100: Air Corridor
  • 25170101: Air Corridor - Air Corridor With Multiple Segments
  • 25170200: Low-Level Transit Route
  • 25170300: Temporary Minimum-Risk Route
  • 25170400: Safe Lane
  • 25170500: Standard Use Army Aircraft Flight Route (SAAFR)
  • 25170600: Transit Corridors
  • 25170700: Special Corridor
  • 25170800: Base Defence Zone
  • 25170900: High-Density Airspace Control Zone
  • 25171000: Restricted Operations Zone (ROZ)
  • 25171100: Air-to-Air Restricted Operations Zone (AARROZ)
  • 25171200: Unmanned Aircraft Restricted Operations Zone (UA-ROZ)
  • 25171300: Weapon Engagement Zone
  • 25171400: Fighter Engagement Zone (FEZ)
  • 25171500: Joint Engagement Zone (JEZ)
  • 25171600: Missile Engagement Zone (MEZ)
  • 25171700: Low (Altitude) Missile Engagement Zone (LOMEZ)
  • 25171800: High (Altitude) Missile Engagement Zone (HIMEZ)
  • 25171900: Short Range Air Defence Engagement Zone (SHORADEZ)
  • 25172000: Weapons Free Zone
  • 25190100: Identification, Friend-or-Foe (IFF) Off Line
  • 25190200: Identification, Friend-or-Foe (IFF) On Line
  • 25240101: Airspace Coordination Area (ACA) - Irregular
  • 25240102: Airspace Coordination Area (ACA) - Rectangular
  • 25240103: Airspace Coordination Area (ACA) - Circular
  • 25240201: Free Fire Area (FFA) - Irregular
  • 25240202: Free Fire Area (FFA) - Rectangular
  • 25240203: Free Fire Area (FFA) - Circular
  • 25240301: No Fire Area (NFA) - Irregular
  • 25240302: No Fire Area (NFA) - Rectangular
  • 25240303: No Fire Area (NFA) - Circular
  • 25240401: Restricted Fire Area (RFA) - Irregular
  • 25240402: Restricted Fire Area (RFA) - Rectangular
  • 25240403: Restricted Fire Area (RFA) - Circular
  • 25240601: Point Targets - Point or Single Target
  • 25240602: Point Targets - Nuclear Target
  • 25240603: Point Targets - Target-Recorded (Aegis Only)
  • 25240701: Linear Targets - Linear Target
  • 25240702: Linear Targets - Linear Smoke Target
  • 25240703: Linear Targets - Final Protective Fire (FPF)
  • 25240801: Area Targets - Area Target
  • 25240802: Area Targets - Rectangular Target
  • 25240803: Area Targets - Circular Target
  • 25240804: Area Targets - Rectangular Target - Single Target (Aegis Only)
  • 25240805: Area Targets - Series or Group Of Targets
  • 25240806: Area Targets - Smoke
  • 25240808: Area Targets - Bomb Area
  • 25241001: Fire Support Area - Irregular
  • 25241002: Fire Support Area - Rectangular
  • 25241003: Fire Support Area - Circular
  • 25241101: Artillery Target Intelligence Zone (ATI) - Irregular
  • 25241102: Artillery Target Intelligence Zone (ATI) - Rectangular
  • 25241103: Artillery Target Intelligence Zone (ATI) - Circular
  • 25241201: Call for Fire Zone (CFFZ) - Irregular
  • 25241202: Call for Fire Zone (CFFZ) - Rectangular
  • 25241203: Call for Fire Zone (CFFZ) - Circular
  • 25241401: Critical Friendly Zone (CFZ) - Irregular
  • 25241402: Critical Friendly Zone (CFZ) - Rectangular
  • 25241403: Critical Friendly Zone (CFZ) - Circular
  • 25241601: Sensor Zone - Irregular
  • 25241602: Sensor Zone - Rectangular
  • 25241603: Sensor Zone - Circular
  • 25241801: Target Value Area - Irregular
  • 25241802: Target Value Area - Rectangular
  • 25241803: Target Value Area - Circular
  • 25242100: Weapon/Sensor Range Fan, Circular
  • 25242200: Weapon/Sensor Range Fan, Sector
  • 25260100: Fire Support Coordination Line (FSCL)
  • 25270100: Obstacle Belt
  • 25270200: Obstacle Zone
  • 25270400: Obstacle Restricted Zone
  • 25270504: Obstacle Effects - Turn
  • 25270800: Mined Area
  • 25270900: Decoy Mined Area
  • 25270901: Decoy Mined Area - Fenced
  • 25271000: Unexploded Explosive Ordnance (UXO) Area
  • 25271100: Bridge or Gap
  • 25271201: Roadblocks, Craters, and Blown Bridges - Planned
  • 25271202: Roadblocks, Craters, and Blown Bridges - Explosives, State Of Readiness 1 (Safe)
  • 25271203: Roadblocks, Craters, and Blown Bridges - Explosives, State Of Readiness 2 (Armed But Passable)
  • 25271204: Roadblocks, Craters, and Blown Bridges - Roadblock Complete (Executed)
  • 25271400: Bridge
  • 25271700: Biological Contaminated Area
  • 25271701: Biological Contaminated Area - Toxic Industrial Material
  • 25271800: Chemical Contaminated Area
  • 25271801: Chemical Contaminated Area - Toxic Industrial Material
  • 25271900: Nuclear Contaminated Area
  • 25272000: Radiological Contaminated Area
  • 25272001: Radiological Contaminated Area - Toxic Industrial Material
  • 25272100: Minimum Safe Distance Zone
  • 25272200: Radiation Dose Rate Contour Line
  • 25290100: Obstacle Line
  • 25290900: Fortified Line
  • 25300100: Intelligence Coordination Line
  • 25310100: Detainee Holding Area
  • 25310200: Enemy Prisoner Of War Holding Area
  • 25310300: Forward Arming and Refuelling Point (FARP)
  • 25310400: Refugee Holding Area
  • 25310500: Regimental Support Area
  • 25310600: Brigade Support Area (BSA)
  • 25310700: Division Support Area
  • 25330100: Moving Convoy
  • 25330200: Halted Convoy
  • 25330300: Main Supply Route (MSR)
  • 25330301: Main Supply Route (MSR) - One Way Traffic
  • 25330302: Main Supply Route (MSR) - Two Way Traffic
  • 25330303: Main Supply Route (MSR) - Alternating Traffic
  • 25330400: Alternate Supply Route (ASR)
  • 25330401: Alternate Supply Route (ASR) - One Way Traffic
  • 25330402: Alternate Supply Route (ASR) - Two Way Traffic
  • 25330403: Alternate Supply Route (ASR) - Alternating Traffic
  • 25340600: Counter Attack
  • 25340800: Delay
  • 25341100: Fix
  • 25341300: Follow and Support
  • 25341500: Isolate
  • 25341700: Occupy
  • 25342000: Retire/Retirement
  • 25342100: Secure
  • 25342201: Security - Cover
  • 25342202: Security - Guard
  • 25342203: Security - Screen
  • 25342300: Seize
  • 25342400: Withdraw

Bug fixLuciadFusion

LCD-10491
Fixed an issue with the undo behavior of extruded shapes after their creation with a right click. When an object creation finished with a right click, the next editing operation was not recorded as expected. As a result, corrupted undo operations were removing created object completely.

Bug fixLuciadFusion

LCD-15000
Fixed an issue with TLspRulerController when #displayAzimuth was set to true, a misleading snap target was created during the creation of a new measurement.

Bug fixLuciadFusion

LCD-10523
ALcdTransformingModel: would fire incorrect model events, triggered by changes on the original model in some cases.

Bug fixDefense Symbology

Removed incorrect label on Encirclement symbol in APP6-C and MIL-STD-2525 D.

Bug fixDefense Symbology

LCD-10456
The stroke label baseline for the Series or Group of targets symbol was not centered around the stroke.

Bug fixDefense Symbology

LCD-10531
TLcdMS2525bNode/TLcdAPP6ANode#getName: corrected the casing of several acronyms.

2018.1.07

ImprovementWeather & Environment Standards

LCD-10511
TLcdNetCDFModelDecoder: multi-band image detection now works more robustly.

Bug fixLuciadFusion

LCD-10521
TLspIconStyle, TLspParameterizedIconStyle: A scale configured on these styles in combination with the default selection style could cause a partially hidden selection box when the icon was selected.

Bug fixLuciadFusion

LCD-10518
The SLD channel selection / normalize operation ignored any alpha band in the source image, causing a potential removal of transparency in the result.

Bug fixLuciadFusion

LCD-10512
TLspIconStyle, TLspParameterizedIconStyle: The scale configured on these styles was not taken into account for selection, as a result icons could incorrectly be selected or not be selectable.

Bug fixLuciadFusion

LCD-10510
TLspLonLatGridStyler: the setLabelLineOffset and setLabelEdgeOffsets methods didn't always have any effect.

Bug fixLuciadFusion

LCD-10507
TLspShapeLayerBuilder: When there are frequent model updates, for certain camera angles objects would sometimes appear to be flickering.

Bug fixLuciadFusion

LCD-10519
Fixed an issue where for certain DTED data sets, under certain conditions, the visualization was not correct at tile borders.

Bug fixDefense Symbology

LCD-10462
Resolved display problems for small Rectangular Target symbols, which was caused by rounding errors.

Bug fixDefense Symbology

LF-1723
Fixed a bug where the Military Symbol service ignored the Symbol.Fill styling configuration property.

Upgrade considerationDefense Symbology

LCD-10516
Min and max point count constraints are now applied for military symbols with multipoint and polyline geometry in NVG. This may cause some changes in the editing behaviour of nvg files. If a multipoint or polyline symbol which does not respect its max point count is present in an nvg file, this symbol will initially be rendered as-is. When the symbol gets edited however, the constraint will be applied and the points will be removed from the symbol until it matches the constraint.

2018.1.06

ImprovementLuciadFusion

LCD-10459
Improved the default styling for E57 point clouds. The size of the icons used for the points is more reasonable now.

ImprovementLuciadFusion

LCD-7988
In a snapping operation, a domain object snaps to another nearby domain object on the map. TLspPointToPointSnapper now allows you to find out to which domain object the snapping object has snapped. Use the TLspPointToPointSnapper.OBJECT_PROPERTY_KEY to get the target domain object from the TLspEditOperation produced by TLspPointToPointSnapper.snap method. See the developer guide for sample code.

Bug fixLuciadFusion

LF-1709
A product created using the REST API was given the product type 'Unknown' while it was actually 'Empty'. This caused newly created products to not show up in the web interface when setting the type filter to 'Empty'. This has now been fixed by setting the type to 'Empty' when creating the product.

Bug fixLuciadFusion

LF-1714
Fixed user tour popup text to remove instances of <strong> HTML elements.

Bug fixLuciadFusion

LF-1719
Fixed an issue where a scheduled crawl job could fail with the error "AccessDeniedException: You are not logged in".

Bug fixLuciadFusion

LF-1708
Fixed an issue where Internet Explorer 11 cannot open OGC Tile services. Internet Explorer cannot handle some compressed responses which are prepared using deflate compression algorithm and contain ZLIB wrapper bytes.

Bug fixLuciadFusion

LF-1698
If during crawling a Data was part of a larger data set (e.g. DTED or OSGB data set), no public id would be generated for that Data, making it not possible to reference it in REST API calls. This has now been fixed, and a public id will be generated for all previously crawled data that has no public id.

Bug fixLuciadFusion

LCD-10440
TLspIconStyle: When the elevation mode of the style was set to ABOVE_TERRAIN and there was no terrain or imagery layer in the view, the icon would incorrectly have a small height offset in a 3D view.

Bug fixLuciadFusion

LCD-10485
TLcdPrintPreview: added some missing translation strings. The possible translation keys are listed in the setStringTranslator method javadoc.

Bug fixLuciadFusion

LCD-10482
The TLcdModelQueryConfiguration of a layer would not always be taken into account when a repaint was triggered by changes to model elements.

Bug fixLuciadFusion

LF-1711
Fixed an issue where the Apply Changes and Discard Changes buttons were shown when changing the crawl job schedule in the Web UI, even though no changes were made. To avoid confusion on when a schedule change was saved, the status message at the bottom of the crawl job page was removed. The schedule is not changed as long as the Apply Changes/Discard Changes buttons do not appear. If a schedule change has been made and the Apply Changes button is clicked, the change is saved once those buttons have disappeared.

Bug fixLuciadFusion

LF-1705
Fixed an issue where styles using TextSymbolizerType were assigned the type None instead of Vector. The None style type has also been changed to Unknown instead. Related to this, the Web UI incorrectly showed the type Empty to filter styles on. This has now been changed to Unknown.

Bug fixLuciadFusion

LF-1697
When exposing a WMS service that contains only ECDIS data, LuciadFusion now always advertises that it support the S52 SLD extension for customized styling. This already was the case for individual S-57 or S-63 cells, but not for catalogs. The result was that clients (for example Lucy) didn't show ECDIS configuration panels.

Bug fixLuciadFusion

LCD-10488
Fixed an issue in TLcdLonLatArc#getLength2D. It always returned the full lengths, even when the two parameters were not 0.0 and 1.0.

Bug fixDefense Symbology

LCD-10354
Added UniqueDesignation label to the symbols 'Minimum Safe Distance Zones', 'Fix', 'Bypass Easy', 'Series or Group of Targets' and 'Block.

Bug fixDefense Symbology

LCD-10497
Fixed an incorrect label indication for the Minimum Safe Distance Zones symbol when one of the circles is edited to make it smaller or larger than another circle.

Bug fixDefense Symbology

LCD-10496
Added the missing Width, Length and Attitude properties to the TLcdAPP6ADataTypes.APP6ACodedType and TLcdMS2525bDataTypes.MS2525bCodedType.

Bug fixDefense Symbology

LCD-10479
Fixed a label displacement issue in GXY views for the 'Position Area for Artillery (PAA) - Rectangular' symbol. Related to this, the label position in the MIL-STD 2525C implementation now aligns with the axis of the symbol; this better reflects the way the symbol is defined in MIL-STD 2525C.

Bug fixDefense Symbology

LCD-10471
Fixed an issue for a number of APP-6/MIL-STD-2525 line and area symbols that caused the removal of the Anticipated / Planned status dash pattern in a Lightspeed view if a halo was enabled.

2018.1.05

ImprovementLuciadFusion

LCD-10441
The SLD normalize operation now automatically calculates the normalization min/max interval(s), to avoid the need for users to define them upfront. If the min/max interval(s) are not defined, a histogram operation is used to automatically deduce them from the data.

ImprovementLuciadFusion

LCD-10263
TLspTouchNavigateController keeps track of the inconsistent series of touch events when navigating in a Lightspeed view with multiple fingers. Before this enhancement, the contradictory state of the touchpoints reported with an error message which may leave the view unresponsive. Now, before the view becomes unresponsive, the controller waits until all the touched fingers lifted. Afterward, the controller starts to interact with the view as usual.

ImprovementAdvanced GIS Engine

LCD-10461
Fixed a bug in Constructive geometry where operations between shapes would yield no result.

ImprovementAdvanced GIS Engine

Ellipsoidal constructive geometry now correctly supports Rhumb shapes. They were previously treated the same way as geodetic shapes, causing accuracy problems.

ImprovementDefense Symbology

LCD-10331
Changed the creation mode of the ellipse painter in the TLcdNVGGXYPainterProvider to TLcdGXYEllipsePainter.THREE_CLICK in order to match the creation mode of military symbols with a non-standard ellipse geometry.

Bug fixLuciadFusion

LCD-10467
3D Tiles encoding: Fixed a bug when the amount of indices of a mesh would be greater than the size of a short. Now encoding those as unsigned integers.

Bug fixLuciadFusion

LF-1713
Fixed an issue when accessing the original, full-detail shape of a fused text vector object (for example through ((ILcdShapeList) e).getShape(0)). That object was originally an ILcdText object, but the fused full-detail shape could be absent.

Bug fixDefense Symbology

LCD-10454
Fixed the following labeling issues with the Rectangular Target symbol
  • Labels no longer disappear when the rectangular target gets too small
  • Space between two words in a label has been reduced
  • Hostility indication labels (ENY) are no longer painted for the Rectangular Target symbol
  • Label text is always painted upright and no longer follows the slope of the axis line of the rectangle

Bug fixDefense Symbology

LCD-10352
Fixed an incorrect min / max distance label indication for the Weapons/Sensor Range Fan - Circular symbol when one of the circles is edited to make it smaller or larger than another circle.

Bug fixDefense Symbology

LCD-10450
Fixed some label issues for biological and chemical release event icons.

2018.1.04

ImprovementLuciadFusion

TLcdEllipsoidRhumblineUtil: The #polygonContains2D, #intersectsGeodesicRhumbline and #intersectionGeodesicRhumblineSFCT methods now do the necessary calculations on the ellipsoid passed as a parameter instead of on a sphere.

ImprovementLuciadFusion

LCD-10442
Improved the message in the WMS service exception report for the case when the parameter for the coordinate reference system is missing for operations like GetMap and GetFeatureInfo. In case of WMS 1.3.0 the parameter CRS is required and for WMS 1.1.x the parameter SRS is required.

Bug fixLuciadFusion

LCD-10447
Source names of supporting files extracted from iso 19115 metadata files are now url decoded before being returned by TLcdModelMetadata#discoverSupportingSources

Bug fixLuciadFusion

LCD-10445
TLcdGeoJsonFeature#applyDataType would incorrectly resolve null values to empty HashMap instances.

Bug fixLuciadFusion

LCD-10336
The map navigation has been improved when using touch displays. To get the best user experience, enable combined gestures on TLspTouchNavigateController with setCombineGestures(true) On 2D maps, you can pan, rotate and zoom at the same time with two fingers. On 3D maps, the map will pitch when using two fingers close to each-other, otherwise you can rotate and zoom at the same time. Default behaviour unchanged, map can be rotated, zoomed, panned and pitched(only 3D) individually. Drift problem solved while rotating the map.

Bug fixDefense Symbology

LCD-10427
Changed the painters of some symbols to resolve very poor performance when zoomed in with a GXY view. Because of this change, the symbol's painting will now be affected by the configured corner smoothness in the styling. These symbols can thus be painted with rounded corners. See ILcdMS2525bStyle#getCornerSmoothness and ILcdAPP6AStyle#getCornerSmoothness. The following symbols are affected: MIL-STD-2525 B:
  • 2.X.3.1.1.1 - Belt
  • 2.X.3.1.1.2 - Line
  • 2.X.3.1.1.3 - Zone
  • 2.X.3.1.1.4 - Obstacle Free Area
MIL-STD-2525 C:
  • 2.X.3.1.1.1 - Belt
  • 2.X.3.1.1.2 - Line
  • 2.X.3.1.1.3 - Zone
  • 2.X.3.1.1.4 - Obstacle Free Area
MIL-STD-2525 D
  • 25260100 - Fire Support Coordination Line (FSCL)
  • 25260200 - Coordinated Fire Line (CFL)
  • 25290100 - Obstacle Line
  • 25270300 - Obstacle Free Zone
APP6-A:
  • 2.X.2.2.1.1.2 - Line
  • 2.X.2.2.1.1.3 - Zone
  • 2.X.2.2.1.9 - Obstacle Free Area
APP6-B:
  • 2.X.2.2.1.1.2 - Line
  • 2.X.2.2.1.1.3 - Zone
  • 2.X.2.2.1.9 - Obstacle Free Area
APP6-C:
  • 25260100 - Obstacle Belt
  • 25260200 - Obstacle Zone
  • 25270100 - Obstacle Line
  • 25260300 - Obstacle Free Zone

Bug fixDefense Symbology

LCD-10428
Fixed issue where the stroke pattern of some military symbols was flipped the wrong way in GXY views.

Bug fixDefense Symbology

LCD-10435
Fixed issue with the symbol (2.X.4.3.2.6) 'Position Area for Artillery (PAA) - Rectangular' where the symbol could get displaced when switching projections in GXY views.

2018.1.03

ImprovementLuciadFusion

LCD-10422
The TLcdGXYEllipsePainter now starts painting its axis line editing handles after the first point has been placed. This used to only happen after the second point was placed. This brings the behaviour of the TLcdGXYEllipsePainter in line with Lightspeed.

ImprovementLuciadFusion

LCD-10201
A number of improvements have been implemented related to the WFS server's interoperability with 3rd party WFS client solutions:
  • For GML 3.1 / 3.2 responses, linear GML elements are used by default. This makes sure that ILcdPolyline and ILcdPolygon instances are respectively encoded to LineString and LinearRing elements, regardless of their interpolation. Previously, GeodesicString elements were used for a geodesic interpolation.
  • The sample WFS server now uses qualified feature type names by default. Additionally, these feature type names are reused as XML element names in the GML output data.

ImprovementLuciadFusion

LCD-10425
TLcdXMLBuiltInEncoderLibrary: improved handling of object property values containing 0x1a characters, which represent character errors that cannot be defined in XML. To avoid any XML encoding issues, such characters are converted to the - character.

ImprovementDefense Symbology

LCD-10391
Changed the editing behaviour of the 'Rectangular Target' symbol to more closely match the symbol definition in the military standards. The symbol is now defined by a center point and the newly added "length", "width", and "attitude" text modifiers. The values in these modifiers will be changed as the visual representation of the symbol is edited. Conversely changing those values programmatically (by using ILcdEditableMS2525bCoded#putTextModifier and ILcdAPP6Coded#putTextModifier) will also change the symbol's visual representation. Creating such a symbol programmatically with two or more points in the ILcdMS2525bShape/ILcdAPP6AShape's point list will revert back to the legacy visualization and editing behaviour, where the points define the start and end point of the buffer axis and ILcdMS2525bShape/ILcdAPP6AShape#getWidth defines the buffer width. The following symbols are affected by this change:
  • MIL-STD-2525 B: 2.X.4.3.1.1 - Rectangular Target
  • MIL-STD-2525 C: 2.X.4.3.1.1 - Rectangular Target
  • MIL-STD-2525 D: 100025000024080200001 - Rectangular Target
  • APP6-C: 10002500002306000000 - Rectangular Target

Bug fixLuciadFusion

LF-1692
Fixed an issue where the public id of a data item could change after the corresponding data file was updated and the file was crawled. This only occurred if no related metadata file for the data existed.

Bug fixLuciadFusion

LCD-10421
Fixed issue with the TLcdGXYGeoBufferPainter where the buffer contour was painted with geodetic lines but the buffer axis line was painted with straight lines when using a geodetic model reference in combination with an ILcdGXYPen created with the ALcdGXYPen.Quality.FASTEST enum value.

Bug fixLuciadFusion

LF-1690
Fixed an issue where a finished crawling notification could incorrectly be shown after saving the crawling schedule. After a crawl job had finished, the finished crawling notification sometimes mentioned an incorrect finishing status. This has also been fixed.

Bug fixLuciadFusion

LF-1683
Fixed an issue where the LuciadFusion Studio web front end didn't redirect users after login when a different context path was used.

Bug fixLuciadFusion

LF-1682
Fixed an issue in the LuciadFusion Studio web front end where translation files couldn't fetched properly when a custom context path was used.

Bug fixLuciadFusion

LF-1685
Fusion Studio now uses a secure WebSocket connection (wss://) between browser and backend, if it is accessed over HTTPS. This avoids issues where the browser would disallow the WebSocket to be established, due to the mixed content security policy.

Bug fixLuciadFusion

The output format encoding in the DescribeFeatureType requests in XML Schema location URLs could contain an unexpected + character.

Bug fixLuciadFusion

LF-1686
Fixed an issue where a crawl job for the uploads directory was not created and therefore the files under that directory weren't recrawled unless the user uploaded new files. This problem occurred when the upload directory was not empty and LuciadFusion Studio started with a fresh database.

Bug fixLuciadFusion

LCD-10378
Fixed issue with TLspFixedInPathLabelLocationProvider, where an incorrect locations was provided for composite curves.

Upgrade considerationLuciadFusion

The Java Expression Language dependency has been upgraded from version 2.2 to 3.0. Consequently, an application server or servlet container with support for EL 3.0 API or higher is now required for deployment of the LuciadFusion Platform, for instance, Tomcat 8 or higher.

2018.1.02

ImprovementLuciadFusion

LCD-10414
TLcdServiceLoader: improved compatibility with certain OSGi implementations.

ImprovementLuciadFusion

LCD-10156
The border factor property of raster layers allows you to configure processing some additional data outside of the view. This reduces the popping effect while panning or zooming. TLspRasterLayerBuilder and TLspRasterLayer now allow you to configure to include texture loading in this additional processing. By default, it is not included. Including it increases the memory and cpu usage, but will often give faster updates for small pan and zoom operations.

ImprovementDefense Symbology

LCD-10399
Made the font of the 'PAA' label of the symbol 'Position Area For Artillery (PAA) - Rectangular' (MIL-STD-2525-C) adjustable trough styling.

Bug fixLuciadFusion

LCD-10379
OGC 3D Tiles decoders can now handle query parameters in the contents' URL.

Bug fixLuciadFusion

LCD-10405
Fixed an issue where E57 files declaring extension namespaces could not be decoded.

Bug fixLuciadFusion

The OGC Filter evaluation of mathematical expressions containing an Add, Substract, Divide and/or Multiply operation could wrongly misinterpret numeric input values as dates.

Bug fixLuciadFusion

LCD-10404
Fixed an issue where the WMTS server tried to write data to an already closed response. This issue occured when the client closed the connection while the server was still working on it.

Bug fixLuciadFusion

The WMS server's command dispatcher TLcdOGCSLDWMSCommandDispatcher did not always include the request context parameter when invoking the createGXYLayer method on the configured layer factory of type ALcdSLDWMSGXYLayerFactory.

Bug fixLuciadFusion

LCD-10401
Fixed an issue when using applyOnInteract2DBounds on a model based on a LuciadFusion vector coverage. It would retain all overlapping tiles in memory, causing out of memory if the requested bounds were large. Note that regular visualization or other built-in functions never triggered this problem, as they use a different path.

Bug fixLuciadFusion

LCD-10388
Fixed an issue when interactively editing geodetic ellipses (TLcdLonLatEllipse) on a Lightspeed view using the regular TLspEllipseEditor. When dragging a handle on one of the axes beyond XYZ, the ellipse was flipped: the major axis reversed and rotated by 180 degrees. This has no visual result on the ellipse, but was unexpected.

Bug fixLuciadFusion

LCD-10406
Fixed a regression related to the decoding of SLD ParameterValue elements, introduced by enhancement LCD-10387.

Bug fixDefense Symbology

LCD-10408
The introduction of APP-6D and MIL-STD 2525D caused a regression in the TTA 106 icons. This has been fixed.

2018.1.01

ImprovementLuciadFusion

LCD-10343
The WFS client can now handle WFS feature types for which the mandatory geographical reference information is missing in the WFS server's capabilities.

ImprovementLuciadFusion

LCD-10387
The SLD label painting pipeline in GXY / Lightspeed views now support the use of multiline labels, by using a CDATA element inside the label content that specifies a new line as follows: <![CDATA[ ]]>

ImprovementLuciadFusion

LCD-10365

TLcdWMMMagneticNorthMap#setIgnoreModelLifeSpan and TLcdWMMMagneticNorthMap#setInputStreamFactory can now be called even before the data files have been set.

Additionally, improved the error output for methods that cannot be called before the data files have been set.

ImprovementLuciadFusion

LCD-10337, LCD-10423
TLcdWKTReferenceParser now support WKT strings for the EPSG:3857 reference that were formatted using the gdal library.

ImprovementLuciadFusion

LCD-10275
Added caching for HTTP(S)-based XML Schema locations when evaluating an OGC Filter on an XML dataset.

Bug fixLuciadFusion

LF-1652
The paint order for styled data mentioned in the REST API documentation was opposite of the actual paint order. The documentation has been updated and now correctly states that the paint order for styled data is last to first.

Bug fixLuciadFusion

LCD-10374
TLcdOGC3DTilesModelDecoder : Fixed a problem when handling gltf nodes identifiers that are Integers.

Bug fixLuciadFusion

LF-1661
Fixed an issue where using a path containing one or more symlinks for the datastore directory would crash LuciadFusion after a restart. The crash log would contain a "ValidationException: Data root /datastore/path/uploads already exists" message when this occurred.

Bug fixLuciadFusion

LF-1647
Fixed bug where the name of a style would default to the file path instead of the file name of the sld file.

Bug fixLuciadFusion

LF-1644
Fixed an issue where the preprocessing path changing dialog in the LuciadFusion Studio web front end would show incorrect descriptions.

Bug fixLuciadFusion

TLcdISO8601DateFormat did not correctly handle parsing errors according to the contract defined in java.text.Format. In case of parsing errors:
  • parseObject(String) now throws a ParseException instead of an IllegalArgumentException.
  • parseObject(String, ParsePosition) now returns null instead of throwing an IllegalArgumentException.

Bug fixLuciadFusion

LCD-10305
The resolution logic introduced by LCD-9859 could cause the return of RGBA images for elevation coverages, leading to possible data interpretation issues in WCS clients.

Bug fixLuciadFusion

LCD-10299
The automated conversion of OGC filter to SQL inside database models did not support database properties of type java.sql.Timestamp.

Bug fixLuciadFusion

LCD-10312
Fixed issue that would cause a ConcurrentModificationException when toggling tableview visibility with multiple editable domain objects selected.

Bug fixLuciadFusion

LCD-10356
ILcdTransformingModel: when model changes were triggered on the original model, you did not always get an event on the ILcdTransformingModel. This was the case when using ILcdModel#allElemensChanged or ILcdModel#removeElement followed by an ILcdModel#addElement for the same object.

Bug fixLuciadFusion

LCD-10304
Fixed issue with broken mouse clicks that have modifiers, for example ALT-clicks. This issue was introduced by the fix for LCD-10086.

Bug fixLuciadFusion

LCD-10358
Fixed bug where TLcdWMMMagneticNorthMap#setDate would throw an exception for invalid dates, even when isIgnoreModelLifeSpan is true.

Bug fixLuciadFusion

LCD-10321
Fixed memory leak in TLspShapePainter that could be triggered when using a styler that does not reuse ILcdIcon implementations.

Bug fixAviation Standards

LCD-9562
Helipads without any location data are now being positioned using the related Heliport's location for better visualization.

Bug fixDefense Symbology

LCD-10396
Fixed possible bug in OpenJDK with GXY views where label bounds were calculated incorrectly, which could cause labels to be placed at an incorrect location. Affected symbols include the 'Relief in Place' symbol.

Bug fixDefense Symbology

LCD-10389
Fixed bug where some APP-6C Airspace Control Area symbols were painted by an incorrect painter

Bug fixDefense Symbology

LCD-10360
MIL-STD-2525D and APP-6D: Disabled the "echelon" modifier for Land Equipment, and the "mobility" modifier for other Land Symbols, following the standard specifications.

Bug fixDefense Symbology

LCD-10361
Avoid possible NullPointerException in the symbol painter of MIL-STD-2525 c "Overhead Wire/Power Line" symbols.

Bug fixDefense Symbology

LCD-10252
Shortened the length of the HQ indicator line so it does not pass the frame for Hostile and Unknown affiliations.

Bug fixDefense Symbology

LCD-10280
Removed dashed lines in the drawing of 'Weapon/Sensor Range Fan, Sector' symbol.

Bug fixDefense Symbology

LCD-10276
The cache size of TLcdMS2525bObjectIconProvider and TLcdAPP6AObjectIconProvider has been limited to 5000 to keep the cache from growing too large (was previously unlimited). This limit can be adjusted using the system property com.luciad.symbology.iconsymbols.MAX_CACHE_SIZE.

Bug fixDefense Symbology

LCD-10257
Removed unwanted gap from 'Bypass - Difficult' symbol from the MIL-STD 2525 C standard.

Bug fixS-63

LCD-10393

Fixed an issue with loading S-63 cell permits concurrently for multiple S-63 datasets, causing errors and missing cells.

In case where a single S-63 model decoder was used for multiple S-63 models, they share cell permit files. When displaying these models, these cell permit files were decoded concurrently, depending on timing. However, certain aspects of the IHO S-63 permit file decoding were not thread-safe, causing errors, that caused some permits to be skipped.

The end result was that some cell were not displayed. This is now resolved.

2018.1

ImprovementLuciadFusion

TLcdSystemPropertiesUtil: new utility methods have been added to check whether Java 10 or Java 11 is used.

ImprovementLuciadFusion

LCD-10283
SLD raster rendering in GXY / Lightspeed now supports the SLD normalize operation to normalize raster data to a given min and max interval. Through the existing class TLcdSLDContrastEnhancement, a TLcdSLDNormalize instance can be set that defines the normalization step; the min and max interval values are defined through the vendor options "minValue" and "maxValue". Aligned with the SLD specification, a TLcdSLDContrastEnhancement defining a normalize operation can either be set globally on the raster symbolizer (to let it apply to all raster channels) or separately per raster channel selection.

ImprovementLuciadFusion

LF-1636
The Studio frontend will now safe-guard against service names that only contain symbols.

ImprovementLuciadFusion

LF-1461, LF-1114
Details about the files found by crawl jobs can now be viewed in the LuciadFusion Studio web front end. When viewing crawl job details, you can now see statistics such as the number of files crawled, skipped, and failed. The files discovered by the crawl job are also now displayed in a list in the crawl job details view, and details on each individual file can be viewed by clicking on the file name in the list. The file details contains a link to the associated data (if any), and any errors encountered while processing the file during crawling.

ImprovementLuciadFusion

LF-1620
To improve performance and robustness, the Studio web front end preview maps can now show dataset bounds instead of the actual data for non-raster datasets.

ImprovementLuciadFusion

LCD-10206
TLspParameterizedLineStyle can now be configured with a dash pattern via its builder.

ImprovementLuciadFusion

LCD-10047
The OGC Web Client classes TLcdWFSDataSource, TLcdWMSDataSource, TLcdWMTSDataSource and TLcdWCSDataSource have improved support for parameterized URIs:
  • TLcdWFSDataSource.Builder.uri: now supports the use of the parameters 'data', 'typename' and 'typenames' to automatically set the desired feature type name.
  • TLcdWMSDataSource.Builder.uri: now supports the use of the parameters 'data', and 'layers' to automatically set the desired layer(s); additionally, the parameters 'styles' and 'format' can be used to respectively set the layer style(s) and desired format.
  • TLcdWMTSDataSource.Builder.uri: now supports the use of the parameter 'data' to automatically set the desired layer, similar to the existing supported parameter 'layer'.
  • TLcdWCSDataSource.Builder.uri: now supports the use of the parameters 'data' and 'coverage' to automatically set the desired coverage name.

ImprovementLuciadFusion

Added compatibility for OracleJDK/OpenJDK 11. Warnings might still appear at runtime when using those JDK but can be avoided using the --add-opens flags. More information about this flag is available in the technical notes.

ImprovementLuciadFusion

Added TLfnPointCloudPreprocessor to the Fusion API. This API lets you preprocess point cloud file such as LAS, LAZ or E57 so they can efficiently be served in LuciadFusion Studio. LuciadFusion Studio automatically preprocesses any point cloud file that is served as OGC 3D Tiles. The difference is that this preprocessor lets you perform the preprocessing as part of a separate process. The output can be served directly with LuciadFusion Studio without further processing requirements.

The TLfnPointCloudPreprocessor has a command-line sample that you can find in samples.fusion.pointcloud.PointCloudPreprocessorTool.

ImprovementLuciadFusion

LuciadFusion Studio now provides a JSON REST API. The REST API allows developers to automate the most common use-cases like publishing data as a service and updating the data in a live service. Previously these tasks needed to be executed manually using the web interface. For a default installation, the entry point of the API for a running LuciadFusion server can be found at http://localhost:8081/api, and the documentation at http://localhost:8081/api/documentation.

ImprovementLuciadFusion

Added support for the E57 format. This format is commonly used for by certain LIDAR scanners. To decode an E57 file, use the TLcdE57ModelDecoder. This produces a model with a TLcdE57ModelDescriptor, which can be used to access the metadata of the decoded model. Models can be visualized using a TLspLIDARLayerBuilder.

ImprovementLuciadFusion

LCD-9910
Improved asynchronous painting performance in ILcdGXYView instances with many invisible layers.

ImprovementLuciadFusion

LCD-7843
TLcdOGCModelReferenceParser: the decoder can now parse model references in the form of URLs.

ImprovementLuciadFusion

LCD-10078
An extra constructor has been added to the class TLcdWCSCoverageModelDecoder to allow configuring a custom ILcdOWSHttpTransport instance. This interface is used by the OGC client implementations to perform request / response handling.

ImprovementLuciadFusion

LCD-10054
TLspRasterLayerBuilder and TLspRasterLayer now allow configuring whether the layer should be repainted as soon as a tile is available. If the incremental painting property is set to false, the layer is not updated until all tiles are ready.

ImprovementLuciadFusion

LuciadFusion Studio now supports the localization of the UI text, and allows you to add translations to a new language. Studio determines which language to display based on the language setting in the web browser. if it cannot find a translation match, English is used by default. For more information, please consult the LuciadFusion Platform developer guide.

ImprovementLuciadFusion

The LuciadFusion Studio web front end allows the user to change the name (which is also used as the unique identifier) of a product inside a service. This allows the user to replace a product in a service while keeping the URL to that product intact. For example, when a service serves weather data which gets updated regularly, the user can replace the outdated weather data with fresh data without the need to update the URL used in the client.

ImprovementLuciadFusion

LF-1332
The LuciadFusion Platform developer, deployment and migration guides have been merged into a single guide. The content of the guides has also been restructured.

ImprovementLuciadFusion

LCD-9017
The abstract model implementation ALcdModel has a method setModelDisposer to register a function to be called on ILcdModel#dispose(). This avoids the need to override the method ILcdModel#dispose() when using a model implementation based on ALcdModel.

The GeoTIFF model decoder registers such a function to the model such that file descriptors are closed on disposal of the model. There is no need anymore to do this yourself for GeoTIFF.

ImprovementLuciadFusion

LCD-2075
TLcdLayerTree now by default hides its root node. If you don't want this, call TLcdLayerTree#setRootVisible(true).

ImprovementLuciadFusion

LCD-9286
TLcdWKTModelReferenceDecoder and TLcdEPSGModelReferenceDecoder now log a warning when a .prj or .epsg file is found, but with an invalid/unsupported WKT or EPSG string.

ImprovementLuciadFusion

TLcdGXYLabelPainter, TLcdGXYPolygonLabelPainter, and TLcdGXYPolylineLabelPainter now support HTML labels. In addition, minor layout issues were resolved in TLcdGXYLabelPainter.

ImprovementLuciadFusion

LCD-9223
TLcdTextIcon is a new multi-line text icon implementation. TLcdBoxIcon draws an outlined and/or filled box around another icon.

ImprovementLuciadFusion

LCD-9922
TLcdDTEDColorModelFactory The default color scheme for elevation data was enhanced to differentiate between levels of 3500m, 4000m, 4500m, 5000m, 5500m and 6000m. Each of these levels now has a different color. This will cause regions with high altitude, like e.g. the Himalayas, to show more details. The createColorModel method uses these updated colors and levels by default. The colors and levels returned by the static methods getDefaultColors and createColorModel will include the updated colors and levels.

ImprovementLuciadFusion

LCD-10286
Improved error message in case a WFS service cannot be set up because the data is backed by an ILcdModel with model metadata that doesn't mark the content as vector data.

ImprovementLuciadFusion

LCD-10281
TLcdWKTReferenceParser now also supports WKT strings that use Mercator_Auxiliary_Sphere as projection parameter

ImprovementLuciadFusion

LCD-10285
TLcdWKTReferenceParser now also supports WKT strings that use Dutch_Stereographic as projection parameter

ImprovementAdvanced Raster Services

LCD-10270
The TLcdGDALModelDecoder will now try and find external prj or ref files when the georeference of the embedded WKT could not be parsed. This means that it is now possible to georeference a file by adding a WKT string to an external filename.prj file next to the source file.

For more information, have a look at the TLcdWKTModelReferenceDecoder class javadoc.

ImprovementTerrain Analysis Engine

In LOS calculations, the maximum radius and radius step implicitly define the radius sample distances. These are the distances (in meters) from the center of the LOS coverage at which to sample to perform the calculations. Now, radius sample distances can be configured directly via a new property on TLspLOSProperties. This allows you to use your own custom sampling scheme. For example, using small steps close to the center of the coverage and larger steps farther away could help increase the total range without impacting performance and accuracy much.

ImprovementTerrain Analysis Engine

LCD-10266
TLspLOSCalculator now allows LOS calculations to be interrupted.

ImprovementAviation Standards

LCD-4633
The AIXM 3/4 sample (decoder.aixm.gxy) now includes AIXM 4.5 example data which gets loaded at startup.

ImprovementAviation Standards

LCD-10174
Improved the rendering of point-based AIXM 5.1 VerticalStructure features at large scales in GXY and Lightspeed views.

ImprovementDefense Symbology

LCD-10226
Improved the rendering of the Screen, Cover and Guard military symbols to better match with the symbol description in the APP-6 / MIL-STD 2525 standards: the letter decoration is now placed next to the starting point of the arrows.

ImprovementDefense Symbology

LCD-10137

Partial support for the military standard APP-6D has been added. It is now possible to create and visualize TLcdEditableAPP6AObject instances using the APP-6D 20-digit SIDC codes. TLcdAPP6ANode also exposes the new domain hierarchy.

The supported symbol sets are:

  • 00: Unknown
  • 01: Air
  • 02: Air Missile
  • 05: Space
  • 10: Land Unit
  • 11: Land Civilian Organization
  • 15: Land Equipment
  • 20: Land Installation
  • 27: Dismounted Individual
  • 30: Sea Surface
  • 35: Sea Subsurface
  • 36: Mine Warfare
  • 37: Activities

ImprovementDefense Symbology

Support for the military standard MIL-STD-2525D has been added. It is now possible to create and visualize TLcdEditableMS2525bObject instances using the new 20-digit SIDC codes. TLcdMS2525bNode also exposes the new domain hierarchy.

ImprovementDefense Symbology

LF-1126
Military symbols can now be retrieved as a PNG. This is useful if a symbol should be displayed in a context where an anchor point is not needed. Previously the symbol needed to be extracted from the JSON response containing both the symbol and the anchor point. To retrieve the symbol as a PNG the Accept header of the request needs to be set to image/png.

Bug fixLuciadFusion

LCD-10091
XML framework: fixed a ClassCastException when working with an XML list type of xsd:integer or xsd:long values.

Bug fixLuciadFusion

LCD-9111
Fixed bug that would make OpenFlight models have incorrect bounding boxes, because transformations were not taken into account.

Bug fixLuciadFusion

LCD-9927
The model metadata of OpenFlight models decoded by TLcdOpenFlightModelDecoder will now also include the bounding box.

Bug fixLuciadFusion

LF-1519
Fixed an issue where web clients (web browser, LuciadRIA) requesting a tile from a service (e.g. WMS or OGC 3D Tiles) would not cache the result. This reduces the amount of requests sent to the LuciadFusion server.

Bug fixLuciadFusion

LF-1632
Fixed fusing a raster coverage of type IMAGE with an area of interest (bounding box) for geographic references. The area of interest was internally converted to a polygon to determine the clip to apply.

Bug fixLuciadFusion

LF-1634
Fixed an issue where the preview map on the product detail page doesn't fit on the data.

Bug fixLuciadFusion

LF-1633
Fixed an issue where the geometric error of the preprocessed data is extremely large for non-leveled point clouds. This caused problems when trying to visualize such a this preprocessed result in the client.

Bug fixLuciadFusion

LCD-10168
TLcdOGC3DTilesModelDecoder now correctly decodes normals. This especially improves the rendering of meshes without textures when lighting is enabled.

Bug fixLuciadFusion

LCD-10290
Visualizing a Lightspeed layer created for a model with zero width and/or height bounds in combination with an OGC SLD style containing one or more rules with filters could lead to an IllegalStateException.

Bug fixLuciadFusion

LCD-10277
Fixed an issue when displaying lines with 3D information from LuciadFusion vector coverages. In some cases, their Z information got lost.

Bug fixLuciadFusion

LCD-10288
TLcdClusteringTransformer: When reused after another transformer was configured on the TLcdTransformingModel, model changes that occurred when it was not in use, were not visualized anymore (e.g. added elements were missing).

Bug fixTerrain Analysis Engine

LCD-9036
The TLcdColorMap configured on a TLspLOSCoverageStyle can be gradient or piecewise constant. When piecewise constant, the invisible and unknown color configured on the TLspLOSCoverageStyle were not applied correctly. To specify the invisible or unknown color, use invisibleColor or unknownColor on TLspLOSCoverageStyle.Builder respectively when building the style.

Bug fixAviation Standards

LCD-10130
Fixed an issue that prevented the rendering of VerticalStructure features with radius null in a Lightspeed 3D view; this also caused the logging of message "GLU tessellation error: 100155".

Bug fixDefense Symbology

LCD-9819

Improved the rendering of T-shaped and U-shaped military symbols in the APP-6 / MIL-STD 2525 standards.

The updated symbol set are:

  • Block
  • Breach
  • Bypass
  • Canalize
  • Clear
  • Contain
  • Penetrate
  • Bypass Easy
  • Bypass Difficult
  • Bypass Impossible

Bug fixDefense Symbology

LCD-10118
Improved the rendering of the "Infiltration Lane" and "Roadblocks, Craters, and Blown Bridges: Planned" military symbols to better align with the selection rectangle in GXY for some geo-references (e.g. Equidistant Cylindrical).

Bug fixDefense Symbology

LCD-10151
Fixed slow military symbology label painting performance in case of labels with Arabic text and a label halo style.

Bug fixDefense Symbology

LCD-10217
Fixed bug were editing constraints were not properly applied to some symbols.
Affected symbols
APP6-C
Name Code(SIDC)
Control 25321300
Locate 25323600
Affected symbols
APP6-A / APP6-B
Name Code(SIDC) Hierarchy Code
Occupy G*T*GO----*****" 2.X.1.1.16
Secure G*T*GS----***** 2.X.1.1.21
Affected symbols
MIL-STD-2525 B / MIL-STD-2525 C
Name Code(SIDC) Hierarchy Code
Occupy G*T*O-----****X 2.X.1.16
Secure G*T*S-----****X" 2.X.1.21

Bug fixDefense Symbology

LCD-10231
Changed the default NVG element binding for the following APP-6C symbols from polygon to multipoint:
Name Code(SIDC)
Control 25321300
Locate 25323600

Upgrade considerationLuciadFusion

A uniqueness constraint was added to the public id columns of the tables that contain Data and Services in the database (imported_data and geo_service). The REST API uses the public id as the identifier for Data and Services and requires this value to be unique. Ensure that all the public ids of Data and Services are unique before upgrading or it will fail.

Upgrade considerationLuciadFusion

The addition of the REST API requires that the 'pgcrypto' extension need to be enabled when using a PostgreSQL database. This extension allows LuciadFusion to create unique identifiers (of type UUID) for the domain objects that are obtainable through the REST API.

Upgrade considerationLuciadFusion

Added a dependency to the LWJGL library version 3.2.0, used to retrieve window handles.

Upgrade considerationLuciadFusion

The JOGL, JOCL, and GlueGen libraries have been updated to version 2.3.2+3-lcd. This is the same as the official 2.3.2 version of JOGL, with the exception that it contains a fix to prevent a JVM crash when closing an application on the Mac OS X platform when using OpenJDK 11.

Upgrade considerationLuciadFusion

For Java 11 support, Spring Boot and its dependencies have been upgraded. The libraries that have been upgraded are as follows:
  • Spring Boot (version 2.1.0.RELEASE)
  • Spring Core (version 5.1.2.RELEASE)
  • Spring AOP (version 5.1.2.RELEASE)
  • Spring Beans (version 5.1.2.RELEASE)
  • Spring Expression (version 5.1.2.RELEASE)
  • Spring Context (version 5.1.2.RELEASE)
  • Spring JDBC (version 5.1.2.RELEASE)
  • Spring Security LDAP (version 5.1.1.RELEASE)
  • Spring Boot Starter (version 2.1.0.RELEASE)
  • Spring Boot Starter Actuator (version 2.1.0.RELEASE)
  • Spring Boot Starter Security (version 2.1.0.RELEASE)
  • Spring Boot Starter Web (version 2.1.0.RELEASE)
  • Spring Boot Starter Websocket (version 2.1.0.RELEASE)
  • Spring Boot Configuration Processor (version 2.1.0.RELEASE)
  • Spring Cloud Eureka (version 2.1.0.M1)
  • HikariCP (version 3.2.0)
  • Jackson (version 2.9.7)
  • Gson 2.8.7
  • JAXB Api (version 2.3.1)
  • JAXB Implementation (version 2.3.0.1)
  • Javax Annotation API (version 1.3.2)
The following properties were updated along with these libraries.
  • server.context-path property has been changed to server.servlet.context-path.
  • server.session.timeout property has been changed to server.servlet.session.timeout.
  • management.context-path has been renamed as management.server.servlet.context-path, therefore the properties which use it have been adjusted accordingly. endpointPattern of fusion.actuators.security.authenticatedEndpoints has been changed.
  • Property 'management.security.enabled' is deprecated, there is no longer a separate security auto-configuration for the Actuators. For more information please refer Spring Boot 2.0 Migration Guide - Actuator Security
  • Property 'security.basic.enabled' is deprecated, the security auto-configuration is no longer customizable.
  • management.endpoints.web.exposure.include has been added to determine which actuator endpoints will be exposed. For more information about the Actuator configuration, please refer to:

Upgrade considerationLuciadFusion

To document the JSON REST API and provide an interactive console (see LuciadFusion Studio REST API Developer’s Guide - Interactive API documentation) several Swagger related libraries were added. The Guava library has been updated to the version required by these new libraries. The following libraries have been added:
  • Spring-plugin (version 1.2.0.RELEASE)
  • Swagger-Core (version 1.5.20)
  • SpringFox (version 2.9.2)
The following libraries were updated:
  • Guava (version 20.0)

Upgrade considerationLuciadFusion

A new version of the jai_imageio library is used. It no longer depends on classes that are not available in certain Java versions.

Upgrade considerationLuciadFusion

Some API constructs in Luciad's abstract OpenGL binding have been deprecated:
  • ILcdGLBufferFactory and ILcdGLBuffer should be replaced by the equivalent java.nio.Buffer constructs.
  • The makeCurrent(), canMakeCurrent() and release() methods of ILcdGLDrawable are prone to improper use. Code that requires an active OpenGL context outside of a regular repaint cycle should instead be scheduled using the invokeLater() or invokeAndWait() method of the drawable.
  • ILcdGLEventListener#displayChanged() is never called by any current implementations of ILcdGLDrawable. The init() method serves essentially the same purpose and should be used instead.

2018.0

2018.0.12

ImprovementLuciadFusion

LCD-10242
Improved interoperability with WMS servers that define WMS extensions through the XML Schema attribute 'noNamespaceSchemaLocation'.

ImprovementLuciadFusion

LCD-10187
The WFS server is now flexible against the casing used in the output format parameter in GetFeature requests.

Bug fixLuciadFusion

LCD-10264
Fixed TLcdDTEDModelDecoder behavior which became more strict in 2018.0 on DTED file names. This was related to improved meta data decoding functionality.

Bug fixLuciadFusion

LCD-10260
TLcdCSWDecoder now properly decodes OWS 1.0 exception reports.

Bug fixLuciadFusion

LF-1113
A fallback has been added to the crawling process in case the original model reference cannot be encoded in WKT. Now WGS 84 will be used as a default and the model bounds will be converted to WGS 84. This results in Studio being able to crawl files with special model references which cannot be encoded in WKT, which used to fail. This mainly affects raster formats, in particular GeospatialPDF.

Bug fixLuciadFusion

LF-1629
The Fusion server process did not shut down properly when triggering the Spring shutdown actuator.

Bug fixLuciadFusion

LCD-10212, LCD-10213, LF-1626
Fixed an issue where the WMTS server could produce:
  • inverted-color images for jpeg output.
  • non-transparent images for png output with requested transparency for the map background.
The server now returns a proper image.

Bug fixLuciadFusion

LF-1623
The LuciadFusion Platform CSW catalogue service now uses the correct context path for the links in the service metadata.

Bug fixLuciadFusion

LCD-5486, LCD-9543
The SLD GXY raster rendering pipeline did not respect any configured scale ranges. The scale ranges were applied but an additional scale range was often added depending on the pixel density of the data.

Bug fixLuciadFusion

LCD-10188
The SLD Lightspeed raster rendering pipeline did not support the use of a geometry property name in raster symbolizers.

Bug fixLuciadFusion

LCD-10267
The TLcdRasterImageBuilder now handles the case of an ILcdRaster with a large tile size.

Bug fixLuciadFusion

LCD-10244
Fixed an issue that could cause TLcdClusteringTransformer to stop updating clusters if the user intentionally sets the system clock back while the application is running.

Bug fixLuciadFusion

LCD-10225
TLcdClusteringTransformer: when using multiple scale denominators to create a scale based cluster transformer with TLcdClusteringTransformer#createScaleDependent, an exception was incorrectly thrown when the denominators were ordered from low to high values. As a result it was not possible to create a scale based cluster with more than one scale denominator.

Bug fixLuciadFusion

LCD-10203
TLspPlotLayerBuilder : Fixed a NullPointerException that could occur when performing a query on a plot layer (e.g. when using the select controller).

Bug fixLuciadFusion

LCD-10161
Fixed an issue where point-to-point snapping could behave erratically for domain objects that do not implement ILcdPoint.

Bug fixLuciadFusion

LCD-10179
Fixed the handling of negative GridOffsets X / Y / Z resolution values in WCS 1.1 GetCoverage requests.

Upgrade considerationLuciadFusion

TLcdClusteringTransformer#createScaleDependent has been deprecated. To create a scale based cluster transformer TLcdClusteringTransformer#createMapScaleDependent should be used instead.

2018.0.11

ImprovementLuciadFusion

LCD-9732
The WFS client samples now enable support for the GeoJSON exchange format, next to GML 2 / 3.1 / 3.2.

ImprovementLuciadFusion

LCD-10181, LCD-10210
TLcdBingMapsModelDecoder now uses HTTPS for its imagery and tile requests.

Bug fixLuciadFusion

LF-1625
Fixed issue where recrawling a data root would not cause derivative products and services to have updated bounds in their metadata.

Bug fixLuciadFusion

LF-1624
Fixed issue where recrawling a data root would not cause some data with new content to have updated bounds.

Bug fixLuciadFusion

LF-1616
Fixed an issue that would not properly update a Product when any of its Data entries was deleted.

Bug fixLuciadFusion

LCD-9926
Fixed an issue in TLcdGXYCirclePainter that would break outline selection and isTouched behavior when working with multiple circles. This also affected the editing of variable width buffers.

Bug fixLuciadFusion

LCD-10202
In some cases, the Z (height) information of rhumb polylines was lost when visualizing in a Lightspeed 3D view. This happened when a lon-lat-height rhumb polyline was part of a composite curve. This is now resolved.

Bug fixWeather & Environment Standards

LCD-10228
For some grib files, TLcdNetCDFModelDecoder couldn't decode some of its variables when specifying them using a TLcdNetCDFDataSource instance.

Bug fixWeather & Environment Standards

LCD-10220
TLcdNetCDFModelDecoder can now handle more files that are produced using the Panoply application from NASA.

Bug fixDefense Symbology

LCD-10221
Fixed a regression introduced by LCD-10190, causing exceptions to be thrown when creating and visualizing a Weapons/Sensor Range Fan symbol in a Lightspeed view.

Bug fixRadar Connectors

LCD-10176
"Time of Day" (Data Item I021/030) octets of ASTERIX Category 21 (version 0.23) are now decoded as unsigned numbers.

Upgrade considerationDefense Symbology

LCD-10190
Weapons/Sensor Range Fans now allow specifying a non-zero minimum radius for the first arc band. The shape now requires 4 points for the first arc band instead of 3. If you programmatically created such shapes, make sure to insert the minimum radius point after the center.

2018.0.10

ImprovementLuciadFusion

LCD-10196
TLcdImageModelMeasureProviderFactory now creates providers that track model changes.

ImprovementLuciadFusion

LCD-10182
The magnetic north data files for WMM now use the WMM2015v2 coefficients. NOAA has issued this update to address degraded performance of the WMM2015 in the Arctic region.

ImprovementLuciadFusion

ILspTerrainSupport now has an additional intersectTerrain method which can be used to perform ray/terrain intersection tests even when the view is set to 2D.

ImprovementDefense Symbology

LCD-10157
Configured an icon for the APP6-A/B symbol 'Area Target' (2.X.2.3.3.3)

Bug fixLuciadFusion

LCD-9716
TLspShapeLayerBuilder: An OutOfMemoryException could occur in some cases when visualizing dynamic data in layers build with TLspShapeLayerBuilder.

Bug fixLuciadFusion

LCD-10146
Fixed bug that could cause the TLspContext of an ALspLayer to (incorrectly) return a null pointer when calling #getModel.

Bug fixLuciadFusion

LCD-10155
A threading issue within an internal GXY view pool used by the WMS has been fixed. Internal clean up could result in a NoSuchElementException which in turn would result in HTTP status code 500 (internal server error).

Bug fixLuciadFusion

LCD-10186
Fixed an integer overflow issue that caused transactions of over 2 GiB to be rolled back after encoding. This would appear to a user as if the data was being encoded correctly, i.e. the output file would grow steadily, only to suddenly disappear at the end.

Bug fixLuciadFusion

LCD-10180
Fixed an issue where a ConcurrentModificationException was triggered in some rare cases.

Bug fixLuciadFusion

LCD-10175
Fixed issue where creating a point near the start and endpoint of a pointlist would not work.

Bug fixLuciadFusion

LCD-10154
The vertical label displacement property in SLD styles was incorrectly interpreted downwards instead of upwards in a GXY view.

Bug fixLuciadFusion

LCD-10124
Fixed an issue that would cause point insertion not to work correctly for 3D pointlists in a 3D view on high-altitude terrain.

Bug fixDefense Symbology

LCD-10177
Fixed an issue where Hostile Static Depiction symbols in MIL-STD 2525 b/c where painted with only one ENY label in Lightspeed

Bug fixDefense Symbology

LCD-9899
Weapons/Sensor Range Fans no longer look solid when painted with dashed stroke and overlapping.

Bug fixDefense Symbology

LCD-10169
The color (affiliation and default color) of unframed APP-6 icons could not be changed.

Bug fixDefense Symbology

LCD-10165
Last point representing arrow width of multipoint arrows is placed to the left of the arrow head instead of to the right

Bug fixDefense Symbology

LCD-10158
Fixed issue were two points were placed when finishing the creation of an NVG arrow military symbol in Lightspeed.

2018.0.09

ImprovementLuciadFusion

LF-1599
End point url is added for CSW metadata records of 3D Tiles services.

ImprovementDefense Symbology

LCD-10135
Added support for the symbol status codes "Present/Damaged", "Present/Destroyed" and "Present/Full To Capacity" in APP-6C.

ImprovementMaritime Standards

The ECDIS decoders and visualization now support InlandECDIS (IENC).

You can simply use TLcdS57UnifiedModelDecoder to decode an IENC CATALOG.031 or.000 cell file. The product type will be ELcdS57ProductType.IENC.

The decoder supports IENC versions 2.0, 2.1, 2.2, 2.3 and 2.4. The visualization will use the display rules from IENC 2.4.

To visualize the data in a Lightspeed view, use TLspS52LayerBuilder.

To visualize the data in a GXY view, use TLcdS52GXYLayerFactory.

You can configure your ship's beam and air draft on the S-52 display settings (see TLcdS52DisplaySettings). These settings affect the visualization of the safety of fixed bridges.

If necessary, you can also use TLcdS57ProductConfiguration and TLcdS52ProductConfiguration with product type IENC to have more fine-grained control over the decoding and/or visualization, as described in Chapter 12 of the Maritime Standards Developer's Guide.

ImprovementS-63

The S-63 ECDIS decoder (TLcdS63UnifiedModelDecoder and variants) now supports InlandECDIS (IENC). For details, see the release note in the Maritime Standards component.

Bug fixLuciadFusion

The GLTF decoder now accepts missing primitive type. When that field is incorrect or absent, the decoder now simply falls back to GL.Triangle.

Bug fixLuciadFusion

LCD-10031
Fixed an issue where tilting or zooming past a certain threshold caused a flicker for draped raster layers in 3D views.

Bug fixLuciadFusion

LF-1600
The LuciadFusion Platform WMS service now defines correct bounds for the root WMS layer inside the capabilities, instead of always using the world extent.

Bug fixLuciadFusion

LCD-10141
Fixed a quadratic complexity problem in TLcdGXYContinuousLabelingAlgorithm that could cause performance problems when working with 100s/1000s of labels.

Bug fixLuciadFusion

LCD-10138
Fixed an issue with touch controllers on TLspExternalView. At some point, it would try and create an AWTEvent with a null source component.

Bug fixLuciadFusion

LCD-10149
The GeoTIFF encoder now encodes model references with a user defined geodetic datum correctly. Only the first parameter of the geodetic datum transformation was stored.

Bug fixLuciadFusion

LCD-10134
The parsing of the WMS capabilities could get into an infinite loop in the case a WMS layer is defined without a geographic coordinate reference, i.e., CRS:1.

Bug fixLuciadFusion

LCD-10097
Fixed an issue where an image height provider returned an incorrect value for a coordinate on the edge of a tile in certain cases.

Bug fixReal-time Engine

LCD-10141
Fixed a quadratic complexity problem in TLcdGXYContinuousLabelingAlgorithm that could cause performance problems when working with 100s/1000s of labels.

Bug fixDefense Symbology

LCD-9886
Improved the rendering quality of the Static Depiction symbol in MIL-STD 2525 b/c by enhancing the accuracy of the inner circles and increasing the readability of the ENY text (in case of hostile affiliation).

Bug fixDefense Symbology

LCD-10120
Fixed placement of the last point of multipoint symbols that could be represented with both arrow and multipoint elements. The last point of multipoint elements used to be placed at the tail of the arrow, it is now placed at the corner of the arrow head, as is specified in the NVG specification.

Bug fixDefense Symbology

LCD-10133
The fix for issue LCD-9300 introduced a bug in the editing behaviour of the Arrow symbols for GXY and Lightspeed views. this bug has now been fixed.

Upgrade considerationDefense Symbology

LCD-10136
The two-digit APP-6C code used for echelons at Brigade level and below was not correct: the echelons Brigade, Regiment/Group, Batallion/Squadron, Company/Battery/Troop, Platoon/Detachment, Section, Squad and Team/Crew were respectively incorrectly set to the digits 18, 17, 16, 15, 14, 13, 12 and 11 instead of to the expected digits 11, 12, 13, 14, 15, 16, 17 and 18.

2018.0.07

ImprovementLuciadFusion

LCD-10114
The GeoTIFF decoder supports a user defined projection (GeoTIFF key 3075) with coordinate transformation code 9815 as Hotine Oblique Mercator (variant B), as defined in the EPSG database.

Bug fixLuciadFusion

LCD-10113
TLspParameterizedLineStyle: An IllegalArgumentException would be thrown for some Color values that were provided as an attribute in a ILcdExpression when selecting an object.

2018.0.04

ImprovementLuciadFusion

LF-1497

The TLfnRasterCoverageMetadata now allows to define an area of interest (bounding box), which is used to clip the data within the raster coverage. This does not affect the coverage tile set structure which is determined by the bounding box.

Note that the version number of the tile store format has been updated for this.

ImprovementLuciadFusion

LF-1476
Improved the performance of services with many products.

ImprovementAviation Standards

LCD-8792
TLcdAIXM51RouteSegmentTimeSlice.START_PROPERTY and TLcdAIXM51RouteSegmentTimeSlice.END_PROPERTY properties are now used to deduce the geometry of Route Segments when there is no TLcdAIXM51RouteSegmentTimeSlice.CURVE_EXTENT_PROPERTY property.

ImprovementDefense Symbology

LCD-10090
Improved feedback and documentation when using invalid APP-6 and MIL-STD 2525 symbol codes.

ImprovementDefense Symbology

Small improvements to some APP-6C icons.

Bug fixLuciadFusion

LF-1568
Service exception reports returned by the WMTS service are now of content type 'text/xml'. Previously the content type was not in accordance with the OGC WMTS protocol specification.

Bug fixLuciadFusion

LCD-10071
TLcdOGCFilterEvaluator#buildFilter would return ILcdDynamicFilter instances for unsupported TLcdOGCFilter instances. Using the returned dynamic filter would result in runtime exceptions (like NullPointerExpceptions).

Bug fixLuciadFusion

LCD-10082
The evaluation of a OGC filter could result in a NullPointerException when the filter contains XPaths using the descendant-or-self axis specifier.

Bug fixLuciadFusion

LCD-10060
TLspShapeLayerBuilder: Fixed a memory leak that could occur when modifying elements of the layer's model. This could only occur when the layer was configured with a TLcdModelQueryConfiguration and/or the minimum object size for painting was not equal to 0.

Bug fixLuciadFusion

LF-1568
Service exception reports returned by the WFS service are now of content type 'text/xml'. Previously the content type was not in accordance with the OGC WFS protocol specification.

Bug fixLuciadFusion

LF-1568
Service exception reports returned by the WCS service are now of content type 'text/xml' when using version 1.1.0 or 1.1.1 of the protocol. Previously the content type was not in accordance with the OGC WCS protocol specification for version 1.1.0 and 1.1.1.

Bug fixLuciadFusion

LCD-10086
Fixed an issue with right-clicks in Swing views. Lightspeed incorrectly assumed that these right-clicks had the CTRL modifier set (due to https://bugs.openjdk.java.net/browse/JDK-8041928). One way this manifested itself, was that right-clicking on selected objects in a Swing view, would deselect the objects.

Bug fixAviation Standards

LCD-10005
Fixed an inconsistency between TLcdDAFIFModelDecoder#decode and TLcdDAFIFModelDecoder#canDecodeSource while decoding the data in a directory.

Bug fixAviation Standards

LCD-10064
Getting properties of a Military Training Route data could throw an exception, which has been fixed.

Bug fixAviation Standards

LCD-10058
TOUCHDOWN_ZONE_ELEVATION, TOUCHDOWN_ZONE_ELEVATION_UNIT and TRUE_BEARING properties in TLcdARINCRunwayDataProperties are now retrieved from Runway instead of RunwayDirection.

Bug fixDefense Symbology

LCD-9889
Added Hostility (ENY) labels to the Trip Wire symbol for the standards MIL-STD-2525 b/c and APP6-A/B/C

Bug fixDefense Symbology

LCD-10027
Fixed issue where NVG text elements weren't updated on screen when the text content changed

Bug fixDefense Symbology

The "Feint/Dummy Headquarters" value for APP-6C installations was not visualized.

Bug fixDefense Symbology

LCD-9492
Fixed an issue where accessing TLcdEditableAPP6AObject and TLcdEditableMS2525bObject using the ILcdDataObject interface returned outdated values.

Bug fixDefense Symbology

LCD-10088
Fixed an issue for APP-6C where retrieving country values from a symbol using ILcdDataObject could trigger an exception.

Bug fixDefense Symbology

LCD-10085
Fixed a problem in TLcdNVGGXYPainterProvider that caused a missing view repaint when using NVG data containing text in combination with asynchronous painting.

2018.0.03

ImprovementLuciadFusion

LCD-10077
TLcdSVGIcon now supports icons that have no width or size but do have a view box.

ImprovementLuciadFusion

LF-1555
The page where the files shared through the File Server services are listed is made accessible to everybody, users don't have to log in anymore.

ImprovementLuciadFusion

LF-1537
File Server: improved performance when browsing very large datasets.

ImprovementLuciadFusion

LF-1564
During the creation of 3D Tiles services, the preprocessing output directory can now be changed.

ImprovementLuciadFusion

LCD-9999
Model metadata retrieved from any model that also implements ILcdModelContainer will now by default include the data categories of the contained submodels as well.

ImprovementLuciadFusion

LCD-9967
ALcdModel has new methods to set or get the function that is used to collect metadata for the model. See ALcdModel#getModelMetadataFunction and ALcdModel#setModelMetadataFunction

ImprovementLuciadFusion

LCD-10068
The TLcdGeoJsonModelDecoder will set TLcdCoreDataTypes.DOUBLE_TYPE and TLcdCoreDataTypes.LONG_TYPE respectively in the data type for double and long values, instead of TLcdCoreDataTypes.NUMBER_TYPE for both.

ImprovementRadar Connectors

LCD-9760
TLcdASTERIXCategory62: Following trajectory properties are now available on the TLcdASTERIXTrajectory and their values can be changed by calling the setValue method in the ILcdDataObject interface:
  • Callsign
  • IFPSFlightId and all its subproperties
  • FlightCategory and all its subproperties
  • TypeOfAircraft
  • WakeTurbulenceCategory
  • DepartureAirport
  • DestinationAirport

Bug fixLuciadFusion

LCD-10072
Removed the enforcing of accessor.byteOffset as per the GLTF 2.0 spec.

Bug fixLuciadFusion

Resolved a constructor issue in TLcdCGMModelDescriptor.

Bug fixLuciadFusion

LCD-9952
The GeoTIFF decoder now can handle case of missing ProjectedCSTypeGeoKey within the GeoTIFF tags by handling it as user defined.

Bug fixLuciadFusion

LCD-9955
The GeoTIFF decoder now correctly interprets model references where a user defined geodetic datum is used (GeoTIFF key 2062). The interpretation of the rotation and the scale correction has been fixed.

Bug fixAviation Standards

LCD-6993
Fixed the handling of sunrise and sunset times in AIXM 5.1 timesheets in case of a Polar Day or Midnight Sun.

Bug fixAviation Standards

LCD-7281
To ease the visual recognition of restricted airspaces and to better align with common charting guidelines, AIXM 5.1 restricted airspaces (prohibited, restricted, danger area) are now painted with a striped red border in GXY views.

Bug fixAviation Standards

LCD-9673
Missing time zone information in AIXM 5.1 time slice dates was causing incorrect calculation of the active time slice. This issue is fixed by using UTC-0 as default time zone when the time zone is missing.

Upgrade considerationLuciadFusion

LCD-10003
TLcdModelList#setClassTraceOn is now declared static, similar to other classes with that method. If you override this method somewhere in your code, you should make that overriding method static as well.

Upgrade considerationLuciadFusion

LCD-10001
TLcdFeatureIndexedAnd2DBoundsIndexedModel#setTraceOn is no longer declared static. This was a bug, since the method would enable tracing on for every instance of that class, which is not what the javadoc says it does. If you call this method statically somewhere in your code, you should either:
  • replace it with a call to TLcdFeatureIndexedAnd2DBoundsIndexedModel#setClassTraceOn, which results in the same behaviour as before, or
  • call the method on a specific instance of the class.

2018.0.02

ImprovementLuciadFusion

LCD-10013
TLcdWKTReferenceFormatter now better detects if a geodetic datum uses a vertical reference.

ImprovementLuciadFusion

LF-1588
Improved the geometric error calculation for preprocessed point clouds. To benefit from this improvement, remove and recreate your OGC 3D Tiles services.

ImprovementLuciadFusion

LCD-10000
TLcdInputStreamFactory now supports relative paths in HTTP/HTTPS URL's.

ImprovementLuciadFusion

LF-1259
The crawling engine will now consider both directories and files, where before it considered only files. This allows directory-based model decoders to be plugged into the crawling engine.

ImprovementLuciadFusion

LF-1534, LF-1535
Improved the metadata retrieval speed and memory usage for preprocessed point clouds. To benefit from this improvement, remove and recreate your OGC 3D Tiles services. Improved the preprocessing speed for very large mesh datasets.

ImprovementLuciadFusion

LCD-7968
TLcdGeoJsonModelDecoder can now decode geojson files with properties that have special characters (non-alphanumerics/underscores) in their name. Note that such properties will be renamed to something that does meet the requirements.

ImprovementLuciadFusion

LF-1139, LF-1492
When extending LuciadFusion Platform with additional controllers/services, it is now possible to reuse the TLfnFusionPlatformApplication class instead of creating a new main class. This enhancement fixes the problem where servlet containers start up LuciadFusion Platform more than once because multiple application entry points are discovered. You can now plug in additional Spring classes by using the fusion.config.additionalScanPackages property. See config/fusion.common.yml or the development guide for more information on how to use this property.

ImprovementLuciadFusion

LCD-9931, LCD-9883, LCD-9281
Improved error messages when TLcdSHPModelDecoder2 encounters corrupted SHX, SBN or SBX files.

ImprovementLuciadFusion

The EPSG resources are updated to EPSG database v9.3.

ImprovementLuciadFusion

LCD-3324
The TLcdGeoJsonModelEncoder will now include the bounding box ('bbox' property) in the resulting geojson file if the model to be encoded is ILcdBounded.

ImprovementLuciadFusion

LCD-6117
The MIF model decoder now supports a lot more different geodetic datums. For a detailed list of supported datums, refer to the javadoc of TLcdMIFModelReferenceParser.

ImprovementLuciadFusion

LCD-9283
TLcdSHPModelEncoder: The DBF file writer now logs warning messages when field names are truncated because of the limiting dBASE IV format.

ImprovementLuciadFusion

LCD-9881
The geojson model decoder now uses EPSG:4979 as default fallback reference when the input file contains Z-coordinates.

ImprovementWeather & Environment Standards

LCD-9054
TLcdNetCDFModelDecoder The logic that automatically combines variables for the creation of a multi-band image (e.g. northward and eastward wind) has been improved.

ImprovementWeather & Environment Standards

LCD-9762
The TLcdNetCDFModelDecoder now accepts files with extension .hdf, .h5, .he5 or .hdf5.

ImprovementAviation Standards

LCD-6109
Improved labeling of ApronElement, RunwayElement and TaxiwayElement by using the associated element:
  • ApronElement: If there is an associated Apron, the value of TLcdAIXM51ApronTimeSlice.APRON_NAME_PROPERTY of Apron is used as name of the ApronElement.
  • RunwayElement: If there is an associated Runway, the value of TLcdAIXM51RunwayTimeSlice.NAME_PROPERTY of Runway is used as name of the RunwayElement.
  • TaxiwayElement: If there is an associated Taxiway, the value of TLcdAIXM51TaxiwayTimeSlice.NAME_PROPERTY of Taxiway is used as name of the TaxiwayElement.

ImprovementAviation Standards

LCD-9904
TLcdAIXM5AbstractAIXMMessage now implements the ILcdDataObjectIndexedModel interface which adds data object index support to AIXM 5 models.

ImprovementAviation Standards

LCD-6349
Procedures are now rendered with a thicker line style to increase their visibility.

ImprovementAviation Standards

LCD-6349
Procedures are now rendered with a thicker line style to increase their visibility.

ImprovementAviation Standards

LCD-6349
Procedures are now rendered with a thicker line style to increase their visibility.

ImprovementAviation Standards

LCD-6349
Procedures are now rendered with a thicker line style to increase their visibility.

ImprovementDefense Symbology

LCD-9888
Added UniqueDesignation label to the MIL-STD-2525 c symbols 'Biological Contaminated Area symbols' (G*MPNB---***X) and 'Chemically Contaminated Area' (G*MPNC--**X) (and equivalent symbols of MIL-STD 2525 c and APP6-A/B/C)

Bug fixLuciadFusion

LCD-10013
TLcdWKTReferenceParser added incorrect authority and axis metadata to compound WKT references.

Bug fixLuciadFusion

LCD-9984
Added support for content.uri in tilesets. If one of content.url or content.uri is not present, the other will be used.

Bug fixLuciadFusion

LCD-10024
Fixed a where hidden entrypoint files were taken into account instead of the non-hidden corresponding files.

Bug fixLuciadFusion

LCD-10004
LuciadLightspeed now supports OGC 3D Tiles URL containing query parameters and correctly uses those for all subsequent requests.

Bug fixLuciadFusion

Improved the compatibility of the OGC 3D Tiles service with respect to the OGC 3D Tiles specification. To benefit from this, remove and recreate any mesh-based OGC 3D Tiles services.

Bug fixLuciadFusion

LCD-9954
Added support for content.uri in tilesets. This is now used by default instead of content.url

Bug fixLuciadFusion

LCD-9935
Fixed a precision problem occurring with 3DTiles' not axis-aligned Bounding Boxes.

Bug fixLuciadFusion

LCD-10038
Fixed an issue that caused some database decoders (e.g. Oracle) to construct an empty or syntactically incorrect column list whenever values with vendor-specific data types are selected.

Bug fixLuciadFusion

LCD-9263
Fixed bug that could crash the TLcdSHPModelDecoder2 when multiple threads concurrently try to decode the same .shp file that is missing a valid corresponding .sbn or .sbx file.

Bug fixLuciadFusion

LF-1509
LuciadFusion Platform now always disables the use of OpenCL in the imaging engine by default. You can enable it again using the com.luciad.imaging.disableOpenCLImagingEngine system property.

Bug fixLuciadFusion

LCD-9930
The default, automatically generated URLs listed in the operations metadata of the WFS capabilities did not include the part covered by a wildcard URL pattern defined in the deployment descriptor.

Bug fixLuciadFusion

LF-1525
In specific cases the crawler included the point (0,0) when determining the extent of the data set.

Bug fixLuciadFusion

LCD-10028
The Maven deployment script in build/maven will no longer allow deployment to the system's local repository (~/.m2/repository) since doing so results in file corruption. The default repository path has been updated to a more suitable location.

Bug fixLuciadFusion

LCD-10040
Considerably improved snapping performance in Lightspeed views for large complex polygons.

Bug fixLuciadFusion

LCD-9934
Fixed bug in TLcdSHPModelDecoder that would leak the .dbf file descriptor when a shape file's header could not be read.

Bug fixLuciadFusion

LCD-8540
licenseserver.exe: when you specify a log file, the log file will now contain the log messages for all specified license files, instead of only the messages for the first given license file.

Bug fixLuciadFusion

LCD-9402
The OBJ model decoder now correctly handles referenced texture files that contain spaces in their path.

Bug fixLuciadFusion

LCD-7888
The geojson model decoder now simply ignores features with a null geometry, instead of throwing an exception.

Bug fixLuciadFusion

LCD-9770
Different geojson features with the exact same geometry are no longer considered 'equal' by their equals method.

Bug fixWeather & Environment Standards

LCD-10011
TLcdNetCDFModelDecoder Resolved an issue where variables were incorrectly combined for the creation of multi-band images if they had very similar names. This fixes some problems introduced by the changes made in LCD-9700.

Bug fixWeather & Environment Standards

LCD-9700
The system property com.luciad.netcdf.cachedir can now be used to set the NetCDF cache directory. This directory is used e.g. for GRIB index files. Setting this property prevents issues with creating cache files in case the default chosen cache directory is non-writable. The system property can be set by providing it as a VM argument, e.g. -Dcom.luciad.netcdf.cachedir=<a-valid-path>. The directory provided in the system property will be created if it is not available.

Bug fixAviation Standards

LCD-6820
Fixed AIXM Basic Message and Digital NOTAM schema resources collision when configuring the model decoder to use a custom entity resolver for providing access to locally stored schema definitions.

Bug fixAviation Standards

LCD-6617
XLinks references with UUIDs are now converted to lower-case to be compliant with the gml:identifier values.

Bug fixDefense Symbology

LCD-10012
The Infiltration Lane symbol incorrectly painted a wave pattern with many waves. This symbol is now painted with only 2 repeating waves in the wave pattern. This way it matches the template as specified in the MIL-STD 2525 b/c and APP6-a/b/c standards.

2018.0

ImprovementLuciadFusion

TLspViewNavigationUtil's fit behavior now uses the TLcdModelMetadata bounds, if present. This makes the fit behavior more consistent, regardless of whether or not the model is ILcdBounded.

ImprovementLuciadFusion

LF-1214
The drop-down menu of available data formats in Studio's data table now shows a nice, human-readable name for the GeoPackage and LRDB formats.

ImprovementLuciadFusion

LCD-9816
The XML decoders now accept anyURI values with spaces. Although it is highly discouraged to use spaces in an anyUri, it is not prohibited - see https://www.w3.org/TR/xmlschema-2/#anyURI.

ImprovementLuciadFusion

LCD-6481
TLcdLASModelDecoder#setPerformBoundsAndRangeScan now allows skipping the (limited) data scan during decoding.

ImprovementLuciadFusion

LCD-9603
TLcdCSVModelDecoder now supports newline characters in quoted content.

ImprovementLuciadFusion

OGC filter: some new vendor specific functions have been added allowing to check whether a property matches one of multiple values. Consult the javadoc of the TLcdOGCVendorSpecificFunctions class for more information.

ImprovementLuciadFusion

LuciadFusion Studio now includes a 3D Tiles service. Using this service you can stream a massive amount of mesh and/or point cloud data to any client supporting the 3D Tiles protocol. The supported input formats are OSGB and LAS/LAZ files. Point cloud data is automatically preprocessed into a spatially indexed multi-level point cloud store.

ImprovementLuciadFusion

ImprovementLuciadFusion

TLcdPointCloudModelDecoder: this new class decodes point clouds in the Luciad point cloud file format (tilestore.lpc files).

ImprovementLuciadFusion

LuciadLightspeed now supports the OGC 3D Tiles and OSGB formats. This enables users to decode large 3D mesh or point cloud data sets and display them efficiently in a Lightspeed view. For more details, see:
  • The 3D Tiles Developer's Guide
  • The javadoc of TLcdOGC3DTilesModelDecoder on how to decode OGC 3D Tiles
  • The javadoc of TLcdOSGBModelDecoder on how to decode OSGB files
  • The javadoc of TLsp3DTileLayerBuilder on how to visualize such data

ImprovementLuciadFusion

TLcdExpressionFactory can now create expressions for trigonometric, vector and distance operations. A view position attribute, which represents the view coordinates of the object that is evaluated, was also added.

ImprovementLuciadFusion

Three parameterized styles that can be used by the TLspShapePainter (e.g. layers created with TLspShapeLayerBuilder) were added to the com.luciadview.lightspeed.style package:
  • TLspParameterizedIconStyle
  • TLspParameterizedLineStyle
  • TLspParameterizedFillStyle
These styles are configured using ILcdExpression, which can be created with the TLcdExpressionFactory. This allows to style objects based on their property values without the need to create a custom ALspStyler and submit multiple styles. Since the evaluation of the expressions of the style is done on the GPU and only one style needs to be used for property based styling, performance will improve compared with a custom ALspStyler.

The sample package samples.lightspeed.style.expressions contains a sample demonstrating how the parameterized styles can be used.

These styles can be used for dynamic and static data sets. However, for large static point data sets, it is recommended to use TLspPlotLayerBuilder.

ImprovementLuciadFusion

The properties in the LAS data model (see TLcdLASModelDescriptor) now disallow null values, because they cannot have absent values. Only the "ExtraBytes" property is nullable, because whether or not extra bytes are present depends on the file content, not the LAS point format.

ImprovementLuciadFusion

TLcdOGCWMSProxyModelDecoder: an extra constructor has been added which allows to specify the ILcdOWSTransport. This can for example be used to connect to a server which requires authentication.

ImprovementLuciadFusion

The LAS model decoder can now decode LASzip (LAZ) 1.0, 1.1, 1.2 and 1.3 files. It depends on the laszip4j third party library for this.

ImprovementLuciadFusion

Studio now includes a file server service. You can use it to let users download geospatial dataset files "as is". To allow downloading a dataset, select it in the data view, press "Create Service" and then choose the "File Server" service type.

ImprovementLuciadFusion

LF-1250
Studio now recognizes and stores the relations between a composite dataset and its children. This considerably improves the crawling performance for composite datasets such as ECDIS catalogs and DTED and CADRG data. In addition, the Studio data view now automatically aggregates composite datasets, hiding all children. This behavior is automatically active for all newly crawled content. You can disable it by deactivating the fusion.studio.configuration.hideDataSeriesChildren configuration property.

ImprovementLuciadFusion

The new TLcdModelMetadata class encapsulates advanced metadata information (including ISO 19115 metadata) about ILcdModel instances. ILcdModelDecoder has a new method decodeModelMetadata to retrieve model information without having to decode the entire model. The information can also be accessed from any ILcdModel. The Luciad model decoders have been enhanced to decode the metadata as efficiently as possible and provide more generic metadata, such as the data category, related files and their mime types.

ImprovementLuciadFusion

LCD-9430
ILcdFeatured and related interfaces have been deprecated in favor of ILcdDataObject and TLcdDataModel.

ImprovementLuciadFusion

LCD-8520
Modulo and integer to float conversion operations are added to the TLcdExpressionFactory.

ImprovementLuciadFusion

LCD-7761
The TLcdCSVModelDecoder can be used to decode CSV files.

ImprovementLuciadFusion

The GXY view map implementations (for example, TLcdMapJPanel) now come with grid layers that automatically refine when zooming in. If you want the previous behavior you can call setGridLayer(new TLcdMapLonLatGridLayer());.

ImprovementLuciadFusion

LCD-4316

TLcdCompositeModelReferenceDecoder: a composite model reference decoder has been added. To easily populate the composite instance with all available ILcdModelReferenceDecoder instances, the model reference decoders have been made available as @LcdService.

The same has been done for the encoding of the model references by introducing TLcdCompositeModelReferenceEncoder.

ImprovementLuciadFusion

LCD-9509
The OGC Web Client Suite Developer's Guide has been extended with a quick start sample to illustrate loading WCS, WFS and WMTS data in a GXY and Lightspeed view, next to the existing quick start sample for WMS.

ImprovementLuciadFusion

LCD-8866
The OGC Web Client implementations WMS, WFS, WCS and WMTS now support the use of a "direct data URL", consisting of the server URL and a key-value pair property 'data=...' that refers to the identifier of the desired data (WMS / WMTS layer, WCS coverage or WFS feature type id). This "direct data URL" can be set as follows:
  • WMS: through TLcdOGCWMSProxyModelDecoder#decode or (since issue fix LCD-10047) through TLcdWMSDataSource#Builder#uri.
  • WFS: through TLcdWFSModelDecoderDecorator#decode or (since issue fix LCD-10047) through TLcdWFSDataSource#Builder#uri.
  • WCS: through TLcdWCSCoverageModelDecoder#decode or (since issue fix LCD-10047) through TLcdWCSDataSource#Builder#uri.
  • WMTS: through TLcdWMTSModelDecoder#decode or (since issue fix LCD-10047) through TLcdWMTSDataSource#Builder#uri.

ImprovementLuciadFusion

LCD-9409
To ease connecting to a WFS and to better align with Luciad's general model decoding API, a new convenience class TLcdWFSDataSource has been introduced. A TLcdWFSDataSource models all aspects of a WFS data source (URL, feature type, format, ...). Instances can be created through the embedded builder and afterwards supplied to TLcdWFSModelDecoderDecorator or TLcdWFSProxyModel#Builder to decode WFS data into a model.

ImprovementLuciadFusion

LCD-9410, LCD-8866
To ease connecting to a WCS and to better align with Luciad's general model decoding API, two new convenience classes TLcdWCSCoverageModelDecoder and TLcdWCSDataSource have been introduced:
  • TLcdWCSCoverageModelDecoder is an implementation of ILcdModelDecoder to decode WCS coverage data into a model. Users can define the data to be decoded as a TLcdWCSDataSource instance (see next bullet) or as a String representing the URL and a key-value pair property 'data=...' that refers to the identifier of the desired coverage.
  • TLcdWCSDataSource models all aspects of a WCS data source (URL, coverage, format, ...). Instances can be created through the embedded builder and afterwards supplied to the new class TLcdWCSCoverageModelDecoder .

ImprovementLuciadFusion

LuciadLightspeed now comes with several JavaFX integration samples, which can be found in the package samples/lightspeed/integration/javafx.

ImprovementLuciadFusion

The Natural Earth sample data (see Shp/NaturalEarth) has been updated to version 4.1.

ImprovementLuciadFusion

com.luciad.util.collections: the collections for primitive types were extended with methods to efficiently add an entire array of values without the overhead of boxing the primitive values. See the javadoc for the new addAll methods for more detail.

ImprovementLuciadFusion

LCD-9096
TLcdCRSReferenceParser and TLcdCRSReferenceFormatter now also support the "CRS:83" and "CRS:27" references, and now also have support for ILcdXYWorldReference. TLcdOGCModelReferenceParser and TLcdOGCModelReferenceFormatter now also handle references in the CRS name space.

ImprovementLuciadFusion

LCD-9611

ImprovementLuciadFusion

LCD-8401
Greatly improved the worst-case performance of TLcdClusteringTransformer. This improvement greatly reduces the clustering time when zooming in on a large (100.000s of points) clustered data set. For a data set with approximately 300.000 points, this can give a 20x performance improvement.

ImprovementLuciadFusion

ILcdSelection now has a new default method getSelectedObjects that exposes the selected objects as a List. In addition, the interface now has a type parameter so you can select more specific collections.

ImprovementLuciadFusion

ILcdModelContainer now has a new default method getModels that exposes the models as a List.

ImprovementLuciadFusion

LCD-9413

ImprovementLuciadFusion

LCD-4144
TLspShapeLayerBuilder: you can now configure whether the created layer should be regarded as a source for snapping points via TLspShapeLayerBuilder#snapTarget.

ImprovementReal-time Engine

TLspRadarVideoLayerBuildernow paints a sweep line, radar grid and range style by default. Before, it only painted the radar video content.

The styler of the built layer implements ILspCustomizableStyler, so you can disable and change the style for this new content using the methods of that interface. Consult the javadoc for detailed information.

ImprovementReal-time Engine

The new TLcdRadar class allows you to visualize radar video data from custom data feeds. See its addRadarSweep method to find out how to pass radar video data into the radar object. The samples.realtime.lightspeed.radarvideo sample demonstrates how to use these classes and how to visualize the data using TLspRadarVideoLayerBuilder.

ImprovementReal-time Engine

LCD-8729
TLspRadarVideoLayerBuilder now offers better support for radar video data in high resolution. Previously, the data was sampled at a smaller resolution before it was shown on the screen. Now the full resolution is preserved.

ImprovementRadar Connectors

LCD-6033
TLcdASTERIXLiveDecoder: you can now pass any ILcdModelContainer to the decode*SFCT, not only a TLcdModelList. For instance, a TLcdModelTreeNode. This is useful if your ASTERIX data contains a mix of category 240 and other categories. For a TLcdModelList, all models need to have the same model reference. However, category 240 models typically has a different model reference than the other categories. TLcdModelTreeNode does not have this restriction.

ImprovementRadar Connectors

TLcdASTERIXLiveModelDecoder: this new class is an ILcdModelDecoder implementation which allows to decode live ASTERIX data.

Bug fixLuciadFusion

Changed TLcdSpatiaLiteModelDescriptor.TYPE_NAME to correspond with the actual type name in the model descriptor instances.

Bug fixLuciadFusion

TLcdEditableModelListDescriptor's constructor taking a type name and display name switched the arguments around.

Bug fixLuciadFusion

Improved trackpad/magic mouse zooming on macOS in GXY and Lightspeed views.

Bug fixLuciadFusion

LCD-9434
Fixed a JRE related performance problem that occurs when using JRE 1.8 update 131 and newer on macOS. It caused low framerates when moving or dragging the mouse.

Bug fixDatabase Connectors

Changed TLcdOracleSpatialModelDescriptor.TYPE_NAME to correspond with the actual type name in the model descriptor instances.

Bug fixDatabase Connectors

Changed TLcdInformixSpatialModelDescriptor.TYPE_NAME to correspond with the actual type name in the model descriptor instances.

Bug fixDatabase Connectors

Changed TLcdDB2SpatialModelDescriptor.TYPE_NAME to correspond with the actual type name in the model descriptor instances.

Bug fixDatabase Connectors

Changed TLcdPostGISModelDescriptor.TYPE_NAME to correspond with the actual type name in the model descriptor instances.

Bug fixDatabase Connectors

Changed TLcdInformixGeodeticModelDescriptor.TYPE_NAME to correspond with the actual type name in the model descriptor instances.

Bug fixReal-time Engine

LCD-9487
TLspRadarVideoLayerBuilder: a radar layer was only repainted in response to a model change event or a view change. That could result in an unsmooth fade-out of the blips. Now the radar will repaint itself automatically, resulting in a smooth fade-out of the blips.

Upgrade considerationLuciadFusion

Added a dependency on the third party library HPCC Collections for efficient HashMap implementation which is used in PointCloud tile voxelization.

Upgrade considerationLuciadFusion

Due to the introduction of enhancement LCD-4316, the ILcdModelReferenceDecoder and ILcdModelReferenceEncoder instances in a deployed application should no longer be obfuscated. The Proguard configuration file in the release has been adjusted for this. If you use your own Proguard configuration, make sure to update it as well.

Upgrade considerationLuciadFusion

TLcdGeoJsonModelDecoder now ensures that the uid property value of decoded Geojson features is always of type String, as described by the associated data model. Implementations that expected an Integer type in case of a numeric value in the input data should adapt accordingly.

Upgrade considerationLuciadFusion

ILcdOWSTransport a default canPerformRequest method has been added to the interface, allowing users of the transport to first check whether the request can be performed.

Upgrade considerationLuciadFusion

TLspPlotStyle : The alpha value of the modulation color configured on the style is now also taken into account, previously it was ignored. The transparency of the icon is now determined by multiplying the alpha value of the modulation color and the opacity configured on the style. If in your code you use a modulation color which is transparent on your style e.g. TLspPlotStyle.newBuilder().modulationColor(new Color(255,0,0,128)).build(), then you will need to change this to TLspPlotStyle.newBuilder().modulationColor(new Color(255,0,0,255)).build() if the icon needs to remain fully opaque.

Upgrade considerationLuciadFusion

TLcdInputStreamFactory now by default requests compressed content over HTTP, using the "Accept-Encoding" header, for performance. When serving compressed data is not available on the server, it automatically falls back on raw data, unless specified differently. This can be disabled using:
  • The boolean system property com.luciad.io.TLcdInputStreamFactory.acceptHttpCompressedEncoding
  • The method TLcdInputStreamFactory#setAcceptCompressedEncoding
  • The setDefaultRequestProperty("Accept-Encoding", null) method on a specific factory instance
There is no change on the user side, as the TLcdInputStreamFactory automatically unzips the content.

Upgrade considerationLuciadFusion

LCD-9343
ALspDensityStyle: the deprecated protected constructors from ALspDensityStyle and its subclasses have been removed.

Upgrade considerationLuciadFusion

The CSW server component is now included in the OGC server component.

Upgrade considerationLuciadFusion

Removed the protected fNextNumber and fScaleOrigin fields from the GXY view map implementations (for example, TLcdMapJPanel). If you used fNextNumber, you should manage the map count yourself in your map extension class. If you used fScaleOrigin, you can replace it with 450 / (2 * Math.PI * TLcdConstant.EARTH_RADIUS).

Upgrade considerationLuciadFusion

TLcd3DPrimitiveType: this class represents an enumeration, but still had a public constructor. This constructor has been removed as nobody should create new instances of this class.

Upgrade considerationLuciadFusion

TLcdModelDescriptor's protected fields have been removed from the API. You can replace any uses with calls to the respective setter and getter methods.

Upgrade considerationLuciadFusion

Removed the isBackgroundImageCapable methods from the GXY view map implementations (for example, TLcdMapJPanel). You can safely replace any invocation with false.

Upgrade considerationLuciadFusion

LCD-9577
TLcdGXYLayer's default interact margin has been increased to 32 pixels. It ensures that a model element is still painted if its visual representation falls inside the view, but its model bounds do not. If you notice a performance impact, you can change the value back by calling layer.setInteractMargin(5).

Upgrade considerationLuciadFusion

The heuristic used by the Lightspeed view to determine the size of its OpenGL resource cache has been modified to result in somewhat bigger cache sizes. This reduces the risk of performance issues when loading large amounts of data in the view. This change does not affect applications that explicitly specify the cache size using TLspViewBuilder#glResourceCacheSize. Note that the cache size can also still be specified by setting the system property com.luciad.view.lightspeed.opengl.cacheSize to a value in megabytes, e.g. -Dcom.luciad.view.lightspeed.opengl.cacheSize=768.

Upgrade considerationAdvanced Raster Services

The ECW decoder now supports the ECW version 3 file format.

The native libraries used by the decoder have been updated to version 5.4 of the ERDAS ECW JPEG2000 Software Development Kit (SDK) for this purpose. The support for linux 32-bit binaries has been removed in this version.

Upgrade considerationDefense Standards

LCD-9361
TLcdVPFModelDescriptor#getVFPFeatureClass has been removed, this method duplicated TLcdVPFModelDescriptor#getVPFFeatureClass which should be used instead.

Upgrade considerationDefense Symbology

LCD-9751
Removed painting behaviour where Axis of advance arrows with only two points were painted differently than Axis of advance symbols with 2+ points. This is old behaviour that was kept for backwards compatibility reasons. From now on the Axis of advance symbols will always be painted as specified in MIL-STD-2525 b/c, APP6-a/b/c. The following style methods are no longer used and have been deprecated:
  • ILcdMS2525bStyle#setArrowCurvedness
  • ILcdMS2525bStyle#getArrowCurvedness
  • ILcdAPP6AStyle#setArrowCurvedness
  • ILcdAPP6AStyle#getArrowCurvedness

Upgrade considerationRadar Connectors

TLcdASTERIXDataSource: this class is now final. This class was never designed to be extended, and to make that clear the class has been made final.

2017.1

2017.1.18

ImprovementLuciadFusion

LF-1476
WMS layer scale ranges are now handled more efficiently in the WMS service, resulting in faster responses for WMS requests outside the visible range.

ImprovementLuciadFusion

LF-1476
SLD scale ranges are now handled more efficiently in the LuciadFusion Platform WMS service for products with a single SLD style for all contained data, resulting in a significant performance improvement for WMS requests outside the visible range.

ImprovementLuciadFusion

LCD-9863
When your license file now specifies the license server, but not the amount of floating licenses, the connection to the license server is now checked. Before, the license server was not contacted at all.

Bug fixLuciadFusion

LCD-9153
The SLD Lightspeed sample did no longer apply SLD styling to raster layers since 2017.0.

Bug fixLuciadFusion

LCD-9913
Fixed a NullPointerException when painting content on an GXY view with a world reference that does not extend TLcdGridReference.

Bug fixDefense Symbology

LCD-9920
The Axis of Advance tactical graphics incorrectly showed a closed arrow head for symbols with 2 points in a GXY view.

Bug fixDefense Symbology

LCD-9908
The Axis of Advance tactical graphics did not show ENY labels in case of hostile affiliation for symbols with 2 points in a GXY view.

Bug fixDefense Symbology

LCD-9900
Corridor-like tactical graphics (e.g., Infiltration Lane in MIL-STD 2525b) could disappear when zooming in closely on them in a GXY view.

Bug fixDefense Symbology

LCD-9924
TLcdMS2525bObjectCustomizer and TLcdAPP6AObjectCustomizer now support translating all content displayed in the customizer, through the configured ILcdStringTranslator. This was previously only supported for the labels of UI components.

Bug fixDefense Symbology

LCD-6336
Fixed issue where the Mobility Amphibious echelon visualization was not legible.

2017.1.17

ImprovementLuciadFusion

TLcdOGCFilter: added support to set a TLcdOGCResourceId condition for a single id value, instead of requiring the need to use a TLcdOGCResourceIdOperator condition.

ImprovementLuciadFusion

LF-1274
Improved wording on the close / cancel buttons of dialogs.

ImprovementLuciadFusion

LCD-9219, LCD-9493
TLcdTransformingModelFactory : the bounds of the transformed model are now valid immediately when creating it. This allows you to fit on the layer containing the transformed layer as soon as you created the layer, for instance.

ImprovementAviation Standards

LCD-9895
The following ARINC object properties were added in support of version 19 of the ARINC 424 format:
  • TLcdARINCAirport/HeliportCommunicationHandler: TLcdARINCAerodromeCommunicationDataProperties.COMMUNICATION_TRANSMIT_FREQUENCY, TLcdARINCAerodromeCommunicationDataProperties.COMMUNICATION_RECEIVE_FREQUENCY
  • TLcdARINCEnrouteCommunicationHandler: TLcdARINCEnrouteCommunicationDataProperties.COMMUNICATION_TRANSMIT_FREQUENCY, TLcdARINCEnrouteCommunicationDataProperties.COMMUNICATION_RECEIVE_FREQUENCY
The handlers mentioned above were updated accordingly.

Bug fixLuciadFusion

LF-1480
The startup scripts for LuciadFusion Server now add the necessary compatibility flags for Java 9, so starting the LuciadFusion Server with the provided scripts now works on Java 9.

If you do not use the provided startup scripts, you need to specify these compatibility flags manually. Specifically, you need to specify this JVM parameter : --add-modules=ALL-SYSTEM

Bug fixLuciadFusion

LF-1513
Fusion replication kept running on the server, even though the client connection was aborted. This could cause unnecessary resource usage and huge log output on the server.

Bug fixLuciadFusion

LCD-9869
Counter-clockwise rhumb-polygons that were visualized with an TLspLineStyle using a dash pattern, were visualized with geodetic lines instead of rhumb lines.

Bug fixLuciadFusion

LCD-9897
Fixed an issue with TLspPortholeController: an exception was thrown if the porthole was resized to a width or height of 0 pixels, on a 3D map.

Bug fixAviation Standards

LCD-9785
TLcdFeaturedParachuteJumpArea.getValue("Segments") returns a list with null elements instead of segments data. This has been fixed.

Bug fixAviation Standards

LCD-9755
TLcdARINCModelDecoder: improved the accurateness of the canDecode method to detect non-ARINC text files.

Bug fixDefense Symbology

LCD-9838
The maximum length of altitude/depth test modifier was increased for MIL-STD-2525c

Bug fixDefense Symbology

LCD-9891
Added missing hostility indicator labels (ENY) for the "Nuclear / Biological / Chemical Contaminated Area" symbols.

Bug fixDefense Symbology

LCD-9890
Translating the "Weapon/radar range fans - sector / circular" symbols no longer changes the ranges or angles in a Lightspeed view.

2017.1.16

ImprovementLuciadFusion

LCD-9874
The Lightspeed layer now avoids for the non-tiled case creating a TLcdWMSGetFeatureInfoContext when the query coordinate is outside the extent of the GetMap request.

ImprovementLuciadFusion

LCD-9871
The WFS server's GeoJSON output now includes 3D coordinates.

ImprovementLuciadFusion

TLspRulerController no longer paints azimuth arrows in cartesian mode.

ImprovementDefense Symbology

LCD-9873
Improved calculation of clipping area around echelon size indicators for decorated stroked. Situations were the clipping area is too large are now avoided. Also tweaked the threshold ratio that determines at which zoom levels the echelon indicator disappears.

ImprovementDefense Symbology

LCD-9880
The "Weapon/radar range fans - sector" symbol now also supports sectors with equal min/max radius.

Bug fixLuciadFusion

LF-1505
Fixed an issue where the 'create service', 'create product' and 'add to product' buttons would not work when inspecting a Data item.

Bug fixLuciadFusion

LCD-9872
The TLcdEPSGReferenceFormatter#formatGeodeticDatum method now formats the WGS 84 datum as EPSG:6326 instead of EPSG:6763.

Bug fixLuciadFusion

LCD-9867
The use of ALcdWMSProxy#setCacheImage(true) could lead to incorrect cache entries in case of style parameter changes (e.g., an SLD).

Bug fixLuciadFusion

LCD-9168
Fixed several instances where an exception could occur when rapidly switching between 2D and 3D.

Bug fixDefense Symbology

LCD-9882
The "Weapon/radar range fans - sector" symbol's GXY bounds calculation was not correct, leading to potential symbol editing issues in case of a custom painter / editor.

Bug fixDefense Symbology

LCD-9870
Added missing hostility indicator labels (ENY) the following symbols:
  • OBSTACLE FREE AREA - TACGRP.MOBSU.OBST.GNL.OFA (2.X.3.1.1.4)
  • OBSTACLE RESTRICTED AREA - TACGRP.MOBSU.OBST.GNL.ORA (2.X.3.1.1.5)
  • ASSAULT CROSSING AREA - TACGRP.MOBSU.OBSTBP.CSGSTE.ASTCA (2.X.3.2.2.1)
  • GAP - TACGRP.MOBSU.OBST.MNEFLD.GAP (2.X.3.1.1.1)

2017.1.15

ImprovementLuciadFusion

LCD-9147
The default SLD label locations have been improved for area-like shapes in the GXY view, making sure that the labels are nicely centered around an anchor point inside the shape - aligned with the existing SLD default label locations in a Lightspeed view.

ImprovementAviation Standards

LCD-9861
A gravel runway pattern in the AIS data could not be distinguished from a normal viewing distance in a Lightspeed view. This has been fixed.

Bug fixLuciadFusion

LCD-9859
The WCS Server could get overloaded / generate timeouts in case too large amounts of data were needed to process a GetCoverage request; an example use case is the request of a coverage backed by a large high-resolution data set with only a single level of detail. The WCS Server now uses additional resolution logic to avoid this and return an image with a red hatched pattern in case of a resolution mismatch betweem the request and the data - similar to how raster painting works in the client.

Bug fixLuciadFusion

LCD-9856
The SLD Recode element was not correctly decoded: the Data value was never set on its MapItem elements.

Upgrade considerationAviation Standards

LCD-9852
The following changes in our feature interface allows extended support in our ARINC domain model and decoder for version 18 of the ARINC 424 format.

Restrictive Airspace decoding is improved for start and end dates related fields (5.152 and 5.153):

  • TLcdARINCRestrictiveAirspaceDataProperties.START_END_DATE is divided into two separate properties; TLcdARINCRestrictiveAirspaceDataProperties.START_DATE, TLcdARINCRestrictiveAirspaceDataProperties.END_DATE.
  • TLcdARINCRestrictiveAirspaceDataProperties.START_END_INDICATOR is removed. Afterwards TLcdDateIndicator class became unnecessary and it is also removed.
  • "Change Date" capability is added which updates the record using the following record.

Runway decoding is improved for displacement threshold distance (5.69) and touchdown zone elevation (5.97) fields:

  • TLcdARINCRunwayDirectionDataProperties.RUNWAY_THRESHOLD_DISPLACEMENT_DISTANCE is renamed as THRESHOLD_DISPLACEMENT_DISTANCE.
  • TLcdARINCRunwayDirectionDataProperties.RUNWAY_THRESHOLD_DISPLACEMENT_DISTANCE_UNIT is renamed as THRESHOLD_DISPLACEMENT_DISTANCE_UNIT.
  • TLcdARINCRunwayDataProperties.THRESHOLD_DISPLACEMENT_DISTANCE and TLcdARINCRunwayDataProperties.THRESHOLD_DISPLACEMENT_DISTANCE_UNIT are removed. Use newer properties in TLcdARINCRunwayDirectionDataProperties.
  • TLcdARINCRunwayDirectionDataProperties.RUNWAY_TOUCHDOWN_ZONE_ELEVATION and TLcdARINCRunwayDirectionDataProperties.RUNWAY_TOUCHDOWN_ZONE_ELEVATION_UNIT are removed. Use properties in TLcdARINCRunwayDataProperties.

2017.1.14

ImprovementDefense Symbology

LCD-9820
Adjusted label placement of the Point/Single target symbol to avoid overlap with the symbol.

ImprovementDefense Symbology

LCD-9834
To enable users to customize the formatting of distances, angles and/or altitudes in the labels of the Weapon/Sensor Range Fan Circular and Sector symbols, new methods have been introduced to the style interfaces ILcdMS2525bStyle and ILcdAPP6AStyle to set a preferred java.text.Format instance:
  • setDistanceFormat(Format) and getDistanceFormat()
  • setAltitudeFormat(Format) and getAltitudeFormat()
  • setAngleFormat(Format) and getAngleFormat()

Bug fixLuciadFusion

LF-1501
When serving AIXM 3.0, 4.0 or 4.5 data over WMS or WMTS using LuciadFusion Platform, only a subset of the available features was visualized.

Bug fixLuciadFusion

LCD-9835
TLcdSVGIcon no longer supported inline PNG content since the upgrade to Batik 1.9.

Bug fixLuciadFusion

LCD-9854
Fixed an issue that caused incorrect queries to be generated when the system locale doesn't use . (period) as its decimal separator.

Bug fixDefense Symbology

LCD-9821
The label placement of air corridor symbols (low level transit route, standard–use army aircraft flight route, air corridor, etc) has been fixed in GXY. Following changes have been applied:
  • The label is placed between the first two anchor points, as specified by the standard
  • The label will be moved around so it does not overlap with other segments of the symbol

Bug fixDefense Symbology

LCD-9851
The following MIL-STD-2525c equipment symbols had echelon size modifiers instead of equipment mobility modifiers enabled. This has been rectified.
  • EUOPAE----***** (EMERGENCY MEDICAL OPERATION AMBULANCE)
  • EUOPAF----***** (MEDICAL EVACUATION HELICOPTER)
  • EUOPBB----***** (EMERGENCY OPERATION EQUIPMENT)
  • EUOPAB----***** (EMERGENCY MEDICAL OPERATION EQUIPMENT)
  • EUOPCB----***** (FIRE FIGHTING OPERATION EQUIPMENT)
  • EUOPCC----***** (FIRE HYDRANT)
  • EUOPDB----***** (LAW ENFORCEMENT OPERATION EQUIPMENT)
  • EFOPDDB---***** (ATF EQUIPMENT)
  • EUOPDEB---***** (BORDER PATROL EQUIPMENT)
  • EUOPDFB---***** (CUSTOMS SERVICE EQUIPMENT)
  • EFOPDGB---***** (DEA EQUIPMENT)
  • EFOPDHB---***** (DOJ EQUIPMENT)
  • EFOPDIB---***** (FBI EQUIPMENT)
  • EUOPDJB---***** (POLICE EQUIPMENT)
  • EFOPDLB---***** (SECRET SERVICE EQUIPMENT)
  • EFOPDMB---***** (TSA EQUIPMENT)
  • EFOPDOB---***** (US MARSHALS SERVICE EQUIPMENT)
  • EUOPEA----***** (BIOLOGICAL SENSOR)
  • EUOPEB----***** (CHEMICAL SENSOR)
  • EUOPEC----***** (INTRUSION SENSOR)
  • EUOPED----***** (NUCLEAR SENSOR)
  • EUOPEE----***** (RADIOLOGICAL SENSOR)

Bug fixDefense Symbology

LCD-9828
Added missing hostility indicator labels (ENY) the following symbols:
  • TACGRP.MOBSU.OBST.GNL.BLT - BELT (2.X.3.1.1.1)
  • TACGRP.MOBSU.OBST.GNL.LNE - LINE (2.X.3.1.1.2)
  • TACGRP.MOBSU.OBST.GNL.Z - ZONE (2.X.3.1.1.3)
  • TACGRP.MOBSU.OBST.ATO.TDTSM - ANTITANK OBSTACLES: TETRAHEDRONS, DRAGONS TEETH, AND OTHER SIMILAR OBSTACLES (2.X.3.1.3.3.1), (2.X.3.1.3.3.2), (2.X.3.1.3.3.3)
  • TACGRP.MOBSU.OBST.OBSEFT.TUR - TURN (2.X.3.1.7.3)
  • TACGRP.MOBSU.OBST.UXO - UNEXPLODED ORDNANCE AREA (UXO) (2.X.3.1.8)
  • TACGRP.MOBSU.OBST.RCBB - ROADBLOCKS, CRATERS, AND BLOWN BRIDGES (2.X.3.1.9.1), (2.X.3.1.9.2), (2.X.3.1.9.3), (2.X.3.1.9.4)
  • TACGRP.MOBSU.OBSTBP.CSGSTE.BRG - BRIDGE OR GAP (2.X.3.2.2.2)

Bug fixDefense Symbology

LCD-9827
Translating the "Weapon/radar range fans - sector / circular" symbols no longer changes the ranges or angles in a GXY view.

2017.1.13

ImprovementLuciadFusion

LCD-9266
The performance of WMS GetCapabilities requests were improved for WMS services with a large amount of WMS layers.

ImprovementLuciadFusion

LCD-9817
WMTS servers sometimes advertise incompatible tile matrix sets for a WMTS layer (e.g., a tile matrix set defined in a projection that does not overlap with the WMTS layer bounds), potentially causing an issue when trying to visualize the data in a view. The WMTS client now automatically avoids this by ignoring incompatible tile matrix sets.

ImprovementLuciadFusion

LCD-9790
The error dialog that is shown when an license error occurs now allows you to exit the application immediately.

ImprovementDefense Symbology

LCD-9789
Added the methods setSelectionRectangleHaloColor(Color aColor), getSelectionRectangleHaloColor(), getSelectionRectangleHaloWidth(int aWidth) and getSelectionRectangleHaloWidth() to ILcdMS2525bStyle and ILcdAPP6AStyle. These styling properties allow for the configuration of the halo width and color of the selection rectangle of icon symbols.

Bug fixLuciadFusion

LCD-9811
The openflight model decoder is now able to handle relative paths to external references that contain backslashes on a non-Windows OS.

Bug fixLuciadFusion

LCD-9791
The license mechanism now also recognizes MAC addresses of disconnected network cards on Linux and macOS. On Windows this was already the case.

Bug fixLuciadFusion

LCD-9818
OGC Filter: using a TLcdOGCBinaryComparisonOperator with numeric values and with matchCase set to false caused the numerical values to be interpreted as Strings in case of a database model, potentially resulting in incorrect results.

Bug fixLuciadFusion

LCD-9823
When using TLcdPolarStereoGraphic, converting lon lat points to polar stereographic points could result in NaN values when the true scale latitude is nearly at the pole.

Bug fixDefense Symbology

LCD-9829
In some cases, rotating a "Weapon/radar range fans - sector" shape in a GXY view was incorrect.

2017.1.12

ImprovementLuciadFusion

LCD-9799
The geojson model decoder now accepts '_' characters (underlines) in data type names.

ImprovementLuciadFusion

LCD-8837
Improved message in case connection to a OGC service fails due to a SSL related problem.

ImprovementAviation Standards

LCD-9803
Improved airspace rendering performance by optimizing the underlying OGC SLD / Filter rendering pipeline.

ImprovementAviation Standards

LCD-9798

Restrictive Airspace Handler (TLcdARINCRestrictiveAirspaceHandler) now recognizes the National Security Area ('N') record in the Restrictive Airspace Type (REST TYPE) field. Instead of parsing as TLcdAirspaceType.UNKNOWN, the handler now uses TLcdAirspaceType.NATIONAL_SECURITY_AREA as value in this case.

Airport Handler (TLcdARINCAerodromeHandler) and Heliport Handler (TLcdARINCHeliportHandler) now also support Airport is joint Civil and Military ('J') record in the Public/Military Indicator (PUB/MIL) field. The handler now uses TLcdAerodromeOperationsType.JOINT as value in this case.

ImprovementDefense Standards

LCD-9802
The USRP decoder now supports all known directory structures regardless of the specific format (ADRG/ASRP/USRP).

ImprovementDefense Symbology

LCD-9809
Added the methods setAlternateAffiliationColor(int aAffiliation, Color aColor) and getAlternateAffiliationColor(int aAffiliation) to ILcdMS2525bStyle and ILcdAPP6AStyle. These methods allow the configuration of an alternate color, to be used when painting the symbol. This property only applies to symbols that visually express the boundary or line of contact between two entities, including:
  • MIL-STD 2525 b:
    • 2.X.2.1.2.3 - Lines - Line Of Contact
  • MIL-STD 2525 c:
    • 2.X.2.1.2.3 - Lines - Line Of Contact
  • APP 6a:
    • 2.X.2.1.1.2.3 - Line - Line Of Contact
  • APP 6b:
    • 2.X.2.1.1.2.3 - Lines - Line Of Contact
  • APP 6c:
    • 25140200 - Manoeuvre Lines - Line Of Contact

ImprovementDefense Symbology

LCD-9800
Fixed echelon indicator placement for the following symbols:
  • MIL-STD 2525 b:
    • 2.X.3.3.5 - Strong Point
  • MIL-STD 2525 c:
    • 2.X.3.3.5 - Strong Point
  • APP 6a:
    • 2.X.2.1.4.1.3 - Strong Point (SP)
    • 2.X.2.1.4.1.3.1 - Strong Point - Friendly
    • 2.X.2.1.4.1.3.2 - Strong Point - Enemy Known and Confirmed
  • APP 6b:
    • 2.X.2.2.3.5 - Survivability - String Point
  • APP 6c:
    • 25151100 - Manoeuvre Areas - Strong Point
These symbols now only get one echelon size indicator. This echelon indicator will be placed near the first point of the polygon. This change was done in order to make these symbols follow the standards more closely.

Bug fixLuciadFusion

LCD-9795
Fixed handling of null values for NUMERIC, DATE and DATETIME data types. These values are now decoded as null instead of throwing a NullPointerException.

Bug fixLuciadFusion

Fixed rare threading issue ("Unable to marshal") in TLcdXMLDataObjectEncoderLibrary.

Bug fixLuciadFusion

LF-1433
Fixed rare threading issue ("Unable to marshal") during GML encoding on the WFS server.

Bug fixLuciadFusion

LCD-9808
Fixed an issue with TLspRulerController. When #setKeepMeasurements was set to true, the last created measurement would remain selected during the creation of a new measurement.

Bug fixLuciadFusion

LCD-9761
Fixed handling of layers having a Dimension element without a value for the unitSymbol field. The unitSymbol field is optional. When absent it could cause a NullPointerException.

Bug fixLuciadFusion

LCD-9801
TLspPlotLayerBuilder : The plot layer did not always take locks on the model when accessing it, which could lead to unexpected exceptions.

Bug fixDefense Symbology

LCD-9750
Added missing vertical 'Bridge lines' to the MIL-STD-2525b/c 1.X.3.1.1.4.2.1 'Axis of Advance, Attack Rotary wing' symbol.

Bug fixDefense Symbology

LCD-9810
Fixed issue where the unique designation labels of the Boundaries tactical graphic could switch sides for some segments.

Bug fixDefense Symbology

LCD-9807
Fixed issue where TLcdMS2525bCountryModifier still tried to load it's data from the file csv/countries.csv. This file was renamed to csv/countriesISO3166.csv but TLcdMS2525bCountryModifier was never updated.

2017.1.11

ImprovementLuciadFusion

LCD-9737
It is now possible to define different line and label styles for horizontal and vertical lines for MGRS and Georef grids in a Lightspeed view. See TLspMGRSGridStyle#axes and TLspGeorefGridStyle#axes.

ImprovementLuciadFusion

LCD-9771
The geojson model decoder has new API for setting a custom model reference parser.

Bug fixLuciadFusion

LCD-9792
The BoundingBox element within the WMS capabilities now honours the axis order in case it is expressed in EPSG:4326 iso the default CRS:84.

Bug fixLuciadFusion

LCD-9774
The geojson encoder now only flushes its underlying output stream after encoding has finished.

2017.1.10

ImprovementLuciadFusion

LF-1490
By default, the GeoTIFF encoder used by the WCS service produces tiled GeoTIFF output. LuciadFusion platform now also support the 'wcs.outputFormat.geotiff.enableTiling' option that is available in the WCS library component. This option allows you to disable this default behavior, and make sure that non-tiled GeoTIFF output is produced. This can be done by modifying the value of the fusion.ogc.wcs.enableGeotiffTiling option in the LuciadFusion Platform configuration files (see config/fusion.common.yml).

ImprovementLuciadFusion

LCD-9709
We now avoid drifting when editing a 3D pointlist with a high z-value by performing the translation relative to ellipsoid instead of at its actual height.

ImprovementLuciadFusion

LCD-9769
Improved lightspeed editor snapping accuracy. We now avoid a transformation when source and target layer are different, but share the same model reference.

Bug fixLuciadFusion

LCD-9779
A GetMap request with an empty LAYERS for an image size within the cache threshold resulted in an internal server error (NullPointerException). The server now returns a proper WMS exception.

Bug fixLuciadFusion

LCD-9776
Fixed regression in handling WMS 1.1 service exception reports. The regression did hide the actual message.

Bug fixLuciadFusion

LCD-9780
The default value of the configuration option for the interpretation of the axis-order for EPSG:4326 for WMS 1.3.0 requests is changed to true. This makes the default value compliant with the WMS 1.3.0 specification.

Add the following to your LuciadFusion web.xml file fpr the WMS to disable inversion (making the WMS non-compliant):
      <init-param>
        <param-name>EPSG.4326.latlon</param-name>
        <param-value>false</param-value>
      </init-param>
    

Bug fixLuciadFusion

LCD-9780
The default value of the configuration option for the interpretation of the axis-order for EPSG:4326 for WMS 1.3.0 requests is changed to true. This makes the default value compliant with the WMS 1.3.0 specification.

ALcdWMSProxy: the default value for the property invertXYForEPSG4326 is true.

Bug fixLuciadFusion

LCD-9780
The default value of the configuration option for the interpretation of the axis-order for EPSG:4326 for WMS 1.3.0 requests is changed to true. This makes the default value compliant with the WMS 1.3.0 specification.

Add the following to your WMS web.xml file to disable inversion (making the WMS non-compliant):
      <init-param>
        <param-name>EPSG.4326.latlon</param-name>
        <param-value>false</param-value>
      </init-param>
    

Bug fixLuciadFusion

Fixed a bug that would cause the Lightspeed view to become severely corrupted after using the mouse rotation or zoom controllers on Intel HD GPUs.

Bug fixLuciadFusion

LCD-9768
SLD rendering in a Lightspeed view did not take into account a perpendicular offset value from an SLD polygon symbolizer.

Bug fixAviation Standards

LCD-9717
Adjacent Airspaces that have a geoborder as part of their confinement should have a coincident point if their common border ends in the geoborder. However, small deviations seem to be possible because of the way "start points" of subpoint lists are being handled. This has been fixed.

Bug fixDefense Symbology

LCD-9745
Added missing text modifiers for some icon symbols of TTA-106 a and TTA-106 b.

Bug fixDefense Symbology

LCD-9749
Axis of advance Airborne/Aviation/Attack, Rotary Wing (TACGRP.C2GM.OFF.LNE.AXSADV.ABN/AVN/ATK) now have their crossover point between the first two points of the symbol, as specified by the standard.

Bug fixDefense Symbology

LCD-9773
Fixed the following issues with the MIL-STD-2525-B/C '2.X.2.1.2.1 : Boundaries - Line' symbol.
  • Changing the width of the Boundary Line didn’t have any effect
  • Labels were not always not drawn for each segment of the line
  • Labels were not replicated when zooming in

2017.1.09

ImprovementLuciadFusion

LCD-9686
The tiled WMS GXY painter, TLcdGXYTiledWMSProxyPainter, now supports configuring whether the parent tiles of visible tiles should be requested, through a newly introduced setter and getter: setParentTileRequestAllowed(boolean) and isParentTileRequestAllowed(). The default is true, because it benefits user experience (e.g., data is visible when you zoom out); when disabled, only the visible tiles will be requested.

ImprovementDefense Standards

LCD-9758
TLcdVPFGeoSymProvider did not recognize the product id 'VMap Lv 2 PL' or 'VMapL2 PL'.

Bug fixLuciadFusion

LCD-9740
Fixed issue where the halo of a label in arabic could be painted in the wrong direction (from left to right instead of right to left).

Bug fixLuciadFusion

LCD-9748
TLcdGXYBufferPainter and TLcdGXYGeoBufferPainter could get stuck when performing a mouse drag during the creation of a buffer.

Bug fixLuciadFusion

LCD-9757
TLsp3DIconStyle: the opacity configured on the style was not applied when using an OpenFlight model as the 3D icon.

Bug fixLuciadFusion

LCD-9746
Fixed an incorrect interpretation of SLD line stroke dash offset values in a Lightspeed view.

Bug fixLuciadFusion

LCD-9743
ILcdGXYPainter implementations: in some cases, shapes could be unexpectedly clipped on 4K displays. This has been fixed.

Bug fixLuciadFusion

LCD-9711
Decoding a TLcdSLDFeatureTypeStyle from an OGC StyledLayerDescriptor file using TLcdSLDFeatureTypeStyleDecoder generated a NullPointerException in case debugging was enabled.

Bug fixAviation Standards

LCD-9636
Fix so airspaces without a contributor airspace but with a base shape still are shown correctly when crossing the antimeridian.

Bug fixDefense Symbology

LCD-9741
Fixed an ArrayIndexOutOfBoundsException that could occur when drawing decorated Tactical Graphics.

Bug fixDefense Symbology

LCD-9733
Added missing 'unique designation' labels to several tactical graphics.
Affected symbols
APP6-a / APP6-b
Name Code(SIDC) Hierarchy Code
Lateral Boundary G*C*MGLBL-***** 2.X.2.1.1.2.1.2
Forward Boundary G*C*MGLBF-***** 2.X.2.1.1.2.1.3
Rear Boundary G*C*MGLBR-***** 2.X.2.1.1.2.1.4
APP6-c
Name Code(SIDC)
Boundary - Lateral 25110101
Boundary - Forward 25110102
Boundary - Rear 25110103
MIL-STD 2525 b/ MIL-STD 2525 cc
Name Code(SIDC) Hierarchy Code
Boundaries G*G*GLB---****X 2.X.2.1.2.1

2017.1.08

ImprovementLuciadFusion

LCD-7002
TLspTouchNavigateController now allows you to rotate the camera up or down (aka 'pitching') by dragging two fingers up or down.

ImprovementLuciadFusion

LCD-9728
TLcdGML32LinearRing/TLcdGML31LinearRing now automatically remove pointProperty values with a dead xlink.

ImprovementLuciadFusion

LCD-9686
TLcdEarthGXYRasterPainter now supports configuring whether the parent tiles of visible tiles should be requested, through a newly introduced setter and getter: setParentTileRequestAllowed(boolean) and isParentTileRequestAllowed(). The default is true, because it benefits user experience. When disabled, only the visible tiles will be requested.

Bug fixLuciadFusion

LCD-9719
Improved SHP and SQLite decoder compatibility with Windows network URI's.

Bug fixLuciadFusion

Improved the javadoc of ILcdModelDecoder.discoverDataSources(String). It now better describes the contract of the method.

Bug fixLuciadFusion

LCD-9684
Fixed a problem where image data could fail to render and cause exceptions. This issue could occur when using image processing with OpenCL on Intel hardware with a recent driver.

Bug fixLuciadFusion

LCD-9715
Fixed an issue with TLspViewXYZWorldTransformation2D: it would fire property changes even when no properties changed.

2017.1.07

ImprovementLuciadFusion

LCD-9694
TLcdGXYScaleIndicator and TLspScaleIndicator now have a method setBarSegmentCount that allows configuring the amount of bar segments.

ImprovementLuciadFusion

LCD-9697
Relaxed parsing of GeoTIFF tag 42113 (GDAL_NODATA). Floating numbers using a comma as decimal separator are accepted.

ImprovementLuciadFusion

LCD-9669
In enhancement LCD-9517 behavior was added to the WMS painters to request images larger than the view port. For the Lightspeed WMS painter the check whether a new image needs to be requested has been updated such that it does this earlier. This helps avoiding gaps on the map display when a new WMS request is needed.

ImprovementLuciadFusion

LCD-9688
Improved painting performance for certain kinds of very sparse, poorly tiled multilevel image mosaics or tile sets when used in interactive layers.

Bug fixLuciadFusion

LF-1471
When starting the ogc.server sample from the LuciadFusion release, no slf4j binding could be found, resulting in reduced logging.

Bug fixLuciadFusion

LF-1467, LF-1473
Fixed an issue where validation results couldn't be serialized properly due to obfuscation. This could lead to errors when trying to publish a data source to an OGC service.

Bug fixLuciadFusion

LCD-9708
The DTED directory decoder could throw a IndexOutOfBoundsException in case it was configured with a bounds area not overlapping with the actual data. Now it throws an IOException following the contract of ILcdModelDecoder.

Bug fixLuciadFusion

LCD-9647
TLspMGRSGridStyle, TLspGeorefGridStyle, TLspXYGridStyle and TLspLonLatGridStyler now allow setting different edge offsets for each side of the view.

Bug fixLuciadFusion

LCD-9702
Improved handling of the GeoTIFF tags. The case with a count of 0 data elements was not handled correctly and resulted in exceptions.

Bug fixLuciadFusion

LCD-9701
TLcdProj4ReferenceFormatter returned incorrect strings for geodetic references. It returned proj4 strings with a "lonlat" or "latlon" projection instead of "longlat" or "latlong".

Bug fixLuciadFusion

LCD-9699
Source elements without a value array element caused a RuntimeException.

Bug fixLuciadFusion

LCD-9667
Fixed possible infinite loop in ArcInfo ASCII Grid decoder for invalid input files.

Bug fixLuciadFusion

LCD-9696
TLcdWKTReferenceFormatter didn't format references using the azimuthal equidistant projection correctly.

2017.1.06

ImprovementLuciadFusion

LCD-9680
You can now pass a ALspCreateControllerModel into TLspRulerController. This allows you to limit the point count of created measurements, or let the ruler controller create custom ALspMeasurement objects.

ImprovementAviation Standards

LCD-9687
The following ARINC object properties were added in our feature interface to allow extended support in our ARINC domain model and decoder for version 18 of the ARINC 424 format:
  • TLcdARINCHeliportHandler, TLcdARINCAerodromeHandler: ILcdARINCAerodromeFeature.ELEVATION
This corresponds to the following properties in the newer properties class:
  • TLcdARINCHeliportHandler: TLcdARINCHeliportDataProperties.ELEVATION
  • TLcdARINCAerodromeHandler: TLcdARINCAerodromeDataProperties.ELEVATION
The handlers mentioned above were updated accordingly.

Bug fixLuciadFusion

LCD-9670
Fixed issue where a freehand drag of a pointlist would not respect the minimum pointcount set by the create controller model.

2017.1.05

ImprovementLuciadFusion

LF-1465
The LuciadFusion engine now encodes tiles using the newly introduced ILcdEarthTileDataCodec#encodeTile method. This method provides additional geographical context about the tile to be encoded (reference, bounds, ...), making it easier to reuse the engine in a tile processing pipeline that requires this information.

ImprovementLuciadFusion

LCD-9685
The non-tiled WMS GXY painter, TLcdWMSProxyGXYPainter, now supports the configuration of the preferred reference to be used in map requests, through a newly introduced setter and getter: setPreferredMapRequestReference(ILcdXYWorldReference) and getPreferredMapRequestReference().

ImprovementLuciadFusion

LCD-9683
Implemented workaround for certain zip-compressed KMZ files with bad headers for file entries. Previously, these files could not be decompressed completely causing missing icons and images in your KML files.

Bug fixLuciadFusion

LCD-9676
The previous fix LCD-9466 to add the missing property link inside a WFS 2.0 Transaction Update request incorrectly used the Name XML element instead of the expected ValueReference XML element.

Bug fixLuciadFusion

LCD-9616
The default value of the configuration option for the interpretation of the axis-order for EPSG:4326 for WMS 1.3.0 requests is changed to true. This makes the default value compliant with the WMS 1.3.0 specification.

You can change the value in the configuration file fusion.common.yml to disable this inversion (making the WMS non-compliant). Change the value fusion.ogc.EPSG4326LatLon to false.

Bug fixLuciadFusion

LCD-9616, LCD-8512
The default value of the configuration option for the interpretation of the axis-order for EPSG:4326 for WMS 1.3.0 requests is changed to true. This makes the default value compliant with the WMS 1.3.0 specification.

ALcdWMSProxy: the default value for the property invertXYForEPSG4326 is true.
TLcdWMSDataSource.newBuilder() constructs a builder where the default value for the property invertXYForEPSG4326 is true.

Bug fixLuciadFusion

LCD-9616
The default value of the configuration option for the interpretation of the axis-order for EPSG:4326 for WMS 1.3.0 requests is changed to true. This makes the default value compliant with the WMS 1.3.0 specification.

Add the following to your WMS web.xml file to disable inversion (making the WMS non-compliant):
      <init-param>
        <param-name>EPSG.4326.latlon</param-name>
        <param-value>false</param-value>
      </init-param>
    

Bug fixLuciadFusion

LCD-9681
Formatting a geodetic world reference using TLcdWKTReferenceFormatter resulted in an empty string.

Bug fixLuciadFusion

The WCS GetCoverage request handler could not handle GetCoverage XML requests using a RectifiedGrid instead of a Grid to specify the desired spatial resolution.

Bug fixLuciadFusion

LCD-9618
Fixed an issue where painting or querying images that rely on RenderedImages with tile grid offsets could throw exceptions in some cases.

Bug fixLuciadFusion

LCD-9671
TLcdGML32ArcByCenterPoint and TLcdGML31ArcByCenterPoint: resolved an issue in the connect method that could cause the arc to move to the model origin (0,0).

Bug fixLuciadFusion

LCD-9658
TLcdGXYCirclePainter: resolved an issue that prevented the selection of very small circles.

Bug fixLuciadFusion

LCD-9652
The WCS GetCoverage request handler could not handle geodetic coordinates expressed in a reference with a lat/lon axis order instead of a lon/lat axis order (e.g. urn:ogc:def:crs:EPSG::4326).

Bug fixAviation Standards

LCD-4372
Airspace volumes with segments that link to geographical borders are now correctly supported, by using the part of the geographical border that is closest to the previous and next airspace segment.

2017.1.04

Bug fixLuciadFusion

LF-1454
Fixed an issue where the Studio previewer would always perform requests using the HTTP protocol, even if Studio is configured to use HTTPS.

Bug fixLuciadFusion

LCD-9657
Zooming in on a pole in a 3D geocentric view may cause many tiles to be loaded. Fixed an issue where this could lead to an OutOfMemoryError after some time.

2017.1.03

ImprovementLuciadFusion

LCD-9661
The WFS client can now correctly handle GML feature collection data containing a top-level envelope in which the mandatory srsName attribute is missing. Such data can be encountered when using Geoserver with WFS 2.0 (see https://osgeo-org.atlassian.net/browse/GEOS-7660).

ImprovementLuciadFusion

It is now possible to set the default srsName to the GML model decoders that will be used to determine the model reference if neither the first feature, its possible envelope or the possible envelope of the feature collection has an srsName attribute set.

ImprovementLuciadFusion

LCD-9638
TLspMGRSGridStyle now has an option to always keep labels inside the view. While many labels were already kept inside the view, this was not the case yet for zone/band or 100k labels that are placed inside their square.

ImprovementAviation Standards

LCD-9653
The built-in support for Eurocontrol's ADR extension schema has been upgraded from version 18.5 to 21.5, the latest version used by Eurocontrol NM.

ImprovementAviation Standards

The AIXM 5.1 decoder and encoder now provide out-of-the-box support for Eurocontrol's CFMU ADR message extension schema namespace http://www.eurocontrol.int/cfmu/b2b/ADRMessage.

Bug fixLuciadFusion

LCD-9666
Using military symbols in combination with the realtime.gxy.clusterLabeling sample didn't work correctly.

Bug fixLuciadFusion

LCD-9649
Fixed issue with points where the clampToGround altitude mode would not move the point to the terrain.

Bug fixLuciadFusion

LCD-9627
Fixed a threading issue in TLspPopupMenuSelectionCandidateHandler.

Bug fixReal-time Engine

LCD-9666
Using military symbols in combination with the realtime.gxy.clusterLabeling sample didn't work correctly.

Bug fixReal-time Engine

LCD-9632
TLcdTimeFilteredSimulatorModel: setting the begin- and end-date without setting a ILcdSimulatorModel to filter now works again.

Bug fixAviation Standards

LCD-9659, LCD-4170
Decoding and visualization of AIXM 5.1 airspace data containing GML point, curve or surface property links to other features is now supported.

Bug fixDefense Symbology

LCD-9655
Fixed the Friendly affiliation icon of the following MIL-STD-2525c symbols:
  • 6.X.4.13.1 - Control Valve
  • 6.X.4.13.3 - Discharge Outfall

2017.1.02

ImprovementLuciadFusion

LCD-9625
TLcdXMLSchemaBasedDecoder/TLcdXMLDecoder: improved protection against XML eXternal Entity injection (XXE) by disallowing external entities. This also applies to XML based formats such as GML, NVG, and AIXM 5.

ImprovementLuciadFusion

LF-1440
Changed the start/stop buttons on the job overview page. They are now in a table column, just like the start/stop buttons on the services overview page.

ImprovementLuciadFusion

LCD-9591
CVSModelDecoder now prefers longitude and latitude coordinates over grid coordinates.

ImprovementLuciadFusion

LCD-9578
TLcdSLDFileGXYLayerFactory now takes icon sizes into account for PointSymbolizers in an SLD (.sld) file. This avoids clipped icons at the edge of images produced by a Luciad WMS server relying on SLD files for data styling - such as LuciadFusion Studio / Platform.

ImprovementLuciadFusion

LCD-8807
The performance of TLcdWMSCapabilities#findWMSLayer has been improved for the case where there are thousands of layers.

ImprovementDefense Symbology

LCD-9485
Fixed echelon indicator placement for the following symbols:
  • MIL-STD 2525 b:
    • 2.X.2.4.3.1 - Battle Position
    • 2.X.2.4.3.1.1 - Battle Position - Prepared But Not Occupied
  • MIL-STD 2525 c:
    • 2.X.2.4.3.1 - Battle Position
    • 2.X.2.4.3.1.1 - Battle Position - Prepared But Not Occupied
  • APP 6a:
    • 2.X.2.1.4.1.2.1 - Battle Position - Occupied (Battalion Sized Unit)
    • 2.X.2.1.4.1.2.2 - Battle Position - Prepared But Not Occupied
  • APP 6b:
    • 2.X.2.1.4.1.2.1 - Battle Position - Occupied (Battalion Sized Unit)
    • 2.X.2.1.4.1.2.2 - Battle Position - Prepared "(P)" But Not Occupied
  • APP 6c:
    • 25151000 - Battle Position
These symbols now only get one echelon size indicator. This echelon indicator will be placed near the first point of the polygon. This change was done in order to make these symbols follow the standards more closely.

ImprovementS-63

LCD-9602

You can now be notified of issues with cells in a catalog directly in the decode() call.

Set a handler using TlcdS63UnifiedModelDecoder.setInvalidCellExceptionHandler(). Your handler's handleCellWarnings() will be called with TLcdS63Exception during decode() to notify you of issues with cells:

  • Cells for which there is no permit ({@link TLcdS63Exception.ErrorCode#SSE_011 SSE_011}). These cells will not be loaded.
  • Cells for which the subscription is about to expire ({@link TLcdS63Exception.ErrorCode#SSE_020 SSE_020}). The cells will still be loaded.
  • Cells for which the subscription expired ({@link TLcdS63Exception.ErrorCode#SSE_015 SSE_015}). The cells will still be loaded.

Bug fixLuciadFusion

LCD-9625
A security issue has been fixed in the OGC web services related to the handling of XML POST requests, that could enable untrustworthy clients to access server information.

Bug fixLuciadFusion

LF-1446
Fixed an issue that broke the ability to add products while creating a new service.

Bug fixLuciadFusion

LF-1442
Timestamps at which styles, products and services were created are now consistently shown on all list and detail pages.

Bug fixLuciadFusion

LF-1444
Fixed an issue where long filepaths would overflow modal dialogs.

Bug fixLuciadFusion

LCD-9626, LCD-9386
Fixed a few minor threading violations in editing code. This affects both the TLspCreateController as well as the TLspEditController.

Bug fixLuciadFusion

LCD-9632
TLcdTimeFilteredSimulatorModel: setting the begin- and end-date without setting a ILcdSimulatorModel to filter now works again.

Bug fixLuciadFusion

LCD-9629
TLsp3DIconStyle: when a a rotation was defined via ILcdOriented and via the TLsp3DIconStyle, the rotation from ILcdOriented was applied first. This order has been reversed, so that it's more intuitive to align your 3D model correctly.

Bug fixLuciadFusion

LF-1435
A security issue has been fixed in the OGC web services related to the handling of XML POST requests, that could enable untrustworthy clients to access server information.

Bug fixLuciadFusion

LCD-9628
TLcdGeoJsonEncoderUtil now takes complex polygons defined with angular coordinates into account

2017.1.01

ImprovementLuciadFusion

TLcdEarthGXYViewTileSet now allows to globally enabling anti-aliasing.

ImprovementLuciadFusion

LCD-9595
The TLcdKML22GXYLayerFactory now enables labels by default, even when placemarks are not explicitly selected. This ensures consistency with Lightspeed layers.

ImprovementLuciadFusion

LCD-9598
CVSModelDecoder: improved robustness when dealing with unmatched quotes.

ImprovementLuciadFusion

LCD-9517
The non-tiled WMS painters support requesting images from the WMS that are larger than the view port of the map (image size and area). This allows on following map re-paints to reuse the retrieved WMS image when possible. This is the case when the proxy configuration is the same and when the area covered and image pixel density of the image are close enough with the previous request. This reduces the number of WMS requests when the map is panned (slightly).

ImprovementLuciadFusion

LCD-9528
The GXY layer factory order when using TLcdServiceLoader has been adjusted so that GML data is styled using SLD if the SLD file is next to the GML file.

ImprovementLuciadFusion

LCD-9475
Our GeoPackage and LRDB encoders now try to use compatible tile sets in a model directly, instead of wrapping their image content in a new one. This increases performance and improves handling of empty tiles, which may result in significantly smaller files for certain model types (e.g. LuciadFusion tile stores).

ImprovementLuciadFusion

LCD-9550
Added support for WKT references with "WGS 1984 Major AuxSphere" (or a variant) as datum name.

ImprovementTerrain Analysis Engine

LCD-9461
TLspLOSCoverageStyle now has a zOrder property to configure the relative ordering of the style with respect to other styles in the same layer. This can be useful when there are overlapping LOS coverages in a layer in a 2D view.

ImprovementAviation Standards

LCD-9552
TLcdARINCModelDecoder: improved the performance of the canDecode method.

ImprovementDefense Symbology

LCD-9428
Improved the "Weapon/radar range fans - sector" shapes. The shape now supports several sectors.

Bug fixLuciadFusion

LF-1422, LF-1424
Fixed an issue with search fields where, if you pressed enter without selecting a suggestion, the field would get cleared and no search would be performed.

Bug fixLuciadFusion

LF-1153
Publishing an NVG file on the LuciadFusion Platform WFS server is not supported, but LuciadFusion Studio still allowed doing so. This resulted in crashes on the server. This has been fixed.

Bug fixLuciadFusion

LF-1429
In some cases, the LuciadFusion engine didn't produce anti-aliased tiles when fusing vector data to image coverages.

Bug fixLuciadFusion

LF-1427
Adding null models to a TLcdModelTreeNode now always immediately throws a NullPointerException. This avoids possible other exceptions in unrelated parts of the code.

Bug fixLuciadFusion

LCD-9604
The OGC WCS client could trigger the use and display of incorrect WCS coverage caches in case of subsequent use of multiple coverages with equal positions, bounds and resolution settings.

Bug fixLuciadFusion

LF-1418
Requesting WFS features using the XML POST and using a BBOX filter could fail in some cases with a validation error. The validation did check if the BBOX coordinates were within the range [-180,180] for geodetic references.

Bug fixLuciadFusion

LF-1377
Fixed caching issue with the style previewer in Studio. When a SLD file gets recrawled, the changes in the style should now be immediately visible in the previewer.

Bug fixLuciadFusion

LCD-9525
The CADRG model decoder now expands the color model for decoded tiles to full ARGB by default. This ensures that CADRG tiles with clashing color maps are rendered correctly. The decoder can still be forced to use indexed color models by setting the expandColorMap property to false.

Bug fixLuciadFusion

LCD-9592
TLcdClusteringTransformer could, under some circumstances, get stuck. This has now been fixed.

Bug fixLuciadFusion

LCD-9470
Spatial queries on GeoPackage models would sometimes not return objects with bounds that cross the date line. These objects are now properly included in the result.

Bug fixLuciadFusion

LCD-9551
The performance of the TLcdClusteringTransformer could worsen over time when using a lot of different classifications. This has now been fixed.

Bug fixLuciadFusion

Coverages with a WGS84 reference (EPSG:4326) could in some cases be visualized incorrectly, or cause exceptions. This was a regression introduced in the previous patch release.

Bug fixLuciadFusion

LCD-9012
TLcdEPSGReferenceFormatter didn't always return a String of the form "EPSG:xxxx", but it could sometimes return a String of the form "urn:ogc:def:crs:EPSG::xxxx". As a result the WMS proxy would not always correctly recognize CRSes advertised by the WMS as supported. It would then fall back on another CRS and reproject the data.

Bug fixLuciadFusion

LCD-9545
Doing a POST request to the server with an incorrect feature type and a BBOX filter that

Bug fixLuciadFusion

LCD-9533
TLcdEPSGReferenceFormatter didn't always return a String of the form "EPSG:xxxx", but it could sometimes return a String of the form "urn:ogc:def:crs:EPSG::xxxx".

Bug fixLuciadFusion

LF-1369
The WMS server swallowed IllegalArgumentExceptions that are thrown by a delegate ILcdWMSGXYLayerFactory. Because of this, the logs didn't show why a WMS layer could not be created. This made it more difficult, for example, to discover programming errors for custom implementations.

Bug fixLuciadFusion

LCD-9531
On some Linux systems, logging out while a Lightspeed application was running could result in the Lightspeed view throwing an exception.

Bug fixWeather & Environment Standards

LCD-9605
TLcdNetCDFModelDecoder would throw a NullPointerException for NetCDF files without a standard name property. This is now fixed.

Bug fixDefense Symbology

LCD-9251
All tactical graphics use the same dot symbol for the squad, section and platoon echelons. The squad, section and platoon echelons of all tactical graphics now also change size when the label font size is changed in the style.

Bug fixMaritime Standards

LCD-9534
TLcdSLDFeatureTypeStyleDecoder didn't correctly decode SLD files that contain an S52Symbolizer.

2017.1

ImprovementLuciadFusion

A number of improvements have been implemented related to the server's support for WFS 2.0:
  • Support has been added for the optional 'RESOURCEID' parameter in a WFS 2.0 GetFeature request. This parameter can be used to query a feature based on its identifier, without the need to specify a feature type.
  • Support has been added for the WFS 2.0 requests ListStoredQueries and DescribeStoredQueries, along with support for the default, standardized stored query urn:ogc:def:query:OGC-WFS::GetFeatureById. This stored query can be used inside GetFeature requests to query a feature based on its identifier.
  • The error reporting in case of invalid requests has been improved.
  • The WFS 2.0 capabilities now include information about constraints and supported conformance classes.

ImprovementLuciadFusion

ELcdBingMapsMapStyle: the enumeration has been extended with values for CANVAS_DARK, CANVAS_GRAY and CANVAS_LIGHT, allowing you to access those Bing Maps styles. See the Bing Maps blog post for the announcement from Microsoft about those new map types.

ImprovementLuciadFusion

OGC Filter: the handling for spatial operators has been improved:
  • Some inconsistencies between the BBOX operator and the other spatial operators have been removed.
  • When the TLcdOGCPropertyName used in the spatial operator to point to the geometry refers to a non-existing property, the geometry will evaluate to null instead of falling back to the domain object itself. This ensures that the spatial operators behave as descriped in the specification in section 7.8.3.4 NULL geometries.

ImprovementLuciadFusion

LF-1279
Added new properties to configure default metadata that will be used when generating any missing required ISO-19115 meta data properties during import jobs
  • fusion.studio.configuration.defaultMetadata.language: represents the language of the dataset (e.g. en, nl, fr, etc)
  • fusion.studio.configuration.defaultMetadata.abstractText: is used as a default abstract text
  • fusion.studio.configuration.defaultMetadata.responsibleParty.role: function performed by the responsible party
  • fusion.studio.configuration.defaultMetadata.responsibleParty.organisationName: name of the organisation associated with the dataset
  • fusion.studio.configuration.defaultMetadata.responsibleParty.email: list of emails to communicate with, person(s) and organisations associated with the dataset

ImprovementLuciadFusion

Added new properties to configure default background data and style preview data
  • fusion.studio.configuration.defaultData.defaultBackgroundData: is used to configure the default background data
  • fusion.studio.configuration.defaultData.defaultRasterData: is used to configure data for raster style previews
  • fusion.studio.configuration.defaultData.defaultVectorData: is used to configure data for vector style previews

ImprovementLuciadFusion

TLcdDurationFormat: this new java.text.Format class allows to parse and format durations.

ImprovementLuciadFusion

LF-1314
Improved the "Product contents" UI. It now allows you to set styles on a large number of data items at once.

ImprovementLuciadFusion

LF-1342
The LuciadFusion Platform WFS server now allows to overcome a limitation found in a number of 3rd party WFS clients, such as ArcGIS and Geotools, so that it is now compatible with them. This functionality can be enabled by modifying the fusion.ogc.wfs.enableFeatureTypeNameCompatibilityMode flag in the fusion.common.yml configuration file. This flag, and more information about its behavior can be found in the config/fusion.common.yml file.

ImprovementLuciadFusion

The CSW client is now part of LuciadLightspeed.

ImprovementLuciadFusion

LF-1263, LF-1295
The LuciadFusion Platform Server launcher now shows a clear warning when using a 32-bit version of Java, instead of just terminating the process.

ImprovementLuciadFusion

LF-1343
The LuciadFusion Platform LTS service now also logs the data source title next to the name when an error occurs.

ImprovementLuciadFusion

LF-1333
LuciadFusion Platform now comes by default with a set of vendor-specific deployment configuration files to ease the deployment on GlassFish, Apache Geronimo and Oracle WebLogic. The files can be found in the build/fusionplatform/WEB-INF directory.

ImprovementLuciadFusion

The Fusion server now includes an OGC Catalog service (CSW) allowing you to query metadata of all datasets and services using standardized OGC CSW queries. The service is automatically enabled. It can be configured from the Fusion Studio services page and using the configuration files in the config directory. The latter also allows you to enable the INSPIRE application profile, if desired.

ImprovementLuciadFusion

LF-1190
Improved the behavior of deleting content roots. This now only removes part of the search-cache, instead of the previous behavior: To clear the entire search-cache.

ImprovementLuciadFusion

LCD-9422
TLcdAWTEventFilterBuilder now emulates a right mouse button on macOS when using the ctrl key.

ImprovementLuciadFusion

LCD-9408
A WMS GetFeatureInfo encoder for the text/plain mime-type has been added. It replaces the encoder that was part of the samples and provides more information about the selected objects. For more details on the encoder have a look at the documentation of TLcdWMSTextPlainGetFeatureInfoEncoder.

ImprovementLuciadFusion

LF-1329
Autocompletion for styles will now show a style's title instead of its name.

ImprovementLuciadFusion

LCD-8737
3D icons and geo-referenced meshes are now rendered in two passes when the shape painting hints on the TLspShapePainter are set to MAX_QUALITY. The hints can also be set when creating a layer with the TLspShapeLayerBuilder As a result, 3D icons with transparent textures will no longer contain 'holes'.

ImprovementLuciadFusion

LCD-6472
TLspShapePainter can now be used to visualize geo-referenced ILcd3DMesh. As a result, TLsp3DMeshPainter has been deprecated.

ImprovementLuciadFusion

LCD-9393
CSVModelDecoder now supports quoted values.

ImprovementLuciadFusion

LF-1322
Removed the runtime check for Mac OS that would prevent Fusion from starting up on Mac OS. Mac OS is now supported by default.

ImprovementLuciadFusion

ILcdLayered (and hence all view implementations) now has a new default method getLayers that exposes the layers as a List.

ImprovementLuciadFusion

LCD-9376
TLcdGML32LineString/TLcdGML32LineStringSegment and TLcdGML31LineString/TLcdGML31LineStringSegment now report rhumb interpolation if their SRS uses a mercator projection.

ImprovementLuciadFusion

TLcdOGCFilter: added the convenience method asPredicate to easily evaluate an OGC Filter into a predicate.

ImprovementLuciadFusion

LF-1275
You can now consult recent Fusion Studio log entries from the Web UI. You can find the log on the Settings page.

ImprovementLuciadFusion

LF-1299
The button for removing dataroots is now disabled if it's impossible to remove that dataroot (for example, for the dataroot where uploads are stored).

ImprovementLuciadFusion

LF-1158
The Jobs UI has been redesigned. It has been split into an overview page listing all import jobs, and a detail page showing the properties of a single job.

ImprovementLuciadFusion

TLspShapePainter and TLspShapeLayerBuilder can now be used to create density plots by submitting ALspDensityStyle instances from the used styler. As a result, TLspDensityPainter and TLspDensityLayerBuilder have been deprecated. Consult the class javadoc of TLspShapePainter for more information.

ImprovementLuciadFusion

LCD-8466
The XML decoding framework now better handles "any" elements with namespace restrictions.

ImprovementLuciadFusion

TLcdWKTReferenceFormatter and TLcdWKTReferenceParser now support formatting and parsing references with a EGM2008 geoid geodetic datum in particular cases.

ImprovementLuciadFusion

The GeoTIFF decoder and encoder now can handle the vertical reference geoid EGM2008. Note that the decoder flag TLcdGeoTIFFModelDecoder.isSupportGeoidDatums must have the value true.

ImprovementLuciadFusion

ILcdDisposable now extends from AutoCloseable. This means that objects that implement ILcdDisposable can now also be used in try-with-resources statements.

ImprovementLuciadFusion

ILcdTransport now extends from ILcdDisposable. This allows to directly dispose the transport instead of doing an instanceof 'ILcdDisposable' check first on the transport, and then disposing it.

ImprovementLuciadFusion

LCD-9106
TLcdBingMapsModelDecoder: improved reliability when working with servers that occasionally return an error.

ImprovementLuciadFusion

The TLcdGeoidGeodeticDatumFactory class now supports the EGM2008 geoid model. See TLcdGeoidGeodeticDatumFactory.EGM2008_GRID_TWO_AND_HALF_MINUTE

ImprovementLuciadFusion

LCD-7540
TLspScaleBasedStylerBuilder can now be used to create a scale dependent ALspStyler. On the builder it's possible to configure scale ranges linked to an ALspStyler. The resulting ALspStyler will automatically switch between styles depending on the scale of the view.

ImprovementLuciadFusion

LF-1123
TLcdXMLDataModelBuilder now avoids parsing the same schema multiple times. This results in a performance improvement when initializing XML based formats.

ImprovementLuciadFusion

ALcdGXYPen#create allows creating a pen implementation based on a model reference and rendering quality preference.

ImprovementLuciadFusion

LCD-9164
The package com.luciad.beans and several older GUI classes have been deprecated to avoid cluttering the API. There should be no need to use them.

ImprovementLuciadFusion

LCD-9040
TLcdXMLPeeker allows to quickly obtain the root element name of an XML datasource.

ImprovementLuciadFusion

LCD-4821
The GML model decoders now offer a specific method to decode a GML geometry.

ImprovementLuciadFusion

LCD-9527, LCD-9519
Improved the performance when repeatedly querying an ILcdModel with an OGC Filter. This can considerably improve SLD styling performance for GML based models. This also solves a possible memory leak regression caused by the fix for LCD-9455.

ImprovementLuciadFusion

LCD-9476
The WMS client now can handle WMS capabilities responses containing multiple root WMS layers. The WMS specifies the capabilities document must contain a single root WMS layer. However, some WMS servers may advertise multiple root layers.

ImprovementLuciadFusion

LCD-9433
Greatly improved the reference formatting performance of the TLcdEPSGReferenceFormatter class. It is now up to a 100 times faster.

ImprovementLuciadFusion

LCD-9514
The GeoTIFF decoder now accepts incomplete model references immediately when in non-strict mode. Model references defined within the GeoTIFF tags are considered incomplete when a user defined geodetic datum is specified without information on the geodetic datum transformation wrt WGS84, ie, the geo-directory tag 2062 is missing. In strict mode the GeoTIFF decoder does not accept such a model reference and the model reference must be specified in an external file. In any case a warning is logged when such an incomplete model reference is detected.

ImprovementLuciadFusion

LF-1078
The use of synchronized methods has been reduced within the custom JAI cache implementation (mostly used by TLcdGeoTIFFModelDecoder). This should improve the fusion performance for the GeoTIFF format.

ImprovementData Connectivity Manager

LF-1322
Removed the runtime check for Mac OS that would prevent Fusion from starting up on Mac OS. Mac OS is now supported by default.

ImprovementTerrain Analysis Engine

The samples for the LuciadFusion Platform have been extended with a more extensive sample using the Terrain Analysis Engine. The sample integrates two web services: one providing the height at a given location and the other providing a line of sight calculation. Have a look at the LuciadFusion Platform Developer's Guide for a start point on this sample.

ImprovementAviation Standards

LCD-9363
The following ARINC object properties were added in our feature interface to allowed extended support in our ARINC domain model and decoder for version 18 of the ARINC 424 format:
  • TLcdARINCHeliportHandler: ILcdARINCAerodromeFeature.PAD_IDENTIFIER, ILcdARINCAerodromeFeature.PAD_DIMENSIONS
  • TLcdARINCDMEHandler: ILcdARINCNavaidFeature.FIR_IDENTIFIER, ILcdARINCNavaidFeature.UIR_IDENTIFIER, ILcdARINCNavaidFeature.FACILITY_ELEVATION, ILcdARINCNavaidFeature.FACILITY_ELEVATION_UNIT, ILcdARINCNavaidFeature.FACILITY_CHARACTERISTICS
  • TLcdARINCVORHandler: ILcdARINCNavaidFeature.FIR_IDENTIFIER, ILcdARINCNavaidFeature.UIR_IDENTIFIER, ILcdARINCNavaidFeature.FACILITY_ELEVATION, ILcdARINCNavaidFeature.FACILITY_ELEVATION_UNIT, ILcdARINCNavaidFeature.FACILITY_CHARACTERISTICS
  • TLcdARINCTACANHandler: ILcdARINCNavaidFeature.FIR_IDENTIFIER, ILcdARINCNavaidFeature.UIR_IDENTIFIER, ILcdARINCNavaidFeature.FACILITY_ELEVATION, ILcdARINCNavaidFeature.FACILITY_ELEVATION_UNIT, ILcdARINCNavaidFeature.FACILITY_CHARACTERISTICS
  • TLcdARINCNDBHandler: ILcdARINCNavaidFeature.FIR_IDENTIFIER, ILcdARINCNavaidFeature.UIR_IDENTIFIER, ILcdARINCNavaidFeature.FACILITY_ELEVATION, ILcdARINCNavaidFeature.FACILITY_ELEVATION_UNIT, ILcdARINCNavaidFeature.FACILITY_CHARACTERISTICS
  • TLcdARINCRunwayHandler: ILcdARINCRunwayDirectionFeature.TOUCHDOWN_ZONE_ELEVATION, ILcdARINCRunwayDirectionFeature.TOUCHDOWN_ZONE_ELEVATION_UNIT, ILcdRunwayDirectionFeature.TRUE_BEARING, ILcdARINCRunwayDirectionFeature.THRESHOLD_DISPLACEMENT_DISTANCE, ILcdARINCRunwayDirectionFeature.THRESHOLD_DISPLACEMENT_DISTANCE_UNIT
  • TLcdARINCRestrictiveAirspaceHandler: ILcdARINCAirspaceFeature.START_END_DATE, ILcdARINCAirspaceFeature.START_END_INDICATOR
  • TLcdARINCEnrouteAirwayHandler: ILcdARINCATSRouteSegmentFeature.SEQUENCE_NUMBER, ILcdARINCATSRouteSegmentFeature.FIX_IDENTIFIER, ILcdARINCATSRouteSegmentFeature.WAYPOINT_DESCRIPTION_CODE
  • TLcdARINCProcedureHandler: ILcdARINCProcedureFeature.TRANSITION_IDENTIFIER, ILcdARINCProcedureFeature.SUB_TYPE, ILcdARINCProcedureFeature.SUB_TYPE_QUALIFIER1, ILcdARINCProcedureFeature.SUB_TYPE_QUALIFIER2, ILcdARINCProcedureFeature.GNSS_FMS_INDICATOR
This corresponds to the following properties in the newer properties class:
  • TLcdARINCHeliportHandler: TLcdARINCHeliportDataProperties.PAD_IDENTIFIER, TLcdARINCHeliportDataProperties.PAD_DIMENSIONS
  • TLcdARINCDMEHandler: TLcdARINCDMEDataProperties.ILS_DME_BIAS, TLcdARINCDMEDataProperties.ILS_DME_BIAS_UNIT, TLcdARINCDMEDataProperties.FIR_IDENTIFIER, TLcdARINCDMEDataProperties.UIR_IDENTIFIER, TLcdARINCDMEDataProperties.FACILITY_ELEVATION, TLcdARINCDMEDataProperties.FACILITY_ELEVATION_UNIT, TLcdARINCDMEDataProperties.FACILITY_CHARACTERISTICS
  • TLcdARINCVORHandler: TLcdARINCVORDataProperties.FIR_IDENTIFIER, TLcdARINCVORDataProperties.UIR_IDENTIFIER, TLcdARINCVORDataProperties.FACILITY_ELEVATION, TLcdARINCVORDataProperties.FACILITY_ELEVATION_UNIT, TLcdARINCVORDataProperties.FACILITY_CHARACTERISTICS
  • TLcdARINCTACANHandler: TLcdARINCTACANDataProperties.FIR_IDENTIFIER, TLcdARINCTACANDataProperties.UIR_IDENTIFIER, TLcdARINCTACANDataProperties.FACILITY_ELEVATION, TLcdARINCTACANDataProperties.FACILITY_ELEVATION_UNIT, TLcdARINCTACANDataProperties.FACILITY_CHARACTERISTICS
  • TLcdARINCNDBHandler: TLcdARINCNDBDataProperties.FIR_IDENTIFIER, TLcdARINCNDBDataProperties.UIR_IDENTIFIER, TLcdARINCNDBDataProperties.FACILITY_ELEVATION, TLcdARINCNDBDataProperties.FACILITY_ELEVATION_UNIT, TLcdARINCNDBDataProperties.FACILITY_CHARACTERISTICS
  • TLcdARINCRunwayHandler: TLcdARINCRunwayDataProperties.TOUCHDOWN_ZONE_ELEVATION, TLcdARINCRunwayDataProperties.TOUCHDOWN_ZONE_ELEVATION_UNIT, TLcdARINCRunwayDataProperties.TRUE_BEARING, TLcdARINCRunwayDataProperties.THRESHOLD_DISPLACEMENT_DISTANCE, TLcdARINCRunwayDataProperties.THRESHOLD_DISPLACEMENT_DISTANCE_UNIT
  • TLcdARINCRestrictiveAirspaceHandler: TLcdARINCRestrictiveAirspaceDataProperties.START_END_DATE, TLcdARINCRestrictiveAirspaceDataProperties.START_END_INDICATOR
  • TLcdARINCEnrouteAirwayHandler: TLcdARINCATSRouteSegmentDataProperties.SEQUENCE_NUMBER, TLcdARINCATSRouteSegmentDataProperties.FIX_IDENTIFIER, TLcdARINCATSRouteSegmentDataProperties.WAYPOINT_DESCRIPTION_CODE
  • TLcdARINCProcedureHandler: TLcdARINCProcedureDataProperties.TRANSITION_IDENTIFIER, TLcdARINCProcedureDataProperties.SUB_TYPE, TLcdARINCProcedureDataProperties.SUB_TYPE_QUALIFIER1, TLcdARINCProcedureDataProperties.SUB_TYPE_QUALIFIER2, TLcdARINCProcedureDataProperties.GNSS_FMS_INDICATOR
The handlers mentioned above were updated accordingly.

Bug fixLuciadFusion

LF-1121
Fixed an issue where a search on type in the style panel wouldn't return anything, even though there are styles of that type present.

Bug fixLuciadFusion

LF-1353
LuciadFusion Platform didn't start up correctly on machines with certain default Locales, for example "tr_TR". It now sets default Locale to "en_US" when starting LuciadFusion Platform.

Bug fixLuciadFusion

LF-1349
The startup scripts used to start the Fusion platform server from a zip artifact didn't set the java.library.path vm property, possibly causing linking errors at run-time.

Bug fixLuciadFusion

LF-1352
Fixed an issue that would result in no data being shown when a search filter contained over 20,000 results.

Bug fixLuciadFusion

LF-1172
Fixed issue where the preview bounding box of a product or data item would not be at the correct location.

Bug fixLuciadFusion

LF-1111
Fixed meta data upload issues.

Bug fixLuciadFusion

LF-1350
The LuciadFusion Platform deploy build script produced a zip and war file with duplicate jar entries. This has been fixed.

Bug fixLuciadFusion

LCD-9323
OGC Filter: the names for the comparison operators exposed in the capabilities were wrong for Filter 2.0.

Bug fixLuciadFusion

LF-1086, LF-1110, LCD-9806
TLfnFileSystemTileStore: File deletion is now more reliable on Windows. This means that deleting a coverage or asset is now less likely to throw an IOException.

Bug fixLuciadFusion

LCD-9414
Decoding the XML representation of an OGC filter containing an empty literal elements would result in a TLcdOGCLiteral containing an empty list as value. Prior to V2017.0, this would result in a literal with an empty string. This behavior is now restored.

Bug fixLuciadFusion

LCD-3380, LCD-8846
Layers created with TLspShapeLayerBuilder having an ALspDensityStyle now have a default selection style. Previously objects would disappear when selected.

Bug fixLuciadFusion

LF-1281
Fixed issue with the import metadata button in the data details page. The upload is now correctly executed on the datastore and the ISO 19115 metadata is updated and reflected instantly in the UI.

Bug fixLuciadFusion

LCD-9407
TLcdGeoPackageModelDecoder: Points are now always returned when filtering geometries based on their size. This fixes an issue with SLD styling on GeoPackage models containing points.

Bug fixLuciadFusion

LF-1150
Path prefixes (ALfnEnvironment#addPathPrefix) didn't always work correctly on Windows.

Bug fixLuciadFusion

LCD-9395
TLspViewXYZWorldTransformation3D could fire property change events before the entire state of the object was updated. This could possibly create problems in listeners that depend on the state being updated.

Bug fixLuciadFusion

LCD-9045
Fixed an issue which caused artifacts when visualizing certain tile sets containing (alpha premultiplied) transparency. This was most noticeable when displaying tiled WMS services providing vector data.

Bug fixLuciadFusion

LF-1267
Fixed an issue where users could not open the user guide in a new tab by ctrl-clicking on the link in the navigation bar.

Bug fixLuciadFusion

LCD-9522
Fixed an issue with the header length of some CADRG files, which caused the decoder to throw an EOFException.

Bug fixLuciadFusion

LCD-9524
Fixed a possible threading issue when decoding XML on multiple threads at the same time.

Bug fixLuciadFusion

LCD-9494
The CADRG decoder now detects and attempts to correct an offsetted subframe mask table, which would otherwise result in decoding errors.

Bug fixLuciadFusion

Fixed a rare ConcurrentModificationException when constructing a new TLcdXMLEntityResolver using the default constructor.

Bug fixWeather & Environment Standards

LCD-9443
Fixed a performance problem in TLcdNetCDFModelDecoder for NetCDF files that contain data with a large number of pixels.

Bug fixAviation Standards

LCD-9384
LCD-8432 introduced thread unsafe behavior when dealing with Procedures. This has been fixed.

Upgrade considerationLuciadFusion

LCD-9513, LCD-8614
Ensured that TLspEditingStateEvent supports multiple objects in a single event. This allows editing state listeners to be more efficient when editing a large group of objects. This incompatible change removes the TLspEditingStateEvent.getObject() method in favor of a TLspEditingStateEvent.getObjects() method, which returns a list of objects, instead of a single domain objects. If you have code that relies on TLspEditingStateEvent objects, you can easily update your code by iterating over the list of objects returned by TLspEditingStateEvent.getObjects() in a for loop, and handle the event one by one. Note that if you manually used to call ALspEditor.edit() in your code, without using a TLspEditController, you now also have to call ILspInteractivePaintableLayer.editedObjectChanged() explicitly in your own code. The responsibility of calling this method has been moved from the editor to the controller. The default TLspCreateController and TLspEditController have been updated to reflect this, but if you have your own controller (that does not extend from either controllers), then you might have to call ILspInteractivePaintableLayer.editedObjectChanged() directly in your controller.

Upgrade considerationLuciadFusion

The Fusion server now requires the PostGIS extension in order to be used with a PostgreSQL database.

Upgrade considerationLuciadFusion

Upgraded JTS to version 1.14.0 The dependency changed from com.vividsolutions:jts:1.8 to com.vividsolutions:jts-core:1.14.0

Upgrade considerationLuciadFusion

The protected TLfnEngineFactory#createEngineSession method was removed from the API. This method was not designed to be called or overridden.

Upgrade considerationLuciadFusion

LCD-6951
The ArcInfo ASCII Grid format does not include metadata for specifying the coordinate reference system (CRS) of the data. This needs to be specified using an external file (eg .prj or .ref) which is handled by the ILcdModelReferenceDecoder.

The decoder no longer has a default model reference (EGM96) as fall-back when no external geo-reference is found. This makes it visible that important metadata is missing rather than showing the data at a wrong location. The behavior is consistent with other model decoders.

Users that want to get the behavior as before can do this based on the following fragment in their application code. TLcdArcInfoASCIIGridModelDecoder arcInfoASCIIGridModelDecoder = new TLcdArcInfoASCIIGridModelDecoder(); arcInfoASCIIGridModelDecoder.setDefaultModelReference( new TLcdGeodeticReference(new TLcdGeoidGeodeticDatumFactory().createGeodeticDatum(EGM96_GRID_BILINEAR)) );

Upgrade considerationLuciadFusion

The CSW API is now final. The following changes were made since the 2017.0 release:
  • ALcdCSWRecordDescriptor has been renamed to TLcdCSWRecordType and all subclasses have been replaced by constants.
  • ILcdCSWQueryHandler is now part of ILcdCSWCapabilitiesProvider.
  • ILcdCSWQueryHandler#getQueryLanguages has moved to ILcdCSWCapabilitiesProvider#getInputRecordTypes.
  • ILcdCSWQueryHandler#getOutputRecordTypes has moved to ILcdCSWCapabilitiesProvider#getOutputRecordTypes.
  • ILcdCSWQueryHandler#getFilterCapabilities has moved to ILcdCSWCapabilitiesProvider#getFilterCapabilities.
  • ILcdCSWQueryHandler#getQueryLanguages has been removed.
  • ALcdCSWFilterQueryHandler#executeFilter now passes the original request.
  • TLcdCSWGetCapabilitiesRequest has been removed.
  • TLcdCSWCommandDispatcherContext has been removed.
  • ALcdCSWCommandDispatcherFactory#createQueryHandler has been moved to ILcdCSWCapabilitiesProvider#getQueryHandler
  • TLcdCSWGetCapabilitiesRequest: removed getVersion and setVersion
  • TLcdCSWOpenSearchTemplate: removed OutputFormat in favor of TLcdCSWRecordType
  • TLcdCSWQuery: split up get/setElements into get/setElements and get/setElementNameSet
  • TLcdCSWElementSetName: renamed get/setValueObject to get/setElementSet
  • TLcdOpenSearchAtomFeed: removed some property constants, use the getters and setters instead
  • TLcdCSWServiceException: has been moved to the com.luciad.ogc.csw package
  • TLcdCSWRecordPropertyRetrieverProvider: now takes a record type as constructor argument
  • Several client API related classes have been moved out of the com.luciad.ogc.csw.server package

Upgrade considerationWeather & Environment Standards

All API in the com.luciad.format.grib package has been deprecated. The NetCDF decoder offers superior support for GRIB and should be used instead.

Upgrade considerationDefense Standards

LCD-9312
When VPF data is decoded via the VPF database header table (dht), the TLcdVPFModelDecoder returns an ILcdModelTreeNode. At the level that coincides with the VPF database, library and coverage levels, these ILcdModelTreeNode no longer have an TLcdVPFModelDescriptor, instead they will now return a TLcdModelDescriptor. As a result of this change, to check if a model contains VPF data, you need to check whether TLcdVPFModelDescriptor.TYPE_NAME is equal to ILcdModelDescriptor#getTypeName.

2017.0

2017.0.10

ImprovementLuciadFusion

LF-1356
Ensured that metadata gets updated for data items upon a recrawl, whenever the data has been modified. This only affects automatically generated metadata. Manually uploaded metadata will not be overridden.

ImprovementLuciadFusion

LCD-9499
An optimization has been done in the output stream used within the JPEG tile data codec for the case where there is no need for use of the custom transparency extension. This avoids writing byte[] by looping over the individual bytes as is done in the default implementation of FilterOutputStream.

ImprovementLuciadFusion

LF-1040
TLfnWMSCommandDispatcherFactory#createModelProvider threw a ClassCastException when the createModelDecoderFactories method is overridden, and returns something else than the default implementation. It now throws an IllegalArgumentException with a proper error message.

ImprovementData Connectivity Manager

LF-1346
Using the data importer to create a coverage with a large amount (10000+) of asset parts could take a very long time. This has been improved significantly.

Bug fixLuciadFusion

LCD-9506
A WFS 2.0 Transaction Insert request could trigger a request decoding error in the server.

Bug fixLuciadFusion

LCD-9454
A GeoJson datamodel's type now has an instance class that extends ILcdShapeList as well as ILcdDataObject, so encoders like the GeoPackage encoder can recognize it

Bug fixLuciadFusion

LF-1320
Character encoding now only gets specified on responses from Studio, for textual content-types. This resolves issues where older/third-party OGC/LTS clients could not connect with services served by LuciadFusion Platform 2017.0

Bug fixLuciadFusion

LF-1345
The logfile actuator (http://host:port/{contextPath}/actuators/logfile) was broken after the recent changes to the logging configuration (LF-1313). In order to fix this, the default log file location is now defined in the development and production profiles (config/application-fusion.development.yml and config/application-fusion.production-template.yml) instead of in the logback configuration file (config/fusion.logback.xml).

Bug fixLuciadFusion

LF-1095
The composite format method ALfnFormat#createAsset(String, List<ALfnAssetMetadata>) now exposes the reason why an asset could not be created by the underlying delegate formats supporting the data format. When the delegate format threw an IOException this exception is forwarded to the caller. When multiple delegate format implementations indicate they can support the format (via ALfnFormat#canCreateAsset) their exceptions are aggregated in a single IOException. The source exceptions are available via the suppressed exceptions and they are logged as warning messages.

Bug fixLuciadFusion

LCD-9502
Parsing esri world files could result in runtime exceptions. Now such exceptions result in an IOException.

2017.0.09

ImprovementLuciadFusion

LCD-9455
Improved the performance of OGC Filter evaluation when using successive equal xpath expressions.

ImprovementLuciadFusion

LCD-9457
Improved decoding of GML 3.2 documents referring to the SFP 2.0 schema.

ImprovementLuciadFusion

LCD-9478
TLcdGML32LineString/TLcdGML31LineString and TLcdGML32LineStringSegment/TLcdGML31LineStringSegment now automatically remove pointProperty values with a dead xlink.

ImprovementLuciadFusion

LCD-9419
TLcdGML32GeodesicString/TLcdGML31GeodesicString now automatically remove pointProperty values with a dead xlink.

ImprovementLuciadFusion

LCD-9471
The WMTS client now exposes information about the location of the data inside a layer, by means of the newly introduced getWGS84LonLatBounds() method in TLcdWMTSLayer.

Bug fixLuciadFusion

LCD-9483
TLcdGXYNewController2 and TLcdGXYTouchNewController: in some cases, freehand creation caused duplicate points to appear in the resulting polyline.

Bug fixLuciadFusion

LCD-9466
The property link inside a WFS 2.0 Transaction Update request was not correctly encoded (in the client) and decoded (in the server).

Bug fixLuciadFusion

LCD-9445
Floating licenses for optional components were counted incorrectly since 2017.0. This has been fixed.

Bug fixLuciadFusion

LCD-9486
TLcdGXYRoundedPointListPainter: fixed a recent regression (introduced by LCD-9282) that caused some handles not be editable anymore.

Bug fixLuciadFusion

LCD-9458
Native libraries in the thirdparty OSGi bundle (thirdparty.jar) are now properly exported so the library loader can find them.

2017.0.08

ImprovementLuciadFusion

LCD-9425
TLcdServiceLoader now includes extra information when it cannot find the required LcdService annotation. Additional information includes:
  • The name of the LcdService annotation the service loader is looking for as it may be obfuscated.
  • The actual annotations that are available at runtime on the class.
This helps you to find out what is going. For example when you create a deployment configuration with a mix of obfuscated and non-obfuscated classes.

ImprovementLuciadFusion

LF-1313
It is now easier to adapt or replace the logging configuration. For more information, see the logging.config property in the fusion.development and fusion.production-template profiles, and the config/fusion.logback.xml file. Because of this changes, the (unused) config/logback-test.xml was removed.

ImprovementLuciadFusion

LF-1294
Small improvements to the Studio User Guide.

ImprovementLuciadFusion

LCD-9302
The TLcdTFWModelDecoder now supports JPW as world file for JPG images.

ImprovementLuciadFusion

LCD-9355
The speed of the method TLcdOGCWMSProxy.isSupportedXYworldReference has been improved significantly.

Bug fixLuciadFusion

LCD-9351
A WMS map caching issue has been fixed that could lead to an out-of-memory error in the rendering pipeline (Lightspeed / GXY) in case of frequent changes on the ALcdWMSProxy element (e.g., configuration of dimensions).

Bug fixLuciadFusion

LCD-9417
The WFS model TLcdWFSProxyModel could determine an incorrect geometry property name in case of a WFS feature type served by LuciadFusion Platform and backed by an XML Schema with multiple complex types.

Bug fixLuciadFusion

LCD-9449
TLcdWKReferenceParser did not always interpret the latitude_of_origin parameter for the polar stereographic projection correctly. Also, TLcdWKReferenceFormatter now formats the true scale latitude correctly.

Bug fixLuciadFusion

LCD-9435
TLspXYGridLayerBuilder and TLcdXYGridLayer: Fixed exception when no grid data is configured at zoomed out scale levels. This was a regression, introduced by the fixes for LCD-9383 and LCD-9387.

Bug fixLuciadFusion

LCD-9438
TLspGXYLayerAdapter: when switching between polar south and north projections, a repaint was not triggered.

Bug fixLuciadFusion

LCD-9353
The method TLcdOGCWMSProxy.isSupportedXYworldReference was sometimes incorrect. It could return a false positive. For example when the server reported to support EPSG:3266 the method would return true when checking for EPSG:32662 even when the server did not advertise support for the latter.

Bug fixLuciadFusion

LCD-9420
TLcdISO19139MetadataEncoder now encodes the correct public schema location for the GMX namespace.

Bug fixDefense Symbology

LCD-9423
Fixed issue where the 'Radioactive Material (6.X.1.4.11)' symbol became bloated when the symbol fill was disabled.

Bug fixDefense Symbology

LCD-4059
Added Range and altitude label to the 'Weapon Range/Fan - Circular' and 'Weapon Range/Fan - Sector' symbols for MIL-STD 2525.

Upgrade considerationDefense Symbology

LCD-9300, LCD-9303
TLcdNVGGXYPainterProvider/TLspNVGStyler: reversed the arrow direction for some symbols to be compliant with the NVG to APP6/MIL-STD binding specifications.
Affected symbols
APP6a / APP6b
Name Code(SIDC) Hierarchy Code
Counterattack (CATK) G*T*GK----***** 2.X.1.1.7
Counterattack by Fire GFC*MOLAF-***** 2.X.1.1.7.1
Axis of Advance - Friendly Aviation GFC*MOLAF-***** 2.X.2.1.5.2.1.1
Axis of Advance - Friendly Airborne GFC*MOLAA-***** 2.X.2.1.5.2.1.2
Axis of Advance - Friendly Attack Helicopter GFC*MOLAH-***** 2.X.2.1.5.2.1.3
Axis of Advance - Friendly Ground Axis Of Supporting Attack GFC*MOLAS-***** 2.X.2.1.5.2.1.4
Axis of Advance - Friendly Ground Axis Of Main Attack GFC*MOLAM-***** 2.X.2.1.5.2.1.5
Axis of Advance - Friendly Ground Axis On Order With Date and Time (If Known) Effective G*C*MOLAO-***** 2.X.2.1.5.2.1.6
Axis of Advance - Enemy Confirmed GHC*MOLAE-***** 2.X.2.1.5.2.1.7
Axis of Advance - Enemy Templated GHC*MOLAT-***** 2.X.2.1.5.2.1.8
Direction Of Attack - Enemy Confirmed/Known Ground G*C*MOLDG-***** 2.X.2.1.5.2.2.5
Direction Of Attack - Templated Enemy Ground G*C*MOLDG-***** 2.X.2.1.5.2.2.6
Direction Of Attack - Friendly Planned or On Order G*C*MOLDO-***** 2.X.2.1.5.2.2.9
APP6c
Name Code(SIDC)
Counterattack (CATK) 10002500003214000000
Counterattack by Fire 10002500003215000000
Airborne/Aviation Axis of Advance Aviation 10002500001513000000
Main Attack/Decisive 10002500001514000000
Supporting Attack/Shaping 10002500001515000000
Supporting Attack/Shaping - Feint 10002500001515010000
Mission Tasks/Verbs - Attack 10002500003204000000
MS2525b / MS2525c
Name Code(SIDC) Hierarchy Code
Counterattack (CATK) G*T*K-----****X 2.X.1.7
Counterattack by Fire G*T*KF----****X 2.X.1.7.1
Axis of Advance - Aviation G*G*OLAV------X 2.X.2.5.2.1.1
Axis of Advance - Airborne G*G*OLAA------X 2.X.2.5.2.1.2
Axis of Advance - Attack, Rotary Wing G*G*OLAR------X 2.X.2.5.2.1.3
Axis of Advance - Main Attack G*G*OLAGM-----X 2.X.2.5.2.1.4.1
Axis of Advance - Supporting Attack G*G*OLAGS-----X 2.X.2.5.2.1.4.2
Axis of Advance For Feint G*G*PA--------X 2.X.2.3.2

2017.0.07

ImprovementLuciadFusion

LCD-9391

Bug fixLuciadFusion

LCD-9389
Unsafe symbols, e.g. spaces, in the artifactId of some LuciadLightspeed components are now replaced by underscores. This should fix any POM validation errors you may have encountered.

Bug fixLuciadFusion

LCD-9401
Fixed issue within GeoTIFF model decoder for certain BigTIFF files. BigTIFF files with RGB data having an extra sample per pixel with unspecified meaning could lead to an exception with the message Invalid scanline stride in java 8.

Bug fixLuciadFusion

LCD-9316
When painting a point with height 0 and ElevationModeOBJECT_DEPENDENT, ON_TERRAIN or ABOVE_TERRAIN, its body and label were painted at an incorrect height when the datum of the model reference was different than the datum of the terrain reference (WGS84).

Bug fixLuciadFusion

LCD-9387
TLspXYGridLayerBuilder and TLcdXYGridLayer: creating a grid with different spacings and/or intervals for the x and y axes, didn't always work correctly.

Bug fixLuciadFusion

LCD-9383
TLspXYGridLayerBuilder and TLcdXYGridLayer: In some cases, lines or labels could be missing.

Bug fixLuciadFusion

LCD-9380
The SLD dynamic icon location support introduced by LCD-9207 did not work properly in case of OGC Symbology Encoding 1.1.

Bug fixDefense Standards

LCD-9261
TLcdVPFModelDecoder: An ArrayIndexOutOfBoundsException was thrown when the header of an FCS table indicated a wrong row count. Now the decoder reads all the rows from the table and logs a warning when the row count does not match.

Upgrade considerationLuciadFusion

LCD-9390
The isUseDataSourceAsFallback and setUseDataSourceAsFallback were removed from the TLcdRPCModelReferenceDecoder class. These methods were added starting from the 2016.1.37 LuciadLightspeed patch release to solve a performance problem (LCD-8979). A better fix was added, which doesn't require these methods anymore. Compile errors can be solved by not calling these methods anymore.

2017.0.06

ImprovementLuciadFusion

TLcdGeoJsonModelDecoder now preserves the order of keys in feature properties that are decoded into a Map.

ImprovementDefense Standards

LCD-9370
The NITF, CADRG and ECRG decoders now support all data series codes that were added in MIL-STD-2411-1 Change 3 (2010). Codes without a predefined scale (CG, CM, CO, HA, IV, M1, M2, MM, OA) and codes with sub-meter resolution (I5) are recognized, but can't be decoded. The ECRG decoder will issue a warning if an unsupported frame is encountered, but still try to decode the remaining frames.

Bug fixLuciadFusion

LF-1317
Fixed mapping of the imported data controller

Bug fixLuciadFusion

LCD-9375
The Maven configuration was updated with the libraries that were changed or added for 2017.0. Broken links to Maven Central, which caused some libraries to be miscategorized as provided by Luciad, were restored.

Bug fixLuciadFusion

LF-1308
Removed unnecessary content-type configuration that forced the response type to be application/json for every controller.

Bug fixLuciadFusion

LCD-9371
When registering custom encoders with the same mime-type in the WMS server lower priority encoder implementations overwrote higher priority implementations.

Bug fixLuciadFusion

LCD-9372
TLcdUtmMgrsUtil returned an (incorrect) location when converting a non-existing MGRS coordinate to a lon lat coordinate instead of throwing a ParseException.

Bug fixLuciadFusion

LF-1312
The LuciadFusion WFS generated multiple redundant feature types for a vector coverage created from GML data.

Bug fixAviation Standards

LCD-9365
TLcdAerodromeType and TLcdAIXMAerodromeHandler now offer support for the fourth possible aerodrome type (according to the AIXM 4.5 specs), i.e. 'LS' (Landing Site).

Bug fixAviation Standards

LCD-9269
Fix for the type of route segment not being visualized in Lightspeed.

Bug fixDefense Symbology

LCD-9377
Fixed issue were the label font size was not applied properly for some symbols when ILcdAPP6AStyle.isLabelFontScalingEnabled or ILcdMS2525bStyle.isLabelFontScalingEnabled was set to false.

Bug fixMaritime Standards

LCD-9382
In some cases when using AML, objects below other objects were selected instead of the topmost object.

2017.0.05

ImprovementGraph and Routing Engine

LCD-7514
TLcdGraph#addEdge now throws an IllegalArgumentException with a clear message when this method is called with a start or end node that is not part of the graph.

Bug fixLuciadFusion

LCD-8559
TLsp3DIconStyle: the 3D icon was positioned at the wrong height when an ALspStyleTargetProvider was used to provide geometry at another location than the domain object.

Bug fixLuciadFusion

LCD-9352
When using a TLcdGeodeticDatum instance created using the default constructor, modifying a property (for example the prime meridian) would change its reference datum as well. This could result in incorrect transformations between references with different geodetic datums, and incorrect reference encoding (for example EPSG/WKT).

Bug fixData Connectivity Manager

LF-1310
The DCM was split over two separate folders in version 2017.0.04. This has been fixed.

Bug fixAviation Standards

LCD-9305
The TLcdDAFIFModelDecoder#canDecodeSource method didn't handle unsupported source file names well, so now it checks for supported as well as unsupported source file names.

2017.0.04

ImprovementLuciadFusion

LF-1287
Added "Create product" and "Add to product" buttons on data detail page.

ImprovementLuciadFusion

LF-1301
Added buttons for actions when the user has successfully added a dataroot.

ImprovementLuciadFusion

LF-1273
Changed the Spring Boot actuators configuration. The actuators base path is now /actuators after the server's context path. Where they used to be mapped directly behind the servers context path. E.g. if you configured the server's context path to be the root (/). Then the health actuator will now be mapped to /actuators/health, where it used to be mapped to /health. Additionally the security configuration of the spring boot actuators has been changed. Where it was required for a user to have the ACTUATORS role to be able to access the actuators. Now all authenticated users will be able to access the actuators.

ImprovementLuciadFusion

LCD-9320
TLcdWKTReferenceParser can now parse WKT reference string that contain an azimuthal equidistant projection (TLcdAzimuthalEquidistant).

Bug fixLuciadFusion

LF-1304
Fixed an issue with adding and removing styles from a product.

Bug fixLuciadFusion

LF-1297
Fix searching for products in the service creation form.

Bug fixLuciadFusion

LCD-9314
TLcdColorConvertOp: fixed an alpha band issue when converting color spaces. This issue caused certain GeoTIFF files to not be displayed properly.

Bug fixLuciadFusion

LF-1292
When using multiple LuciadFusion servers using the same tile store location, the WMS service didn't always detect the addition and removal of coverages done by an other server instance. These changes are now detected within a second.

Bug fixDefense Symbology

LCD-9345
Fixed issue for MIL-STD-2525c where the flagpole wasn't displayed properly for HQ symbols under the "Emergency Management" track (hierarchy code 6.x).

2017.0.03

ImprovementLuciadFusion

LCD-9331
The GetFeatureInfo domain object TLcdWMSGetFeatureInfoRequest has a new method setAdditionalParameters, enabling users to include vendor-specific parameters in GetFeatureInfo KVP requests.

ImprovementDefense Symbology

LCD-9282
Improved consistency when editing multiple symbols at the same time in a GXY view. More specifically, dragging the outline of a shape translates all the shapes, while dragging a handle point only changes that handle.

ImprovementDefense Symbology

LCD-9251
Label font style now also affects echelon, affiliation and other symbol decoration in GXY views. This was already supported in Lightspeed views.

ImprovementS-63

LCD-9317
When there are multiple cell permit files configured, the S63 decoders will use the cell permits associated with your current user permit. Earlier, the first file would be used, even if not related to your user permit, causing decoding failures. Note that you will get warning logging indicating that certain cell permit files could not be used.

Bug fixLuciadFusion

LCD-9335
TLcdCoverageModelDecoder didn't work correctly when using a TLcdCoverageDataSource with a Windows Network Path (for example \\server\bla).

Bug fixLuciadFusion

LCD-9324
TLcdClusteringTransformer: Clustering a model with many (100000+) of points could block the UI for several seconds.

Bug fixDefense Symbology

LCD-9319
Fixed a regression in GXY views that caused polygon symbols to be filled when selecting or editing them.

Bug fixDefense Symbology

LCD-9003
Fixed issue where the label position of 'Support by fire position' symbols did not get updated when the symbol was moved.

Upgrade considerationLuciadFusion

LCD-9301
TLcdSHPDomainObject.clone now has extra checks to prevent NullPointerException's when f.e. editing SHP files without DBF data.

2017.0.02

ImprovementLuciadFusion

LF-1278
Improved performance of adding data to a product. This improvement is especially noticeable when adding a large number of data items to a product.

ImprovementLuciadFusion

LCD-9197
The disk tile cache checks whether sufficient disk space is left on the device. If not the size of the disk cache is reduced automatically and a warning is logged.

ImprovementLuciadFusion

LCD-9200
The clearing of the disk cache on exit of the application is improved. Some folders where not deleted cluttering the file system.

ImprovementLuciadFusion

LCD-9292, LCD-7643
TLcdInputStreamFactory now automatically follows URL redirections across different protocols.

ImprovementLuciadFusion

LCD-9289
The SLD implementation now supports Base64-encoded embedded graphic icons that also include mime type information.

ImprovementLuciadFusion

LCD-9076
TLcdVVTerrainModel now supports variable (per segment) terrain sampling rates. The sample interval for each segment can be specified by overriding the calculateStepSize() method.

ImprovementLuciadFusion

LCD-9242
An SLD fill pattern is now anchored on a world point of the view. This makes the pattern aligned over tiles when used in a tiled WMS.

ImprovementDefense Symbology

LCD-9293
Added the following possible text modifiers for all symbols under 1.x.6 in APP6-a and APP6-b:
  • Combat Effectiveness
  • Higher Formation
  • Reinforced Or Reduced

Bug fixLuciadFusion

LF-1282
Fix detection of styles after obfuscation

Bug fixLuciadFusion

LF-1265
Forced character encoding of resources to UTF-8

Bug fixLuciadFusion

LF-1264
Fixed a redirection issue with the Fusion Studio webapp. Browsing to the webapp root would not trigger a redirect to /studio/.

Bug fixLuciadFusion

LF-1261
When a client application sends an empty string value for the layer style name the default style configured on the product is used. A default layer factory was used erroneously as fall-back.

Bug fixLuciadFusion

LF-1154
The disk tile cache used for the WMS and WMTS services was not cleared on exit of the application.

Bug fixLuciadFusion

LF-1280
The LTS and LFS clients now better handle response content types that contain a character encoding.

Bug fixLuciadFusion

LCD-9306
GeoTIFF files with RPC00B coefficients take precedence over other geo-reference tag information. In some cases the CRS correctly used the RPC00B coefficients for determining the model reference but incorrectly still used other tags for positioning the image within the model reference. This applies to JPEG2000 as well.

Bug fixLuciadFusion

LCD-9304
In rare cases, TLcdAlbersEqualAreaConic#world2DEditableBoundsOnEllipsoidSFCT could return incorrect bounds.

Bug fixLuciadFusion

LCD-9072
TLcdCGMModelDecoder: Elliptical arcs were decoded incorrectly in some cases.

Bug fixLuciadFusion

LCD-9107
Fixed an SLD regression in 2016.1.x and 2017.0 that caused raster images to disappear in case of an SLD with a custom color map.

Bug fixLuciadFusion

LCD-7466
TLcdGXYPolylineLabelPainter didn't take the view rotation into account in all cases. This for example happened when painting labels for measurements created by TLcdAdvancedMapRulerController.

Bug fixLuciadFusion

LCD-9288
Fixed a memory leak that could occur in TLspLabelPainter when painting many moving objects with a changing label content. This could lead to an OutOfMemoryError after some time.

Bug fixLuciadFusion

LCD-9276
Fixed an issue where, in some rare cases, toggling the visibility of a layer painting a tile set could prevent painting from finishing.

Bug fixLuciadFusion

LCD-8403, LCD-8750
You no longer need to specify the nut.nativeDir system property to be able to use license files with iButton keys. All necessary libraries are now packaged inside jar files, and will be found from the classpath now instead of the native library path.

Bug fixLuciadFusion

LCD-9271
Fixed case of decoding GeoTIFF using the ModelTransformationTag for positioning the image in combination with a geodetic reference. This was a regression caused by implementing LCD-9202.

Bug fixTerrain Analysis Engine

LCD-9249
Fixed a bug that caused TLcdBoundedCompositeViewshed to not always return the correct visibility.

Bug fixDefense Standards

LCD-9287
TLcdVPFGeoSymProvider did not recognize the product id for Tactical Ocean Data (e.g TOD0).

Bug fixDefense Symbology

LCD-9195
Fill patterns are aligned using an achor point based on a world point of the view. This makes the visualization of NVG within a tiled WMS consistent.

Bug fixDefense Symbology

LCD-9299
Fixed issue where NVG 1.5 arrows weren't rendered with the correct width.

Bug fixDefense Symbology

LCD-9037
Improved painting of haloed movement arrow by taking into account halo thickness when defining arrow icon bounds etc.

Bug fixDefense Symbology

LCD-9090
Added missing text modifiers for some icon symbols.

Bug fixDefense Symbology

LCD-9114
Fixed issue where the symbol line styles were ignored for offset lines in Lightspeed views.

2017.0.01

ImprovementLuciadFusion

LCD-9207
The SLD implementation now supports dynamic locations for external graphic icons: an icon location can include {$propertyName} variables, referring to actual properties of the features to be styled.

ImprovementLuciadFusion

LF-1145
It is now possible to add an updateSequence to the WCS Capabilities. See ILcdWCSCapabilitiesProvider#getUpdateSequence.

ImprovementLuciadFusion

LF-1119, LF-1145
The Capabilities for WMS, WFS and WCS services set up using LuciadFusion Studio didn't contain an updateSequence.

ImprovementLuciadFusion

LF-1107
LuciadFusion Studio now avoids parsing metadata XML schemas for every data that is encountered during crawling. This brings a large performance (30-50%) improvement for the crawling jobs.

ImprovementLuciadFusion

LCD-8973
TLcdISO19139MetadataDecoder and TLcdISO19139MetadataEncoder now allow enabling the caching of application schemas. See setUseApplicationSchemaCache. Caching is now enabled by default.

ImprovementLuciadFusion

LCD-7829
TLcdWKTReferenceParser now also supports gnomonic projections.

ImprovementLuciadFusion

LCD-8799
TLcdEPSGReferenceParser and TLcdEPSGModelReferenceDecoder now document which geodetic datums, ellipsoids and projections from the EPSG database are supported.

ImprovementLuciadFusion

LCD-8989
The GeoTIFF model decoder now detects if a user-defined reference is used if the GTCitationGeoKey contains the value WGS_1984_Web_Mercator_Auxiliary_Sphere. If this is the case the EPSG:3857 reference (Web Mercator) is used.

ImprovementLuciadFusion

LCD-9182
TLcdEPSGReferenceParser now takes less time to initialize.

ImprovementLuciadFusion

LCD-9203
TLspRulerController#setMeasureMode will now throw an exception when trying to set the measure mode to null.

ImprovementLuciadFusion

LCD-2155
TLcdGXYCircleBy3PointsPainter/TLcdGXYShapePainter: improved rendering of ILcdCircleBy3Points instances that cross a pole.

ImprovementLuciadFusion

LF-1099
The quality setting of the JPEG tile data codec used in the Fusion Engine can be controlled with a system property. To set the value to 0.95 use -Dcom.luciad.fusion.tilestore.jpeq.quality=0.95. The default quality value used is 0.9.

ImprovementLuciadFusion

LCD-8189
The GeoTIFF model decoder now decodes geo-references using the RPC00B coefficients without requiring a world file (.tfw). When no geo-reference data is available as GeoTIFF tags the decoder looks for the existence of the optional _rpc.txt which contains the RPC00B coefficients.

ImprovementWeather & Environment Standards

LCD-9181
GRIB models decoded using TLcdNetCDFModelDecoder now expose the original GRIB metadata, see TLcdNetCDFModelDescriptor#getGRIBMetadata.

ImprovementDefense Symbology

LCD-8529
Added support for 'icc' standard for symbols. Symbols that start with the 'icc' standard will be resolved the same way as symbols that start with the 'icon' standard.

ImprovementDefense Symbology

LCD-9003
Added the possibility to display the unique designation property of the Following symbols: for MIL-STD 2525c:
  • 2.X.2.2.2.2
  • 2.X.2.2.2.4
  • 2.X.2.2.2.5
  • 2.X.2.4.2.1
  • 2.X.2.5.3.3
  • 2.X.2.5.3.4
  • 2.X.2.6.1.1
  • 2.X.5.2.1.1
  • 2.X.5.2.1.2
  • 2.X.3.2.2.1
  • 2.X.3.2.2.2
  • 2.X.3.2.2.5
  • 2.X.3.1.9.4
  • 2.X.3.1.10
for APP-6a:
  • 2.X.2.1.2.2.2
  • 2.X.2.1.2.2.4
  • 2.X.2.1.2.2.5
  • 2.X.2.1.4.2.1
  • 2.X.2.1.5.3.3
  • 2.X.2.1.5.3.4
  • 2.X.2.1.6.1.2
  • 2.X.2.2.1.11.4
  • 2.X.2.2.1.12
  • 2.X.2.2.2.2.1
  • 2.X.2.2.2.2.2
  • 2.X.2.2.2.2.5
  • 2.X.2.3.3.11
  • 2.X.2.4.2.1.1
  • 2.X.2.4.2.1.2

Bug fixLuciadFusion

LCD-9247
The iterator returned by TLcdLocationListLabelingAlgorithmSupport#createLabelPlacementIterator didn't always behave correctly. Calling hasNext() multiple times without calling next() could result in a different result. This could lead to ArrayIndexOutOfBoundsExceptions.

Bug fixLuciadFusion

LCD-9244
The OGC WMS server incorrectly used a lon lat instead of a lat lon axis order when interpreting the bounding box information of a GetMap request with CRS urn:ogc:def:crs:EPSG::4326.

Bug fixLuciadFusion

LCD-9057
ALspStyle which have a color property, assumed that the color was defined in the sRGB color space. Now the color space is taken into account.

Bug fixLuciadFusion

LCD-6586, LCD-4856
TLcdUTMGrid could contain an incorrect EPSG authority code in its metadata after modifying the zone, hemisphere, geodetic datum or projection.

Bug fixLuciadFusion

LCD-6608
TLcdEPSGReferenceParser would throw exceptions for a few SR-ORG codes.

Bug fixLuciadFusion

LCD-7882
TLcdAlbersEqualAreaConic#world2lonlatOnEllipsoidSFCT would create points containing a NaN value when using a spherical ellipsoid.

Bug fixLuciadFusion

LCD-9204
TLcdMapG2DLineStyle did not respect the unit of measure of the view's world reference.

Bug fixLuciadFusion

LCD-9202
Fixed too enthusiastic derivation of model references introduced by fixing LCD-8981. There is often no need to.

Bug fixLuciadFusion

LF-1109, LF-1019
Fixed performance regression introduced by the fix of LF-1075 that cause very long loading times for tile stores with many coverages on Linux.

Bug fixLuciadFusion

LCD-9188
Fixed an OpenGL state leak in TLsp3DMeshPainter.

Bug fixLuciadFusion

LCD-9183
Fixed an issue where touch input might break when tapping on a component while that component gets hidden (for example, a dialog's close button).

Bug fixLuciadFusion

LCD-9088
The GeoTIFF model decoder now uses the Oblique Mercator variant B as default when a user defined projection CS is used with value CT_ObliqueMercator. The decoder also handles geographic CS types codes based on ellipsoid only.

Bug fixLuciadFusion

LCD-9085
TLcdLonLatGeoBuffer instances that contain a base shape with non-consecutive coinciding points could be visualized incorrectly.

Bug fixLuciadFusion

The TLcdEllipsoid#bufferContour2DOfSegmentSFCT and TLcdEllipsoid#bufferContour2DOf2DPolylineSFCT methods now use geodetic calculations instead of spherical calculations.

Bug fixLuciadFusion

LCD-9088
For some configurations of TLcdObliqueMercator, converting from world to lon-lat could result in points with NaN values.

Bug fixLuciadFusion

LCD-9103
The OGC clients threw an incorrect exception (TLcdOWSUnsupportedVersionException) when a HTML website was accessed that did not represent an OGC web service.

Bug fixReal-time Engine

LCD-9152
TLspRadarVideoLayerBuilder: radar layers removed from the view did not release all retained memory.

Bug fixAviation Standards

LCD-9245
TLcdARINCModelDecoder#canDecodeSource returns false incorrectly sometime due to LCD-8984. This has been fixed.

2017.0

ImprovementLuciadFusion

An new Dublin Core metadata package is now available in com.luciad.format.metadata.dc.model. It provides support for the DCMI's specification for metadata.

ImprovementLuciadFusion

An new ATOM metadata package is now available in com.luciad.format.metadata.atom.model. It provides support for describing metadata using the Atom Syndication Format.

ImprovementLuciadFusion

Added a new, generic cartesian reference that can be used as a model reference or world reference. You can optionally specify a unit of measure (ILcdISO19103UnitOfMeasure) per axis. This reference can be used to specify any non geospatial 2D X/Y plane or 3D X/Y/Z volume.

See TLcdCartesianReference for more information, or the TimeView sample code where it is used for a time-line.

ImprovementLuciadFusion

TLcdUnitOfMeasureFactory: a number of predefined unit of measures have been added as constants to this class. Part of these constants were already available in the API, but are now grouped in a central location to make it easier to find them.

ImprovementLuciadFusion

TLcdOGCSortBy: new (static) methods are added, which facilitate the creation of a sort-by instance for the most common use-cases. See the comparing and thenComparing methods. A utility method to convert the sort-by condition to a java.util.Comparator has also been added (see the asComparator method).

ImprovementLuciadFusion

The SLD GXY implementation now supports the rendering of curved labels that follow a feature's geometry; a common example is the labeling of road names. This capability can be enabled on a TLcdSLDTextSymbolizer by configuring an SLD vendor option with name followLine and value true.

ImprovementLuciadFusion

New custom OGC functions have been introduced which operate on strings: see TLcdOGCVendorSpecificFunctions.STRING_LENGTH_FUNCTION_NAME, TLcdOGCVendorSpecificFunctions.STRING_SUBSTRING_FUNCTION_NAME, TLcdOGCVendorSpecificFunctions.STRING_SUBSTRING_START_FUNCTION_NAME, TLcdOGCVendorSpecificFunctions.STRING_TO_LOWER_CASE_FUNCTION_NAME and TLcdOGCVendorSpecificFunctions.STRING_TO_UPPER_CASE_FUNCTION_NAME.

ImprovementLuciadFusion

Some changes to the product directory structure have been implemented:

  • The resources directory in the installation root has been renamed to config to better reflect its content type.
  • All sample Proguard configuration files have been collected into build/proguard instead of being scattered around.

ImprovementLuciadFusion

The WFS client now supports the new "minBoundsSize" OGC function. When used with servers that support this function (for example LuciadFusion), the function is evaluated by the server, so the client can avoid retrieving small elements.

This function allows to filter out elements which do not have a certain minimum size. A use-case of this function is requesting only the elements which will be visible when painting data on a map at a certain scale, and skip all objects which are too small.

For more information, see TLcdOGCVendorSpecificFunctions.

ImprovementLuciadFusion

LCD-7622
TLcdDataModelDescriptor now uses sensible defaults for model element types and model types if you pass null for the respective arguments:
  • The TLcdDataModel.getDeclaredTypes() are used as model element types if you pass null.
  • The TLcdDataModel.getTypes() are used as model types if you pass null.

ImprovementLuciadFusion

TLcdSymbol now has a new symbol type: a filled circle with a double outline.

ImprovementLuciadFusion

Added new parameter to TLcdKML22Parameter called "asynchronousAllowed". This allows you to set whether dynamic models should retrieve their resources synchronously or asynchronously. The default behavior is asynchronous, as before. We recommend setting this parameter to false when working on a server-side application such as WMS. Note that by default, if you are already using a parameters updater object, such as TLcdKML22GXYViewParametersUpdater, TLcdKML22GXYViewParametersUpdater, then this will automatically update this setting based on the preferences of the currently active view.

ImprovementLuciadFusion

Added decoding/encoding support for GML 3.2 coverages (see TLcdGML32AbstractCoverage and subclasses). Note that visualization of or image operations on GML coverages are not supported.

ImprovementLuciadFusion

LCD-3555
TLcdWFSClientModelEncoderFactory now includes GeoJSON in its advertised output formats. This made the previously available sample code to support GeoJSON redundant, so that sample code has been removed (WFSClientModelEncoderFactory).

ImprovementLuciadFusion

LCD-8853
To be able to use an existing OpenGL texture object with ALspTextureObject, it was required to overwrite all the methods of this class. Now it's only required to overwrite ALspTextureObject#getTextureObject to provide the OpenGL texture object ID.

ImprovementLuciadFusion

LCD-8974
A new custom OGC function is introduced: see TLcdOGCVendorSpecificFunctions.GEOMETRY_TYPE_FUNCTION_NAME. This function allows to filter on specific geometry types. A use-case for this function is having SLD rules which only apply on a specific geometry type.

ImprovementLuciadFusion

TLcdWFSProxyModel.Builder: a new modelDecoder method is available which allows to specify a model decoder for a specific output format.

ImprovementLuciadFusion

Introduced first version of LuciadFusion Studio. This web-based application offers a front-end and backend for managing data, creating products, and publishing the results as any of the available OGC Services.

ImprovementLuciadFusion

A new custom OGC function is introduced: see TLcdOGCVendorSpecificFunctions.MIN_BOUNDS_SIZE_FUNCTION_NAME and TLcdOGCFilterFactory#minBoundsSize. This function allows to filter out elements which do not have a certain minimum size. A use-case of this function is requesting only the elements which will be visible when painting data on a map at a certain scale, and skip all objects which are too small.

ImprovementLuciadFusion

The scale range of a layer in a 3D view is now applied using a local scale instead of a single scale per view. Unlike a 2D view, a 3D view does not have a single map scale, every point in the visible area in a 3D view has another scale. Previously, the scale range was all-or-nothing, based on a scale determined at one location on the screen. Now, within one view the layer can load data for nearby regions within the scale range, and leave out data for regions outside the scale range.

If you have a TLcdModelQueryConfiguration on a layer in 3D, the layer will use different OGC conditions for different regions in your view at the same time. For example, within one view you can have major roads in the distance as well as minor roads nearby.

The "minimum object size for painting" setting on a layer is also applied adaptively. Previously, each frame one uniform pixel size was used for the entire layer, based on a scale determined at one location on the screen. Now, the layer can load smaller elements near the viewer and only larger elements further in the distance.

ImprovementLuciadFusion

Improved handling of large vector data sets by introducing the ILcdModel.query method and the concept of a TLcdModelQueryConfiguration which can be set on a TLspLayer and TLcdGXYLayer.

  • The new default method ILcdModel.query method allows to request from a model all elements that match a certain OGC filter. That OGC filter can contain a "BBOX" operator as well as other non-spatial conditions. You can also specify a certain order and/or limit.
  • Since it's a default method, it is available for all ILcdModels. By default, it will use applyOnInteracts2DBounds if available, or elements otherwise. This means most in-memory models will use a spatial tree to evaluate the spatial part of the OGC filter, and evaluate other parts by testing all remaining elements.
  • Certain models have an optimized implementation of the ILcdModel#query method. For example database models will convert the OGC filter to SQL and let the database do the filtering. WFS models will send the filter to the WFS server so that the server can perform the filtering, and only needs to send the requested elements back to the client.
  • By configuring a TLcdModelQueryConfiguration on the layer, you can specify which OGC filter the layer should use at a certain scale when it queries the model. This allows to reduce the amount of data the layer loads at certain scales. This also works in 3D, where the scale is not uniform across the screen. See TLspShapeLayerBuilder.modelQueryConfiguration and TLcdGXYLayer.setModelQueryConfiguration.
  • When a layer is styled using SLD styling, a TLcdModelQueryConfiguration is automatically derived from the SLD to ensure that only the data which will be visualized is loaded. See for example TLspShapeLayerBuilder.sldStyle.
For more information, please refer to the javadoc of TLcdModelQueryConfiguration or the LuciadLightspeed Developer's Guide. See also the article How to visualize OpenStreetMap data sets with LuciadLightspeed on the Luciad Developer Platform for an example use case.

ImprovementLuciadFusion

LCD-8678
Several API usability improvements were made for working with OGC filters:

ImprovementLuciadFusion

Several minor inconsistencies in the different evaluators for OGC filters have been fixed. An example of such an inconsistency is an evaluator which would return true for A == B but false for A >= B.

ImprovementLuciadFusion

LCD-8418, LCD-7697
ALspCameraConstraint can now be used to constrain parameters other than those passed to lookAt() and lookFrom(), such as the field of view or the near and far clipping planes. This improvement also fixes possible drifting of a 3D camera when a constraint is active (reported in LCD-7697).

ImprovementLuciadFusion

XML framework: improved the handling of content in elements of the "any" type.

ImprovementLuciadFusion

LCD-8743
The WFS model TLcdWFSProxyModel now properly takes into account all bounding boxes of a feature type to locate the data. In the past, only one bounding box was considered, which is the most common use case.

ImprovementLuciadFusion

LCD-8968
ILcdModelDecoder now has a method to retrieve all ILcdDataSource instances for a given source path. This method can be used in conjunction with the new API to retrieve a specific ILcdModel custom model decoder that wraps an existing ILcdModelDecoder, we highly recommend delegating these new default interface methods as well.

ImprovementLuciadFusion

LCD-8896
An new ISO metadata package is now available in com.luciad.format.metadata.model.service. It provides support for the ISO 19119 specification for Geographic information Services.

ImprovementLuciadFusion

LCD-8965
All common implementations of ILcdISO19103UnitOfMeasure now implement equals() and hashcode() so that they can be compared more easily. This also makes serialization of units of measure easier to implement.

ImprovementLuciadFusion

ImprovementLuciadFusion

ImprovementLuciadFusion

LCD-8467, LCD-3912
TLcdISO8601DateFormat formats and parses java.util.Date objects to/from the ISO 8601 date/time format representation.

ImprovementLuciadFusion

TLcdOGCFilterEvaluator now supports case-insensitive "is like" operators as mentioned in the OGC Filter 1.1 specification OGC 04-095c1. See TLcdOGCIsLikeOperator#setMatchCase for more information.

ImprovementLuciadFusion

A new server and client API for OGC Catalogue Services (CSW) has been introduced.
For more information, see:
  • The OGC CSW Catalog Server developer's guide (CSW_DeveloperGuide.pdf)
  • The class javadoc of TLcdCSWServlet and TLcdCSWClient
  • The package javadoc of com.luciad.ogc.csw

ImprovementLuciadFusion

In the WFS service, the default implementation of ALcdOGCWFSCommandDispatcherFactory#createModelDecoderFactory returns a TLcdOGCModelDecoderFactory. This factory automatically picks up all the data connectors that are found on the class path. It uses the TLcdServiceLoader to find all the ILcdModelDecoders of the formats that are installed.

ImprovementLuciadFusion

LCD-6715
In the WCS service, the default implementation of ALcdOGCWCSCommandDispatcherFactory#createModelDecoderFactory returns a TLcdOGCModelDecoderFactory. This factory automatically picks up all the data connectors that are found on the class path. It uses the TLcdServiceLoader to find all the ILcdModelDecoders of the formats that are installed.

ImprovementLuciadFusion

The WMS now has anti-aliasing enabled by default, which produces smoother rendering results.

ImprovementLuciadFusion

LCD-8438
The version suffix for third-party library jars has been reformatted to improve compatibility with some third-party classloaders. The jars are now named according to the format lib-version.lcd-buildnumber.jar. For example, libfoo@2.0+3-lcd.jar is named libfoo-2.0.lcd-3.jar in the new format.

ImprovementLuciadFusion

LCD-8924
The LSP decoder sample (a.k.a. data viewer) now picks up companion .sld files for imagery files such as tif. This allows to specify for example band selections using an .sld file next to the tif file. An example sld file can be found in 'samples/resources/Data/SLD/raster_band_selection.xml' (it assumes 4-band imagery, but can easily be modified).

ImprovementLuciadFusion

LCD-8924
The GXY decoder sample (a.k.a. data viewer) now picks up companion .sld files for imagery files such as tif. This allows to specify for example band selections using an .sld file next to the tif file. An example sld file can be found in 'samples/resources/Data/SLD/raster_band_selection.xml' (it assumes 4-band imagery, but can easily be modified).

ImprovementLuciadFusion

LCD-8922
TLcdISO19115GeoGraphicBoundingBox is now no longer limited to geodetic geo referenced coordinates.

ImprovementLuciadFusion

LCD-8917
The sample WMS server code to monitor a directory for new/removed/updated data, available in samples.wms.server.updater, has been updated to use Java's NIO WatchService API instead of custom directory monitoring logic.

ImprovementLuciadFusion

The sample package samples.lightspeed.daynight contains a sample showing how to visualize a day/night map using the Lightspeed styling API. The sample visually distinguishes day and night as well as civil/nautical/astronomical twilight. It also displays the point on the Earth where the sun is directly overhead.

ImprovementLuciadFusion

The WMTS Client now supports multidimensional data. More specifically, the TLcdWMTSModelDecoder now returns an ILcdMultiDimensionalModel. By applying a dimensional filter (ILcdMultiDimensionalModel.applyDimensionFilter), you can now change one or more values of a model with multidimensional data (e.g. GRIB or NetCDF), and see the underlying image change accordingly.

ImprovementLuciadFusion

TLcdAnimation is a new lambda-friendly implementation of ILcdAnimation.

ImprovementLuciadFusion

TLcdLayer: added a setSelectableSupported method.

ImprovementLuciadFusion

The WFS client now supports connecting to WFS 2.0.0 servers. This includes OGC Filter 2.0 support. Do note that stored queries are not yet supported.

ImprovementLuciadFusion

The WFS server now supports WFS 2.0.0 clients. This includes OGC Filter 2.0 support. Do note that temporal filtering and stored queries are not yet supported.

ImprovementLuciadFusion

A model decoder for Fusion coverages has been added: TLcdCoverageModelDecoder decodes coverages directly from their coverage XML file description and treats it just like any other data source. The decoder additionally supports coverage data outside the context of a tile store, and coverage data served via a LTS service. The remote coverages need to be specified via the TLcdCoverageDataSource.

Only coverages of types ELfnDataType#IMAGE,ELfnDataType#ELEVATION, and ELfnDataType#RASTER are supported.

The returned models expose their dimensions through the ILcdMultiDimensional interface.

ImprovementLuciadFusion

LCD-3862
There is a default command dispatcher factory available which provides a good starting point for making a Web Map Service with few or no additional programming. The TLcdOGCWMSCommandDispatcherFactory loads most of its functionality using a service loader mechanism. More specifically, implementations of decoders and layer factories are picked up automatically when they are annotated with the appropriate LcdService annotation. The sample command dispatcher factory extends from the default factory and only adds dynamic behavior.

ImprovementLuciadFusion

The display names of several formats have been improved. Also, TLcdModelDescriptor.sourceNameToDisplayName has been added to derive a display name from a source name.

ImprovementLuciadFusion

You can use a new, lazy-loading ESRI Shapefile decoder: TLcdSHPModelDecoder2.

This decoder does lazy loading of elements, based on the client request.
  • This ensures a low memory footprint if only part of the data is needed at the same time:
    • when visualizing a small area
    • when a model query filter is used
    • when doing processing on the elements one by one
  • It also ensures fast model creation.

We recommend using the new TLcdSHPModelDecoder2. If you do want eager-loading behavior, you can use TLcdSHPModelDecoder. It loads all records up-front, including all geometry and property data. This results in large memory footprint as well as a big decoding hit on startup, but subsequent queries are very fast.

TLcdSHPModelDecoder2 is registered in the Java service registry, while TLcdSHPModelDecoder is no longer registered. If you use the Java service loader to look up model decoders, you will automatically use the new decoder.

ImprovementLuciadFusion

TLcdSLDLabelingAlgorithm now prefers static labels over dynamic ones. This behavior was set as the default labeling behavior. This is for example useful for cases where you need consistent consistent label positions over multiple repaints, such as a (Tiled) WMS or WMTS server implementation. You can still enable the dynamic behavior, where multiple locations are tried, by passing false to the constructor.

ImprovementLuciadFusion

PNG encoding in the fusion engine is now faster. The implementation now uses the ObjectPlanet PNG encoder.

ImprovementLuciadFusion

LCD-8800
GML decoding: improved robustness when decoding GML features with incomplete geometry.

ImprovementLuciadFusion

WMS server: TLcdWMSModelProvider was added. This ILcdModelProvider has support for multi-dimensional models and has a model cache.

ImprovementLuciadFusion

LCD-8767
TLcdOWSBoundingBox now implements ILcdBounded. This allows you to retrieve an ILcdBounds object using objects of the TLcdOWSBoundingBox class.

ImprovementLuciadFusion

LCD-8745
TLcdKMLGXYLayerFactory now makes it possible to easily create layers for KML data.

ImprovementLuciadFusion

LCD-8745
TLcdSLDFileGXYLayerFactory was added. This layer factory creates SLD styled layers if the data source file is accompanied by an SLD (.sld) file.

ImprovementLuciadFusion

LCD-8745
TLcdWMTSGXYLayerFactory now makes it possible to easily create layers for WMTS data.

ImprovementLuciadFusion

LCD-8745
TLcdMIFGXYLayerFactory now makes it possible to easily create layers for MIF data.

ImprovementLuciadFusion

LCD-8789
The XML framework now logs a warning if it encountered broken xlinks during decoding.

ImprovementLuciadFusion

LCD-8655
Added support for OGC Filter 2.0.
This adds support for temporal operators. See TLcdOGCBinaryTemporalOperator for details. You cannot serialize this operator to a 1.1 OGC Filter.
Other notable changes when using Java to create filter and condition:
  • You can use a function (TLcdOGCFunction) as condition ( ILcdOGCCondition) if it evaluates to a boolean result.
  • Instead of using "object ids" or "feature ids" on TLcdOGCFilter, you can now use a condition to match ID: see TLcdOGCFilterFactory.resourceIds(). Using object ids directly is deprecated, but still works.
Both changes can be used regardless of whether the condition will eventually be serialized to a 1.1 OGC Filter (for example WFS 1.x, or SLD), or a 2.0 OGC Filter (for example WFS 2.0).
Binary arithmetic operators (Add/Mul/Sub/Div) are no longer supported in the OGC Filter 2.0 standard. You can still create them and evaluate them, but you will get an error when it is serialized to OGC Filter 2.0 XML (for example WFS 2.0).

ImprovementLuciadFusion

ALcdMultiDimensionalModelProvider provides a default implementation of its getModel method that takes dimensional parameters. This adds multidimensional support to WMS if your models implement ILcdMultiDimensionalModel.

ImprovementLuciadFusion

LCD-7978
The new TLcdShapeDataTypes.SHAPE_TYPE is a built-in data type (TLcdDataType) that you can use for properties that are ILcdShape.

ImprovementLuciadFusion

LCD-6917
3D icons are now rendered in two passes when the painting hints on the view are set to NICEST. As a result, 3D icons with transparent textures will no longer contain 'holes'.

ImprovementLuciadFusion

ILcdFilter now extends java.util.function.Predicate<T> and implements test() using a default method that delegates to accept().

ImprovementLuciadFusion

For better interoperability with reverse proxies, the server now uses OnlineResource paths relative to the servlet mapping instead of relative to the servlet container in its capabilities. For backwards compatibility, the behavior towards older clients remains as it was before. This feature requires that both client application (DCM, Lucy, ...) and server are using LuciadFusion V2017.0 or higher. If you're running a LuciadFusion server behind a reverse proxy and want to take advantage of this feature, you should make sure both client and server are up-to-date.

ImprovementLuciadFusion

LCD-8209
The sample package samples.lightspeed.style.textured is removed. The fill style sample in the package samples.lightspeed.style.fillstyle shows how to use a texture with a fill style.

ImprovementLuciadFusion

LCD-8546, LCD-8801
ILcdBounds now has a few new default convenience methods:
  • getMinX(), getMaxX(), getMinY(), getMaxY(), getMinZ(), getMaxZ(): provide the left/right/lower/upper/bottom/top boundary values. These are derived properties, calculated from the location and width/height/depth. They can be overridden for performance
  • getCenter(): provides a point that is the center of the bounds.

ImprovementLuciadFusion

ILcdLogger received new methods which accept a Supplier<String> as argument instead of a String, similar to what has been done in the JDK for the java.util.logging.Logger class.

ImprovementLuciadFusion

LCD-8247
TLcdAWTUtil now has two new utility methods to add and remove components from a parent container that is already visible on screen (addComponent, removeComponent). This is often needed when adding items to the map overlay panel, but is useful for other cases as well. Sample code was updated to make use of this utility method. Consult the reference documentation for more details.

ImprovementLuciadFusion

LCD-8097
TLsp3DIconStyle: It is now possible to configure a translation to apply to the 3D icon. See TLsp3DIconStyle.Builder#translate().

ImprovementLuciadFusion

LCD-8444
TLcdTransportFactory.createTransport(): the created transport now uses the default java.net.Authenticator to obtain the credentials when connecting with a secure server/proxy, and the default java.net.ProxySelector to determine whether a proxy must be used.

ImprovementLuciadFusion

LCD-8460
GML encoding: in some cases, the configured target namespace was not taken into account.

ImprovementLuciadFusion

LCD-8383
TLspLabelPainter now logs an error when using TLspCurvedPathLabelingAlgorithm in combination with a TLspIconStyle.

ImprovementLuciadFusion

LCD-3689, LCD-7153
TLcdSelectionChangedEvent can now be constructed and queried using java.util.Map.

ImprovementLuciadFusion

LCD-7541
GML decoding: reduced memory needs when decoding large documents that don't have a version specific extension.

ImprovementLuciadFusion

LCD-7418
TLcdSymbol: improved anti-aliased rendering of circles.

ImprovementLuciadFusion

LCD-7419
TLcdSymbol now uses anti-aliasing by default.

ImprovementLuciadFusion

LCD-8397
GML encoding: fixed a possible NullPointerException when exporting a degenerate arc-by-bulge.

ImprovementLuciadFusion

LCD-8179, LCD-9736
TLspMGRSGridStyle, TLspGeorefGridStyle and TLspXYGridStyle now contain methods that allow to customize the label position. See labelPosition() and labelLinePosition().

ImprovementLuciadFusion

LCD-8326
ALcdGXYNewControllerModel2 now also paints handles while creating shapes.

ImprovementAdvanced GIS Engine

LCD-8678
The TLcdOGCFilterSpatialEvaluator has been deprecated in favor of the TLcdOGCFilterEvaluator, which now supports all spatial operations when the Advanced GIS Engine component has been purchased.

ImprovementWeather & Environment Standards

LCD-8745
TLcdNetCDFGXYLayerFactory now makes it possible to easily create layers for NetCDF data.

ImprovementWeather & Environment Standards

TLcdNetCDFModelDecoder now also supports loading GRIB files. For GRIB files, it produces a model that is structured exactly the same way as a model from NetCDF files, making it possible to visualize it exactly the same way. This will also enable filtering on time/vertical or other dimensions for GRIB files. See TLcdNetCDFFilteredModel#applyDimensionFilter.

ImprovementAviation Standards

LCD-7648
The performance of TLcdDAFIFModelDecoder#canDecodeSource has been improved.

ImprovementAviation Standards

LCD-8745
TLcdAIXM51GXYLayerFactory was added. This layer factory can create layers for AIXM5 data, using a default style.

ImprovementDefense Standards

LCD-8745
TLcdVPFGXYLayerFactory now makes it possible to easily create layers for VPF data.

ImprovementDefense Standards

LCD-8745
TLcdNITFGXYLayerFactory now makes it possible to easily create layers for NITF data.

ImprovementDefense Symbology

LCD-8745
TLcdNVGGXYLayerFactory now makes it possible to easily create layers for NVG data.

ImprovementInfrastructure Standards

LCD-8745
TLcdDWGGXYLayerFactory now makes it possible to easily create layers for DWG data.

ImprovementInfrastructure Standards

LCD-8745
TLcdDGNGXYLayerFactory now makes it possible to easily create layers for DGN data.

ImprovementMaritime Standards

LCD-9006

You can now intercept warnings when cells are decoded lazily within a catalog.

ILcdS57InvalidCellExceptionHandler has a new default method handleCellWarnings. By default, this method logs a warning message. You can override the method to intercept the warnings.

In practice, these warnings are typically S-63 subscription expirations.

ImprovementMaritime Standards

TLcdS52SLDGXYLayerFactory was added. This layer factory can create a layer for S-57 models using a given SLD style that contains a TLcdS52SLDSymbolizer.

ImprovementRadar Connectors

The ISO measure properties in the data model are now annotated with a TLcdISO19103MeasureAnnotation.

ImprovementS-63

LCD-9006

You can now intercept cell expiration warnings when cells are decoded within a catalog.

ILcdS57InvalidCellExceptionHandler has a new default method handleCellWarnings. By default, this method logs a warning message. You can override the method to intercept the warnings.

During the initial decode(), you will get warnings (SSE_015 or SSE_020) for all expired cell permits.

ImprovementS-63

LCD-7136
Changed canDecode of TLcdS63UnifiedModelDecoder, TLcdS63CatalogueModelDecoder and TLcdS63ModelDecoder such that it no longer checks cell permits. This means canDecode will accept all S-63 cells and catalogues. For cells, the decode will fail if there is no permit. For catalogues, the decode will decode only cells in the catalogue for which you have permits (as before).

Bug fixLuciadFusion

LCD-9010
The use of tiled visualization for WMS layers containing rasterized vector data could sometimes result in vector graphics being cut off at the boundaries of the WMS layer.

Bug fixLuciadFusion

LCD-9034
LcdService is now retained at runtime. This for example allows to retrieve the priority from a service. This change allowed to fix the order of the services returned by the ServiceRegistry sample class.

Bug fixLuciadFusion

LCD-9033
Geodetic bounds with a height of (approximately) 180 degrees were not always transformed correctly to a reference with a different geodetic datum. This could cause issues such as height providers not returning any heights.

Bug fixLuciadFusion

LCD-8940
Fixed a possible NPE when calling ALfnCoverage#getTile() on a coverage that includes a tile message digest. It is now possible to call this method with null as message digest buffer argument.

Bug fixLuciadFusion

LCD-8894
WMS Get map requests could suffer from a tiny offset due to rounding errors.

Bug fixLuciadFusion

LCD-8831
In some cases, TLcdWFSProxyModelDescriptor#getModelElementTypes() returned too many data types.

Bug fixLuciadFusion

GML encoding: has-a-shapelist domain objects are now correctly encoded to GML 2.

Bug fixLuciadFusion

The default ILcdModelProvider returned by ALcdOGCWMSCommandDispatcherFactory#createModelProvider threw an IllegalArgumentException instead of an IOException when no model decoder can be found for a given source.

Bug fixLuciadFusion

LCD-7277
TLcdSHPModelDecoder: The character set used for String values parsed from the DBF file was incorrect if the DBF file uses one of the ISO-8859 encodings.

Bug fixLuciadFusion

LCD-8772
It is now possible to easily change the brightness, contrast and transparency of rendered WMS maps in GXY; these properties have been made configurable on the WMS GXY painters TLcdWMSProxyGXYPainter and TLcdGXYTiledWMSProxyPainter.

Bug fixLuciadFusion

LCD-9107
Fixed a bug in TLcdGXYImagePainter that caused no image data to be painted. This bug could occur when setting an ALcdImageOperatorChain on the painter. It was most easily triggered when using an SLD with a color map to paint the image data.

Bug fixLuciadFusion

In rare cases, TLcdWarpMultilevelRasterPainter painted data where no data should have been available. This could for example happen for DTED data where data is available on the DMED level, but not on the DTED0 level.

Bug fixLuciadFusion

LCD-8616
XML framework: improved compatibility with JDK 1.8.

Bug fixReal-time Engine

LCD-8729
TLspRadarVideoLayerBuilder can now handle radars which have an angular and/or radial resolution that is higher than the maximum supported texture resolution of the GPU. In case the resolution of the radar is too high, it will be visualized at a reduced resolution.

Bug fixWeather & Environment Standards

TLcdNetCDFModelDecoder: files that use a stereographic projection could not be decoded.

Bug fixAviation Standards

LCD-9052
TLcdARINCModelDecoder#canDecodeSource is now more robust against non-arinc txt files.

Bug fixMaritime Standards

LCD-6575
The TLcdS52GXYLayer and TLcdS52GXYCatalogueLayer incorrectly passed TLcdS57Edge objects to their layer filters. These objects are not domain objects, nor ILcdS57Objects: they are part of other ILcdS57Objects. Now, these objects are no longer passed to the layer filter. This is not necessary since the actual S-57 objects these edges belong to are already filtered.

Bug fixMaritime Standards

LCD-9050
In some cases, cells in a catalog were not being displayed in a GXY layer if they crossed the date line. Now, these cells are properly displayed when they are in view.

Upgrade considerationLuciadFusion

TLcdXMLBuiltInConstants.XSD.TypeIndex has been removed from the API, as it serves no practical purpose. In the highly unlikely event you were using this constant, you can safely replace any reference to it by zero.

Upgrade considerationLuciadFusion

Due to the introduction of support for OGC Filter 2.0 (see LCD-8655), using the TLcdOGCFilterDecoder to convert an XML representation of a filter into a TLcdOGCFilter instance will not always result in a Java structure which matches the filter structure. The Java filter will be the equivalent of the XML representation, but the individual building blocks of the Java filter might differ from the XML building blocks.

For example

      <ogc:PropertyIsEqualTo>
      <ogc:Function name="my_custom_function">
      <ogc:Literal>foo</ogc:Literal>
      </ogc:Function>
      <ogc:Literal>true</ogc:Literal>
      </ogc:PropertyIsEqualTo>
    
might be converted to just a TLcdOGCFunction which evaluates to a boolean, instead of being wrapped in a TLcdOGCBinaryComparisonOperator.

Upgrade considerationLuciadFusion

The deprecated classes from the com.luciad.ogc.filter package have been removed, as well as the TLcdOGCBinarySpatialFilterFactory class.

These classes have been deprecated since V6 and were only used in V5 to decode an XML representation of an OGC filter into Java classes. For this, you can use the TLcdOGCFilterDecoder instead.

Upgrade considerationLuciadFusion

TLcdTransformingModelFactory no longer offers a way to specify whether the transformed model should keep a spatial index. It will never do so. This also means returned models will no longer implement ILcd2DBoundsIndexedModel.

Upgrade considerationLuciadFusion

TLcdOGCFilterSpatialEvaluator: the constants of this class have been removed. These constants were ILcdSpatialEvaluatorFunction instances which should not have been used directly. If you want to perform spatial filtering, you either decode an XML representation of a filter into an TLcdOGCFilter, or you use the TLcdOGCBinarySpatialOperator class.

Upgrade considerationLuciadFusion

LCD-3073
The third library dependency on Batik has been updated from version 1.7 to 1.9. Its dependency on Xalan has also been updated from version 2.6.0 to 2.7.2.

Upgrade considerationLuciadFusion

The interface ILcdCoverageFilterFactory has been removed from the API. A compile error will notify you if you were using this interface, which we don't anticipate as it was not used effectively. The new ILcdWCSCapabilitiesProvider offers a more powerful and easier-to-use replacement, should there be a need.

Upgrade considerationLuciadFusion

LCD-7995
TLcdCompositeModelDecoder now throws an exception when no delegate decoder creates a non-null model. Before, it returned null instead. This change has little impact as calling code already had to deal with exceptions. In addition, it is more clear because of the exception message, and is more in line with what to expect from ILcdModelDecoder.decode, as defined by the interface. See javadoc of TLcdCompositeModelDecoder.decode for details.

Upgrade considerationLuciadFusion

LCD-8955
Upgraded woodstox to a newer version. Previously, the XML module had a dependency on woodstox 4.0.9, but this has been upgraded to woodstox 5.0.3 for compatibility reasons.

Upgrade considerationLuciadFusion

TLcdOGCBinaryComparisonOperator: the unsupported class constants MATCH* have been removed from the API. As it was virtually impossible to use them, we don't expect this to affect anyone.

Upgrade considerationLuciadFusion

The following classes related to the MTM format have been deprecated: TLcdMultilevelTiledModelDecoder, TLcdMultilevelTiledModelDescriptor and TLcdMultilevelRegularTiledModelDecoder.

Upgrade considerationLuciadFusion

The caching behavior for ILcdWFSFeatureType on the WFS server has been modified. Previously, caches used the ILcdWFSFeatureType instance itself as key for a cache. This implies that caches didn't work as expected when using different WFS feature type instances that represent the same data.

This instance-based caching mechanism has been replaced by a caching mechanism that uses the following properties as cache key:

  • ILcdWFSFeatureType#getQName: uniquely identifies the WFS feature type.
  • ILcdWFSFeatureType#getUpdateSequence: identifies the 'version' of the WFS feature type. I.e. if a property of the feature type changes, its update sequence should change as well.
  • ILcdOGCModelProvider#getUpdateSequence: identifies the 'version' of the underlying data. I.e. if the data changes, this update sequence should change as well.

Upgrade considerationLuciadFusion

TLcdKML22LookAt and TLcdKML22Camera used to have a method adjustCameraSFCT to modify the settings of an ILcdGLCamera of an ILcdGLView (so not GXY nor Lightspeed views). These methods are no longer available. It is still possible to fit an ILcdGLView on a feature using TLcdKML22GLViewFitAction, as before.

Upgrade considerationLuciadFusion

For reasons of technical software consistency, TLcdCADRGModelDecoder and related API have moved to the NITF component, part of the option Defense Standards. Please contact Luciad support if you have questions on how to get access to this option.

Upgrade considerationLuciadFusion

The LuciadFusion server API (com.luciad.fusion.server.*) has been superseded with the LuciadFusion Platform. Please refer to the Fusion migration guide for more information.

Upgrade considerationLuciadFusion

The WMS server has added caches on two new levels:

  • The command dispatchers now use a mechanism of view pooling. This changes the call order of methods such as TLcdOGCWMSCommandDispatcher.clearGXYView. If needed, the pool size (ALcdWMSCommandDispatcher.setGXYViewPoolSize) can be set to 0 obtain the old behavior.
  • It now uses a non-persistent tile cache for tiled (Tiled WMS) GetMap requests. This cache makes sure that subsequent tile requests are handled much faster, improving the performance and scalability of the WMS server when using tiled requests. See ALcdOGCWMSCommandDispatcherFactory for more information (also on how to disable tile caching for example).

This implies that for data that changes dynamically, extra care needs to be taken to make sure caches are invalidated. To this end, the following API was introduced:

  • ALcdWMSLayer#setUpdateSequence: Used to indicate that a WMS layer has changed. This includes all dependencies such as styles, layer factory implementation, etc...
  • ILcdModelProvider#getModelUpdateSequence: Used to indicate that the underlying data has changed. This can mean that the model has been changed in-memory, or that the underlying data (file/database/...) has been changed.

By default, the implementations of these methods (mostly) assume static data/layers. For WMS servers that serve data that changes over time (for example data updates), these methods should be used correctly. Note that the LuciadFusion Platform already takes care of this. An alternative is to disable the caches.

Upgrade considerationLuciadFusion

The Java Servlet dependency has been upgraded from version 3.0 to 3.1. Consequently, an application server or servlet container with support for Java Servlet 3.1 or higher is now required for deployment of the server - for instance, Tomcat 8 or higher. The impact of this is expected to be low since Java Servlet 3.1 is widely adopted by application server and servlet container products. The servlet container delivered with the Luciad products, Jetty 9, already supports Servlet 3.1.

Upgrade considerationLuciadFusion

The Java Servlet dependency has been upgraded from version 3.0 to 3.1. Consequently, an application server or servlet container with support for Java Servlet 3.1 or higher is now required for deployment of the server - for instance, Tomcat 8 or higher. The impact of this is expected to be low since Java Servlet 3.1 is widely adopted by application server and servlet container products. The servlet container delivered with the Luciad products, Jetty 9, already supports Servlet 3.1

Upgrade considerationLuciadFusion

The isAntiAliased method was added to the ILcdGXYView interface. The view implementations have the corresponding setter. This allows to globally enable anti-aliasing on a view, to achieve smoother rendering results. This can lead to a compile error for custom ILcdGXYView implementations. The compile error can be solved either by delegating to an other view, or by implementing this method when no delegate is available. A basic implementation would be to always return true or false.

Upgrade considerationLuciadFusion

All WCS request handler implementations are no longer part of the public API:

  • TLcdWCSGetCapabilitiesRequestHandler
  • TLcdWCSDescribeCoverageRequestHandler
  • TLcdWCSGetCoverageRequestHandler

Any unlikely usages of these concrete classes can be replaced as follows:

  • Decoration: in case you were wrapping the request handlers, you can generically wrap them instead, they offered nothing in addition to the ILcdRequestHandler interface.
  • setCoverageOfferingList and setServiceMetaData calls can be replaced by creating/wrapping the ILcdWCSCapabilitiesProvider in the WCS command dispatcher factory. This is a much more powerful, easier and safer approach to achieve similar results. See also the other release note about ILcdWCSCapabilitiesProvider for more information.

Upgrade considerationLuciadFusion

The ILcdWCSCapabilitiesProvider interface was added. This interface describes the capabilities of a WCS service. Advantages over ILcdCoverageOfferingList are that:

  • it is easier now to update the coverage offering while the service is running.
  • it allows to lazily load models to improve the scalability of the server.
  • it allows to do per-request handling of coverages. This for example allows to filter out coverages for specific users or groups.
  • it separates the configuration/metadata from the actual use of models.

The models should be accessed through the model provider. To this end, the method createModelProvider was added to the ALcdOGCWCSCommandDispatcherFactory. The default implementation TLcdOGCModelProvider maintains a cache for all decoded models.

The ALcdOGCWCSCommandDispatcherFactory allows you to plug in a ILcdWCSCapabilitiesProvider by overriding the createWCSCapabilitiesProvider method.

The methods createServiceMetaData and createCoverageOfferingList of ALcdOGCWCSCommandDispatcherFactory remain to exist but they will be no longer be abstract. Overwriting the new method to create the capabilities provider createWCSCapabilitiesProvider will be the preferred way of working instead of using the two previously mentioned methods.

In order to make sure this new interface is used in the WCS server, the following change was made:

  • TLcdWCSCommandDispatcherContext now contains the methods getCapabilitiesProvider() and getModelProvider() instead of the getCoverageOfferingList() and getServiceMetaData() methods. Usages of these methods can be replaced by the corresponding functionality on the ILcdWCSCapabilitiesProvider.

Upgrade considerationLuciadFusion

All WFS request handler implementations are no longer part of the public API:

  • TLcdWFSDescribeFeatureTypeRequestHandler
  • TLcdWFSGetCapabilitiesRequestHandler
  • TLcdWFSGetFeatureRequestHandler
  • TLcdWFSLockFeatureRequestHandler
  • TLcdWFSTransactionRequestHandler

Any unlikely usages of these concrete classes can be replaced as follows:

  • Decoration: in case you were wrapping the request handlers, you can generically wrap them instead, they offered nothing in addition to the ILcdRequestHandler interface.
  • setFeatureTypeList calls (which had inherent threading issues) can be replaced by creating/wrapping the ILcdWFSCapabilitiesProvider in the WFS command dispatcher factory. This is a much more powerful, easier and safer approach to achieve similar results. See also the other release note about ILcdWFSCapabilitiesProvider for more information.
  • The TLcdDataModel instances passed to TLcdWFSTransactionRequestHandler can now be configured in the WFS command dispatcher factory. See ALcdOGCWFSCommandDispatcherFactory#createTransactionContentDataModels(). By default, this method, amongst others, returns the AIXM 5.1 data model (if available).

Upgrade considerationLuciadFusion

LCD-4837

The ILcdWFSCapabilitiesProvider interface was added. This interface describes the capabilities of a WFS service. Advantages over ILcdWFSFeatureTypeList are that:

  • it allows adding/removing data without restarting the server
  • it allows to lazily load models to improve the scalability of the server
  • it allows to do per-request handling of feature type. This for example allows to filter out feature types for specific users or groups.

The ALcdOGCWFSCommandDispatcherFactory allows you to plug in a ILcdWFSCapabilitiesProvider by overriding the createWFSCapabilitiesProvider method.

In order to make sure this new interface is used in the WFS server, the following changes were made:

  • TLcdWFSCommandDispatcherContext now contains a getCapabilitiesProvider() method instead of the getFeatureTypeList(), getServiceProvider() and getServiceMetaData() methods. Usages of these methods can be replaced by the corresponding functionality on the ILcdWFSCapabilitiesProvider.
  • TLcdWFSRequestContext now contains a getCapabilitiesProvider() method instead of the getAvailableFeatureTypes method. Usages of this method can be replaced by a call to ILcdWFSCapabilitiesProvider#getFeatureTypes. It will also be necessary to handle the TLcdWFSServiceException that is thrown by this method (during a request, this exception should not be caught).
  • The TLcdWFSFilteredModelFactory constructor now doesn't take any parameters as input anymore.
  • ALcdOGCWFSCommandDispatcherFactory#createFilteredModelFactory now takes an ILcdWFSCapabilitiesProvider as argument instead of an ILcdWFSFeatureTypeList.

Upgrade considerationLuciadFusion

The interfaces ILcdRequest and ILcdResponse have been extended with additional methods that are useful in the context of conditional get requests. The methods were already available on the concrete implementations for which internally instance of and casting was done to achieve the desired behavior.

This change affects users that have implemented ILcdRequest and ILcdResponse themselves. There is no need to implement these interfaces yourselve though as there are implementations available within the Luciad product.

Upgrade considerationLuciadFusion

The interfaces ILcdRequest and ILcdResponse have been extended with additional methods that are useful in the context of conditional get requests. The methods were already available on the concrete implementations, but are now accessible from the interface without the need for downcasting.

This change affects users that have implemented ILcdRequest and ILcdResponse themselves. There is no need to implement these interfaces yourself though as there are implementations available within the Luciad product.

Upgrade considerationLuciadFusion

TLcdWMTSModelDecoder now returns models with has-an-image domain objects instead of just an image. So the element(s) returned by ILcdModel.elements() no longer extend from ALcdImage, but rather contain a reference to such an ALcdImage. In certain conditions, the returned TLcdWMTSModelDescriptor also implemented ILcdEarthModelDescriptor, this is no longer the case. Because of the has-an-image approach, the WMTS client can now support multidimensional data such as GRIB or NetCDF that varies over time, altitude or other dimensions (see also ILcdMultiDimensionalModel). By applying a dimensional filter (ILcdMultiDimensionalModel.applyDimensionFilter), you can now change one or more values of of a multidimensional data model, and see the underlying image change accordingly. This means the behavior of serving NetCDF and GRIB data through a WMTS is very similar to opening it locally. This change does not affect any typical painting related code, the regular approaches remain to work as expected (e.g. TLcdGXYImagePainter or TLspRasterLayerBuilder). Should direct access to the image data be needed, please refer to ALcdImage.fromDomainObject.

Upgrade considerationLuciadFusion

The interfaces ILcdKVPRequest and ILcdXMLRequest have been merged within their common super-interface ILcdRequest. Consequently, these interfaces have been removed. This change makes the request interface more in line with the well-known Servlet API, and makes it easier to use. It also allows to deal with other content types in the future, and resolves an API dependency on JDom XML parsing. In addition, extra methods are exposed on ILcdRequest to have access to more information such as the attributes and the user principal.

As a consequence the interface ILcdRequestHandler and the abstract class ALcdOGCCommandDispatcher (and their implementations) have been updated accordingly. They now have a single method void handleRequest(ILcdRequest aRequest, ILcdResponse aResponse) throws TLcdOGCServiceException which is used for all requests. This further simplifies the request handling, allowing implementations to decide if they want to differentiate on the content type of the request or not.

Code that used to differentiate based on the content type of the request (e.g. instanceof ILcdKVPRequest or ILcdRequestHandler.handleRequest(ILcdKVPRequest ...)) needs to be adapted, the compiler will flag these places. Typical OGC service customizations had no need to do this. The type of request can now be determined using the content type of the request, utility methods TLcdServletUtil#isKVPRequest and TLcdServletUtil#isXMLRequest are available.

Upgrade considerationLuciadFusion

ILcdInitializationConfig now exposes an ILcdServletContext object. This servlet context object contains the configuration for a group of servlets, while ILcdInitializationConfig contains the configuration for a single servlet. This is useful for example to configure a shared cache between servlets. This change normally does not affect anyone as the implementation of this interface is provided by the product.

Upgrade considerationLuciadFusion

Server-side support for coverages of type VECTOR has been superseded with other mechanisms. Please refer to the Fusion migration guide for more information.

This means that it is no longer possible to read existing VECTOR coverages anymore. This also means it is no longer possible to fuse data as VECTOR coverages anymore.

Upgrade considerationLuciadFusion

Support for coverages of type VECTOR has been superseded with other mechanisms. Please refer to the Fusion migration guide for more information.

This means that it is no longer possible to read existing VECTOR coverages anymore. This also means it is no longer possible to fuse data as VECTOR coverages anymore.

Upgrade considerationLuciadFusion

Client-side support for coverages of type VECTOR has been deprecated in favor of other mechanisms for publishing vector data. Please refer to the Fusion migration guide for more information.

This means that LuciadFusion clients remain able to read existing VECTOR coverages. We recommend publishing vector data through the OGC WFS protocol.

In the context of this change, these API changes were done:

  • The ELfnDataType#VECTOR field has been deprecated.
  • Classes related to ELfnDataType#VECTOR coverages have been deprecated.

Upgrade considerationLuciadFusion

The PNG encoder implementation TLcdGXYViewPNGEncoder now uses the ObjectPlanet PNG encoder, which is part of an additional 3rd party library. The ObjectPlanet PNG encoder library is a lot faster than the previously used JAI based PNG encoding.

As a result the implementation of TLcdGXYViewPNGEncoder.encodeGXYView declares it can throw an IOException. The interface ILcdGXYViewEncoder.encodeGXYView already declared the IOException on its method. This affects only users using the concrete class TLcdGXYViewPNGEncoder, which is very unlikely.

Upgrade considerationLuciadFusion

LCD-450
The class ALcdWMSProxy no longer implements the interface ILcdDataSource. ILcdDataSource implementations are expected to not contain business logic and they are expected to be modeled such that they can be serialized, which was not achievable for ALcdWMSProxy. The class TLcdWMSDataSource provides a proper ILcdDataSource implementation for a WMS client proxy object.

Upgrade considerationLuciadFusion

The dependency on the Jackson library changed from version 1 to 2. In case you had code written directly to this library, you can keep on using Jackson 1 and 2 together as they have separate namespaces: org.codehaus.jackson and com.fasterxml.jackson respectively. Please refer to the library documentation for more information about this change.

Upgrade considerationLuciadFusion

LCD-8782
Various protected fields in the core point and bounds classes have been made private. They were already clearly documented that they should not be accessed directly.

Changed classes and fields:

If you access any of these fields, you will now get a compilation error. Each of the fields has an alternative method that you should use.

Upgrade considerationLuciadFusion

LuciadFusion can not support legacy AIXM 5.0 anymore. AIXM 5.0 was introduced in 2007 by FAA and Eurocontrol as an intermediary to validate a new approach. This has lead to the creation of the official AIXM 5.1 standard in 2010, which of course remains supported, together with AIXM 3.3 and 4.x.

Upgrade considerationLuciadFusion

LCD-8698

Proguard's jar-merging capability is no longer supported. Proguard merges .jar files by simply adding all files contained inside multiple jar files in a single jar file, not handling duplicate file names. This creates issues with the contents of the META-INF directories, present in every jar file. Most notably, the contents of the META-INF/services directory must be preserved as of now.

To know if you are affected or not, search your configuration files for the '-outjars' Proguard option. If it specifies a directory name, you are not affected. If it specifies a file name, you are affected. You can solve it by changing the file name into a directory name, and update the remainder of your build script to work with that directory rather than a single file. This avoids using Proguard's jar-merging; it now obfuscates and copies every jar file separately into the output directory. All example build scripts were updated to do so.

Should you not make this change, existing projects will keep on working. When starting to use new 2017.0 functionality, you may experience that not all services (model decoders, layer factories etc.) are found after deploying your application.

Our product code (com.luciad.*) started to make use of TLcdServiceLoader in certain places (identical to java.util.ServiceLoader), such as the default WMS server configuration. Previously, it was only used by sample code (samples.*). This allows for many benefits, now and in future versions, to pick up optional dependencies. For example, the default WMS server may automatically pick up the MrSID data format if you installed it.

These so called 'services' are listed in files in the META-INF/services directory of various jar files. Distinct jar files use the same file names, as prescribed by ServiceLoader. When deploying your application using Proguard, as our example deployment scripts do, care must be taken to disable its jar-merging capability which does not correctly handle those services files (see also https://sourceforge.net/p/proguard/feature-requests/94/). This can be done by specifying the name of a directory instead of a file for the -outjars property. Proguard then no longer attempts to merge the jar files, but instead obfuscates them all individually and places them in the output dir. Should jar-merging still be required, we recommend using an existing technology that supports services files, as most do.

Upgrade considerationLuciadFusion

The ILcdRequest interface has been extended with a few additional methods. It provides access to the current authenticated user, if any authentication is taking place. It also allows to retrieve programmatically set attributes to pass on information. As instances of this interface are created internally, you are normally not affected by this change.

Upgrade considerationLuciadFusion

It is now possible to make ILcdGXYView implementations behave synchronously. This can be enabled or disabled by using the setAsynchronousAllowed method on the ILcdGXYView implementations.

The isAsynchronousAllowed method was added to the ILcdGXYView interface to make sure layers/painters/... can detect if asynchronous behavior is allowed. This can lead to a compile error for custom ILcdGXYView implementations. The compile error can be solved either by delegating to an other view, or by implementing this method when no delegate is available. A basic implementation would be to always return true or false.

The TLcdGXYViewBufferedImage and TLcdGXYViewPlanarImage and their extension now don't allow asynchronous painting/operations by default. The previous behavior can be restored by calling view.setAsynchronousAllowed(true).

Upgrade considerationLuciadFusion

ILspLayer can have now post-processing effects with a TLspLayerStyle. TLspLayerStyle styles a layer as a whole contrary to ILspStyler or ALspStyle that perform the styling per object. TLspLayerStyle can be set and retrieved with the newly added methods ILspLayer#setLayerStyle(TLspLayerStyle) and ILspLayer#getLayerStyle(). For layers built by TLspShapeLayerBuilder, you can also set the layer style with ALspLayerBuilder#layerStyle(TLspLayerStyle). You can now set a TLspLayerStyle on a Lightspeed layer to
  • change the transparency of the entire layer
  • perform color conversions on the fly. For instance, you can convert an entire layer to greyscale.
  • adjust the brightness and the contrast of each pixel.
  • swap colors on the fly.

Upgrade considerationLuciadFusion

All usages of ILcdDataSourceModelDecoder in the API were removed and replaced by ILcdModelDecoder. This affects the ILfnDataSourceModelDecoderFactory interface and its implementations. Compile errors can be fixed by using ILcdModelDecoder instead.

Upgrade considerationLuciadFusion

ILcdModelDecoder now supports decoding ILcdDataSource objects. More specifically, it now contains the canDecodeSource(ILcdDataSource) and decodeSource(ILcdDataSource) methods with a default implementation that adds support for the TLcdDataSource data source implementation. This means that it is not needed to implement or use ILcdDataSourceModelDecoder anymore, since you can now use ILcdModelDecoder instead.

Custom ILcdModelDecoder instances that override the methods with ILcdDataSource as argument, need to make sure they call the overridden method using super as well. Not doing so breaks the default support for TLcdDataSource.

Upgrade considerationLuciadFusion

Some thread names have been improved to facilitate debugging and profiling. If you were relying on any Luciad thread name (which is not recommended), adjust your code accordingly.

Upgrade considerationLuciadFusion

The fusion engine now doesn't support fusing multivalued data as MULTIVALUED coverages anymore. Support for MULTIVALUED coverages was very limited. You can still fuse multivalued assets as RASTER coverages, which is better supported.

In the context of this change, API changes were done:

  • The ALfnFormat class now doesn't contain an ILcdEarthMultivaluedProviderFactory anymore. This means that its constructors now don't accept such a parameter anymore. The getter and setter for this property was removed as well.
  • The ALfnFormat#newMultivaluedFormat methods were removed.
  • A similar change was done for TLfnFormat.
This also means that MULTIVALUED coverages can not be read anymore by fusion clients. In order to upgrade the tile store, the assets that were used to create these coverages should be refused to a RASTER COVERAGE.

Upgrade considerationLuciadFusion

Support for MULTIVALUED fusion coverages has been removed. This type of coverage was only used for GRIB files, but support for MULTIVALUED GRIB files had many limitations. Note that the fusion engine now supports the fusing of GRIB files to RASTER coverages, which is better supported.

This means that fusion clients will not be able to read existing MULTIVALUED coverages anymore. This can be resolved by re-fusing multivalued assets as RASTER coverages.

In the context of this change, these API changes were made:

  • The ELfnDataType#MULTIVALUED field was removed.
  • Several (deprecated) setAssetPart and addAssetPart methods were removed from TLfnRasterAssetMetadata.Builder. You can use the addAssetPart method that doesn't take any parameters instead.
  • The get/setParameter methods were removed from TLfnRasterCoverageMetadata.Builder. You can use the parameter methods instead.
  • Fields were removed from TLfnQuery.Property:
    • RASTER_ASSET_parameter_name
    • RASTER_ASSET_parameter_unit
    • RASTER_COVERAGE_parameter_name
    • RASTER_COVERAGE_parameter_unit
    These were only useful in the context of multivalued assets and coverages.

Upgrade considerationLuciadFusion

The Apache HttpClient library has been updated to version 4.5.2.

Upgrade considerationLuciadFusion

The Fusion engine now uses TLcdNetCDFModelDecoder to fuse GRIB models. GRIB models that are decoded using TLcdNetCDFModelDecoder can now be fused to an IMAGE, as well as to a RASTER coverage. The latter adds out-of-the-box support for dimension filters (for time, elevation or other dimensions) to GRIB coverages when visualizing them. This also means that the Fusion engine now doesn't support models that were decoded using TLcdGRIBModelDecoder anymore.

Upgrade considerationLuciadFusion

The signature of TLcdOpenFlightModelDecoder.createModelReference has been changed: the method is now allowed to throw an IOException. This allows the method to delegate to an ILcdModelReferenceDecoder instance.

Upgrade considerationLuciadFusion

TLcdSelectionSupport: the updateAppendedSelectionChanges method has been removed. It should not be necessary to call or override the method.

Upgrade considerationLuciadFusion

LCD-8456
TLspLonLatGridStyler#LabelPosition values were interpreted incorrectly. More specifically EAST was interpreted as WEST, and vice versa. This is now fixed.

Upgrade considerationData Connectivity Manager

Support for coverages of type VECTOR has been superseded with other mechanisms. Please refer to the Fusion migration guide for more information.

This means that it is no longer possible to read existing VECTOR coverages anymore. This also means it is no longer possible to fuse data as VECTOR coverages anymore.

Upgrade considerationData Connectivity Manager

LuciadFusion can not support legacy AIXM 5.0 anymore. AIXM 5.0 was introduced in 2007 by FAA and Eurocontrol as an intermediary to validate a new approach. This has lead to the creation of the official AIXM 5.1 standard in 2010, which of course remains supported, together with AIXM 3.3 and 4.x.

The following add-ons have been removed :TLcyAIXM5AddOn, TLcyLspAIXM5FormatAddOn. Any entry of these add-ons has to be removed from your addons.xml If you want to avoid warnings about missing codecs, you will need to resave your workspace.

Upgrade considerationData Connectivity Manager

The DCM now supports fusing GRIB data that was decoded using TLcyNetCDFFormatAddOn.

Because of this, the TLcyGRIBDecoderAddOn and TLcyLspGRIBFormatAddOn add-ons have been removed from the addons.xml and addons_gxy.xml files of the DCM. In order to restore the old GRIB add-on functionality, you can re-add these add-ons in the addons.xml and addons_gxy.xml files, and remove the GRIB file extensions (*.grib, *.grb, *.grib2, *.grb2, *.dat) from the TLcyNetCDFFormatAddOn.cfg file.

Upgrade considerationDatabase Connectors

LCD-9002
Upgraded the JDBC drivers to version 42.0.0. This new JDBC driver offers many improvements in terms of functionality, stability and performance. It also removes support for PostgreSQL 8.1, which has been end-of-life since 2011. If you still use PostgreSQL 8.1, we recommend you update your database to the latest possible version.

Upgrade considerationWeather & Environment Standards

TLcdGRIBModelDecoder, TLcdGRIB1ModelDecoder and TLcdGRIB2ModelDecoder have been deprecated. Better support for GRIB files has been added to TLcdNetCDFModelDecoder, including support for ALcdImage and filtering on time/vertical or other dimensions for GRIB files.

Upgrade considerationAviation Standards

LCD-8780
TLcdDAFIFLayerConfiguration instances built with the default constructor now have more useful default styling properties, instead of painting all geometry in black. As this configuration is used by the TLcdDAFIFDefaultLayerFactory, it now also produces layers with more sensible default styling. Customizing the styling remains possible as before.

Upgrade considerationAviation Standards

LCD-8780
TLcdARINCLayerConfiguration instances built with the default constructor now have more useful default styling properties, instead of painting all geometry in black. As this configuration is used by the TLcdARINCDefaultLayerFactory, it now also produces layers with more sensible default styling. Customizing the styling remains possible as before.

Upgrade considerationAviation Standards

TLcdAIXMDefaultLayerFactory#isCreateLayerTreeNodes now returns true by default. This means that by default, ILcdLayerTreeNode instances will be created instead of (deprecated) ILcdGXYLayerList instances. This previous behavior can be restored by calling setCreateLayerTreeNodes with false as argument.

Upgrade considerationAviation Standards

TLcdARINCDefaultLayerFactory#isCreateLayerTreeNodes now returns true by default. This means that by default, ILcdLayerTreeNode instances will be created instead of (deprecated) ILcdGXYLayerList instances. This previous behavior can be restored by calling setCreateLayerTreeNodes with false as argument.

Upgrade considerationAviation Standards

LCD-8432
The behavior of TLcdProcedure3DGeometryCalculator has been modified to continue to climb or to descend depending of the type of procedure (IAP, STAR, SID) and to more align with reality.

Upgrade considerationAviation Standards

Support for the legacy AIXM 5.0 format has been discontinued. AIXM 5.0 was introduced in 2007 by FAA and Eurocontrol as an intermediary to validate a new approach. This has lead to the creation of the official AIXM 5.1 standard in 2010, which of course remains supported, together with AIXM 3.3 and 4.x. Any reference to classes in the com.luciad.format.aixm5 package need to be removed (not com.luciad.format.aixm51).

Upgrade considerationDefense Standards

When decoding a .THF file, the TLcdUSRPModelDecoder now returns ILcdModelTreeNode instances by default, instead of TLcdModelList instances. ILcdModelTreeNode's have many advantages such as the ability to mix sub-models with different coordinate systems, and have built-in GXY layer factories to support them. If needed, this change can be reverted using TLcdUSRPModelDecoder#setCreateModelTreeNodes.

Upgrade considerationDefense Symbology

ELcdNVG20WellKnownUnitOfMeasure has been replaced by the more flexible TLcdNVG20UnitOfMeasure. As a result, TLcdNVG20SimpleField#setUnit and TLcdNVG20SimpleData#setUnit are now easier to use and less error-prone, because they only accept TLcdNVG20UnitOfMeasure values instead of an ELcdNVG20WellKnownUnitOfMeasure or String value. You can replace ELcdNVG20WellKnownUnitOfMeasure values by the equivalent static fields in TLcdNVG20UnitOfMeasure. You can replace String values with a constructor call to TLcdNVG20UnitOfMeasure.

Upgrade considerationDefense Symbology

The symbology service has moved from LuciadRIA to LuciadFusion. If LuciadFusion is started, the symbology service is automatically started. The optional component Defense Symbology needs to be present for the symbology service to return military icons. If the Defense Symbology component is not present, a yellow circle is returned as fallback icon.

You can find more explanation on the configuration of the symbology service within the LuciadFusion Platform Deployment Guide document.

Upgrade considerationInfrastructure Standards

The servlet api has been updated to v3.1.0. This only affects customers using the deprecated TLcdDGNMicroStationServlet.

Upgrade considerationMaritime Standards

LCD-7481

ILcdS57Identifier now has a new method getLongName. It returns the "Long Name" of the object, or -1 if unknown.

The “Long Name” is also known as "feature object identifier", or LNAM. It is a representation of the FOID (Feature Object Identifier) fields. More specifically, it is a "binary concatenation" (FIDS << 48) | (FIDN << 16) | AGEN, where AGEN is Producing Agency, FIDN is Feature Identification Number and FIDS is Feature Identification Subdivision.

Normally, you should implement this interface yourself, so will have no upgrade problems. TLcdS57Identifier has a new overloaded constructor that you can use should you need to create an identifier with a long name yourself.

Upgrade considerationMaritime Standards

LCD-6152

TLcdS52GXYPainterProvider now allows to enable anti-aliasing for all objects, and not only icons. See TLcdS52GXYPainterProvider#setAntiAliasing(). As a consequence, TLcdS52GXYLayerFactory#setAntiAliasing() now also affects lines, and not only icons. When passing true for the antiAliasing parameter of the TLcdS52ProductConfiguration constructor, its createGXYPainterProvider() method will create a TLcdS52GXYPainterProvider with anti-aliasing enabled.

Anti-aliasing is now enabled by default for TLcdS52GXYPainterProvider.

2016.1

2016.1.33

ImprovementLuciadFusion

LCD-9098
The native touch library now also supports touch events for views inside a sun.awt.windows.WEmbeddedFrame.

ImprovementLuciadFusion

LCD-9059
Added the possibility to configure a connection timeout and read timeout in TLcdInputStreamFactory. These timeout will be applied to any URLConnection opened by the factory.

ImprovementLuciadFusion

LCD-9028
A new optional WMTS servlet configuration parameter "request.baseUrl" has been added to the deployment descriptor of the Fusion server, allowing to manually set a base URL for the WMTS requests listed in the capabilities.

ImprovementData Connectivity Manager

LCD-8856

You can now set your S63 Customer System ID through the TLcyS63FormatAddOn.s63CustomerSystemID configuration setting of the S-63 add-on: see TLcyS63FormatAddOn.cfg.

Alternatively, you can use a JVM system property: -Dcom.luciad.format.s63.s63CustomerSystemID=mys63id.

The setter method or Lucy/DataConnectivityManager setting take precedence over any system property.

See TLcdS63UnifiedModelDecoder.setS63CustomerSystemID() for more information.

ImprovementRadar Connectors

LCD-8883
When trying to visualize a high resolution radar, it can occur that the radar data is not shown in the view. This occurs when not enough texture memory is available (e.g. not enough GPU memory or when using a 32bit JVM). Now a RuntimeException will be thrown in this situation, to make clear what is causing the problem.

Bug fixLuciadFusion

LCD-9101
Fixed a memory leak in TLcdGXYImagePainter. This memory leak could occur when setting a ALcdImageOperatorChain on the painter. This memory leak is most easily triggered when using an SLD with a color map to paint the image data.

Bug fixLuciadFusion

LF-1100
The fusion engine easily failed when fusing large image files with an SLD with a color map next to it. This was cause by too much memory being allocated temporarily and the CPU spending too much garbage collecting. This could result in an OutOfMemoryException. An other cause was a memory leak during raster painting, LCD-9101.

Bug fixLuciadFusion

LCD-9099
TLcdColorMapCustomizer: the layout of the labels was wrong when you removed or added a level to the color map.

Bug fixLuciadFusion

LCD-8964
Fixed a possible deadlock in TLspLabelPainter when using an ALspStyleTargetProvider that returns HTML formatted strings.

Bug fixLuciadFusion

LCD-8319
TLcdGeoJsonModelDecoder would indicate it could decode a folder named "geojson". As a result, the decoder sample and Lucy added a button in the file chooser to load the whole directory, but loaded only the first file.

Bug fixLuciadFusion

LCD-9065
The SLD label painters (TLcdSLDFeatureTypeStylePainter and TLcdSLDRulePainter could sometimes throw an unexpected runtime exception for certain label location indices. These cases are now handled more gracefully, for example using a TLcdNoBoundsException for the labelBoundsSFCT method.

Bug fixLuciadFusion

LCD-9047
Improved performance when painting stripped GeoTIFF files with TLcdGXYImagePainter.

Bug fixLuciadFusion

LCD-9055
TLcdScaleFormat used to return and accept Double.NaN. Setting Double.NaN as scale on a view could result in unexpected behavior. This has been fixed by adjusting the format to refuse this value.

Bug fixLuciadFusion

Fixed an issue where, in some cases, displaying point-sampled raster data caused exceptions.

Bug fixLuciadFusion

LF-1098
Windows network paths could be handled incorrectly when creating asset metadata from NetCDF or S57 catalogue data located.

Bug fixAviation Standards

LCD-9080
Some files without way points could provoke Null Pointer Exception. This has been fixed.

2016.1.32

Bug fixLuciadFusion

LCD-8952
Editing in a Lightspeed view no longer invalidates multi-object handles if an unrelated change has occurred in another part of the view. This includes adding and removing of layers, making layers visible and invisible, and changing the editing state of layers that are not being edited.

Bug fixLuciadFusion

LCD-9044
The following methods now also return a non-null result when the TLcdHasGeometryAnnotation was added on a super type of the domain object's data type:
  • ALcdShape#fromDomainObject
  • ALcdImage#fromDomainObject
  • ALcdBounds#fromDomainObject

Bug fixWeather & Environment Standards

LCD-9053
TLcdNetCDFModelDecoder#discoverDataSources could return ILcdDataSource instances that can not be decoded.

2016.1.31

ImprovementLuciadFusion

LCD-9028
A new optional servlet configuration parameter "request.baseUrl" has been added to the deployment descriptor of the WMS, WFS and WCS, allowing to manually set a base URL for the service requests listed in the capabilities.

ImprovementLuciadFusion

LCD-9028
A new optional servlet configuration parameter "request.baseUrl" has been added to the deployment descriptor of Luciad's OGC services, allowing to manually set a base URL for the service requests listed in the capabilities.

ImprovementLuciadFusion

LCD-9027
TLcdWKTReferenceParser now supports WKT Strings with the EUREF89 datum.

ImprovementLuciadFusion

LCD-8495
Added support for EPSG references based on the GDM2000 datum. This includes references 3375-3385, 4742 and 4920.

Bug fixLuciadFusion

LCD-8937
Fixed a problem with KMZ models where the resources are located relative to a non-rooted KML-file inside the KMZ archive. These are now correctly discovered during decoding.

Bug fixLuciadFusion

LCD-9013
Fixed an issue that could cause a ConcurrentModificationException while painting a vector coverage in a Lightspeed view.

Bug fixDefense Symbology

LCD-9032
Fixed issue where the halo thickness/color of the movement direction arrow didn't get updated properly.

Bug fixS-63

LCD-9022
Fixed an issue where cells without permit were being loaded when SENC caching is enabled. The red cell outlines for these cells was shown. The loading would fail because there is no permit, causing the ILcdS57InvalidCellExceptionHandler to be called. Instead, these cells are now skipped during the initial decode, as when SENC caching is not enabled.

2016.1.30

ImprovementDefense Symbology

LCD-9000
Improve painting of unique designation in GXY for Bridge symbol.

Bug fixLuciadFusion

LCD-8981
TLcdGeoTIFFModelDecoder did not handle GeoTIFF files using the ModelTransformationTag tag correctly. This resulted in incorrect positioning and visualization of the data.

Bug fixLuciadFusion

LCD-8939
TLcdCGMModelDecoder: The conjugate axis defining an ellipse were assumed to be the main axis. Now the decoder correctly calculates the main axis based on the conjugate axis.

2016.1.28

Bug fixLuciadFusion

LCD-8931
The native touch library now has two system properties to tweak its behavior. Refer to TLcdTouchDevice for more information.

Bug fixAviation Standards

LCD-8984
TLcdARINCModelDecoder#canDecodeSource is now more robust against non-arinc txt files.

Bug fixDefense Symbology

LCD-8976
Fixed typo in possible values for MS2525c.

2016.1.27

ImprovementLuciadFusion

LCD-8948
TLcdColorMapCustomizer: it is now possible to change the text color and font by recursively iterating through the component's children and calling setForeground/setFont.

ImprovementDefense Symbology

LCD-8945
Added the possibility to display the unique designation (name) property of the Bridge symbol (6.X.4.12.3) for MS2525c

Bug fixLuciadFusion

LCD-8953
The SLD WMS capabilities XML Schema sld_capabilities_1_3_0.xsd delivered with the WMS server contained a schema location path that was incompatible with Spring Boot.

Bug fixLuciadFusion

LCD-8951
Fixed an issue that would cause KML files where all the elements would only have a start or end bounds, to incorrectly report the global time bounds for that renderable model.

Bug fixLuciadFusion

LCD-8881
The default SLD label color in GXY views was not correctly set to black.

Bug fixDefense Symbology

LCD-8950
Fixed issue where an exception got thrown when viewing a custom symbol with a 3d geometry in a 3d view.

Bug fixDefense Symbology

LCD-8946
Fixed issue where an exception got thrown when creating TTA-106 symbols under hierarchy code 1.X.3.1.4.

2016.1.26

ImprovementLuciadFusion

LCD-8927
TLcdLoggerFactory can now handle comments in its configuration file.

ImprovementLuciadFusion

LCD-8851
TLspPlotStyle: TLspPlotStyle#asBuilder now allows to reconfigure the color model.

ImprovementLuciadFusion

LCD-7442, LCD-8938
It is now possible to customize the tile grid used by the tiled WMS painters for GXY and Lightspeed views. The tile grid can be specified through a newly added constructor in TLcdGXYTiledWMSProxyPainter and TLspTiledWMSProxyPainter. Customizing tile grids can be useful to align with a server-defined tile grid used for caching of requests.

ImprovementGraph and Routing Engine

LCD-8869
The network.numeric sample now has the option to save changes of the graph.

ImprovementAviation Standards

LCD-8944
When requesting the altitude limits of an airpsace with invalid data, the error has now a meaningful message.

Bug fixLuciadFusion

BlackLimeLookAndFeel: an indeterminate JProgressBar having its value set to the maximum now shows up. Before, such progress bars being in the indeterminate, finished state remained all black.

Bug fixLuciadFusion

LCD-8890
When the optional material attribute of a geometry element was missing a NullPointerException was thrown. Now a default styling will be applied, when there is no material defined.

Bug fixLuciadFusion

LCD-8906
Some combinations of expand, crop and resize operations resulted in exceptions for some image sizes.

Bug fixGraph and Routing Engine

LCD-8871
TLcdPartitionedShortestRouteAlgorithm: The calculated shortest route could contain duplicate nodes.

Bug fixDefense Symbology

LCD-8941
Added disclaimer key to the domain json files. This is to notify the users that these files are for internal use only and shouldn't be modified.

2016.1.25

ImprovementLuciadFusion

The WCS server now uses EPSG:4326 as fallback in case the data's native reference does not have an EPSG representation.

ImprovementLuciadFusion

LCD-8904
TLcdEPSGReferenceParser now supports coordinate references based on the China 2000 datum (CGCS2000).

Bug fixLuciadFusion

LCD-8911
TLspTextStyle: Text with trailing white spaces appeared to be stretched.

Bug fixLuciadFusion

Fixed an issue that would prevent overlay components on a TLspExternalView from updating correctly in applications that use more than one view.

Bug fixLuciadFusion

LCD-8867
TLcdIconFactory did not support all available Locales. This could result in exceptions or the creation of the wrong icons.

Bug fixLuciadFusion

LCD-8893
Fixed a NullPointerException that could occur during painting when logging is enabled.

Bug fixAviation Standards

LCD-8916
TLcdDAFIFModelDecoder did not close all opened inputstreams during decoding. This has been fixed.

2016.1.24

ImprovementS-63

LCD-8856

You can now set your S63 Customer System ID through a JVM system property: -Dcom.luciad.format.s63.s63CustomerSystemID=mys63id.

In Lucy, you can use the TLcyS63FormatAddOn.s63CustomerSystemID add-on configuration setting: see TLcyS63FormatAddOn.cfg.

The setter method or Lucy setting take precedence over any system property.

See TLcdS63UnifiedModelDecoder.setS63CustomerSystemID() for more information.

Bug fixLuciadFusion

LCD-8862
TLcdKML22ResourceProvider: Fixed resolution of links to URL's with spaces in them. These are now properly encoded as URL safe strings.

Bug fixLuciadFusion

LCD-8471
In some cases, the boundedBy property of a GML model implementation would not be calculated automatically.

Bug fixLuciadFusion

LCD-8885
Some datums returned by TLcdGeoidGeodeticDatumFactory returned NaN heights instead of throwing an exception when not including lcd_geoid_resources.jar on the class path.

Bug fixLuciadFusion

LCD-8884
In some cases, TLspOnPathLabelingAlgorithm didn't calculate a location for all labels. This could happen for example when using a data set where part of the objects don't have any labels.

Bug fixDatabase Connectors

LCD-8887
The default value (0) for empty cells used by the Georaster decoder was incompatible with elevation data and caused issues when generating a color map. Unless overridden by the metadata, Short.MIN_VALUE is now returned for elevation data. The behavior for non-elevation data is unchanged.

Bug fixDatabase Connectors

LCD-8886
The TLcdOracleGeorasterModelDecoder incorrectly replaced the model descriptor of model trees containing only a single leaf model. The correct model descriptor is now used.

Bug fixAviation Standards

LCD-8878
ATS Route Segments that have rhumbline as type of path are now correctly visualized in Lightspeed views.

Bug fixDefense Symbology

LCD-8813
Fixed bug where a military symbol's editing geometry lost its constraints when provided by a custom ALspStyleTargetProvider. To be clear: when providing a custom object in the ALspStyleTargetProvider, no constraints will be applied on the editing geometry. The constraints will only be applied when the ALspStyleTargetProvider provides ILcdAPP6ACoded or IcdMS2525BCoded objects as edit targets.

2016.1.23

Bug fixLuciadFusion

LF-1086
In some cases, TLfnFileSystemTileStore failed to delete resources. This now works more robustly.

2016.1.22

ImprovementLuciadFusion

LCD-8806
TLcdVVJPanel#setSensitivity now allows configuring the input sensitivity when interacting with altitude points and/or the vertical cusor.

ImprovementLuciadFusion

LCD-8860
GML decoding: improved unit-of-measure related logging.

Bug fixLuciadFusion

LCD-8863
Fixed a quadratic complexity issue in the TLcdLabelLocations class. This could affect label painting performance when painting many labels (1000+) at the same time.

Bug fixLuciadFusion

LCD-8839, LCD-8849
TLcdClusteringTransformer: Fixed event handling when a domain object in the original model changed. This fixes cases where domain objects removed from the original model were being kept in the clustered model and cases where model change events were fired on the original model for unrelated domain objects.

Bug fixLuciadFusion

LCD-5618
Fixed an issue where touch events were sometimes not delegated from TLspAWTView's overlay panel to the view. This was especially noticeable when balloons were open.

Bug fixLuciadFusion

LCD-8854
Fixed an issue that could cause draped layers to flicker when looking at the horizon over mountainous terrain.

Bug fixDefense Symbology

LCD-8828
When the TTA-106 extension was enabled, the APP-6C domain model was overwritten by the TTA-106 domain model. This was not expected behaviour as TTA-106 is only an extension for APP-6A and APP-6B. It is not compatible with APP-6C. This has had side effect that you could not use APP-6C symbol codes on APP-6C layers when TTA-106 was enabled. This also broke the military symbology samples when TTA-106 was enabled. The APP-6C domain model is now no longer overwritten when TTA-106 is enabled.

2016.1.21

Bug fixLuciadFusion

LCD-8834
The WFS GetFeature request handler could trigger a NullPointerException in case the query included an OGC Filter with XPath expression and the resulting response was empty.

Bug fixLuciadFusion

LCD-8832
Using an SLD with an external graphic icon could lead to an OutOfMemory error in a Lightspeed view in case of frequent layer repaints.

Bug fixRadar Connectors

LCD-8728
TLcdASTERIXLiveDecoder is now more robust against initial ASTERIX category 240 records which differ significantly in azimuth resolution. Previously the radar could not initialize its parameters and as a result nothing would be visualized.

2016.1.20

Bug fixLuciadFusion

LCD-8822
TLcdGeoTIFFModelDecoder now takes the sampling mode (point vs. area-sampled) into account when deriving the bounds of the image. TLcdGeoTIFFModelEncoder now takes the sampling mode (point vs. area-sampled) into account when writing the bounds of the image.

Bug fixLuciadFusion

LCD-8819
Using TLspPinLineStyle didn't work correctly on the Mac OS X platform with NVIDIA graphics. In 2D, the line color was always black. In 3D, no pin was visible at all.

Bug fixAviation Standards

LCD-8829
TLcdAssociationBasedAirspace methods could run into a stack overflow. This has been fixed.

2016.1.19

ImprovementLuciadFusion

LCD-8803
GML decoding: improved SRS-related logging.

ImprovementLuciadFusion

LCD-8802
In 3D, visual artifacts related to z-ordering could occur when using the visual inspection controllers. This has been fixed.

ImprovementLuciadFusion

LCD-8797
TLspPinLineStyle.PinEndPosition now also has a CLOSEST_POINT_ON_EDGE position.

ImprovementLuciadFusion

TLspExternalView is a new ILspView implementation which can paint directly into an externally supplied OpenGL context (rather than creating a new context of its own). This is useful in cases where a Lightspeed view should be integrated with a non-Java application and windowing toolkit (e.g. a C++ application using Qt). The article How to integrate LuciadLightspeed in a C++ application on the Luciad Developer Platform provides more detailed information.

ImprovementLuciadFusion

LCD-8787
TLcdAdvancedMapRulerController#setAlwaysCreate allows creating measurements that start from existing measurements. If you don't set the flag, clicking or dragging an existing measurement edits that measurement. The javadoc has more information on how to add snapping behavior to this.

ImprovementLuciadFusion

LCD-8778
The WMS client's XML capabilities decoder now supports capabilities documents that contain style definitions at the end of a layer definition instead of at the standardized position defined by the WMS capabilities XML Schema.

ImprovementAviation Standards

LCD-8804
It is now possible to set the default srsName to the AIXM 5/5.1 model decoders that will be used to determine the model reference if neither the first AIXM message member, its possible envelope or the possible envelope of the AIXM message has a srsName attribute set.

Bug fixLuciadFusion

LCD-8766
Fixed an issue that caused the swipe and porthole controllers to appear jittery when zooming in and out in a 3D view.

Bug fixLuciadFusion

LCD-8805
TLcdResizeOp did not behave consistently in conjunction with TLcdExpandOp. In some cases this could result in an error when forcing visualization of high resolution data from a zoomed out perspective.

Bug fixLuciadFusion

Setting the overlay component of a TLspAWTView to invisible did not actually hide the child components that had been added to it.

Bug fixLuciadFusion

LCD-8812
When printing a 3D view, visual artifacts on the print could occur if the visual inspection controllers were used on the view. This has been fixed.

Bug fixLuciadFusion

LCD-8796
TLspShapePaintingHints.Builder#overlapResolution: When configuring the overlapResolution with ELspQualityHint.NICEST, the outlines of overlapping filled shapes were rendered incorrectly when the ALspStyler, configured on the layer, used other styles than TLspLineStyle and TLspFillStyle.

Bug fixLuciadFusion

LCD-8808
TLspLayerTreeNode#removeAllLayers() caused an AssertionError when running with assertions enabled.

Upgrade considerationLuciadFusion

LCD-8624
ALspStyleTargetProvider.StyleTargetType and ALspStyleTargetProvider#getStyleTargetTypes have been deprecated since they have no functional use.

2016.1.18

ImprovementLuciadFusion

LCD-8723
Reduced the amount of editing state events fired when incrementally selecting or deselecting shapes.

ImprovementTerrain Analysis Engine

LCD-8744
Support for image elevation data has been added to hypsometry.

ImprovementAviation Standards

LCD-8579
Altitude and Distance units of measure set through TLcdAltitudeUnit and TLcdDistanceUnit will be picked up and used in AIXM 5 calculation (ex: TLcdAIXM51VerticalStructurePart#getMaximumZ()). Also if a AIXM unit of measure (ex: TLcdAIXM51UomDistance) can not be converted, a warning will be logged.

ImprovementAviation Standards

LCD-6519
The XLinks support has been improved. XLinks pointing to the gml:identifier attribute are now resolved. Additionally the TLcdAIXM5LinkExpressionFactory and TLcdAIXM51LinkExpressionFactory have been added. You can override their compile method for custom xlinks resolution.

Bug fixLuciadFusion

LCD-8788
Setting a time instant or time interval on a TLcdWCSProxy domain object did not invalidate the loaded WCS image raster.

Bug fixLuciadFusion

LCD-8721
Prevented exception that could occur for 3D shapes when performing undo operations.

Bug fixLuciadFusion

LCD-8769
Fixed flickering for sample visual inspection controls overlay panels.

Bug fixLuciadFusion

LCD-8763
TLcdEllipsoidUtil#orientation2D could return an incorrect orientation for some polygons.

Bug fixAdvanced Raster Services

LCD-8781
The TLcdECWModelDecoder will now decode images with more than 4 bands. Only the first 3 bands will be available, as specified in the release note for LCD-6440.

Bug fixAviation Standards

LCD-8791
Fixed NullPointerException when painting route segments containing null curve extent property.

Bug fixAviation Standards

LCD-8784
LCD-7356 didn't take into account for Association based Airspaces and Airspace Corridors. This has been fixed.

Bug fixAviation Standards

LCD-8783
If you provide a SLD file for a custom datatype for 3D visualization, it is not anymore necessary to provide a SLD for this datatype for 2D.

Bug fixAviation Standards

LCD-8779
TLcdAssociationBasedAirspace.toString() could generate a stack overflow, which has been fixed.

2016.1.17

ImprovementLuciadFusion

LF-1075
TLfnFileSystemTileStore: performance improvement for adding a large amount of assets.

2016.1.16

Bug fixLuciadFusion

LCD-8761
TLspLabelPainter painted a frame/fill, even for empty labels, when using a TLspLabelBoxStyle.

Bug fixLuciadFusion

LCD-8759
When there was a general TileMatrix definition and a TileMatrixSetLink which defines row and column limits for the TileMatrix for a specific layer, WMTS client was requesting all the tiles in the TileMatrix for that layer. This was leading to performance problems since the client was requesting invalid tiles and having error messages from the server for each invalid tile.

Bug fixLuciadFusion

LCD-8754
Restored missing POM files for some native libraries (GEOS and the LizardTech Decoding SDK).

Bug fixLuciadFusion

LCD-8751
World scaled icons with a larger height than width, were difficult to select.

Bug fixLuciadFusion

LCD-8725
Improved referencing accuracy for image data with a small rotation.

Bug fixLuciadFusion

LCD-8720
Fixed a threading violation that could occur while editing polylines.

Bug fixDefense Standards

LCD-8732
The NITF decoder no longer relies on reflection to instantiate segments. This avoids issues caused by code optimizers removing seemingly unused constructors.

Bug fixDefense Symbology

LCD-8764
The label of some military graphics (mostly lines) were positioned incorrectly.

Bug fixDefense Symbology

LCD-8762
Fixed bug where a label of the "Line Of Contact" symbol ("G*G*GLC---****X") was painted, even when it was empty. This became apparent when using a custom military symbology label styler that adds a frame to the label using TLspLabelBoxStyle.

2016.1.15

Bug fixLuciadFusion

LCD-5810, LCD-7629
Improved performance and memory usage when processing or painting images that are not tiled or not tiled efficiently.

Bug fixLuciadFusion

LCD-8742
Fixed a WMS XML capabilities decoding regression (introduced by LCD-8001) that prevented the decoding of custom operations in the capabilities.

2016.1.14

ImprovementLuciadFusion

LCD-6858
TLcdSpeedUnit now includes miles/hour (mph).

ImprovementLuciadFusion

LCD-5185
TLcdGXYImagePainter: tiles at the current zoom level are now loaded first, without waiting for the tiles of coarser levels to load first.

ImprovementLuciadFusion

LCD-8477, LCD-6320
The SLD Feature Type Style decoder and encoder now support Feature Type Styles documents that define VendorOption key/value properties on a symbolizer. This information can be accessed in the API through the different symbolizer classes (for instance, TLcdSLDPolygonSymbolizer) via a new method getVendorOptions() and class TLcdSLDVendorOption.

ImprovementLuciadFusion

LF-1071
Performance improvement for the WMTS and LTS service when no S63 license is available. Tile requests can be a few 10's of milliseconds faster in that case, depending on the number of assets in a coverage.

ImprovementLuciadFusion

LCD-8469
TLsp3DIconStyle: It is now possible to define a minimum pixels size for a 3D icon. This minimum pixel size is only applied when world scaling is used. See TLsp3DIconStyle.Builder#minimumPixelSize}.

ImprovementLuciadFusion

LCD-3472
TLsp3DIconStyle: It is now possible to apply view scaling to a 3D icon. When using this type of scaling, the 3D icon will always have the same (pixel) size in the view. See TLsp3DIconStyle.ScalingMode#VIEW_SCALING}.

ImprovementLuciadFusion

LCD-8704
SLD graphic strokes now support the Gap property for external graphics. This property can be used to define the gaps between icons when they are used for a line stroke.

Bug fixLuciadFusion

LF-1046
Multidimensional WMS model was sometimes producing wrong tiles when applying different filtering values to the model in a short period of time.

Bug fixLuciadFusion

LCD-8734
Background raster layers were not always updated correctly when making changes to them.

Bug fixLuciadFusion

Improved the WMS XML capabilities decoding process by adding support for the format element inside LegendURL, StyleSheetURL and StyleURL elements.

Bug fixLuciadFusion

LCD-8715
TLcdGXYImagePainter level switch factor was incorrectly interpreted when painting ALcdMultilevelImageMosaics. which were only painted when you zoomed in.

Bug fixLuciadFusion

LCD-8712
TLspRasterLayer: fixed artifacts in terrain when the view's GL resource cache is close to its limit.

Bug fixLuciadFusion

LCD-8705
Fixed a WMS XML capabilities decoding issue that caused a decoding failure in case of WMS layer style definitions containing LegendURL, StyleSheetURL and/or StyleURL elements.

Bug fixLuciadFusion

LCD-8697
TLcdGXYBoundsPainter#boundsSFCT now throws a TLcdNoBoundsException if its bounds are not defined.

Bug fixDefense Symbology

LCD-8707
Uncertain affiliated symbols such as Assumed Friend, Suspect, Pending are displayed with a black and white dotted outline for APP6C. When the symbol is not filled and there is no hierarchy icon in it, there is no way to see the affiliation of the icon since it is only a frame with a black and white outline. With this fix, a symbol with an uncertain affiliation and an unfilled style is displayed with a dashed line whose color is the affiliation color.

Bug fixDefense Symbology

LCD-8707
Uncertain affiliated symbols such as Assumed Friend, Suspect, Pending are displayed with a black and white dotted outline for MS2525C and APP6B. When the symbol is not filled and there is no hierarchy icon in it, there is no way to see the affiliation of the icon since it is only a frame with a black and white outline. With this fix, a symbol with an uncertain affiliation and an unfilled style is displayed with a dashed line whose color is the affiliation color.

2016.1.13

ImprovementLuciadFusion

LCD-8692
It is now possible to configure the gamma value of a TLcdSLDRasterSymbolizer through its builder.

ImprovementLuciadFusion

LF-1061
The WMS server no longer advertises coverages as separate WMS layers if they are already advertised as part of a theme. This avoids duplicate WMS layer entries in the capabilities.

ImprovementLuciadFusion

LF-1060
The WMS server now advertises themes as retrievable (named) WMS layers, so that WMS clients can use them to easily get a map for all coverages part of a theme.

ImprovementLuciadFusion

LF-1021
Exceptions that happen on the server are now logged with the complete stack trace instead of with just the message.

Bug fixLuciadFusion

LCD-8701
Fixed a NPE that could occur when calculating the geodesic area after switching from 2D to 3D.

Bug fixLuciadFusion

LCD-8700
TLcdCGMModelDecoder: The wrong style was configured for the outlines of areas.

Bug fixLuciadFusion

LCD-2922
In the Tracking Camera Lightspeed sample, synchronous painting is now enabled on the track layer. This avoids jitter when model updates take longer than rendering a frame.

Bug fixLuciadFusion

LCD-8693
TLcdWFSProxyModel: when constructing a proxy model which does not contain GML elements, the model would re-query the server on each interaction in CACHE_ALL mode.

Bug fixLuciadFusion

LF-1067
IMAGE coverages containing ECDIS data could not be painted using the Fusion WMS server anymore.

Bug fixData Connectivity Manager

LF-1056
An IndexOutOfBoundsException could be thrown when pressing the Remove URI button in the Connext to Tile Store dialog.

2016.1.12

ImprovementLuciadFusion

LCD-8623
TLcdTransformingModelFactory now allows you to specify whether the transformed model should keep a spatial index. This means you can now avoid the cost of spatial indices when your data updates often.

ImprovementLuciadFusion

LCD-5185
TLcdEarthGXYRasterPainter: tiles at the current zoom level are now loaded first, without waiting for the tiles of coarser levels to load first.

ImprovementLuciadFusion

TLcdGXYImagePainter now supports asynchronous painting of non-quadtree structured ALcdMultilevelImageMosaics. However, all levels must have the same sampling mode.

Bug fixLuciadFusion

LCD-8686
TLcdTimeBounds: the hashCode and equals method implementations were not in sync, which is a violation of their contract.

Bug fixLuciadFusion

LCD-8682
Images painted asynchronously by TLcdGXYImagePainter were sometimes painted in the wrong color when zooming in. This has been fixed.

Bug fixLuciadFusion

LF-1058
TLfnTileStoreProvider#getTileStore(URI) could sometimes return a tile store with an incorrect path on Windows.

Bug fixLuciadFusion

LCD-8676
Multidimensional WMS model was not exposing a vertical dimension whose name was not "DEPTH" or "ELEVATION". This was preventing the WMS Client to extract correct dimension information from a WMS source. Now the model exposes all dimensions of a WMS source.

Bug fixLuciadFusion

LCD-8647
Fixed an issue in TLcd2DBoundsIndexedModel when using "elementChanged" for elements with "undefined" bounds going to "defined" bounds.

Bug fixLuciadFusion

LCD-8661
World scaled icons with an anchor point other than the center of the icon were difficult to select.

Bug fixLuciadFusion

LCD-8632
The WMS client could not properly handle WMS layers with a max scale denominator value of Double.MAX_VALUE.

Bug fixLuciadFusion

TLcdColor.makeTransparentColor: now returns the actually requested color.

Bug fixLuciadFusion

LCD-8504
Fixed NPE that could occur when a secondary view is disposed.

Bug fixLuciadFusion

LCD-8241, LCD-8505
When multiple 3D views, with context sharing enabled, were used, the altitude exaggeration factor would not be applied correctly in all views.

Bug fixLuciadFusion

LCD-8631
The SLD raster styling capability of the WMS server sample could lead to empty image responses, due to data getting rendered asynchronously.

Bug fixLuciadFusion

LCD-8630
The SLD raster styling capability of the WMS server sample could not handle raster data of type ILcdRaster / ILcdMultilevelRaster / ILcdEarthTileSet if the data was not of the type ALcdImage.

Bug fixLuciadFusion

LCD-8630
SLD raster styles were not supported on ILcdRaster / ILcdMultilevelRaster / ILcdEarthTileSet data if the data was not of the type ALcdImage.

Bug fixAviation Standards

LCD-8637
TLcdAIXM51ValDistanceVertical.getValue() returns the correct value even when it is negative one.

2016.1.11

ImprovementLuciadFusion

LCD-8619
A stereoscopic Lightspeed view that can be used with 3D glasses has been added. See the javadoc of TLspViewBuilder#buildStereoscopicView and TLspStereoDeviceBuilder for more information.

ImprovementLuciadFusion

LCD-8435
The Maven deploy script now defines separate targets to deploy the Luciad core libraries, custom-built and publicly available third-party libraries. These targets can be called separately for users requiring more control over what gets deployed to the Maven repository. The default behavior of the Ant script and the wrapper shell scripts has remained unchanged and is to deploy all libraries and resources. A new target deploy:private and wrapper shell scripts deploy.private.sh|bat have been added to deploy only non-publicly available libraries (core and custom builds). Note that use of this target is not recommended and therefore not supported by Luciad.

Bug fixLuciadFusion

LCD-8604
TLsp3DIconStyle: When reusing a 3D icon style instance on a second view or layer, the 3D icon would not be visible in one of them.

Bug fixLuciadFusion

LCD-8605
TLspComplexStrokedLineStyle: When the elevation mode was set to ON_TERRAIN, shapes with non zero altitude were not draped correctly on the terrain.

Bug fixLuciadFusion

LCD-6249, LCD-8357
Fixed an issue where switching between 2D and 3D while editing a sphere or a dome would cause visual artifacts and glitches.

Bug fixLuciadFusion

LCD-8602
TLcdKML22BalloonContentProvider now respects the configured background color.

Bug fixDefense Symbology

LCD-8611
Setting Min/Max Altitude and Time From/To fields of Aviation Areas tactical graphs (MS2525b, App6-A and App6-B) was inconsistent. Now to set the Min/Max Altitude, you can use altitudeDepth modifier. For Time From/To, you can use dateTimeGroup and effectiveTime modifiers respectively.

2016.1.10

ImprovementLuciadFusion

LCD-8502
TLcdCGMModelDecoder: CGM closed arcs are now supported. Previously they were handled the same as open arcs.

ImprovementLuciadFusion

BlackLimeLookAndFeel now has slightly more prominent dialog borders. This is for example useful when a dialog shows on top of another dialog.

ImprovementLuciadFusion

LCD-8574
LCD-6476 caused a behavioral change in the decoding of references in GML documents, resulting in the interpretation of "http://www.opengis.net/gml/srs/epsg.xml#4326" as a lat-lon reference. To maintain compatibility with older WFS servers and other GML clients, this has been changed back to lon-lat. This lon-lat interpretation can also be activated in TLcdOGCModelReferenceParser by calling setParseGMLPrefixedEPSG4326AsLonLat(true).

ImprovementLuciadFusion

LCD-8581
The TLspEditController now only queries the layer editor for new edit handles when there has been an updated to any of the edited objects. (Previously, it would request new handles from the editor for every model change)

Bug fixLuciadFusion

LCD-8595
TLcdGML32Circle/TLcdGML31Circle did not expose a correct arc angle, which could lead to an incorrect visualization of these shapes.

Bug fixLuciadFusion

LCD-8577
BlackLimeLookAndFeel now supports custom background colors, for example in text fields. This for example means that the text fields in Lucy Map Centric now color red when an invalid value is entered.

Bug fixLuciadFusion

LCD-8575
Fixed an issue that could cause layers to temporarily stop updating if the system clock changed while the application was running.

Bug fixLuciadFusion

LCD-8555
Fixed an error that could occur when painting or querying image mosaic's with variable resolution.

Bug fixGraph and Routing Engine

LCD-8378
TLcdNumericGraphEncoder#exportGraph threw an exception with a message referring to the incorrect interface when an ILcdEdgeValueFunction was used with an order > 1, while it was not an ILcdComplexEdgeValueFunction.

Bug fixWeather & Environment Standards

LCD-8583
For some files with bounds with a width of a bit more than 360 degrees, a wrong code path was triggered to shift the view -180 degrees. This is fixed now.

Bug fixWeather & Environment Standards

LCD-8572
TLcdNetCDFModelDecoder could show irrelevant warnings for missing coverage info data.

Bug fixWeather & Environment Standards

LCD-8524
Disposing a NetCDF model didn't always dispose of its resources. It could leave files open, or not clean up temporary files.

Bug fixAviation Standards

LCD-8598
TLcdAIXM5VerticalStructurePart and TLcdAIXM51VerticalStructurePart getMinimumZ() and getMaximumZ() return the correct values.

Bug fixAviation Standards

LCD-8596
Standard meter altitude unit of measure doesn't provoke a Null Pointer Exception anymore in AIXM 5 and 5.1.

Bug fixAviation Standards

LCD-8553
Several fixes on DAFIFT decoding :
  • TLcdDAFIFTHoldingDecoder : empty turn direction is handled as not defined.
  • TLcdDAFIFTWayPointDecoder : doesn't fail on empty usage code.
  • TLcdDAFIFTAirspaceDecoder : logs errors instead of propagate them like other decoders.
  • TLcdDAFIFTVFRRouteDecoder : can return an empty model instead of null.
  • TLcdDAFIFTRunwayDecoder : a NullPointException has been fixed.

Bug fixAviation Standards

LCD-8549
TLcdARINCRunwayHandler will not throw a IndexOutOfBoundsException for runways without points.

Bug fixAviation Standards

LCD-8578
CM distance unit of measure doesn't provoke a Null Pointer Exception anymore in AIXM 5.1.

Bug fixAviation Standards

LCD-8233
TLcdARINCModelDecoder.canDecode is more robust.

Bug fixDefense Symbology

LCD-8593
Symbol icon labels were overlapping when the icon is small enough or the font is big enough.

Bug fixDefense Symbology

LCD-8594
Creating multiple symbols and then putting text modifiers to them in a multithreaded environment was causing exceptions. This has been fixed that symbols can be created and modified in a multithreaded environment.

2016.1.09

Bug fixLuciadFusion

LCD-8567
Fixed an inefficiency in the GetFeature request's XML encoding generation pipeline, which could cause performance reductions when performing GetFeature requests.

Bug fixLuciadFusion

LCD-7921
Fixed an issue in TLcdDatabaseModel that would cause a NullPointerException when adding elements to an empty database.

Bug fixLuciadFusion

LCD-8561
When BlackLimeLookAndFeel is used in combination with the JIDE docking framework (for example in Lucy), floating panels could not be resized properly.

Bug fixLuciadFusion

LCD-8554
TLsp3DIconStyle: When the styled domain objects were not an instance of ILcdShape the 3D icons would not be placed on or above the terrain correctly.

Bug fixLuciadFusion

LCD-8450
Fixed some corner cases where 3D terrain was not sufficiently detailed.

Bug fixLuciadFusion

LCD-8433
Removed GDAL dependency from Fusion Client.

Bug fixWeather & Environment Standards

LCD-8566
In rare cases, NetCDF files with a geodetic model reference had incorrect bounds, causing them to be painted at a different location than expected.

Bug fixDefense Symbology

LCD-8530
MS2525b: the crossed circle icon of "Forward Edge Of The Battle Area" was being affected by the font which set via ILcdMS2525bStyle#setLabelFont. This has been fixed that the icon is not affected anymore.

Bug fixDefense Symbology

LCD-8497, LCD-8498
Fixed minor visual defects for APP6A and MS2525C icons.

2016.1.08

ImprovementLuciadFusion

LCD-8544
Improved the robustness of the XML decoders when parsing invalid properties.

Bug fixLuciadFusion

LF-1052
TLfnTileStoreModelDecoder#discoverDataSources() could be blocked when an error occurs.

Bug fixLuciadFusion

LCD-8541
The default in-path labeling algorithm for Lightspeed views didn't handle ILcdCompositeCurve instances well. This could cause labels to be places outside the labeled objects, for example when using GML or labeling WFS data.

Bug fixLuciadFusion

LCD-8548
Fixed an issue related to the internal WMS auto-detection mechanism to determine the correct axis order for the EPSG:4326 (WGS 84) reference in case of a WMS 1.3.0 server; the determined axis order was not correctly used for all layers.

Bug fixLuciadFusion

LCD-8538
Fixed error when visualizing mixed color-measurement data.

Bug fixLuciadFusion

LCD-8531
TLcdGeoJsonModelDecoder: the instance class was not configured on the generated data type.

2016.1.07

ImprovementLuciadFusion

LCD-8388
TLcdGeoJsonModelDecoder: It is now possible to decode GeoJSON data with custom geometry by overwriting TLcdGeoJsonModelDecoder#parseCustomGeometry.

Bug fixLuciadFusion

LCD-8528
A density layer would not update when there was a change on the filter that was configured on the layer.

Bug fixLuciadFusion

LCD-8516
Icons would sometimes turn black when reparenting a view while context sharing was disabled.

Bug fixAviation Standards

LCD-8523
Generating vertical structure snapshots does not provoke Null Pointer Exception anymore.

2016.1.06

Bug fixLuciadFusion

Fixed a recent regression in the WMS server sample that prevented the rendering of Earth data repositories.

Bug fixLuciadFusion

LCD-8500
TLcdColorLookupOp: the operator did not work correctly for color images without an alpha channel.

Bug fixLuciadFusion

LF-1047
Increased the robustness of temp file removal when fusing SHP files.

Bug fixLuciadFusion

LCD-8499
TLcdCGMModelDecoder: The start and end angle for arcs were interpreted incorrectly.

Bug fixLuciadFusion

LF-1045
The WMS server was serving the same image for different elevation filter values.

Bug fixLuciadFusion

LF-1043
NetCDF image fusing was not respecting color maps provided with a SLD style file.

Bug fixLuciadFusion

LF-1036
The Data Server's HTML front-end was not properly populated with sample requests in servlet containers other than the embedded Jetty server.

Bug fixData Connectivity Manager

LF-1041
Models with time dimensions can be filtered on DCM without the need to TLcyPreviewerAddOn.

Bug fixData Connectivity Manager

LF-1044
The color map of a NetCDF source data was not applied when the data is fused and DCM is restarted.

Bug fixData Connectivity Manager

LF-1042
Band selection in Asset Metadata Editor was not taken into account when creating an IMAGE coverage. The band selection was overridden by SLD styling. Now band selection and SLD styling are synced. If you load an SLD style with a ChannelSelection element, it will update the selection in the band selection panel too. In contrast, if you change the band selection via the band selection panel while an SLD style is loaded, it will update the loaded SLD style to use the user selected bands.

2016.1.05

ImprovementLuciadFusion

LCD-8481
TLcdMIFModelDecoder and TLcdTABRasterModelDecoder now support data defined in a Pseudo Mercator projection.

ImprovementLuciadFusion

LCD-7591
GML encoding: improved the export of models that are not GML feature collections but do contain GML features (e.g. WFS models).

ImprovementLuciadFusion

BlackLimeLookAndFeel: the color of selected toggle buttons is now slightly more prominent.

ImprovementLuciadFusion

LCD-8441
You can now add new points to the beginning or end of ILcd2DEditablePolyline implementations (2D/3D polylines, arrows, buffers etc.) with a CTRL+left click to any location on the view by using TLsp2DPointListEditor. If the clicked point is closer to the first point than the last point of the shape, it will be inserted as the first point, otherwise it will be inserted as the last point.

ImprovementLuciadFusion

LCD-8451
DimensionalFilterManager was setting a model's filter value to the first possible value of the filter when the model is added to a view and if the model is the first model for that filtering dimension in the view. This was preventing you to set a filter value on the model and then display it with the same filtering value via the DimensionalFilterManager. To achieve that, you had to set the same filtering value after displaying the model. Now with this enhancement, the DimensionalFilterManager sets the value of the filter by getting it from the model if the model is the first model of that dimension in the UI.

ImprovementReal-time Engine

LCD-8482
Changing the system clock during TLcdSimulator playback no longer pauses the simulation.

Bug fixLuciadFusion

LCD-8483
Fix visualization of alpha channel for non 8-bit/component RGBA rasters.

Bug fixLuciadFusion

The ALcdMeasureProvider instances created by a TLcdImageModelMeasureProviderFactory would return in some cases the least detailed value when sample density was set to Double.NaN, instead of the most detailed value.

Bug fixLuciadFusion

LCD-8463
Implemented a workaround for JDK-8066871, which causes java.lang.VerifyError: Bad local variable type at run-time with code compiled at language level 1.8 on Windows.

Bug fixLuciadFusion

LCD-8252
3D icons were not projected correctly in all 2D projections.

Bug fixLuciadFusion

LCD-7937, LCD-8342
TLspComplexStrokedLineStyle: text could be painted upside down, even when enabling the rotateUp() setting. This could happen when painting shape lists using a complex stroke, or when returning multiple style targets for an object.

Bug fixLuciadFusion

LCD-8457
The default line label position of the Lightspeed XY grid (TLspXYGridLayerBuilder) had changed from right to left. This was a recent regression.

Bug fixLuciadFusion

LCD-8449
TLcdGXYShapePainter#getObject did not always return the expected object.

Bug fixLuciadFusion

LCD-8448
SLD color maps specified in a raster symbolizer were not always correctly applied for non-elevation data, which could lead to invisible data.

Bug fixLuciadFusion

LCD-8227
Fixed possible exception when painting 3D icons or 3D meshes with textures.

Bug fixLuciadFusion

LCD-8446
TLcdInputStreamFactory: for very large files the created streams could sometimes not read all available bytes. This could give errors for some decoders (ex. GeoTIFF).

Bug fixAviation Standards

LCD-8491
When decoders that implement ILcdDAFIFSubTypeFilteringDecoder had "subTypesToDecode" set, the expiration and effective dates were previously not set to the model descriptors. Now it is fixed and TLcdDAFIFAirspaceModelListDescriptor also implements ILcdDAFIFModelDescriptorSupport.

Bug fixAviation Standards

LCD-8472
TLcdAIXMModelDecoder.canDecode uses now the ILcdInputStreamFactory set to the decoder.

Bug fixDefense Symbology

LCD-8470
The fix provided in LCD-8416 has been enhanced to apply multiple Lightspeed views. The labels were still displayed incorrectly in case of having multiple Lightspeed views.

2016.1.04

ImprovementLuciadFusion

LCD-8159
TLcdClusteringTransformer: ILcdClusterShapeProvider implementations can now return regular shapes from the com.luciad.shape package. If you need to return a non-standard shape implementation, it is still not allowed to implement ILcd2DEditableShape.

ImprovementLuciadFusion

LCD-8445
Vendor-specific parameters included in URLs supplied to TLcdWCSClient, TLcdWFSClient, TLcdWMSClient or TLcdWMTSClient now take precedence above equally-named parameters in the URLs listed in the XML capabilities. This resolves interoperability issues with servers that include templates for vendor-specific parameters in the URLs listed in the XML capabilities.

ImprovementLuciadFusion

LCD-8440
Improved the robustness of TLcdInterval#equals.

Bug fixLuciadFusion

LCD-4751
TLcdGML32LineString and TLcdGML31LineString instances defined in a geodetic reference were not interpolated correctly.

Bug fixDefense Symbology

LCD-8442
Fixed the NullPointerException when a symbol is selected in the Military Symbology samples.

2016.1.03

ImprovementLuciadFusion

LCD-8012
TLcdGXYNewController2 and TLcdGXYTouchNewController now support creation based on a single drag gesture. This works for pointlist-based shapes, ellipses, circles, bounds and buffers. More specifically, TLcdGXYPointListPainter and TLcdGXYGeoBufferPainter have been specially optimized to efficiently process these gestures.

ImprovementLuciadFusion

LCD-8154
It is now possible for the line labels of the xy and georef grids in a Lightspeed view to:
  • define an offset from the view edge
  • define an offset from the grid line
  • always paint them horizontally

ImprovementLuciadFusion

LCD-8419
GML decoding: the GML-based decoders now cache parsed model references.

ImprovementLuciadFusion

LCD-8417
TLcdGeoPackageModelEncoder can now encode models with an ALcdImage domain object or the domain object is an ILcdDataObject whose type contains a TLcdHasGeometryAnnotation with an ALcdImage property.

ImprovementLuciadFusion

LCD-7391
The optional logging servlet filter, TLcdLogFilter, has been upgraded with an improved encryption algorithm (AES in CTR mode) to encode log entries.

ImprovementWeather & Environment Standards

LCD-7102
TLcdNetCDFModelDecoder now implements ILcdInputStreamFactoryCapable which lets you to provide input stream factories to the decoder. For example, you can now decode NetCDF data served from an OGC WCS web service by providing the input stream created by a WCS Client to the TLcdNetCDFModelDecoder.

ImprovementWeather & Environment Standards

LCD-7702
Added a new exception message for unsupported input files which have zero length axes.

ImprovementWeather & Environment Standards

LCD-7662
Improved wind data detection logic therefore more NetCDF files can be visualized with wind barbs.

ImprovementAviation Standards

LCD-8296
Added the Event extension schema for AIXM 5.1 resources to the AIXM5 optional module. The following namespace can now be used without a reference to their schema location: "http://www.aixm.aero/schema/5.1/event"

Bug fixLuciadFusion

LCD-8230
When a point close to the edge of the visible area of a projection was styled with a 3D icon, an exception was thrown when the 3D icon itself crossed the boundary in a 3D view.

Bug fixLuciadFusion

LCD-8436
Spatial queries are now inclusive of their bounds. Points that lie directly on the bounds are now returned as well.

Bug fixLuciadFusion

LCD-8552
Fusion Client no longer has a hard dependency on the Geometry component. This caused problem with Maven when using Fusion Client without Geometry. Note that you only need the optional Geometry component when you query tile store metadata using a spatial filter.

Bug fixLuciadFusion

LCD-8426
TLcdDMEDModelDecoder: the minLevel parameter was not taken into account for the ALcdImage's created by the decoder.

Bug fixLuciadFusion

LCD-7902
SLD icon rotation and opacity customization was not supported for world-sized SVG icons.

Bug fixLuciadFusion

LCD-6849
Encoding an SLD Feature Type Style with inline graphics content produced an incorrect encoding of the Base64 representation of the included graphics.

Bug fixLuciadFusion

LCD-8423
The OGC server sample's HTML front-end was not properly populated with sample requests in servlet containers other than the included Jetty server.

Bug fixLuciadFusion

LCD-8263
SLD label decluttering did not work properly in case of a custom label painter; only one label location was tried.

Bug fixLuciadFusion

LCD-8420
Possible RejectedExecutionException when resizing a TLspOffscreenView. This was a recent regression.

Bug fixAviation Standards

LCD-7946
A not thread safe use of DecimalFormat that was causing Route segments visualization artifacts is now fixed.

Bug fixDefense Standards

LCD-8183
The NITF orthorectifying decoder is now configured as a service, so it can be used from the main GXY and Lightspeed decoders. The dedicated orthorectification sample has been removed.

To perform orthorectification, first decode some elevation data and then your NITF data. Both have to be decoded using the orthorectifying decoder.

Bug fixDefense Symbology

LCD-8439
TLcdEditableMS2525bObject#canReversePointOrder() and TLcdEditableAPP6AObject#canReversePointOrder() were returning False for symbols which can have maximum 2 points. Therefore it was impossible to revert the point order of such symbols(e.g. Task - Fix). This is fixed that #canReversePointOrder() now returns True for symbols whose minimum point is 2 and maximum point is either 2 or bigger than 2.

Bug fixDefense Symbology

LCD-8434
The GXY sample was throwing a NPE when starting because of the misconfiguration of the tool bar.

Bug fixDefense Symbology

LCD-8414
Military symbology stylers was not using the customly provided edit targets. Now the provided an ALspStyleTargetProvider instance's edit target is used via the getEditTargetsSFCT method as it was already done for the style target via the getStyleTargetSFCT method.

2016.1.02

ImprovementLuciadFusion

LCD-8408
The TLspIconStyle.Builder#icon() method now throws a clear exception when a null icon is set. This should never happen. When you don't want to paint an icon, avoid passing a TLspIconStyle to the ALspStyleCollector.

ImprovementLuciadFusion

LCD-7735
Maven deployment shell files have been added. They are configured to call deploy.xml with the included Ant distribution. The script itself has been updated to use the user's Maven cache as the default repository for deployment.

ImprovementLuciadFusion

LCD-7896
The Maven deployment script has been modified to skip artifacts that can't be deployed for some reason. It will try to deploy the remaining artifacts and report on those that failed upon completion.

ImprovementLuciadFusion

The Apache Ant distribution shipped with LuciadLightspeed has been updated to version 1.9.7. The Ivy library has been updated to version 2.4.0 and Ant-Contrib 1.0b3 is now included.

ImprovementLuciadFusion

LCD-7915
The XML implementation no longer depends on the StAX-utils library. Consequently, this library has been removed from the list of 3rd party library dependencies shipped with the product.

ImprovementLuciadFusion

LCD-8271
Clarified some documentation in ALspEditor.

ImprovementLuciadFusion

LCD-8090
TLspZoomController, TLspRotateController and TLspPanController's cursors can now be customized.

ImprovementLuciadFusion

LF-1022
When using Tomcat as servlet container, verbose stack traces could sometimes be observed in the server log files containing notifications of a org.apache.catalina.connector.ClientAbortException. This exception is thrown by Tomcat when a servlet is trying to send a result to a client which already closed the connection. The Fusion server used to handle this exception as a regular IOException, by logging its stacktrace and sending a service exception report to the client - which fails in this case, resulting in a similar exception. This exception is now no longer propagated in the Fusion server.

ImprovementGoogle Earth Enterprise

TLcdGEEModelDecoder now supports the decoding of PYR files. If no PYR files are available, the decoder will try to decode bundle files.

ImprovementTerrain Analysis Engine

LCD-8116
Slightly improved performance of the Lightspeed distance over terrain sample.

ImprovementTerrain Analysis Engine

LCD-8255
The GXY and Lightspeed visibility samples now recompute the visibility when the shapes are edited.

ImprovementDefense Symbology

LCD-7977
It is now possible to revert the point order of arrows and lines via the two new methods which have been introduced on TLcdEditableMS2525bObject and TLcdEditableAPP6AObject;
  • boolean canReversePointOrder(): Returns true if the point order of this object can be reversed.
  • void reversePointOrder(): Reverses the point order of this object.
All graphics, which are line or arrow based, have reversible point orders. Therefore the user can redirect an arrow or change the orientation of a weather graphic (e.g. Upper Cold Front) with a single click. The single click functionality is also added into the context menu in the Military Symbology samples.

Bug fixLuciadFusion

LCD-5860
TLcdAdvancedMapRulerController: in some cases, a perfectly straight ruler line would disappear.

Bug fixLuciadFusion

LCD-8400
TLcdGeoJsonModelDecoder used the TLcdPrimaryKeyAnnotation incorrectly when a feature was decoded via TLcdGeoJsonModelDecoder#decodeFeature. As a result it could be that the id was missing on the generated ILcdDataObject.

Bug fixLuciadFusion

LCD-8392
Resolved a possible deadlock situation during initialization of samples.common.MouseCursorFactory.

Bug fixLuciadFusion

LCD-6604
TLcd2DBoundsIndexedModel.elements().nextElement() now throws NoSuchElementException when there are no more elements. This is according to the Enumeration.nextElement() contract.

Bug fixLuciadFusion

LCD-8098
The protected fLon and fLat fields in TLcdLonLatPoint are deprecated. Do not use these fields directly, instead use move2D() and getLon() and getLat().

Bug fixLuciadFusion

LCD-8391
TLcdColorConvertOp: fixed error when converting float RGB to 8-bit RGBA.

Bug fixLuciadFusion

LCD-8389
TLcdGeoJsonModelDecoder parsed long values of properties as doubles.

Bug fixLuciadFusion

LCD-8307
The OGC server sample's ANT build script now replaces '+' characters in jar names with '-', to overcome a deployment compatibility issue with Oracle WebLogic.

Bug fixLuciadFusion

LCD-8269
The WCS client did not correctly interpret elevation values in case of WCS coverages with elevation data and in case it was configured to use multiple levels of detail (see TLcdWCSProxy#setRasterCount). This caused a broken visualization and incorrect elevation value readouts.

Bug fixLuciadFusion

LCD-8272
The copy constructor of TLcdWMSCapabilities did not copy the registered formats for the WMS SLD profile requests GetLegendGraphic and DescribeLayer.

Bug fixLuciadFusion

LCD-8278
Fixed a rare endless loop when using the MGRS grid in 3D. This problem could block a single task executor thread.

Bug fixLuciadFusion

LCD-8181
Fixed a possible memory leak when using a layer with labels enabled.

Bug fixLuciadFusion

LCD-8268
ALcdImagingEngine: fixed error when using a large image with a palette-based color.

Bug fixLuciadFusion

LCD-8246
The installation instructions for the hardware key for Linux have been updated for modern distributions. Specifically, the udev rules were updated to work for recent Linux versions.

Bug fixData Connectivity Manager

LF-1028
Fixed issue with LF-1002 which removed too many resource files from the library jars. XML schemas are now included in the jar files again instead of extracted in the resources directory. Only the configuration files of the Data Connectivity Manager are in the resources directory now, allowing you to inspect and modify them.

Bug fixWeather & Environment Standards

LCD-8273
The deprecated TLcdNetCDFFilteredModel#setFilterParameter method was not snapping the given interval to the closest possible interval value as it was doing it on v2015.1

Bug fixAviation Standards

LCD-8131
The decoding speed of data with several xlinks has been improved.

Bug fixDefense Standards

LCD-8377
Some NITF files that use a camera position that is tilted towards the horizon couldn't be visualized.

Bug fixDefense Symbology

LCD-8416
Fixed a threading issue when using military symbols in a Lightspeed view. This bug could cause an incorrect label to be shown when using multiple symbology layers.

Bug fixDefense Symbology

LCD-8399
TLcdAPP6EchelonNode#canApplyOn(ILcdAPP6ACoded aObject) was returning wrong results for APP-6C Air and Sea symbols.

Bug fixDefense Symbology

LCD-8261
Editing MS2525b objects via TLcdMS2525bObjectCustomizer was causing an exception.

2016.1

ImprovementLuciadFusion

LCD-7952
The memory consumed by a WCS model has been reduced significantly. This is especially noticeable when a large number of levels of detail and tiles are used(see TLcdWCSProxy#setRasterCount, TLcdWCSProxy#setTileColumnCount and TLcdWCSProxy#setTileRowCount).

ImprovementLuciadFusion

LCD-8161
The common view coordinate that can be added to an MGRS layer in a GXY or Lightspeed view has been improved. It now displays a String that can be added in front of the visible labels to form a full MGRS String. See TLcdMGRSGridOverlayLabelBuilder#COMMON_VIEW_COORDINATE and TLspMGRSGridOverlayLabelBuilder#COMMON_VIEW_COORDINATE. The same improvement was added for georef grid layers. See TLspGeorefGridOverlayLabelBuilder#COMMON_VIEW_COORDINATE.

ImprovementLuciadFusion

LCD-8213
The WCS client now automatically recognizes the GeoTIFF format 'GeoTIFFFLOAT32'.

ImprovementLuciadFusion

Google Earth Enterprise image repositories can now be used to create a non-tiled repository and serve the imagery through WMS. More information on how to decode Google Earth Enterprise image repositories can be found in the javadoc of TLcdGEEModelDecoder.

ImprovementLuciadFusion

ALspGLResource now has a default implementation for the destroy(ILcdGLDrawable) method. When extensions of this class call super.destroy, error checking is added to make sure no destroyed GL resources are used during painting. If they are, an exception is thrown. This avoids possible VM crashes.

ImprovementLuciadFusion

It is now possible to enable GetFeatureInfo requests for a WMS layer at the client side, even though the capabilities advertise that GetFeatureInfo requests are possible. See
  • TLcdWMSStyledNamedLayerWrapper#setQueryable(boolean)
  • TLcdSLDNamedLayer#setQueryable(boolean)

ImprovementLuciadFusion

TLspLayerTreeNode: a new constructor which accepts a model has been added.

ImprovementLuciadFusion

TLspLayerTreeNodeCellRenderer is a new extension of TLcdLayerTreeNodeCellRenderer specific for Lightspeed views. It implements the same behavior already present in TLcdGXYLayerTreeNodeCellRenderer, where layers are grayed out when they are outside their scale range.

ImprovementLuciadFusion

TLcdGXYLayerTreeNode: a new constructor which accepts a model has been added.

ImprovementLuciadFusion

LCD-7903
TLcdGXYRoundedPointListPainter: improved discretization for polygons crossing the boundaries of rectangular projections.

ImprovementLuciadFusion

TLspFusionVectorLayerBuilder will now use GeoSym styling for both bodies and labels when visualizing a VPF coverage. Previously, the GeoSym styling was only used for the body.

ImprovementLuciadFusion

LCD-8171
The TLsp2DPointListEditor no longer consumes mouse-wheel events in its creation handle.

ImprovementLuciadFusion

LCD-5629
It is now possible to fit on the actual location of WMTS data, if this location is defined in the WMTS capabilities. In the past, the data's tile pyramid bounding box was used, which typically corresponded to world bounds.

ImprovementLuciadFusion

LCD-7508
Fusion now initializes faster by performing some set-up work in the background.

ImprovementLuciadFusion

The WMS client now prefers CRS:84 above EPSG:4326, if the application's view reference is not supported by the server and if the server supports CRS:84. This avoids potential axis ordering issues with EPSG:4326.

ImprovementLuciadFusion

TLcdDataModelDescriptor: the constructor now allows to specify the model element types and model types as a collection instead of as a set. As it is strongly recommended to specify the model element types, the other constructors have been deprecated.

ImprovementLuciadFusion

LCD-8136
It is now possible to customize GetFeatureInfo request handling to support querying for all features interacting with a given pixel bounds (e.g., provided through an optional parameter). This use case is supported by the existing ALcdWMSCommandDispatcher#performSelectionAt and its sensitivity parameter - which was not correctly taken into account in the past.

ImprovementLuciadFusion

TLspModelElementTrackingPointProvider can now handle domain objects which do not extend fromILcdShape, but rather expose one on their data model using the TLcdHasGeometryAnnotation.

ImprovementLuciadFusion

When using TLspAWTView, vsync is now enabled when it is not explicitly disabled using the vendor specific GPU settings.

ImprovementLuciadFusion

LCD-8066
TLspComplexStrokedLineStyle now has a modulation color. Via this modulation color it is also possible to change the opacity of the stroked line.

ImprovementLuciadFusion

The sample package samples.lightspeed.timeview contains a ready-to-use time slider component which has a Lightspeed view. You can add layers to it with data that has time information.
See TimeSlider javadoc for more details.

ImprovementLuciadFusion

LCD-5122

ImprovementLuciadFusion

LCD-7855
TLcdStatusEvent now has new factory methods to make it easier to report progress and messages. In addition, messages can now include a severity.

ImprovementLuciadFusion

LCD-2904
TLspViewNavigationUtil can now perform animated center operations.

ImprovementLuciadFusion

TLcdGXYShapePainter now allows to set the selection mode and edit mode separately, see setSelectionMode(int) and setEditMode(int). This for example allows the painter to paint an outline for the selected paint mode, while painting a fill for the regular paint mode.

ImprovementLuciadFusion

ALcdWMSProxy now has a utility method that allows to retrieve all WMS layers. It is also possible to retrieve only visible and/or only queryable WMS layers. See ALcdWMSProxy#getNamedLayer(boolean, boolean).

ImprovementLuciadFusion

LCD-8042
TLspLabelPainter now doesn't depend on ALspLabelTextProviderStyle instances to override and implement the equals and hashCode methods anymore. Not doing so resulted in hard to find problems with labels.

ImprovementLuciadFusion

LCD-8041
TLcdEllipsoidUtil, TLcdCartesian, TLcdEllipsoidRhumblineUtil, and the spherical variations now have a method closestPointOnShape to calculate the point of a polyline or polygon that is closest to a given point.

ImprovementLuciadFusion

TLcdWKTReferenceFormatter now formats the axis information as well.

ImprovementLuciadFusion

LCD-3271

Additional API was added to retrieve the exact parameters needed for a GetFeatureInfo request for a given point in view coordinates. The result can be used as input for the ALcdWMSProxy#createFeatureInfoInputStream() method. See:

  • TLcdGXYTiledWMSProxyPainter#getFeatureInfoContext
  • TLcdWMSProxyGXYPainter#getFeatureInfoContext
  • TLspWMSGetFeatureInfoContextQuery

ImprovementLuciadFusion

GetFeatureInfo request now also work for SLD layers (TLcdSLDNamedLayer) when using ALcdWMSProxy#createFeatureInfoInputStream().

ImprovementLuciadFusion

Luciad now supports Mac OS X. The minimum requirements to run Luciad based software on a Mac are:
  • Mac OS X 10.9 or later
  • Intel 64-bit CPU
  • JDK 1.8 or later

ImprovementLuciadFusion

The wms.client.gxy, wms.client.ecdis.gxy and the wms.client.lightspeed samples now demonstrate how to visualize GetFeatureInfo responses on the map. This is done using the WMSGetFeatureInfoMouseListener class. This class uses a WMSGetFeatureInfoResponseDecoder to convert a response to an ILcdDataObject, which is added to the map.

ImprovementLuciadFusion

TLcdOGCPropertyName has received a new convenience constructor that accepts a Java QName.

ImprovementLuciadFusion

LCD-7949, LCD-7306
To improve the event handling of TLcdWFSProxyModel, three existing methods have been reintroduced with an additional argument to specify an event type (ILcdFireEventMode):
  • setFilter(TLcdOGCFilter, int)
  • setCachingModel(int, int)
  • invalidate(int)
This enables users to explicitly trigger an event while invoking these methods, so that any listeners can be notified of changes to the model. A typical use case is to trigger a repaint when calling one of these methods.

ImprovementLuciadFusion

LCD-7959
TLcdWCSProxyModelDescriptor now uses the coverage's label as display name, because it is intended as a human-readable name for the coverage. If not available, the coverage's name is used, similar to the past.

ImprovementLuciadFusion

LCD-7957
TLcdWFSProxyModelDescriptor now uses the feature type's title as display name, because it is intended as a human-readable name for the feature type. If not available, the feature type's name is used, similar to the past.

ImprovementLuciadFusion

TLcdDimensionAxis.TIME_AXIS: a constant has been added representing a time axis, which is convenient when you are creating your own time-dependent models.

ImprovementLuciadFusion

LCD-3204
ALspEditable3DMesh can now contain texture coordinates. This allows you to provide the texture coordinates in a custom TLspShapeDiscretizer by overriding TLspShapeDiscretizer#discretizeSFCT().

ImprovementLuciadFusion

LCD-7611
TLcdWFSProxyModelDescriptor now provides information about the possible data types in the model. This information is accessible through the regular ILcdDataModelDescriptor methods getModelTypes() and getModelElementTypes().

ImprovementLuciadFusion

LCD-7917
The new TLcdGXYRotateController allows you to rotate GXY views.

ImprovementLuciadFusion

LCD-7918
Vendor-specific parameters included in URLs supplied to TLcdWCSClient, TLcdWFSClient, TLcdWMSClient or TLcdWMTSClient are now automatically used in all requests sent to the server. This supports use cases such as services requiring authentication through a proprietary token parameter.

ImprovementLuciadFusion

TLcdGXYShapeListPainter and TLcdGXYSurfacePainter now also implement ILcdGXYPathPainter. This also improves the out-of-the-box labeling support.

ImprovementLuciadFusion

TLcdGXYLabelPainter: a new method (setAntiAliased) has been introduced which allows to enable anti-aliasing. Anti-aliasing has been enabled by default.
The same has been done for the TLcdGXYPolygonLabelPainter, TLcdGXYPolylineLabelPainter, TLcdMapLonLatGridLayer, and TLcdMapGeorefGridLayer.

ImprovementLuciadFusion

LuciadFusion now supports fusion of vector data retrieved from an PostgreSQL PostGIS database.

ImprovementLuciadFusion

LCD-5125
TLcdOGCModelReferenceParser and TLcdOGCModelReferenceFormatter allow parsing and formatting commonly used OGC model reference strings.

ImprovementLuciadFusion

LCD-7502
TLspLabelPainter now supports the z-order configured in TLspTextStyle, TLspIconStyle and TLspPinLineStyle for labels. This gives control over the painting order for labels. For performance reasons, it is advised not to use many different z-orders.

ImprovementLuciadFusion

TLcdModelDescriptor: a setter has been added for the source name.

ImprovementData Connectivity Manager

TLcyPostGISDecoderAddOn is added to the addons_data.xml file to enable support for vector data stored in a PostgreSQL PostGIS database.

ImprovementDatabase Connectors

The PostGIS decoder and encoder can now handle 3D points, lines and polygons. To specify the dimensions of the geometry for a new table you can use the "dimensions" property in the .pgs properties file.

ImprovementReal-time Engine

The "Track Simulator" sample was adapted to use a time slider based on a Lightspeed non-georeferenced view.
See TimeSlider javadoc in the samples.lightspeed.timeview package for more details.

ImprovementAviation Standards

LCD-8100
It is now possible to calculate procedures with a holding turn radius smaller than the radius used for the other turns with the new property in TLcdAircraftPerformanceSettings called Procedure turn radius.

ImprovementDefense Standards

LCD-7430
TLspVPFGeoSymStyler now has the option to set an opacity.

ImprovementDefense Standards

TLcdVPFModelDecoder now supports the use of the Database Header Table (DHT) file as an entry point for decoding. In this case, the decoder produces an ILcdModelTreeNode whose structure reflects that of the VPF database.

ImprovementDefense Standards

Lightspeed views now provide full support for GeoSym styling. The new class TLspVPFLayerBuilder facilitates the creation of layers for VPF data and can be used to choose between full and simplified GeoSym symbology.

ImprovementRadar Connectors

The Data Model Viewer sample has a better UI now.

ImprovementRadar Connectors

TLcdASTERIXModelDecoder can now decode ASTERIX Category 10 (Transmission of Monosensor Surface Movement Data - version 1.1). The data model can be found in the TLcdASTERIXCategory10 class.

Bug fixLuciadFusion

LCD-8249, LCD-8030
Fixed a possible deadlock that could occur when using a synchronous layer (TLspLayer#setSynchronous(true) or TLspShapeLayerBuilder#synchronous(true)) with labels.

Bug fixLuciadFusion

The launcher (start.jar) now explicitly sets java.library.path to empty unless it's defined in a .vmoptions file or JVM_ARGS. This prevents platform-dependent default values from causing issues with native library loading.

Bug fixLuciadFusion

LCD-8205
The sample class SLDFeatureTypeStyleStore now differentiates between measurement data (e.g., containing elevation data) and multi-spectral data to improve the selection of suitable SLDs in the SLD samples.

Bug fixLuciadFusion

LCD-8224
Fixed a rare ConcurrentModificationException when using TLspShapePainter.

Bug fixLuciadFusion

LCD-8188
TLcdRPCModelReferenceDecoder: the decoder did not support tab characters between the key and value.

Bug fixLuciadFusion

Fixed possible native crash that was caused by the usage of already destroyed resources.

Bug fixLuciadFusion

LCD-8147
In some cases, an asynchronously painted ILcdGXYLayer could throw an IllegalMonitorStateException.

Bug fixLuciadFusion

BlackLimeLookAndFeel now supports JSliders that have their inverted property set to true.

Bug fixLuciadFusion

LCD-7279
TLcdSLDFeatureTypeStyleDecoder: fixed the decoding from an XML document with a 1.1.0 StyledLayerDescriptor.

Bug fixLuciadFusion

LCD-8138
Fixed a rare OutOfMemoryError when using an MGRS grid in a 3D Lightspeed view. This exception could occur when moving close to the terrain and tilting the camera.

Bug fixLuciadFusion

LCD-8238
The default styler on raster layer did not allow customizing the color map for models with measurement data.

Bug fixLuciadFusion

When a Json file contains properties with an array as value, TLcdGeoJsonModelDecoder modelled that collection using a collection property with a type that extends from TLcdCoreDataTypes.DATA_OBJECT_TYPE, even when the values in that collection are no ILcdDataObjects. It now uses a type that extends from TLcdCoreDataTypes_OBJECT_TYPE instead. The same fix was applied for map properties.

Bug fixLuciadFusion

LCD-8085
TLspViewNavigationUtil's center methods now take the terrain into account.

Bug fixLuciadFusion

LCD-8057
The WMS server didn't always respect the painting order when doing a GetFeatureInfo request. This could lead to responses of objects that are painted underneath another object.

Bug fixLuciadFusion

LCD-8036
The WMS server didn't always respect max feature count parameter of a GetFeatureInfo request.

Bug fixLuciadFusion

LCD-8052
The result of TLcdGXYIconPainter#boundsSFCT is now a tighter fit around the actual icon.

Bug fixLuciadFusion

LCD-7948
TLcdWFSProxyModel: doing multiple calls to the elements or applyOnInteract2DBounds methods will now always return the same domain object instances when the domain object represents the same object on the server. This is needed to be able to select the domain objects on a Lightspeed view, or to activate labeling.

Bug fixLuciadFusion

The WMTS client sometimes still showed error tiles in case of a tile not found (HTTP 404) response.

Bug fixLuciadFusion

LCD-6636
TLspShapeDiscretizer now correctly triangulates ILcdPolygons that are vertical (i.e. exactly perpendicular to the ellipsoid).

Bug fixLuciadFusion

LCD-4290
TLcdSHPModelDecoder: The TLcdDataModel generated for empty SHP files was incorrect. Now a TLcdDataModel is generated based on the properties defined in the DBF file, if available.

Bug fixData Connectivity Manager

LF-1002
DCM resource files are now removed from the library jar, as they are already present in the resources folder of the distribution. This prevents one set from overriding the other, depending on classpath ordering.

Bug fixReal-time Engine

ALcdTimeIndexedSimulatorModel: removeTracks now releases write locks on its track model before firing the model events. This is required for multithreaded applications, as documented in the threading chapter in the LuciadLightspeed developer's guide.

Bug fixReal-time Engine

LCD-8168
ALcdTimeIndexedSimulatorModel: no longer throws a NullPointerException when you initialize it with an empty list of tracks, and then add tracks using addTracks

Bug fixAviation Standards

LCD-8215
Avoid Null Pointer Exceptions when visualizing Airspaces as extruded shapes in a 3D Lightspeed view.

Bug fixDefense Symbology

LCD-8243
Setting offset of a symbol in a Lightspeed view was done by holding the CTRL (CMD in Mac Os) key and moving the mouse. This has been changed as now, you should drag the mouse instead of only moving it.

Bug fixDefense Symbology

LCD-8163
A single icon's labels were being displayed when they were added to a declutter group. This has been fixed that when the icon's labels are not overlapping another labels, all the labels of the icon are visible.

Bug fixDefense Symbology

LCD-8182
APP6C, Mountain sector modifier is now displayed for Land Units.

Bug fixDefense Symbology

LCD-8191
APP6C Land Installation symbols are now displayed with Headquarters/Task Force/Dummy icons if set.

Bug fixRadar Connectors

LCD-8217
TLcdASTERIXModelDecoder: decodeSource now closes all created input streams, not only the input stream to read the last source.

Upgrade considerationLuciadFusion

LCD-8198
The overlay panel of Lightspeed views, which typically contains the navigation controls or a scale icon, can now avoid full redraws in a number of scenarios. This makes it behave subtly faster, resulting in somewhat higher frame rates depending on the screen resolution and exact set-up. It may uncover bugs in client code that previously remained unnoticed. Should you experience a partially updating overlay, check out the documentation in ILspAWTView.getOverlayComponent. Most notably, samples classes HaloLabel, TouchInformationPanelController and PreviewerOnMapCustomizerFactory (Lucy) had to be adjusted.

Upgrade considerationLuciadFusion

Packaging for the sqlitej native library has changed. Instead of a single statically linked object, the library now dynamically links to sqlite3. Apart from there now being two native libraries, you should not be affected in any way by this change.

Upgrade considerationLuciadFusion

SpatiaLite has been updated to version 4.3.0. The decoder now also supports databases created with SpatiaLite 4.0.0 and above. Newly created databases will be in the 4.0.0 format and cannot be read by older versions of the decoder. For more information, see https://www.gaia-gis.it/fossil/libspatialite/wiki?name=switching-to-4.0.

Upgrade considerationLuciadFusion

LCD-8048, LCD-8054
TLspFrustum was made immutable to avoid potential concurrency issues. In order to do this, some of the methods were changed:
  • The computeFromModelViewProjectionMatrix() method was replaced with the factory method createFromModelViewProjectionMatrix().
  • The computeFromViewRectangle() method was replaced with the factory method createFromViewRectangle().
  • The return type of the getCorners() method was changed from ArrayList<TLcdXYZPoint> to List<ILcdPoint>. It now also returns an immutable List of points.

Upgrade considerationLuciadFusion

Model references that contain metadata (ILcdExtendedModelReference) are now only considered equal if they have the same axis ordering. This means for example that from now on "urn:ogc:def:crs:OGC:1.3:CRS84" (which is a lon-lat reference), and "urn:ogc:def:crs:EPSG::4326" (which is a lat-lon reference) are now considered different. The references in this example can be parsed using TLcdOGCModelReferenceParser.

Upgrade considerationLuciadFusion

LCD-5225
The vertex array renderer accessible using ILspView.getViewServices().getVertexArrayRenderer() no longer uses the standard gl_Color attribute. If you have written a custom painter that uses this vertex array renderer together with custom shader programs, you need to update your vertex programs to no longer use gl_Color, but use following construct:
      //declare custom attribute and uniforms
      attribute vec4 aLspColor;
      uniform vec4 uLspColor;
      uniform bool uUseAttribute;

      // ...

      void main() {
      // ...
      vec4 colorToUse = uUseAttribute ? aLspColor : uLspColor;
      // ...
      }
    
Any calls to ILcdGL.glColor4f (or equivalent) should be replaced with setting the uLspColor uniform on the shader. For instance:
      int[] currentProgramRet = new int[1];
      gl.glGetIntegerv(ILcdGL.GL_CURRENT_PROGRAM, currentProgramRet);
      int currentProgram = currentProgramRet[0];
      if (currentProgram > 0) {
      int uLspColor = gl.glGetUniformLocation(currentProgram, "uLspColor");
      if (uLspColor > 0) {
      gl.glUniform4f(uLspColor, fColor[0], fColor[1], fColor[2], fColor[3]);
      }
      }
    

Upgrade considerationLuciadFusion

It is now possible to pass query context parameters to the ALcdWMSProxy#createImageInputStream and ALcdWMSProxy#createFeatureInfoInputStream method directly. See TLcdWMSGetMapContext and TLcdWMSGetFeatureInfoContext. For GetFeatureInfo requests, this allows to specify which feature info format to use, and which layers should be queried, without the need to modify the ALcdWMSProxy object. This provides a better way to do getFeatureInfo request calls in a thread-safe manner.

The ALcdWMSProxy#createImageInputStream and ALcdWMSProxy#createFeatureInfoInputStream method are abstract, which means that custom implementations of this class will show a compile error. For wrappers, this can easily be resolved by delegating to the wrapped ALcdWMSProxy. For custom implementations, these new methods will need to be implemented. ALcdWMSProxy#createImageInputStream should pose no problems since no extra parameters were introduced. The implementation of the new ALcdWMSProxy#createFeatureInfoInputStream method will need to take the new arguments (i.e. the contents TLcdWMSGetFeatureInfoParameters) into account.

Upgrade considerationLuciadFusion

TLcdGeoJsonModelEncoder and the GML model encoders now format geodetic WGS84 lon-lat references with EPSG as authority as "CRS84" by default. This new behavior can be reverted, see TLcdOGCModelReferenceFormatter#setFormatEPSGLonLatWGS84AsEPSG4326() for more information.

Upgrade considerationLuciadFusion

The lcd_wms_client_earth.jar file was removed. This also means that a Maven artifact was removed. Dependencies on lcd_wms_client_earth.jar should be removed and replaced by a dependency on lcd_wms_client.jar.

Upgrade considerationLuciadFusion

LCD-7986, LCD-5592
ILspTexturedStyle now supports the use of ALsp2DTextureObject. To support this it now has a new getTextureObject method and the textureObject method was added to ILspTexturedStyle.Builder. This new functionality allows to use an OpenGL texture directly with an ILspTexturedStyle.

Upgrade considerationLuciadFusion

LCD-7395
The JOGL, JOCL, and GlueGen libraries have been updated to version 2.3.2+2-lcd. This is the same as the official 2.3.2 version of JOGL, with two exception. The first is a change for the Mac OS X platform that fixes following JOGL issues:
  • 1277: GLCanvas content draws in wrong position when canvas moves after JFrame containing it is setVisible(true) on EDT
  • 1299: warning when using JOGL on Mac OS X El Capitan
  • 1306: Medium-weight tooltips are painted behind the GLCanvas
  • 1307: GLCanvas is always drawn on top when using a JTabbedPane
The second is a fix for a memory leak that occurs when creating two OpenGL drawables that perform GL context sharing, and then destroying one. The other could previously not be garbage collected in this case.

Upgrade considerationLuciadFusion

LCD-6476
GML decoding: the GML decoders now exclusively rely on the model reference axis metadata as provided by their reference parsers. This may impact the parsing of coordinates using the "EPSG:4326" model reference. In particular, if you have previously customized a GML decoder with a TLcdEPSGReferenceParser and you relied on OGC's legacy lon-lat interpretation of the "EPSG:4326" string instead of EPSG's official lat-lon interpretation, you should use TLcdOGCModelReferenceParser instead and enable the lon-lat interpretation by calling setParseUnprefixedEPSG4326AsLonLat(true).

2016.0

2016.0.13

ImprovementLuciadFusion

LCD-8134
TLcdWMTSClient could throw a NullPointerException in case of an unresolvable REST URL template.

ImprovementLuciadFusion

LCD-8149
TLspViewNavigationUtil#centerOnModelBounds now also works for model references that are not instances of ILcdGeoReference. Note that, for this case to work, the model reference has to equal the view's reference.

ImprovementLuciadFusion

LCD-8146, LCD-8104
The WMTS client no longer shows tile decoding issues in the tiles themselves. This has been replaced by warning log statements.

ImprovementLuciadFusion

LCD-8137
The XML decoders no longer fail on empty double and float elements.

ImprovementDefense Symbology

LCD-8101
Added ISO 3166 Alpha-2 coded flag visuals. The PNG files for the flags can be found under classpath "images/countryflags/iso3166/".

Bug fixLuciadFusion

LCD-8167
Fixed a performance bottleneck when visualizing shapes in an ILcdGXYView with a constantly changing world reference.

Bug fixLuciadFusion

LCD-8156
GML encoding: fixed an issue when encoding WFS models whose domain objects contain multi-curve geometries.

Bug fixLuciadFusion

LCD-8143
TLcdEllipsoid#geodesicPointSFCT did not always return the point at the shortest distance at a fraction between two points on one of the poles. As a result lines on the poles could be incorrectly visualized in a 2D projection.

Bug fixLuciadFusion

LCD-8141
TLcdResizeOp did not handle palette indexed color images correctly when down-scaling the image a lot.

Bug fixLuciadFusion

LCD-8130
A regression in recent patches caused incorrect results related to height / value provision and raster-as-icon visualization, in case of source image data with a SinglePixelPackagedSampleModel.

Bug fixDefense Symbology

LCD-8002
Fixed the overlapping of hierarchy and question mark icons in symbols with Pending or Exercise Pending affiliations, for APP6A and MS2525b standards. Now if an APP6A or MS2525b symbol has a Pending or Exercise Pending affiliation, only the question mark is displayed as a hierarchy icon.

2016.0.12

ImprovementLuciadFusion

LCD-8086
The launcher script for the sample server (FusionServer.sh/bat) has been modified to work on headless machines.

ImprovementDefense Symbology

LCD-7623
Removed the background coloring of affiliation customizer combo box in the samples.

Bug fixLuciadFusion

LCD-8130
A regression in recent patches caused incorrect results related to RASTER fusion, in case of source image data with a SinglePixelPackagedSampleModel.

Bug fixLuciadFusion

LCD-8130
A regression in recent patches caused incorrect values in images generated by the WCS, in case of source image data with a SinglePixelPackagedSampleModel.

Bug fixLuciadFusion

LCD-8119
TLcdMedianOp: the median operator did not work on images with 2 or 3 bands.

Bug fixLuciadFusion

LF-1004
Fusion is now more robust against WMTS services that use a data format that is not a supported MIME type.

2016.0.11

ImprovementLuciadFusion

LCD-8087
A launcher script was added for the OGC server sample (OGCServer.sh/bat). Using this script, it is now possible to run the server on a headless machine.

ImprovementLuciadFusion

TLcdWFSGetFeatureRequestHandler now doesn't log errors anymore when a feature can't be encoded. The stack traces can still be obtained by enabling debug logging for the "com.luciad.ogc.wfs" package.

ImprovementReal-time Engine

LCD-8000
A new "afterglow color" property was introduced in TLspRadarVideoStyle. This color is applied to radar blips that were not confirmed by the most recent pass of the radar but which are still visible due to afterglow. This allows the user to visually distinguish current blips from stale ones even when using long afterglow durations.

ImprovementDefense Symbology

LCD-8016
Improved the performance of panning, zooming in/out to a view with many symbols.

Bug fixLuciadFusion

LCD-8031
The WMTS client threw an IndexOutOfBoundsException in case it didn't found any non-empty tiles.

Bug fixLuciadFusion

LCD-8078
Platform detection for PowerPC and Mac OS X 32-bit has been removed. Native libraries for these platforms can no longer be loaded. You should not be affected by this change, as these platforms have never been officially supported.

Bug fixLuciadFusion

LCD-8079
The samples.ogc.wfs.client sample now uses a default MAXFEATURES value of 1000 in all GetFeature requests, to avoid overloading a server with too large data requests.

Bug fixLuciadFusion

LCD-8063
The OGC WCS server's GetCapabilities response no longer contains null Strings. If an optional value is not available (e.g., a coverage description), an empty String is used.

Bug fixDefense Symbology

LCD-8071
NVG 1.5 corridors used as tactical graphics are now visualized with their correct width.

Bug fixDefense Symbology

LCD-8064
Fixed the visual of Special C2 Headquarters Component symbol with a movement direction arrow.

Bug fixDefense Symbology

LCD-8065
Symbol movement direction arrow head was excluded from icon bounds.

2016.0.10

Bug fixLuciadFusion

LCD-8044
Fixed NPE when visualizing a non-tiled WMS layer and moving the view outside the model bounds.

Bug fixLuciadFusion

LCD-7241
Balloon sample: showing the balloon for the moving point resulted in flickering.

Bug fixLuciadFusion

LCD-8033
WMS models did not support time and elevation dimensions if they weren't defined with their official names TIME and ELEVATION with upper case letters. This has been made more flexible, by supporting dimension names TIME, ELEVATION, DEPTH and ALTITUDE - regardless of the letter case.

Bug fixLuciadFusion

LCD-8025
Fixed a layer selection problem when using a string translator in the visual inspection sample controls. This also affected LuciadLightspeed based products with visual inspection controllers.

Bug fixLuciadFusion

LCD-8028
Layer tree tooltips were no longer displayed in the samples and most LuciadLightspeed based applications.

Bug fixLuciadFusion

LCD-7991
Fixed a problem with using TLspCreateController.nextStep() in conjunction with military symbology.

Bug fixLuciadFusion

LCD-8026, LCD-7176
TLcdWKTReferenceParser and TLcdWKTReferenceFormatter can now handle mercator projections with a true scale latitude (mercator variant B).

Bug fixAviation Standards

LCD-8039
Airspace Associations are now correctly visualized in 3D Lightspeed views as extruded shapes.

2016.0.09

Bug fixLuciadFusion

LF-1000
Fixed a bug in fusion support for VPF datasets without scale information. Such datasets have a zero or negative scale denominator, which was not taken into account.
Note that for such datasets LuciadFusion will auto-detect a scale based on the extent of the data (see TLfnFormat.getScaleDenominator). You may need to manually adapt the Compilation Scale of your assets.

Bug fixLuciadFusion

LCD-7999
TLspIconStyle: Icons painted in view coordinates would not be visible if the icon style was configured with ElevationMode.ON_TERRAIN.

2016.0.08

ImprovementLuciadFusion

LCD-8004
It is now possible to calculate the closest geodesic distance to a rhumbline segment, see TLcdEllipsoidRhumblineUtil#closestPointOnRhumblineGeodesic and TLcdSphereRhumblineUtil#closestPointOnRhumblineGeodesic.

ImprovementLuciadFusion

LCD-7998
The servlet class TLcdWMSServlet has been extended with a protected factory method createCommandDispatcherFactory(ServletConfig), to allow customization of the command dispatcher factory instance.

ImprovementLuciadFusion

LCD-7992
The product documentation isn't opened automatically anymore when launching start.jar.

ImprovementLuciadFusion

LCD-7989
The sample service in start.jar now uses a different port for each Luciad product. This allows to run samples from different products simultaneously without having to reconfigure ports first.

Bug fixLuciadFusion

LCD-8007
TLcdClusteringTransformer can now handle original models where all points are on the same longitude. It threw OutOfMemoryErrors before.

Bug fixLuciadFusion

LCD-8009
BlackLimeLookAndFeel (used by for example Lucy Map Centric) now uses the special Noto font only for Latin locales, falling back to the default Java fonts otherwise.

Bug fixLuciadFusion

LCD-8001
TLcdWMSClient did not always detect support for GetLegendGraphic and DescribeLayer requests in the WMS capabilities.

Bug fixLuciadFusion

LUCY-4487
TLcdEarthGXYRasterPainter and TLcdGXYImagePainter: when printing a map with these painters, the resulting printout could be blurry.

Bug fixLuciadFusion

LCD-6878
TLspIconStyle: Icons could appear completely white when dynamically changing the size of the icon.

Bug fixLuciadFusion

LCD-7993
Fixed the 'Semantics do not describe a single color' error that could sometimes occur when visualizing elevation coverages with encoded as image/tiff.

Bug fixLuciadFusion

LCD-7982
The WCS model generated a NullPointerException when used in an ILspLayer on a Lightspeed view.

Bug fixLuciadFusion

LF-981
Fixed a bug affecting the fusion of vector data in lon-lat coordinates when "force linear interpolation" is on. This bug could cause some complex polygons to fail with "Inner ring cannot be determined to be inside an outer ring".

Bug fixLuciadFusion

LCD-7868
TLcdCone3DMesh#getPrimitive would return a primitive with incorrect vertex indices when TLcdCone3DMesh#getVertexSFCT was not called once first.

Bug fixLuciadFusion

LCD-7647
TLcdGeoTIFFModelEncoder: it was not possible to encode raster data represented in a grid reference with a projection of the type TLcdAlbersEqualAreaConic.

Bug fixData Connectivity Manager

LF-996
Removed the dependency to Realtime Package which was causing licensing errors.

Bug fixData Connectivity Manager

LF-997
SLD style files next to data files are now picked up correctly in all circumstances. In addition, it is possible to override the SLD style for an asset. An asset's style is applied when fusing vector data to an image coverage.

Bug fixDefense Symbology

LCD-7958
The speed leader is now taken into account when calculating symbol icon bounds.

2016.0.07

ImprovementLuciadFusion

The WMS client samples 'samples.wms.client.gxy.MainApplet' and 'samples.wms.client.lightspeed.MainPanel' now automatically show a time and elevation slider map widget in case these dimensions are discovered in one of the selected WMS layers.

ImprovementLuciadFusion

LCD-7626
TLspSetControllerAction can now use 'null' as controller to set on the view.

ImprovementAviation Standards

LCD-7509
Improved visualization of route segments in 3D views. They are now rendered as 3D corridors, whose dimensions are determined based on the lowerLimit, upperLimit, widthLeft and widthRight properties of the route segment.

Bug fixLuciadFusion

LCD-7887
Fixed an issue where TLspRulerController#setLabelStyler(TLspPaintState, ILspStyler) would set the passed styler for all paintstates, instead of just the one that has been passed.

Bug fixLuciadFusion

LF-260
Fixed a bug affecting the fusion of vector data, which could cause some features to fail with "Intersections do not end in end tile".

Bug fixLuciadFusion

LCD-7976
Fixed an issue in TLcd2DBoundsIndexedModel: it could not store domain objects which had an ALcdImage in their data type marked with TLcdHasGeometryAnnotation.

Bug fixLuciadFusion

LCD-7974
Fixed some threading problems in TLspEditController and TLspCreateController.

Bug fixLuciadFusion

LCD-7963
TLcdDTEDDirectoryModelDecoder: fixed case issue when auto-detecting bounds.

Bug fixLuciadFusion

LCD-7967
TLcdCompositeOp: fixed rounding error when compositing images. This could make further operations such as TLcdBinaryOp difficult to use.

Bug fixLuciadFusion

LCD-7910
Fixed flickering when zooming in very closely on the terrain in 3D.

Bug fixLuciadFusion

LCD-7956
Fixed sporadic flickering when using non-tiled WMS visualization in a Lightspeed view.

Bug fixLuciadFusion

LCD-7966
Fixed a JDBC driver leak when using "alwaysCloseConnection" for database models. The driver was registered each time a connection was opened, instead of once.

Bug fixLuciadFusion

LCD-7955
Fixed a rare ArrayIndexOutOfBoundsException when printing labels with a halo on a Lightspeed map with high quality settings.

Bug fixLuciadFusion

LCD-7942, LCD-4089
SLD files containing inline Base64 image content defined in an external graphic were not always properly decoded.

Bug fixLuciadFusion

LCD-7317
Lighting would change when center of view falls off the ellipsoid into the horizon when tilting the view.

Bug fixLuciadFusion

LCD-7489
The icon for Lightspeed's default controller is now the same as the icon for the general controller created by the sample ControllerFactory.

Bug fixLuciadFusion

LCD-4553
TLspComplexStrokedLineStyle: Complex strokes were applied once to all shapes together in an ILcdShapeList. The same issue would appear when using an ALspStyleTargetProvider which creates multiple geometries. This resulted in unexpected results with decorations. For example an arrow decoration at the start would only show up on the first shape of the ILcdShapeList instead of at the start of each sub-shape.

Bug fixData Connectivity Manager

LF-793
Fusion now always respects the list order of the assets as listed under a coverage. When fusing vector data such as DGN as image, this bug could cause assets at the bottom of the list to be 'on top' in the resulting tiles.

Bug fixDatabase Connectors

LCD-7966
Fixed a JDBC driver leak when using "alwaysCloseConnection" for database models. The driver was registered each time a connection was opened, instead of once.

Bug fixDefense Standards

LCD-7645
Padding data in tiles near the image edge is now correctly skipped over.

Bug fixDefense Symbology

LCD-7975
Fixed the NullPointerException when trying to paint an APP6 object without a style.

Bug fixRadar Connectors

LCD-7876
TLcdASTERIXDecoder.canDecode and retrieveFormat are now more correct in that they no longer accept files ending in 'asterix', but only those ending in '.asterix'. Similar for pcap, ast and astfin.

2016.0.06

ImprovementLuciadFusion

LCD-3767
The fusion.client.lightspeed sample now fits on new layers when they are added.

ImprovementLuciadFusion

LF-977
The WMS service now supports the style ID parameter in WMS GetMap requests. The names of the different SLD feature type styles of a coverage define the set of supported style IDs, and are advertized in the capabilities. Beware that name of an SLD feature type style is optional. Anonymous SLD feature type styles will not be accessible using a style ID.

ImprovementLuciadFusion

LF-925
The WMS server now supports SLD user styles for raster coverages, as it already did for vector coverages. You can use this for example to style fused elevation data using a user-defined color map.

ImprovementLuciadFusion

The WCS service in the LuciadFusion Data Server has been extended with a convenience parameter in the deployment descriptor (build/fusion/resources/WEB-INF/web.xml) to easily enable / disable GeoTIFF tiling. Although tiling is preferred in terms of performance, disabling it can be required to support 3rd party WCS clients that do not support tiled GeoTIFFs.

ImprovementData Connectivity Manager

LF-925
It is now possible to configure one ore more SLD styles on raster as well as vector coverages in the coverage metadata editor.

Bug fixLuciadFusion

LCD-7947
Made the sample FusionCatalogModelDecoder robust against unsupported coverages. Unsupported coverages are now gracefully skipped with a warning rather than thrown upon, such that the 'good' coverages can still be loaded and displayed in for example the lightspeed.decoder sample.

Bug fixLuciadFusion

LF-983
LuciadFusion engine did not fuse CADRG data at the right level when using multiple assets.

Bug fixLuciadFusion

LF-984
LuciadFusion engine did not correctly handle coverages of type RASTER with assets that use a different palette color. Such coverages will now automatically convert the data to RGBA.

Bug fixLuciadFusion

LF-856
Fixed a bug affecting the fusion of vector data, which could cause some features that cross the 180th meridian to fail with "No corresponding builder for edge link" or "java.lang.ArrayIndexOutOfBoundsException: -1".

2016.0.05

ImprovementLuciadFusion

LCD-7900
TLcdWMSClient no longer logs a stacktrace when passing an invalid URL.

ImprovementWeather & Environment Standards

LCD-7450
Added support for product definition template 15.

Bug fixLuciadFusion

LCD-7939
TLcdColorConvertOp: fixed error when converting 16-bit RGB to 8-bit RGBA.

Bug fixLuciadFusion

LCD-7938
Fixed a bug in the WMTS client which could cause read operations to fail with a "Stream closed" exception. This was a recent regression.

2016.0.04

ImprovementLuciadFusion

LCD-7870
To improve the interoperability with 3rd party OGC WMS servers, WMS GetMap requests no longer include a background color parameter in case of a transparent image request.

ImprovementLuciadFusion

LCD-7861
When normal coordinates are missing in a Collada file, a mesh without normals will now be produced. Previously it was not possible to visualize a Collada model with missing normals.

ImprovementLuciadFusion

LCD-7851
The native library loader will now prefer loading from java.library.path if it's set.

ImprovementLuciadFusion

TLcdMedianOp: new image operator that computes the median value in a small area around each pixel.

ImprovementLuciadFusion

LCD-7655, LCD-7596, LCD-5939
TLspRasterLayer: the view is now updated even more gracefully when changing the model or styling. Structural changes to simple images (e.g. ALcdBasicImage or ALcdMultilevelImage) are now also handled without flickering. This includes for example changes to data resolution, bounds, and reference.

ImprovementLuciadFusion

LCD-7250
It is now possible to remove overlay labels from a TLcdMGRSGridLayer instance, see TLcdMGRSGridLayer#removeOverlayLabel.

ImprovementLuciadFusion

LCD-7750
The WCS service has been extended with a convenience parameter in the deployment descriptor (build/ogc/resources/WEB-INF/web.xml) to easily enable / disable GeoTIFF tiling. Although tiling is preferred in terms of performance, disabling it can be required to support 3rd party WCS clients that do not support tiled GeoTIFFs.

Bug fixLuciadFusion

LCD-7912
When using the TLspPortholeController or TLspSwipeController artifacts could appear in the view on some devices.

Bug fixLuciadFusion

LCD-7895
Marked below libraries as non-public for Maven deployment:
  • com.sun.media:clibwrapper_jiio
  • com.sun.media:jai_codec
  • com.sun.media:jai_imageio
  • javax.media:jai
  • javax.media:jai_core
  • javax.media.jai:mlibwrapper_jai
  • org.jogamp.jogl:jogl-all-main
  • org.jogamp.jocl:jocl-main
  • org.jogamp.gluegen:gluegen-rt-main

Bug fixLuciadFusion

LCD-7907
Fixed an issue where TLspAWTEventFilterBuilder would create a right mouse button filter instead of a middle mouse button filter when calling TLspAWTEventFilterBuilder#middleMouseButton(). This issue was not present the new TLcdAWTEventFilterBuilder, it is a regression introduced by LCD-7159.

Bug fixLuciadFusion

LCD-7885
Fixed an encoding issue which caused the service console to disconnect on Windows.

Bug fixLuciadFusion

LCD-7874
The WMS, WMTS and WFS clients could fail to connect to the server. This was a recent regression.

Bug fixLuciadFusion

LCD-7865
Algorithms extending from ALcdGXYDiscretePlacementsLabelingAlgorithm didn't consistently order labels. This could lead to unstable labels in some cases.

Bug fixLuciadFusion

LCD-7862
TLspBalloonManager: in some cases, the balloon anchor of a line or polygon was not retrieved.

Bug fixLuciadFusion

LCD-7850
When using TLcdXYGridLayer or TLspXYGridLayerBuilder in combination with a world reference with a unit of measure different than 1, the intervals specified in the XY grid style were sometimes incorrectly interpreted. This could lead to a grid that it too sparse or dense.

Bug fixLuciadFusion

LCD-7599
ALspController: A NullPointerException could occur when switching between 2D and 3D whilst also switching controllers in a view listener.

Bug fixLuciadFusion

LCD-7859
Evaluating XPaths that included traversing a list only worked if the domain object representing the list was of type java.util.List. This has been extended with support for any java.util.Collection implementation.

Bug fixLuciadFusion

LCD-7854
TLcdImageIcon: creating and using instances in multiple threads could sometimes result in loading the wrong icon.

Bug fixLuciadFusion

LCD-7852
ALcdBalloonManager no longer modifies the background color of the balloon content.

Bug fixLuciadFusion

LCD-7840
Solved a specific reference parsing problem that could affect TLcyCompositeModelReferenceParser.

Bug fixLuciadFusion

LCD-7495
Fixed error when using band-select on some multi-band images.

Bug fixDefense Symbology

LCD-7889
The name conflict bug in countries and codes for MS2525c has been fixed. The countries which has a comma(,) in their names in ISO 3166-1 standard, were mapping to the same code. For example, "Congo, the Democratic Republic of the" and "Congo" was mapping to the same name as "Congo".

Bug fixDefense Symbology

LCD-7873
Icons for the following symbols are fixed for APP6A:
  • Fixed Wing/Special Operations Forces (SOF)
  • 1.X.2.1.1.18
  • Rotary Wing/Special Operations Forces (SOF)
  • 1.X.2.1.2.11
Icons for the following symbols are fixed for APP6A and APP6B:
  • Land Attack Missile
  • 1.X.2.2.1.4
  • Way Point
  • 2.X.2.5.2.10

Bug fixDefense Symbology

LCD-7639
MS2525C is now using ISO 3166-1 instead of FIPS Pub 10 for country codes.

2016.0.02

ImprovementLuciadFusion

LF-870
Fusion of WMTS: improved the performance when fusing a WMTS layer using a clipping shape.

Bug fixLuciadFusion

The Fusion server sample was initialized with an incorrect classpath, leading to a conflict between Luciad libraries residing in the lib and in the distrib/ogc folder.

Bug fixLuciadFusion

LF-968
Fusion is now more robust against WMTS services that return empty tiles instead of 404 "Tile not found" and WMTS services that advertize much more tile matrices (levels) than they actually have tiles for.

Bug fixLuciadFusion

LF-867
Fixed a bug when fusing a WMTS layer into a coverage with a reduced bounding box, which caused all of the source data to be squashed inside the reduced bounding box rather than being clipped to it.

Bug fixData Connectivity Manager

LF-912
A bug was fixed which could cause replication of updated coverages between two file system Tile Stores to fail with "The resource with id ... has been modified between ...".

Bug fixDefense Symbology

LCD-7592
Uncertain affiliated symbols such as Assumed Friend, Suspect, Pending are displayed with a black and white dotted outline for APP6C.

Bug fixDefense Symbology

LCD-7592
Uncertain affiliated symbols such as Assumed Friend, Suspect, Pending are displayed with a black and white dotted outline for MS2525C and APP6B.

Upgrade considerationDefense Symbology

LCD-7640
ILcdApp6AStyle and ILcdMS2525bStyle introduce 2 new methods:
  • setOffsetEditingEnabled(boolean aOffsetEditingEnabled): sets if the offset of the icon symbol is editable via CTRL+Drag operation.
  • getOffsetEditingEnabled(): returns true if the offset of the icon symbol is editable via CTRL+Drag operation.
The newly introduced methods can be invoked from TLcdDefaultAPP6AStyle and TLcdDefaultMS2525bStyle instances.

2016.0.01

ImprovementLuciadFusion

LCD-7748
Native libraries are now cached to $XDG_CACHE_HOME on Linux, in accordance with the XDG Base Directory specification. If the variable is not set, $HOME/.cache will be used.

ImprovementLuciadFusion

LCD-7754
The WMTS model decoder now automatically detects empty tiles and empty tile matrix sets.
  • Detection of empty tiles works around WMTS services that use an empty tile image instead of a 404 when a tile is not found.
  • Detection of empty tile matrices (levels) works around WMTS services that advertize more tile matrices than they actually have tiles for.

ImprovementLuciadFusion

LCD-7253
TLcdWKTReferenceParser is now more flexible when parsing projection names wrt casing and separator character. Also more aliases are supported now.

ImprovementLuciadFusion

LCD-5516, LCD-7746
TLspRasterLayer: the view is now updated more gracefully when changing the model or styling. Changes that do not affect the structure of the data (e.g. bounds, reference, tile grid, ...) are handled without flickering. Previously this could still occur for quad-tree structured data like LuciadFusion, Bing Maps or some WMTS servers. In practice this means that the usual image processing and time-based data updates are handled without flickering.

ImprovementLuciadFusion

LCD-6626
ILspImageProjectionLayer: model changes are now handled more gracefully

ImprovementLuciadFusion

LCD-6149
The ILcdModelDescriptor of decoded Wavefront Object (obj) models now returns the file name without extension as the display name. Previously it always returned the same value (Wavefront OBJ).

ImprovementAdvanced Raster Services

LCD-7696
The GDAL decoder now also decodes overview data, if available.

Bug fixLuciadFusion

LCD-7822
Fixed rare NullPointerException in ALspCreateHandle during creation.

Bug fixLuciadFusion

LCD-7815
When using a Lightspeed view, the default labeling algorithms weren't determined correctly when using domain objects that are an ILcdDataObject with a TLcdHasGeometryAnnotation. Also path based algorithms didn't work in that case.

Bug fixLuciadFusion

LCD-7816
The OGC server sample was initialized with an incorrect classpath, leading to a conflict between Luciad libraries residing in the lib and in the distrib/ogc folder.

Bug fixLuciadFusion

LCD-7816
The OGC server sample was initialized with an incorrect classpath, leading to potential conflicts between Luciad libraries residing in the lib and in the distrib/ogc folder.

Bug fixLuciadFusion

LCD-7762
TLspComplexStrokedLineStyle: 3D lines with non zero altitude values would sometimes be visualized with artifacts in a 2D view.

Bug fixLuciadFusion

LCD-7663
The TLcdSHPModelEncoder incorrectly limited the length of numeric fields to 13 characters. This has now been changed to 18 characters.

Bug fixLuciadFusion

LCD-7745
The BBox spatial filter was not supported on objects of type ILcdBounded while not being of the type ILcdShape or ILcdShapeList.

Bug fixLuciadFusion

LCD-7553
When using horizontal grid labels, some labels would be detached from their grid line.

Bug fixLuciadFusion

LCD-7674
TLspFillStyle: When using the TextureCoordinatesMode#OBJECT_RELATIVE mode and a ALspStyleTargetProvider to generate geometry for a domain object, the texture would be applied incorrectly.

Bug fixLuciadFusion

LCD-7653
TLspRasterLayer: terrain could appear blurry under some angles. The issue appeared most frequently when positioning the camera very close to the terrain, looking at the horizon and using a low resolution view.

Bug fixLuciadFusion

LCD-7668
TLspRasterLayer: fixed issue when visualizing color image with a no-data value.

Bug fixLuciadFusion

LCD-7671
Fixed a number of bugs in the synchronization between multiple Tile Store instances on the same directory.

Bug fixLuciadFusion

LCD-7658
TLspIconStyle.Builder#useOrientation(true) didn't work for non-georeferenced (cartesian) views, rsulting in a ClassCastException.

Bug fixLuciadFusion

LCD-7657
Fixed rare shader compilation errors when zooming in on objects that are styled with TLspComplexStrokedLineStyle.

Bug fixLuciadFusion

The transformations configured on a ILspTexturedStyle (e.g. translate) were not always applied. This would occur when a custom styler is used in which a ILspTexturedStyle is created with different transformation parameters.

Bug fixLuciadFusion

LCD-7362
Fixed a memory leak that could occur when visualizing 3D models. When the layer containing the 3D model was removed not all allocated memory was released properly.

Bug fixLuciadFusion

LCD-7631
TLspFillStyle : texture rotation was ignored when the texture coordinates mode was set to TextureCoordinateMode#VIEW_SCALED.

Bug fixDefense Symbology

LCD-7121
TLcdNVGModelDescriptor.getModelElementTypes() returns now the data types set of the possible model elements.

Upgrade considerationDefense Symbology

LCD-7756, LCD-7656
ILcdApp6AStyle and ILcdMS2525bStyle introduce 4 new methods:
  • setAnchorSymbol(ILcdIcon aSymbol): sets an anchor icon to the symbol icons. If set to null, no anchors will be painted.
  • getAnchorSymbol(): returns the current anchor icon.
  • setSelectionRectangleWidth(int aWidth): sets the width of the selection rectangle of an icon symbol in pixels.
  • getSelectionRectangleWidth(): returns the width of the selection rectangle in pixels.
The newly introduced methods can be invoked from TLcdDefaultAPP6AStyle and TLcdDefaultMS2525bStyle instances.

2016.0

ImprovementLuciadFusion

LCD-7650
All TLfnTileStoreProvider instances using the same ALfnEnvironment now use shared ALfnTileStore instances.

ImprovementLuciadFusion

The product documentation has been restyled.
  • StartHere.html was removed. The documentation home page is now at docs/index.html.
  • A new launcher application was added: start.jar. Samples can be started from within the launcher or the product documentation. For an optimal experience, it is recommended to keep the launcher running while browsing the documentation. You can run start.jar directly by double-clicking or executing java -jar start.jar from a console. More information about the command-line interface is available by running java -jar start.jar --help.
  • Individual shell scripts to launch samples have been removed; all samples can be started via the launcher.

ImprovementLuciadFusion

LCD-5542
Native libraries used by LuciadLightspeed are now packaged in jar files. This removes the need to set java.library.path when running LuciadLightspeed-based software. The relevant jars must simply be present on the classpath. The libraries are packaged per platform, so you can safely remove native jars for other platforms.

ImprovementLuciadFusion

LCD-7584
LuciadLightspeed now supports deployment to a Maven repository. POM files for all artifacts, both Luciad and 3rd-party, as well as an Ant script to deploy them are provided in the build/maven directory of the installation.

ImprovementLuciadFusion

LF-901
WMS GetFeatureInfo is now supported by default for all coverage types.

ImprovementLuciadFusion

LCD-7594
The WMS server now properly supports GetFeatureInfo handling for raster data (ALcdImage, ILcdRaster, ILcdMultilevelRaster). The location on the raster data and the corresponding values are automatically determined. Implementations of ILcdWMSGetFeatureInfoRequestEncoder receive the result by means of an ILcdDataObject containing the values.

ImprovementLuciadFusion

LCD-7210
ALspInteractiveLabelProvider now has an updateInteractiveLabel() method. This method can be used to modify a Swing label while it is interactive. It will also make sure that ALspSwingLabelStyler and TLspInteractiveLabelsController are notified of any changes to the interactive label. The updateInteractiveLabel() is called automatically by ALspSwingLabelStyler when a model change was fired for the domain object of the interactive label.

ImprovementLuciadFusion

TLcdGXYImagePainter#create(ILcdModel) was added. This method creates a painter provider that configures a GXY painter with the defaults for painting raster data. This includes color, elevation and measurement (e.g. weather) data.

ImprovementLuciadFusion

TLcdSLDFeatureTypeStylePainter now uses anti-aliasing by default when painting labels. This removed the need to wrap the painter when using it as a label painter.

ImprovementLuciadFusion

It is now possible to introduce clustering to help reduce the clutter when there are many objects in a view. You can make use of a transforming model with a TLcdClusteringTransformer to aggregate model elements that are close together into a cluster. For more information, please refer to the LuciadLightspeed Developer's Guide chapter "Clustering".

ImprovementLuciadFusion

LCD-7131
It is now much easier to work with domain objects that do not implement ILcdShape themselves, but rather expose it as an ILcdDataObject property. Refer to TLcdHasGeometryAnnotation and the fundamentals samples for more information.

ImprovementLuciadFusion

It is now possible to create a tileable ILcdIcon based on a TLcdGXYHatchedFillStyle. See TLcdGXYHatchedFillStyle#asIcon().

ImprovementLuciadFusion

LCD-7488
TLcdDimensionInterval now explicitly allows null as min and max values to indicate it is unbounded at one or both ends. This is useful when modeling an interval that spans all possible values, especially for Comparable types such as String or Date that don't have a MIN_VALUE or MAX_VALUE.

ImprovementLuciadFusion

TLcdGXYNavigationControlsFactory: class now contains factory methods where it is no longer necessary to specify the image path. Images from the release will be used in that case.

ImprovementLuciadFusion

LCD-7434
The TLcdGeoJsonModelEncoder can now encode domain objects that are not an ILcdShape, but which do implement ILcdDataObject and the data type has a TLcdHasGeometryAnnotation. The geometry property in this case must be one of the supported shapes.

ImprovementLuciadFusion

LCD-7133
It is now possible to use textured line and fill colors when using TLspComplexStrokedLineStyle. To support this, new lineTexture and fillTexture methods were added to the stroke builders in ALspComplexStroke. This is demonstrated in the lightspeed.style.strokedline sample, in the Airspace layer.

ImprovementLuciadFusion

LCD-7471
It is now possible to customize the angle threshold that is used to determine if strokes are omitted at a corner or wrapped around it. See TLspComplexStrokedLineStyle.Builder#shapeAngleThreshold.

ImprovementLuciadFusion

LCD-7275, LCD-4106
ALspCreateControllerModel now contains dedicated overridable protected functions that allow you to define the minimum and maximum pointcount for a pointlist during creation.

ImprovementLuciadFusion

SLD styling now takes into account the optional channel selection property of an SLD raster symbolizer, both in GXY and Lightspeed views. This enables users to select the raster channels (bands) of multi-spectral data to be used for Red / Green / Blue or Grayscale rendering. The GXY and Lightspeed SLD samples show this new capability by means of a Las Vegas multi-spectral raster.

ImprovementLuciadFusion

LCD-7446
TLcdRotatingIcon has a mode to automatically rotate itself. This now also works when used in a CellRenderer, for example in a JTree.

ImprovementLuciadFusion

TLspViewBuilder#resolutionScale allows rendering an AWT view at a lower resolution than the view's host component. This is useful for devices with modest resources but high-resolution displays, such as tablets.

ImprovementLuciadFusion

LuciadFusion is extended with support for the ECRG raster format.

ImprovementLuciadFusion

LF-427
LuciadFusion now automatically detects the levels to produce from source data in all cases. This replaces the user-specified setting "levels to produce" or "produce all levels" on the coverage metadata, which is ignored in all cases. This benefits multileveled source data in particular, which now automatically detects the multiple levels in the source data and produces the tiles at the corresponding levels of the coverage's tile pyramid accordingly. This affects formats such as ECRG, CADRG, USRP and NITF.

ImprovementLuciadFusion

LCD-7276
Added ability for TLspCreateController to go to the next step in creation, without explicitly finishing or committing the creation of the shape. This allows you to perform changes to your newly created shape (such as due to a UI event), without interrupting the creation process.

ImprovementLuciadFusion

LF-874
Now each asset of a coverage can have its own input SLD file instead of one SLD file per coverage as before.

ImprovementLuciadFusion

The GL resource cache for Lightspeed views now has better default behavior regarding its maximum size. For most practical purposes, the size no longer needs to be specified. See TLspViewBuilder.glResourceCacheSize for more information.

ImprovementLuciadFusion

TLspViewPaintingHints offers a way to ensure peak performance or quality, taking into account the currently installed GPU.

ImprovementLuciadFusion

LF-871
For interoperability with reverse proxies, the links to the online resources advertized in the capabilities have changed when both server and client are running LuciadFusion V2016.0 or higher. The path of the URI is now relative to the servlet mapping instead of relative to the application server root: by default online resources are now advertized with an empty URI "" instead of "/LuciadFusion/lts". For backwards compatibility, the behavior towards older clients remains as it was before. If you're running a LuciadFusion server behind a reverse proxy and want to take advantage of this feature, you should make sure both client and server are up-to-date.

ImprovementLuciadFusion

LCD-7354
The multi-dimensional API now includes an interface ILcdMultiDimensionalModel for filtering dimensional data. It is typically implemented by dimensional models such as NetCDF, LuciadFusion raster and NVG models. Even when models implement the interface, implementations may still indicate that particular instances do not support dimensional filtering by returning the empty filter TLcdDimensionFilter.EMPTY_FILTER upon ILcdMultiDimensionalModel.getDimensionFilter().

The new multi-dimensional API replaces some legacy, format-specific APIs which have been deprecated. Examples of such APIs are get/setDate on ASTERIX and NVG models. A notable difference with these legacy APIs is that the multi-dimensional models must no longer do any snapping of elements to filters. In case no elements pass a filter, the result must be empty. Instead, snapping has been implemented as a utility which can be applied to any model, using TLcdMultiDimensionalModelUtil.applyAndSnapToDimensionFilter.

The following enhancements were also done in this context:
  • TLcdDimensionInterval.Relation and relationTo have been removed and replaced with TLcdDimensionInterval.overlaps.
  • TLcdDimensionInterval now documents the use of null as min or max to indicate that it is unbounded at one or both ends. The methods TLcdDimensionInterval.union, overlaps and compareTo know how to deal with unbounded intervals.

ImprovementLuciadFusion

LuciadFusion is extended with a new asset and coverage type RASTER, which allows preservation of all the source data's multi-dimensional and multi-band information. This can be used to fuse NetCDF data whilst preserving the multi-dimensional nature of the source data. This allows clients to treat fused NetCDF data as if it were regular NetCDF data, using the imaging API. Such fusion models only support the imaging API, they no longer support the raster (tile set) API. The new RASTER data type thus replaces the legacy data types IMAGE, ELEVATION and MULTIVALUED.

The tile format for RASTER coverages is "image/tiff". Every possible combination of possible values for every dimension will be stored as a separate page of a multi-page TIFF file.

The RASTER data type can also be used to preserve the multi-band nature of source data.

'Preservation of multi-dimensional and multi-band nature' does not imply 'preservation of source resolution without any resampling'. Even when preserving multi-dimensional and multi-band nature, fusion may yet resample the source data using bilinear interpolation and warping to fit the source raster into the raster defined by the coverage's bounds, layout and tile resolution.

Fusing coverages as RASTER is thus a lot more powerful than fusing coverages as IMAGE, ELEVATION or MULTIVALUED. There could however be reasons to not use RASTER:

  • When you want to offer the coverage as WMTS, you need to use IMAGE. RASTER coverages do not support WMTS.
  • Preserving the multi-dimensional samples is overhead if you don't need them. When you're only interested in a single 'default' combination of dimensional values, and you want to save bandwidth, you're probably better off using IMAGE.
  • RASTER coverages don't have a compact format for elevation. If you want to use the compact format for elevation to preserve bandwidth, you should use ELEVATION.
  • When you're fusing GRIB data, you'll still have to use MULTIVALUED. GRIB source data cannot be fused as raster, because the source format does not support the imaging API. There is no other good reason to still use MULTIVALUED.

The model structure for a decoded raster coverage is this:
  • The model has a TLfnRasterTileStoreModelDescriptor, which is also an ILcdImageModelDescriptor.
  • If the model has multi-dimensional information, it is also an ILcdMultiDimensionalModel.
  • Even if it doesn't have any multi-dimensional information, the model is still ILcdMultiDimensionalModel, but it has null for filter parameters.
  • The model adheres to the imaging API. You can get the current image usingALcdImage.fromDomainObject(modelElement).
  • The ALcdImage instances themselves are immutable, so when you update the dimensional filter, the reference will be updated with a new instance.

ImprovementLuciadFusion

LCD-7345
ALcdWeakSelectionListener, ALcdWeakLayeredListener, and ALcdWeakPropertyChangeListener can now also be used on ILcdLayerTreeNode as hierarchy listeners.

ImprovementLuciadFusion

LCD-7344
The new class TLcdDeleteSelectionAction allows removing selected objects with undo-redo support.

ImprovementLuciadFusion

TLcdIconFactory has been added to the API, which is a class containing factory methods for ILcdIcon instances. This class allows to create icons for a string identifier, and introduces the concept of "themes": depending on the theme, the returned icon for a certain identifier will be different. Consult the class javadoc for more information.
TLcdIconFactory is the preferred way to create icons based on the resources in the release. Therefore we deprecated the TLcdGUIIcon and TLcdShapeIcon classes in favor of the TLcdIconfactory class.

ImprovementLuciadFusion

TLspPortholeController visually compares two layer sets by exposing one set of layers through a porthole in the other set. The porthole is a rectangular region that follows the mouse. You can customize this controller or use it programmatically. The controller is available in the decoder sample.

ImprovementLuciadFusion

LCD-3901
TLcdRangeSlider now supports Nimbus Look and Feel.

ImprovementLuciadFusion

CSVModelDecoder is a customizable model decoder for point data in CSV files, available as sample code.

ImprovementLuciadFusion

LuciadFusion is extended with support for all raster formats that can be decoded using the GDAL decoder.

ImprovementLuciadFusion

LuciadFusion is extended with support for multi-dimensional NetCDF data, which can be fused to a raster or image coverage. The format ID is defined by ALfnFormat.NETCDF_FORMAT_ID.

Fusing NetCDF data to a raster coverage preserves the multi-dimensional and multi-band nature of the source data. The dimensional information of the source data can be accessed using RasterAssetPart.getDimensions() and RasterAssetPart.Builder.dimensions(). You can restrict the dimensional information to a subset of the source data's using TLfnRasterCoverageMetadata.getDimensions() and TLfnRasterCoverageMetadata.Builder.dimensions().

Fusing NetCDF data to an image coverage renders RGB images from the multi-dimensional source data, and requires a dimensional filter of the same sort that you would use when visualizing the multi-dimensional data. You can define a dimensional filter, consisting of a specific combination of a single dimensional value for each dimension, using TLfnRasterCoverageMetadata.getDimensions() and TLfnRasterCoverageMetadata.Builder.dimensions().

ImprovementLuciadFusion

LCD-7266
TLcdGXYAsynchronousLayerWrapper now logs a warning if it wraps an unsupported layer.

ImprovementLuciadFusion

LCD-7264
Improved TLcdGXYCompositeController robustness when a delegate terminates the controller.

ImprovementLuciadFusion

A 3D arc band shape was introduced; ILcd3DArcBand. This shape represents a subvolume of a sphere. It extends from a minimum radius to a maximum radius from the center point. It is further delimited by a start angle and an arc angle in the horizontal plane and a pitch start angle and a pitch arc angle in the vertical plane. It has two implementations; TLcdLonLatHeight3DArcBand and TLcdXYZ3DArcBand. This shape can only be visualized in a Lightspeed view.

ImprovementLuciadFusion

Support was added for cartesian (XY) grid. They can be displayed in
  • a GXY view using TLcdXYGridLayer. This is demonstrated in the gxy.grid sample.
  • a Lightspeed view with the new TLspXYGridLayerBuilder. This is demonstrated in the lightspeed.grid sample.
Cartesian grids are useful in combination with grid references, but can also be used for non-georeferenced views.

ImprovementLuciadFusion

LCD-7137
ALcdModel now has support to debug missing or wrong locks. Please refer to its class comment for instructions on how to enable it.

ImprovementLuciadFusion

LCD-7159
TLcdGXYPanController, TLcdGXYSelectController2 and TLcdGXYEditController2 now have a new method: setAWTFilter. This allows specifying the mouse events they should respond to. You can easily create such filters using the new TLcdAWTEventFilterBuilder class. Lightspeed users can also use that class instead of TLspAWTEventFilterBuilder, which has been deprecated.

ImprovementLuciadFusion

The printing samples now show how to add a compass icon to the printout.

ImprovementLuciadFusion

LCD-7659
TLcdLonLatPointFormat has been made more flexible and can now parse more commonly used seconds symbols. For example coordinates as they are found on the Wikipedia website can now be parsed by the TLcdLonLatPointFormat.

ImprovementLuciadFusion

ALspSwingLabelStyler now has the protected shouldInvalidateLabel method. This method can be used to improve performance for dynamic models when model changes occur that are not relevant for the swing labels.

ImprovementLuciadFusion

LCD-7044
TLspFixedOnPathLabelLocationProvider was added. This labeling algorithm tries to find a label location at a specific location on a curve. Unlike TLspOnPathLabelingAlgorithm, it doesn't try to keep the label within the view bounds, making it more efficient.

ImprovementLuciadFusion

LCD-7046
TLspFixedInPathLabelLocationProvider was added. This labeling algorithm tries to find a label location inside a shape. Unlike TLspInPathLabelingAlgorithm, it doesn't try to keep the label within the view bounds, making it more efficient.

ImprovementLuciadFusion

LCD-7040
TLspLabelPainter now supports html formatted label strings. When an ALspTextProviderStyle returns such a String, TLspLabelPainter now automatically formats and paints this String using HTML.

ImprovementLuciadFusion

LCD-6385
It is now possible to use ALspSwingLabelStyler to paint swing labels in offscreen views (or other views that don't extend from ALspAWTView). Note that ALspSwingLabelStyler still uses the AWT thread to paint these labels. This means that if an offscreen view is painted on a background thread, it may still need to wait until the AWT thread has finished painting the Swing labels before they become visible.

ImprovementLuciadFusion

LCD-4104
TLspLabelPainter now avoids taking a read-lock on the model if it's not strictly needed.

ImprovementLuciadFusion

LCD-5935
TLspLabelPainter now takes the TLspIconStyle#getModulationColor() into account.

ImprovementLuciadFusion

LCD-4814
TLcdGXYSelectControllerModel2 now also allows selecting objects while pressing the CTRL key. This also means that it is now possible to immediately reshape objects (e.g. add/remove points) without having to select them first. In order to revert this change, you can override the TLcdGXYSelectControllerModel2#selectHowMode method, and return SELECT_HOW_NO_CHANGE if the CTRL key is pressed.

ImprovementLuciadFusion

LCD-7014
The samples now report rendering exceptions in the layer tree. Refer to LayerPaintExceptionDialogAction for more information.

ImprovementLuciadFusion

LCD-6799
A set of security improvements have been implemented:
  • Removed the dependency on the legacy JGenerator 2.2 library,
  • Improved the sanitization of response content to be more robust against CRLF injections and cross-site scripting attempts.

ImprovementLuciadFusion

The sample class structure has been simplified. All Swing samples now extend SamplePanel.

ImprovementLuciadFusion

LCD-6831
The TLcdGeoJsonModelDecoder can now be configured with a data type that contains properties of type: LONG_TYPE, FLOAT_TYPE, DOUBLE_TYPE.

ImprovementLuciadFusion

LCD-5929
The OGC WMS web service previously available in build/wms (containing the build script) and distrib/ogc/LuciadLightspeedWMS_x.x.x (containing a pre-built / ready-to-deploy service) has now been integrated in a combined OGC web service sample, consisting of a WMS, WFS and WCS; the folder build/ogc contains the build script and the folder distrib/ogc/LuciadLightspeedOGC_x.x.x contains a pre-built and ready-to-deploy service. To run the pre-built service, you can still use the script ogc.server.start (.bat/.sh) available in the samples folder, which will deploy the service in a Jetty servlet container.

ImprovementLuciadFusion

LCD-5929
The OGC WFS web service previously available in build/wfs (containing the build script) and distrib/ogc/LuciadLightspeedWFS_x.x.x (containing a pre-built / ready-to-deploy service) has now been integrated in a combined OGC web service sample, consisting of a WMS, WFS and WCS; the folder build/ogc contains the build script and the folder distrib/ogc/LuciadLightspeedOGC_x.x.x contains a pre-built and ready-to-deploy service. To run the pre-built service, you can still use the script ogc.server.start (.bat/.sh) available in the samples folder, which will deploy the service in a Jetty servlet container.

ImprovementData Connectivity Manager

LF-575, LF-905
It is now possible to manually override the minimum scale of any asset of a raster coverage. You can use this to manually tweak the visibility of (multilevel) source raster data in the fused result in case you're not happy with the defaults.

ImprovementData Connectivity Manager

Unsupported tile types are not displayed as an option on the Raster Coverage Metadata Editor anymore. A supported tile type is the one that is supported by all of the assets of the coverage to be fused.

ImprovementData Connectivity Manager

The DCM provides a band selection panel in the asset metadata for ERDAS imagine datasources.

ImprovementData Connectivity Manager

The DCM provides a dimension filtering panel in the coverage metadata for multidimensional NetCDF datasources

ImprovementAdvanced GIS Engine

LCD-4882
Constructive geometry operations now support TLcdLonLatBuffer, TLcdLonLatHeightBuffer, TLcdXYGeoBuffer, TLcdLonLatGeoBuffer and TLcdLonLatHeightVariableGeoBuffer.

ImprovementAdvanced Raster Services

The GDAL Industry Specific Component adds support for decoding raster formats using the GDAL decoder and visualizing them in a Lightspeed or in a GXY view. This includes the formats:
  • Arc/INFO Binary Grid (.adf)
  • Azavea Raster Grid (.arg)
  • BSB Nautical Chart Format (.kap)
  • VTP Binary Terrain Format (.bt)
  • New Labelled USGS DOQ (.doq)
  • Arc/Info Export E00 GRID
  • NOAA .gtx vertical datum shift
  • HF2/HFZ heightfield raster (.hf2, .hfz)
  • Erdas Imagine (.img)
  • Erdas 7.x .LAN and .GIS
  • SRTM HGT Format (.hgt, .DEM)
  • GXF - Grid eXchange File (.gxf)
  • SGI Image Format (.bw, .rgb, .rgba, .sgi)
  • Snow Data Assimilation System (.hdr)
  • GDAL Virtual (.vrt)
The formats for which Luciad offers its own decoder are excluded (locked) by default. You can unlock those as well using the system property "com.luciad.format.gdal.unlockAllFormats". This will unlock the formats:
  • Arc/Info ASCII Grid
  • ADRG/ARC Digitilized Raster Graphics (.gen/.thf)
  • Microsoft Windows Device Independent Bitmap (.bmp)
  • Spot DIMAP (metadata.dim)
  • Military Elevation Data (.dt0, .dt1, .dt2)
  • ECRG Table Of Contents (TOC.xml)
  • ESRI .hdr Labelled
  • ERMapper (.ers)
  • TIFF / BigTIFF / GeoTIFF (.tif)
  • JPEG JFIF (.jpg)
  • KMLSUPEROVERLAY
  • NITF (.ntf, .nsf, .gn?, .hr?, .ja?, .jg?, .jn?, .lf?, .on?, .tl?, .tp?, etc.)
  • Raster Product Format/RPF (CADRG, CIB)
  • Standard Raster Product (ASRP/USRP)
  • USGS ASCII DEM / CDED (.dem)
For more details, see:
  • The GDAL Developer's Guide
  • TLcdGDALModelDecoder to decode ERDAS Imagine files.

ImprovementTerrain Analysis Engine

LCD-6229

Added sample code for various TEA components using a Lightspeed view. The following samples now have a Lightspeed equivalent:

  • Contours
  • Distance Over Terrain
  • Extreme Points
  • Visibility

ImprovementWeather & Environment Standards

It is now possible to decode one or more specific NetCDF variables out of a source file using a file:// URI with query parameters. This can be used to reduce load time when you only need a specific subset of variables out of a NetCDF source file that has many variables. For example, given the source file:///dir/netcdf.nc?variable=U&variable=V, the decoder decodes only the U and V components of wind, regardless of any other variables which may be present in the source file.

ImprovementRadar Connectors

LCD-7613
TLcdASTERIXLiveDecoder has been improved to be more robust against out of order ASTERIX category 240 records. The first records received are now buffered and sorted to make sure the radar visualization is initialized with the correct parameters.

ImprovementRadar Connectors

LCD-7067
The decode.asterix.lightspeed.trackdisplay sample was added. This sample demonstrates how a track display, based on ASTERIX track data, can be displayed.

ImprovementRadar Connectors

TLcdASTERIXFilteredModel now implements ILcdMultiDimensionalModel, which allows it to work with TLcdDimensionalFilter instances.

Bug fixLuciadFusion

LCD-7647
The WCS client can now handle coverages of which the reference is expressing using OGC WKT in the WCS DescribeCoverage response.

Bug fixLuciadFusion

LCD-7111
Models decoded via the TLcdSHPModelDecoder did not have a default ILcdModelEncoder.

Bug fixLuciadFusion

LF-912
A bug was fixed which could cause replication of updated coverages between two file system Tile Stores to fail with "The resource with id ... has been modified between ...".

Bug fixLuciadFusion

LF-920
The WCS server now also supports model references which don't have an EPSG code. Such references will be formatted as "urn:ogc:def:crs:WKT::<URL-encoded WKT string>" in the capabilities.

Bug fixLuciadFusion

LCD-7601, LCD-3493
ILcdBounds with a width equal to 360 degrees were visualized incorrectly, bot in a 2D and 3D view. In a 3D view ILcdBounds with an edge on one of the poles would be visualized as it's inverse if it crossed the date line.

Bug fixLuciadFusion

LCD-7635
TLspRasterLayer: fixed issue when toggling layer visibility while the data is not painted.

Bug fixLuciadFusion

LCD-7625
TLcdGXYImagePainter did not support painting >8-bit RGB data with warping.

Bug fixLuciadFusion

LCD-7630
Fixed an issue in the WFS model class (TLcdWFSProxyModel) that prevented it from finding a default geometry property name in case of a DescribeFeatureType response XML Schema with complex types that do not all have explicit content (e.g., that contain a link instead).

Bug fixLuciadFusion

LCD-7470
When using TLspComplexStrokedLineStyle for a closed shape, the start and end of the strokes line could have artifacts.

Bug fixLuciadFusion

LCD-7375
TLcdLayerTree did not respect the font size, as defined by the look and feel, when using Lightspeed views. As a result, large fonts in the layer tree could appear cut off.

Bug fixLuciadFusion

LCD-7333
TLcdSimpleLogger did not log its warnings to the standard error stream.

Bug fixLuciadFusion

LCD-7296
TLspViewXYZWorldTransformation3D's height and width getters were not in sync with the respective property changes.

Bug fixLuciadFusion

LCD-7140
Fixed a threading violation in the internal code of TLspCreateController and TLspEditController.

Bug fixLuciadFusion

LCD-6560
TLcdGXYBoundsPainter: the isTouched and getCursor implementations are now symmetric with the discretization.

Bug fixLuciadFusion

LCD-6175
Small performance improvements for the TLcdStereoGraphic, TLcdGeneralPerspective and TLcdVerticalPerspective projections.

Bug fixLuciadFusion

LCD-2245, LCD-3526, LCD-3966
Several fixes were performed for ILcdProjection implementations. These fixes mostly make the projections more consistent when transforming from/to lon lat. Several edge cases have been fixed.

Bug fixLuciadFusion

LCD-6939
Fixed an issue preventing the correct decoding of XML files containing a union of unions.

Bug fixLuciadFusion

Closing the OutputStream object in a custom implementation of ILcdWMSFeatureInfoRequestEncoder or ILcdGXYViewEncoder resulted in a duplication of the result. This bug has been fixed.

Bug fixData Connectivity Manager

LF-913
Fixed an bug which could lead to an inconsistent state after changing are resource's ID (asset, coverage, theme). This bug was responsible for no longer being able to reorder assets in an uncommitted coverage after changing its asset's IDs.

Bug fixDefense Symbology

LCD-7040
NVG text object using html are now correctly painted in offscreen view.

Bug fixInfrastructure Standards

LCD-7503
TLcdDGNMicroStationModelDecoder is now deprecated. You can use TLcdDGNModelDecoder instead, which also supports DGN V8 files.

Bug fixRadar Connectors

LCD-7604
Fixed memory leak in radar layer. The memory leak occurred when the visualization of the radar was reset.

Upgrade considerationLuciadFusion

LCD-7444

ArcSDE has been discontinued by Esri as of ArcGIS 10.3.

See these links for more information:
  • http://downloads2.esri.com/support/TechArticles/W34229_DEPRECATION_PLAN_FOR_ARCGIS_10_4_and_10_3_1__082015.pdf
  • http://blogs.esri.com/esri/supportcenter/2015/02/11/where-is-the-install-for-arcsde-10-3/

Therefore the ARC_SDE_VECTOR_FORMAT_ID and ARC_SDE_RASTER_FORMAT_ID constants in ALfnFormat have been deprecated.

As an alternative to the ArcSDE connector, LuciadLightspeed offers direct connectors for the spatial database back-ends supported by ArcSDE/ArcGIS: SQL Server, Oracle Spatial, DB2, Informix, PostGIS or SAP Hana.
You can also use any of the OGC services (WMS, WFS, WCS).
Contact Luciad Support for more information on how to obtain and use these connectors.

Upgrade considerationLuciadFusion

To enable WCS request parameter access when customizing request-related operations (data decoding, data encoding), a few API changes have been introduced:
  • A new class TLcdWCSRequestContext has been introduced to access request context parameters such as the original HTTP request and the requested coverage(s).
  • The signature of the method ILcdWCSModelEncoderFactory#createModelEncoder(ILcdModel, ILcdOutputStreamFactory, String) has been changed into ILcdWCSModelEncoderFactory#createModelEncoder(ILcdModel, ILcdOutputStreamFactory, String, TLcdWCSRequestContext).
  • The signature of the methods in ILcdCoverageOfferingList have been changed by means of the introduction of an extra argument of type TLcdWCSRequestContext.
  • The methods ILcdCoverageOfferingList#getCoverageOffering(int, TLcdWCSRequestContext) and ILcdCoverageOfferingList#getCoverageOffering(String, TLcdWCSRequestContext) can now throw an IOException.

The change will impact WCS implementations that implement ILcdWCSModelEncoderFactory and/or ILcdCoverageOfferingList. Affected implementations can simply update the signature ignore the new TLcdWCSRequestContext parameter.

Upgrade considerationLuciadFusion

The following methods/classes in ALcdProjection were removed:
  • ALcdProjection.bisectInterval class
  • findBisectLonIntervals()
  • findBisectLatIntervals()
  • bisectLonInterval()
  • bisectLatInterval()
These were not meant to be used or extended.

Upgrade considerationLuciadFusion

To enable the integration of the Luciad imaging API and its TLcdGXYImagePainter for SLD raster styling in GXY views, the dependency on ILcdRasterPainter has been removed from the API. More specifically:
  • ILcdSLDRasterPainterConfigurator and its implementation TLcdRasterPainterConfigurator have been removed.
  • The factory method TLcdSLDSymbolizerPainterFactory#createRasterPainterConfigurator has been removed.
  • The javadoc of the factory method TLcdSLDSymbolizerPainterFactory#createRasterPainterProvider no longer requires an ILcdRasterPainter as return type. Any painter provider capable of rendering rasters is sufficient.
This only impacts users that manually interacted with ILcd/TLcdRasterPainterConfigurator. If this is the case, raster painter customization should be moved to TLcdSLDSymbolizerPainterFactory#createRasterPainterProvider.

Upgrade considerationLuciadFusion

LCD-7413
The Java Servlet dependency has been upgraded from version 2.5 to 3.0. Consequently, an application server or servlet container with support for Java Servlet 3.0 or higher is now required for deployment of the server - for instance, Tomcat 7 or higher. The impact of this is expected to be low since Java Servlet 3.0 is widely adopted by application server and servlet container products for over 6 years. The servlet container delivered with the Luciad products, Jetty 8, already supports Servlet 3.0

Upgrade considerationLuciadFusion

LF-875
The Java Servlet dependency has been upgraded from version 2.5 to 3.0. Consequently, an application server or servlet container with support for Java Servlet 3.0 or higher is now required for deployment of the server - for instance, Tomcat 7 or higher. The impact of this is expected to be low since Java Servlet 3.0 is widely adopted by application server and servlet container products for over 6 years. The servlet container delivered with LuciadFusion, Jetty 8, already supports Servlet 3.0

Upgrade considerationLuciadFusion

LF-816
Solaris 10+ was dropped from the list of supported platforms for LuciadFusion.

Upgrade considerationLuciadFusion

TLfnTileStoreModelDescriptor no longer implements ILcdEarthModelDescriptor. TLfnRasterTileStoreModelDescriptor no longer implements ILcdImageModelDescriptor, rather the concrete internal implementation classes do, but only when applicable:
  • ILcdImageModelDescriptor if the model follows the imaging API. This is the case when the coverage type is RASTER.
  • ILcdEarthModelDescriptor if the model follows the tile set API. This is the case when the coverage type is MULTIVALUED and in some cases also when it is ELEVATION.
  • Both if the model is a hybrid following both these APIs. This is the case when the coverage type is IMAGE and in in most cases also when it is ELEVATION.
This means that TLfnRasterTileStoreModelDescriptor cannot be assigned to any of the aforementioned interfaces without a cast. Model descriptors of specific models will still implement these interfaces, so you can fix any compile errors by doing a type check on the model descriptor before casting.

Upgrade considerationLuciadFusion

LCD-7352
The names of some classes and methods of the multi-dimensional API have changed. You may need to fix compile errors accordingly.
  • ILcdDimension replaces ILcdDimensionAxisValues.
  • TLcdDimension replaces TLcdDimensionAxisValues.
  • ILcdMultiDimensional.getDimensions() replaces ILcdMultiDimensional.getDimensionAxisValues().
  • ILcdDimension.getValues() now returns a bounded and sorted List containing no duplicates instead of an impractical unboundedIterable.

Upgrade considerationLuciadFusion

LCD-7055

The signature of the ALspLabelLocationProvider methods was modified to take an ILspLabelingAlgorithm.LabelContext and an ILspView as method parameter instead of a TLspContext. This makes it possible for implementations of ALspLabelLocationProvider to retrieve context information such as the elevation mode, or the previous label location.

Implementations of ALspLabelLocationProvider will now generate a compile error that can be resolved by modifying the signature accordingly. If TLspContext was used, it can now be retrieved using the following line of code:

      TLspContext aContext = aLabelContext.getContext(aLabel.getLayer(), aView);
    

Upgrade considerationLuciadFusion

Default Adobe Flash output support in the WMS server has been removed. The API class that supported this, TLcdGXYViewSWFEncoder, and the corresponding dependency on JGenerator 2.2 (jgen-2.2.jar and log4j-1.2.15.jar) have therefore been removed from the product.

If you did not explicitly use Adobe Flash output, this will cause no impact other than a potential build script update (because of the removed libraries). If you did use Adobe Flash output and prefer to keep its support in the Luciad WMS, you can request the source code of TLcdGXYViewSWFEncoder, the JGenerator 2.2 library and integration instructions by sending a mail to support@luciad.com.

Upgrade considerationData Connectivity Manager

LCD-7444

ArcSDE has been discontinued by Esri as of ArcGIS 10.3. We refer to the release notes of the ArcSDE component for more information.

As a result, theTLcyArcSDEDecoderAddOn, TLcyLspArcSDERasterFormatAddOn and TLcyLspArcSDEVectorFormatAddOn have been deprecated and removed by default from the addons.xml files.

The addons are still available in the release though. If you need them in your application, you can plug them back in by adding the following lines to your addons.xml file:

      <addon>
      <priority>data_producer</priority>
      <name>ArcSDE Format</name>
      <class>com.luciad.lucy.addons.arcsde.TLcyArcSDEDecoderAddOn</class>
      <configFile>lucy/arcsde/TLcyArcSDEDecoderAddOn.cfg</configFile>
      <luciadMapOptions>ArcSDE</luciadMapOptions>
      </addon>
      <addon>
      <priority>data_producer</priority>
      <name>Lightspeed ArcSDE Raster format</name>
      <class>com.luciad.lucy.addons.arcsde.lightspeed.raster.TLcyLspArcSDERasterFormatAddOn</class>
      <configFile>lucy/arcsde/lightspeed/raster/TLcyLspArcSDERasterFormatAddOn.cfg</configFile>
      <luciadMapOptions>Lightspeed, ArcSDE</luciadMapOptions>
      </addon>
      <addon>
      <priority>data_producer</priority>
      <name>Lightspeed ArcSDE Vector format</name>
      <class>com.luciad.lucy.addons.arcsde.lightspeed.vector.TLcyLspArcSDEVectorFormatAddOn</class>
      <configFile>lucy/arcsde/lightspeed/vector/TLcyLspArcSDEVectorFormatAddOn.cfg</configFile>
      <luciadMapOptions>Lightspeed, ArcSDE</luciadMapOptions>
      </addon>
    

Upgrade considerationData Connectivity Manager

The 3D optional component has been removed from the LuciadFusion distributable. If any of your applications still depend on it, you should migrate them to LuciadLightspeed.

Upgrade considerationDatabase Connectors

LCD-6798
The Oracle Spatial-Relational decoder has been removed (com.luciad.format.oracle.spatialRelational.TLcdOracleModelDecoder). It corresponds to the Oracle Relational Model, which has long been deprecated and is no longer supported by Oracle. Oracle has removed support for Spatial Relational as of 9i, released in 2001. 8i support ended in 2006. New applications should use the com.luciad.format.oracle.spatial package, which offers support for the new Oracle Object-Relational Model.

Upgrade considerationDefense Symbology

LCD-7335
Two new methods have been added to ILcdAPP6AStyle and ILcdMS2525bStyle classes which let you set and get border width of the icon symbols.
  • void setSymbolBorderWidth(int aWidth): Sets the border width of the icon symbols.
  • int getSymbolBorderWidth(): Gets the border width of the icon symbols.

Upgrade considerationDefense Symbology

LCD-7376
Several arrow symbols in the military symbologies were painted in the wrong direction. The direction of those icons is now corrected by default.
Disabling the fix
If you want to disable this fix and keep the old behavior, you can set the com.luciad.symbology.arrowsymbols.PAINT_LEGACY jvm property to true.
Affected symbols
APP6a / APP6b
Name Code(SIDC) Hierarchy Code
Counterattack (CATK) G*T*GK----***** 2.X.1.1.7
Counterattack by Fire GFC*MOLAF-***** 2.X.1.1.7.1
Axis of Advance - Friendly Aviation GFC*MOLAF-***** 2.X.2.1.5.2.1.1
Axis of Advance - Friendly Airborne GFC*MOLAA-***** 2.X.2.1.5.2.1.2
Axis of Advance - Friendly Attack Helicopter GFC*MOLAH-***** 2.X.2.1.5.2.1.3
Axis of Advance - Friendly Ground Axis Of Supporting Attack GFC*MOLAS-***** 2.X.2.1.5.2.1.4
Axis of Advance - Friendly Ground Axis Of Main Attack GFC*MOLAM-***** 2.X.2.1.5.2.1.5
Axis of Advance - Enemy Confirmed GHC*MOLAE-***** 2.X.2.1.5.2.1.7
Axis of Advance - Enemy Templated GHC*MOLAT-***** 2.X.2.1.5.2.1.8
Direction Of Attack - Friendly Direction Of Supporting Attack GFC*MOLDS-***** 2.X.2.1.5.2.2.7
Direction Of Attack - Friendly Direction Of Main Attack GFC*MOLDM-***** 2.X.2.1.5.2.2.8
APP6c
Name Code(SIDC)
Counterattack (CATK) 10002500003214000000
Counterattack by Fire 10002500003215000000
Airborne/Aviation Axis of Advance Aviation 10002500001513000000
Main Attack/Decisive 10002500001514000000
Supporting Attack/Shaping 10002500001515000000
Supporting Attack/Shaping - Feint 10002500001515010000
Advance to Contact 10002500003201000000
Mission Tasks/Verbs - Attack 10002500003204000000
MS2525b / MS2525c
Name Code(SIDC) Hierarchy Code
Counterattack (CATK) G*T*K-----****X 2.X.1.7
Counterattack by Fire G*T*KF----****X 2.X.1.7.1
Axis of Advance - Aviation G*G*OLAV------X 2.X.2.5.2.1.1
Axis of Advance - Airborne G*G*OLAA------X 2.X.2.5.2.1.2
Axis of Advance - Attack, Rotary Wing G*G*OLAR------X 2.X.2.5.2.1.3
Axis of Advance - Main Attack G*G*OLAGM-----X 2.X.2.5.2.1.4.1
Axis of Advance - Supporting Attack G*G*OLAGS-----X 2.X.2.5.2.1.4.2
Axis of Advance For Feint G*G*PA--------X 2.X.2.3.2

2015.1

2015.1.29

ImprovementLuciadFusion

LCD-7606
Reduced editor warning "Editor did not produce any handles for geometries to be edited." to a debug logger statement. This message does not necessarily indicate a problem. It could simply mean that the shape should not be edited.

ImprovementLuciadFusion

LF-900
The deploy_fusion.sh/bat script now also recognizes and includes development licenses in the WAR.

ImprovementData Connectivity Manager

LF-903
ECDIS coverages: the filter panel for the display settings would disappear each time you make a change. Now it remains open until you close it manually to facilitate making multiple changes.

Bug fixData Connectivity Manager

LF-902
Non-tiled ECDIS coverage: switching the display settings to "other" and trying to open the filter panel afterwards would throw a NullPointerException.

Bug fixDefense Symbology

LCD-7615
The anchor dot point of a symbol icon with an altitude value other than 0, is now draped if there is no terrain.

2015.1.28

ImprovementLuciadFusion

LCD-7546
TLsp3DIconStyle: it is now possible to configure a modulation color.

ImprovementLuciadFusion

LCD-7590
It is now possible to disable the effect where labels would fade when nearing the horizon in 3D views, see TLspLabelPainter#setDistanceBasedFading(boolean).

ImprovementLuciadFusion

LCD-7587
The WCS model factory TLcdWCSProxyModelFactory has been extended with two new methods that enable users to submit a custom set of ALcdWCSCoverageDecoder instances. This can be used to support custom coverage decoding; for instance, to support exchange formats other than GeoTIFF (default).

ImprovementLuciadFusion

LCD-7612
The WMTS client has been made more flexible against WMTS XML capabilities that are not fully compliant against the OGC OWS Common 1.1 XML Schema used by WMTS. More specifically, a correct order of XML elements is now no longer required.

ImprovementRadar Connectors

LCD-7568
The radar visualization will now be reset when the data source identifier of the received ASTERIX category 240 record is different compared to the previously received record.

Bug fixLuciadFusion

TLspLayer#query: Using TLspPaintedObjectsQuery with viewBounds null could return more objects than actually painted.

Bug fixLuciadFusion

LCD-7240
The image height and measurement providers now support interpolation across tile boundaries.

Bug fixLuciadFusion

Invoking the method TLcdWMSRequestContext#getRequest() could result in a NullPointerException.

Bug fixDefense Standards

LCD-7608
Fixed an issue which caused certain BCI models to be rendered with the wrong pixel density.

2015.1.27

ImprovementLuciadFusion

LCD-7580
TLcdWFSProxyModel now optimizes the use of a bounds filter (see TLcdWFSProxyModel#setFilter), by intersecting the configured bounds with the bounds requested by the layer (e.g., when the data is being visualized). In the past, both bounds conditions were submitted to the server, which could lead to a suboptimal server handling performance.

ImprovementLuciadFusion

LCD-7575
The WCS client has been made more scalable to access high-resolution coverages. To support this use case, TLcdWCSProxy has been optimized in terms of memory consumption and performance; this is especially noticeable when a large number of levels of detail and tiles are used (see TLcdWCSProxy#setRasterCount, TLcdWCSProxy#setTileColumnCount and TLcdWCSProxy#setTileRowCount).

Bug fixLuciadFusion

LCD-7578
The WCS model TLcdWCSProxyModel could cause a deadlock in case of an unresponsive server.

Bug fixLuciadFusion

LCD-7576
ILcdText containing an empty line would cause an exception during discretization.

Bug fixLuciadFusion

LCD-7523
TLcdColorMapCustomizer: resolved some usability issues with the "set levels" action.

Bug fixLuciadFusion

LCD-7574
The WCS client used an incorrect resolution for the coverages to be retrieved in case it was configured to use multiple levels of detail (see TLcdWCSProxy#setRasterCount). This could cause invisible coverages at lower levels of detail and reduced overall performance.

Bug fixAdvanced GIS Engine

LCD-7319
TLcdCartesianAdvancedBinaryTopology could return incorrect results if one of the input shapes had bounds with a point on the dateline.

Bug fixDefense Symbology

LCD-7577
Fixed a race condition bug when creating APP-6C symbols. Now you can create APP6c symbols concurrently.

Bug fixRadar Connectors

LCD-7565
TLcdASTERIXLiveDecoder is now more robust against missing ASTERIX category 240 records. If records were missing at the start of the stream, this could result in incorrect visualization of the radar feed.

2015.1.26

ImprovementLuciadFusion

LCD-7557
The content type of a WCS GetCoverage response containing GeoTIFF data is now always set to the mime type 'image/tiff'; this is the most common mime type to represent TIFF-based data.

ImprovementLuciadFusion

LCD-7445
The lightspeed.imaging.multispectral sample now has the option to normalize the bands of an image. You can enable or disable this operation in the band select panel.

ImprovementLuciadFusion

LCD-7497
TLsp3DIconStyle: It is now possible to configure the opacity of a 3D icon via the style.

ImprovementLuciadFusion

LCD-6659
TLcdGeoTIFFModelDecoder now supports the GDAL_NODATA tag. The value is exposed on the ALcdImage's semantics and automatically used to map particular values to transparent when visualizing the data.

ImprovementLuciadFusion

LCD-7505
It is now possible to change the base URL of the listed requests in the GetCapabilities response, which can be useful to support a setup with a reverse proxy. To support this, the interface ILcdWMSOnlineResourceResolver has been extended with a new type 'CAPABILITIES_REQUEST_BASE_URL', which will be used to retrieve the base URL.

Bug fixLuciadFusion

LCD-7535
TLcdSHPModelEncoder would in some cases produce an invalid SHP file when the exported model contained ILcdShapeList elements with different shape types. Note that in such case only the first element of each ILcdShapeList is exported.

Bug fixLuciadFusion

LCD-7511
The license mechanism now reads the expiration date of the license file correctly, even in environments with calendars that are not Gregorian.

Bug fixLuciadFusion

TLcdLonLatPointFormat: strings containing unknown characters before or after the separator between the longitude and latitude part will now fail to parse.

Bug fixLuciadFusion

TLcdSpeedFormat, TLcdAltitudeFormat and TLcdDistanceFormat now behave the same as the NumberFormat of the JDK when calling parseObject with a string containing only whitespace as input.

Bug fixLuciadFusion

LCD-7567
Fixed a bug in TLcdImageHeightProvider when interpolating {{ALcdImage}} values and at least one of the 4 contributing values is a no-data value.

Bug fixLuciadFusion

LCD-7566
Fixed regression that caused objects that aren't directly ILcdShape to not be editable. These types of objects are editable again.

Bug fixLuciadFusion

LCD-7564
TLspOnPathLabelingAlgorithm calculated incorrect label positions in 3D when using an altitude exaggeration greater than 1, zooming in and tilting the view.

Bug fixLuciadFusion

LCD-7562
Some bugs were fixed which affected WCS offerings of 16-bit SHORT or USHORT data.

Bug fixLuciadFusion

LCD-7561
TLspRasterLayer: fixed exception when using a styler to hide a domain object that was previously shown.

Bug fixLuciadFusion

LCD-7507
LuciadLightspeed Demo - Weather theme: Additional info is logged when it fails to load.

Bug fixLuciadFusion

LCD-7555
LuciadLightspeed Demo - Military Symbology theme: Fixed an issue where the balloon tooltip would move erratically while editing certain shapes.

Bug fixLuciadFusion

LCD-7552
Editing 3D shapes did not work correctly after changing the view's reference.

Bug fixLuciadFusion

LCD-7551
TLcdVVTerrainModel: fixed a regression caused by LCD-7500 that would make the model throw an exception when using buffers.

Bug fixLuciadFusion

LCD-7542
The label styler could be called unnecessarily when doing a layer query using TLspPaintedObjectsTouchQuery.

Bug fixLuciadFusion

LCD-7537
TLcdCurvesOp mapped no-data values to the first point of the curve instead of keeping a no-data value.

Bug fixAviation Standards

LCD-7539
Fixed NullPointerException when painting airspaces containing upperLimit and lowerLimit properties with null values.

Bug fixDefense Symbology

LCD-7522
The symbols below are now painted with dashed line when they have a "Planned Status" for all symbology standards.
  • Bridge or Gap
  • Gap
  • Assault crossing area
  • Attack by Fire Position
  • Support by Fire Position
  • Battle Position

Bug fixDefense Symbology

LCD-7572
Symbols with large offset values had large bounds which was making mouse selection of close symbols harder.

Bug fixDefense Symbology

LCD-7556
Fixed flipping bug of horizontal line segments of line tactical graphs in a GXY View. When you display a line graph with at least one line segment which is almost horizontal (start and end points of the line segment are exactly or almost on the same latitude), the line segment was flipping on the y-axis on certain zoom levels. Thus it was ending up with a wrong tactical graph.

Bug fixDefense Symbology

LCD-7554
Fixed wrong label offsets for line symbols like Antitank Ditch/Complete in Ms2525b/c.

Bug fixDefense Symbology

LCD-7547
"Destroyed" and "Damaged" status indicators are now displayed for MS2525c symbols.

2015.1.25

ImprovementLuciadFusion

LCD-2622
TLspCreateController and TLspEditController now abort creation/editing is ALspEditor.canEdit() returns false.

ImprovementLuciadFusion

LCD-7451
TLsp3DPointListEditor now supports creation of 3D pointlists that already contain some initial points in them.

ImprovementLuciadFusion

LCD-7431
Fixed spatial filtering in case no geometry property name is defined.

ImprovementLuciadFusion

LCD-2267
It is now possible to directly set TLspCustomizableStyle instances on TLspLonLatGridStyler. This for example makes it possible to customize the display names of the styles.

Bug fixLuciadFusion

LCD-7515
TLspRulerController: when switching the measure mode after creating a measurement, labels could disappear.

Bug fixLuciadFusion

LCD-7513
The height of geodetic lines with linear interpolation (ILcdCurve.INTERPOLATION_LINEAR) was not used for visualization. As a result they were always painted at zero height.

Bug fixLuciadFusion

LCD-7358
The "overlap resolution" setting in TLspShapePaintingHints was not respected for model elements that contain multiple ILcdShapes (e.g. ILcdShapeLists or the output of an ALspStyleTargetProvider).

Bug fixLuciadFusion

LCD-7506
Fixed the interpretation of the GridOffsets parameter in a WCS 1.1 GetCoverage request, which could lead to responses with an incorrect resolution.

Bug fixLuciadFusion

LCD-7501
In rare cases, calling ALspLabelStyleCollector#group() could produce an IllegalArgumentException.

Bug fixLuciadFusion

LCD-7500
TLcdVVTerrainModel: fixed an inaccuracy in the sampling of the height values.

Bug fixLuciadFusion

LCD-7398
Fixed artifacts when using image processing with OpenCL backend on NVidia hardware with a recent driver.

Bug fixLuciadFusion

LCD-7463
TLspShapePainter: fixed a bug in the touch query for icons with an ON_TERRAIN elevation mode, which made it difficult or impossible to select draped icons under some viewing angles when no terrain was loaded in the view.

Bug fixLuciadFusion

LCD-7473
Fixed an issue where TLspViewNavigationUtil#centerOnModelBounds would zoom in when centering on large geodetic bounds in a 3D view.

Bug fixLuciadFusion

LCD-7472
Fixed a bug in imaging engine's resize operator: it threw an exception if the # bands was a multiple of 4.

Bug fixLuciadFusion

LCD-7490
TLspRasterLayer did not handle has-a-image objects correctly. See ALcdImage.fromDomainObject for details about what this means.

Bug fixDefense Symbology

LCD-7482
Boundary symbols: sometimes labels could be placed at the wrong side of the boundary when using a Lightspeed view.

2015.1.24

ImprovementLuciadFusion

LF-881
The fusion of vector data into a raster coverage now uses anti-aliasing during the rasterization process, resulting in an improved line quality.

ImprovementLuciadFusion

LF-878, LF-881
The WMS service in the LuciadFusion Data Server now uses anti-aliasing to render vector coverages and non-tiled coverages with vector data (e.g., ECDIS or SHP), resulting in an improved line quality.

Bug fixLuciadFusion

LCD-7462
The non-tiled painting of WMS data in Lightspeed views in combination with client-side warping resulted in maps that did not cover the entire visible area.

Bug fixLuciadFusion

LCD-7461
TLcdKML22BalloonContentProvider now properly handles TLcdKML22PaintableGroundoverlay elements.

Bug fixLuciadFusion

LCD-7460
The Earth preprocessor sample did not handle processing multiple coverages to the same repository correctly.

2015.1.21

ImprovementLuciadFusion

LF-878
The rendering of vector coverages now uses anti-aliasing, resulting in an improved line quality.

ImprovementLuciadFusion

LCD-7117
Clarified javadoc in TLspPointSetHandle.

ImprovementLuciadFusion

LCD-7201, LCD-7394
Improved the general flexibility of the TLspPointToPointSnapper, by providing a new method that allows you to filter, convert and add custom snap targets based on full context information, such as: domain object, geometry, layer, paintrepresentation and view. Specific paintrepresentations that should be supported can also be configured with the setSupportedStates() method.

Bug fixLuciadFusion

LCD-7439
Fixed decoding of multi-band GeoTIFF data with more than 8 bits/band.

Bug fixLuciadFusion

LCD-7454
Grid labels in a Lightspeed view that use a horizontal orientation (For example TLspMGRSGridStyle.Builder#labelOrientation()) could be detached from their line when they are located near a corner of the view. This problem was more obvious when using a large label edge offset.

Bug fixLuciadFusion

LCD-7453
Deactivating or switching a view's controller in ALspController#handleAWTEventImpl now stops events from propagating down the controller chain.

Bug fixLuciadFusion

LCD-7449
TLspPlotPainter didn't visualize anything when using a style target provider with a different reference than the model reference.

Bug fixLuciadFusion

LCD-7438
Fixed a bug in TLcdOGCSpatialConditionFactory that caused it to throw on objects that don't have a requested property. An object doesn't have a requested spatial property if the object itself is not null, but ILcdPropertyRetriever returned null. Instead of throwing, these objects are now treated as "no match".

Bug fixLuciadFusion

LCD-7431
The OGC spatial filter now automatically determines the spatial property when the <BBOX> element does not specify a <propertyName> element. The spatial property is determined from the data type:
  • If the data type has a TLcdHasGeometryAnnotation, the spatial property is defined by it.
  • If not, it is the property of type ILcdShape.
  • In case there are multiple such properties, an appropriate exception report is generated. This is consistent with the OGC Filter 1.1.0 specification which states that a <propertyName> element is required when there are multiple spatial properties.

Bug fixLuciadFusion

The WMS client sample class ProxyModelFactory did not properly handle WMS servers that only advertise a single root WMS layer.

Bug fixLuciadFusion

LCD-7423
Fixed potential NullPointerException in the KML styler for lightspeed views that could occur when visualizing placemarks with malformed altitude modes.

Bug fixLuciadFusion

LCD-7321
Fixed issue where networklinks containing "onExpire" refreshmode links would not get loaded correctly unless manually updated.

Bug fixLuciadFusion

LCD-7125
Ensured that the TLspPointSetHandle does not fire unnecessary FINISHED interaction state events when moving or dragging the mouse.

2015.1.20

ImprovementLuciadFusion

The sample class WFSFeatureIDRetriever now supports retrieving the id of data objects with a primary key annotation (TLcdPrimaryKeyAnnotation).

ImprovementLuciadFusion

LCD-7428
Made some changes to the WFS client for the sake of interoperability with ArcGIS WFS servers:
  • Spaces in URLs are now escaped as "%20" instead of '+'. Both are valid according to the URI specification, but ArcGIS server can't handle '+' correctly, at least not when it occurs as value of an outputFormat such as "text/xml;+subtype=gml/3.1.1" (escaped).
  • Recognition of output formats has been made more lenient towards casing differences: both "subType" and "subtype" are now recognized in outputFormat parameters such as "text/xml; subType=gml/3.1.1".
  • Recognition of output formats has been made (even) more lenient towards alternative names for formats: "text/xml; subType=gml/3.1.1/profiles/gmlsf/1.0.0/0" is now for example also recognized as GML Simple Features Profile.

ImprovementWeather & Environment Standards

LCD-7412
NetCDF GXY painters are now using anti-aliasing.

Bug fixLuciadFusion

LCD-6738
TLcdAxisAlignedRasterReferencer, TLcdRotatedRasterReferencer and TLcdRasterReferencingUtil can now handle the case where only 2 tie points are provided.

Bug fixLuciadFusion

LF-879
The WMS service in the LuciadFusion Data Server now always paints the data of image and elevation coverages, regardless of the map scale. In the past, data was sometimes not visualized at large scales, due to internal logic that only activated raster painting depending on a pixel density threshold.

Bug fixLuciadFusion

LCD-7414
Fixed a rare and minor memory leak in TLspLabelPainter, where the view could keep a reference to one of the domain objects, even when it is removed from its model.

Bug fixLuciadFusion

LCD-7410
Fixed exception when using some huge images with the OpenCL imaging engine.

Bug fixData Connectivity Manager

LF-869
When a coverage was created manually, it didn't attempt to be WMTS compliant, in contrast to when one was created automatically (by dragging a layer onto the Coverages folder). This has now been fixed so that in all cases a coverage makes an attempt to be WMTS compliant.

2015.1.19

ImprovementLuciadFusion

LCD-7403
To improve the interoperability with non-compliant OGC WMS servers, the XML capabilities decoder has been made less strict regarding the CRS and Abstract XML element positions inside a Layer XML element.

ImprovementLuciadFusion

LCD-7399
TLspPopupMenuSelectionCandidateHandler's behavior can now be customized by overriding TLspPopupMenuSelectionCandidateHandler#handleMenuItemHoverChange and TLspPopupMenuSelectionCandidateHandler#handleMenuItemSelected.

ImprovementAdvanced Raster Services

LCD-7373
The TLcdECWModelDecoder can now also decode images with 2 bands. The second band is only available on the ALcdImage API. The ILcdRaster API does not support 2-band images.

ImprovementGoogle Earth Enterprise

The Google Earth Enterprise Industry Specific Component adds support for decoding Google Earth Enterprise imagery repositories and visualizing them in a Lightspeed view or in a GXY view. For more details, see TLcdGEEModelDecoder.

Bug fixLuciadFusion

LCD-7386
The DTED/DMED decoders did not distinguish between 0 and unavailable accuracy. The TLcdDTEDCellDescriptor now returns -1 for unavailable accuracy instead of 0.

Bug fixLuciadFusion

LCD-7396
TLcdTransformer: when transforming a set of data objects to a list, the elements were not transformed. This prevents encoding such models to GML.

Bug fixLuciadFusion

LCD-7274
TLcdSHPTiler did not copy directory.ref file when creating SHP tiles.

2015.1.18

ImprovementLuciadFusion

LCD-7392
Improved overall security by implementing additional output neutralization measures to avoid CRLF injection.

ImprovementLuciadFusion

LCD-7391
The optional logging servlet filter, TLcdLogFilter, has been upgraded with an improved encryption algorithm (AES in CTR mode) to encode log entries.

ImprovementLuciadFusion

LCD-7388
The default heap memory size of the OGC services sample has been increased from 384m to 768m, to improve its overall performance when working with larger datasets.

ImprovementAviation Standards

LCD-7284
Terrain elevation is now taken into account when visualizing AIXM 5.1 3D airspaces in a Lightspeed view, based on the information provided by their upper limit and lower limit reference properties.

Bug fixLuciadFusion

LCD-1573
The behavior of the WCS client was not synchronous if TLcdWCSProxy#setAsynchronousUpdates was set to false. This resulted in incomplete coverages when the WCS client was used on non-EDT threads, such as in the WMS server.

Bug fixLuciadFusion

LCD-7369
Geotiffs using a custom reference using a polar stereographic projection with a latitude origin different from 90 or -90 were not displayed correctly.

Bug fixLuciadFusion

LCD-7363
Using an empty ILcd2DBoundsIndexedModel for a plot layer would cause exceptions. Also, if the width/height ratio of the bounds was very large or small, the plot layer would not finish painting.

Bug fixAviation Standards

LCD-7366
TLcdProcedureGeometryCalculator can handle CI/CF used to turn back aircraft at its current position.

Bug fixAviation Standards

LCD-7356
The usage or not of internal property retrievers in TLspAISStyler to retrieve geometries like GeometryRunwayBuffer for runways is not only determined on the model descriptor class anymore but also on the types from the model descriptor element types.

Bug fixDefense Symbology

LCD-7349
Setting symbol icon offset with Ctrl-drag now properly fires editing changed events on the layer.

2015.1.17

ImprovementLuciadFusion

LCD-7355
TLspBalloonManager: when calculating the balloon focus point for a model object, the manager now makes use of the geometry provided by the object's style target provider.

ImprovementLuciadFusion

LCD-7158
Temporary files needed to cache large responses are now created in a safer way, i.e. using undeterministic names and with more strict file permissions.

ImprovementLuciadFusion

LCD-7157
Any encountered File-based data locations in XML documents (e.g., local schema locations) read by the WCS are now validated against invalid characters.

ImprovementLuciadFusion

LCD-7348
The label alignment of the ILcdVVRenderer implementations has been improved.

ImprovementDefense Symbology

LCD-7341
It is now possible to set the affiliation of a symbol with all the affiliation values defined in the standard. The affiliation values for some symbols are limited by the symbology standards and if you want to stick to the standard (e.g. a listing in a GUI) you can still invoke TLcdEditableAPP6AObject#getPossibleAffiliationValues() or TLcdEditableMS2525bObject#getPossibleAffiliationValues() methods to obtain the available affiliation values for a specific symbol.

Bug fixLuciadFusion

LCD-7351
Fixed an issue where clicking on the 'north arrow' on a TLspCompassNavigationControl would not rotate the view in certain projections.

Bug fixLuciadFusion

LCD-7367
TLcdWeakIdentityHashMap could throw a ConcurrentModificationException in rare cases.

Bug fixLuciadFusion

LCD-7278
Object selection and touch queries did not take the minimum pixel size configured on a TLspIconStyle into account.

Bug fixLuciadFusion

LCD-7331
TLspShapePainter: fixed a bug in the touch query for icons with an ON_TERRAIN elevation mode, which made it difficult or impossible to select draped icons under some viewing angles.

Bug fixLuciadFusion

LCD-7242
TLspSelectController no longer consumes mouse move events.

Bug fixLuciadFusion

LCD-7353
The WMTS client no longer shows error tiles in case of a tile not found (HTTP 404) responses.

Bug fixLuciadFusion

LCD-7300, LCD-7324
GML encoding: fixed several issues when encoding GML-dependent models whose domain objects contain multiple geometries.

Bug fixLuciadFusion

LCD-7343
Fixed an issue where ALcdCompassNavigationControl did not get repainted when it should.

Bug fixInfrastructure Standards

LCD-7291
Fixed various native memory leaks in TLcdDGNModelDecoder.

Bug fixMaritime Standards

LCD-7339
The sounding value for for isolated dangers was not displayed on top of the danger icon.

Bug fixMaritime Standards

LCD-7337
In some cases, S-52 symbolized line patterns were cut-off in Lightspeed views. For example, for DWRTCL objects were missing the "DW" marker at the end was partially missing.

Bug fixMaritime Standards

LCD-7338
The S-52 visualization of TSSLPT objects with restriction now shows the restriction icon as well as the direction arrow icon.

2015.1.16

ImprovementLuciadFusion

LF-858
It is now possible to disable sync to disk on commit using the system property com.luciad.fusion.engine.syncOnCommit. The default is 'on'. Disabling sync on commit may significantly improve fusion performance, however beware that the consistency of the checkpoint with the tiles on disk in case of power outage is no longer guaranteed.

ImprovementAviation Standards

LCD-7304
An improvement has been made in the modeling of the airspace domain object (see TLcdAirspace or its data type TLcdAISDataType#Airspace) that enables out-of-the-box, automatic encoding of the connected airspace geometry to GML (e.g., via TLcdGML32ModelEncoder); in the past, only the individual segments were encoded.

ImprovementAviation Standards

LCD-7304
Due to a change in the modeling of the airspace domain object (TLcdAirspace), AIXM airspaces that get exported to GML now also contain the connected airspace geometry, next to the individual segments.

ImprovementAviation Standards

LCD-7304
Due to a change in the modeling of the airspace domain object (TLcdAirspace), ARINC airspaces that get exported to GML now also contain the connected airspace geometry, next to the individual segment points.

ImprovementDefense Symbology

LCD-7326
It is now possible to set a symbol icon offset in a 2D Lightspeed 2D View by Ctrl-drag.

Bug fixLuciadFusion

LCD-7320
The WFS model class (TLcdWFSProxyModel) did not properly support finding a geometry property name for a feature type if there was no link with its XML type (by means of its name and / or namespace).

Bug fixLuciadFusion

LCD-7316
Fixed errors when visualizing an image that uses a 32-bit signed integer for the band values.

Bug fixLuciadFusion

LCD-7319, LF-865
Fixed a bug affecting the fusion of vector data, which could cause some features that rub against the 180th meridian to fail with "No corresponding builder for edge link".

Bug fixLuciadFusion

LCD-7297
The server no longer logs stacktraces in case of service exception reports, as this is normal behavior for a WMS; instead, an info message is logged with the contents of the service exception message.

Bug fixLuciadFusion

LCD-7310
The TLcdCADRGModelDecoder could not decode files were the headers and data is not ordered normally.

Bug fixLuciadFusion

LCD-6701
TLcdResizeOp did not handle palette indexed color images correctly: the indices were interpolated.

Bug fixLuciadFusion

LF-848
Fixed some numerical precision bugs when fusing vector data which could cause some features to fail with "No corresponding builder for edge link" or "Unsupported polygon: successive end/begin points".

Bug fixLuciadFusion

LCD-7293
Earth preprocessor could get confused when the time zone changes. Most commonly this happened when switching to summer or winter time.

Bug fixLuciadFusion

LF-853
TLfnEngineFactory.getEngines() would not always return all engines. This could cause the job manager panel in the Data Connectivity Manager to show error dialogs when trying to start/pause a job.

Bug fixLuciadFusion

LCD-7312
TLcdSVGIcon no longer changes the context classloader.

Bug fixData Connectivity Manager

LF-861
Fixed a NullPointerException when inspecting failure reports of vector data fusion.

Bug fixAdvanced Raster Services

TLcdECWModelDecoder did not take the unit-of-measure into account.

Bug fixAdvanced Raster Services

LCD-7289
TLcdECWModelDecoder did not support some references. In particular the EPSG:28355 reference is now also supported.

Bug fixReal-time Engine

LCD-7336
Continuous labeling: labels could move on top of the anchor point (e.g. a track) when clamping both the distance and the angle of the label.

Bug fixAviation Standards

LCD-6278
When handling a CI Leg, we check the current course. If the course was NaN, we set it to the leg course.

Bug fixDefense Symbology

LCD-7325
The offset circle icon was not completely visible in a Lightspeed view in case of small non-zero offset values.

Bug fixDefense Symbology

LCD-7318
Fixed the overriding of affiliation color bug for sea mine icons in MS2525c. Now overridden affiliation color of a sea mine icon in MS2525c is visible on the icon frame.

Bug fixDefense Symbology

LCD-7307
Fixed the inner line width of GRAFFITI symbol.

2015.1.15

ImprovementDefense Symbology

LCD-7164
TLcdNVGModelDecoder.getDisplayName() returns NVG instead of "NVG Decoder".

Bug fixLuciadFusion

LCD-7292
The ILspView could slow down or even hang when implementing an ALspSwingLabelStyler by letting getComponent() return null.

Bug fixLuciadFusion

LCD-7134
Images with data in a special RGB color space were not supported.

Bug fixAviation Standards

LCD-7283
If you called the insertLegAt or removedLetAt methods of an TLcdDiscretizedLonLatGeoPath instance and then retrieve the polygon from the discretizator, the discretizator will take the change into account.

Bug fixAviation Standards

LCD-7267
To ease the visual recognition of restricted airspaces and to better align with common charting guidelines, AIXM 5.1 restricted airspaces (prohibited, restricted, danger area) are now painted as follows in Lightspeed views:
  • 2D: striped red border
  • 3D: solid red border and fill.

Bug fixDefense Symbology

LCD-7282
Fixed mapping for Linear Target from Ms2525b original specification to Ms2525b Change 2 specification.

Bug fixDefense Symbology

LCD-7270
Fixed the position swapping bug of unique designation text modifier for boundaries. If the label is once painted outside of the boundary, it will always stay outside. It's the same if the label is painted in the boundary.

Bug fixDefense Symbology

LCD-7268
Short-Range Air Defense Engagement Zone label is fixed as SHORADEZ in MS2525c.

2015.1.14

ImprovementData Connectivity Manager

LF-845
Resources are now consistently displayed as "name" with "[ID]" as fallback for anonymous resources. Anonymous resources are thus displayed as "[ID]", where the ID is between square brackets. When both name and ID are displayed, they are displayed as "name [ID]".

ImprovementAviation Standards

LCD-7227
It is now possible to set a custom ALcdDiscretizedGeoPath to a TLcdAirspace. The ALcdDiscretizedGeoPath is used to discretize the airspace segments. Only instances of TLcdDiscretizedLonLatGeoPath are accepted right now.

Bug fixLuciadFusion

LF-847
Fixed a bug in the fusion of vector data, similar to LF-451, which could cause some features to fail with "No corresponding builder for edge link" in some circumstances.

Bug fixLuciadFusion

LCD-7260
An issue in the WFS model class (TLcdWFSProxyModel) prevented it from automatically finding a geometry property for some feature types, which is needed to support spatial filters.

Bug fixLuciadFusion

LF-842
Some bugs were fixed in the default implementation of ILfnRasterSessionHandler and ILfnVectorSessionHandler. In addition, the code has been made more robust to deal with bad implementations of these handlers: if the handling itself throws an exception, this is now treated as a non-fatal failure.

Bug fixLuciadFusion

LF-840
Worked around a bug in Oracle database models which could cause some features to fail with "Edge already added" in some circumstances.

2015.1.13

Bug fixLuciadFusion

LCD-7258
The class TLcdOWSHttpTransport, used by the OGC clients to communicate with a service, could not properly handle request parameters containing special characters with accents.

Bug fixLuciadFusion

LCD-7258
The class TLcdOWSHttpTransport, used by the WMTS client to communicate with a service, could not properly handle request parameters containing special characters with accents.

Bug fixLuciadFusion

LCD-7257
The WMTS client could not cope with WMTS services that did not list specific request encoding constraints (KVP, REST ...) for listed operations.

Bug fixLuciadFusion

LCD-7256
Fixed an issue in the lightspeed.customization.paintrepresentation sample.

Bug fixLuciadFusion

LCD-7231
Fixed an issue where density layers were not properly updated when used while flickering (by a TLspFlickerController).

2015.1.12

ImprovementLuciadFusion

LCD-7212
Added support for labeling MultiGeometry elements in a Lightspeed view. If your MultiGeometry contains one or multiple Point elements, they will be labeled according to their KML LabelStyle.

ImprovementLuciadFusion

LF-830
The number of threads used by the fusion engine can now be overridden using the system property com.luciad.fusion.engine.threadCount. It is also still possible to override this setting programmatically using ALinEngineEnvironment.setEngineThreadCount(). If set, the programmatic setting takes precedence over the system property. The default number of threads isRuntime.getRuntime().availableProcessors().

ImprovementData Connectivity Manager

LF-829
The data density of a coverage is now configurable in the coverage metadata panel. It is a rendering hint which affects how vector coverages are rendered in 3D. DETAIL hints to load more detailed tiles in the foreground, at the expense of detail towards the horizon. OVERVIEW hints to load a more homogeneously detailed set of tiles, at the expense of detail in the foreground.

ImprovementTerrain Analysis Engine

LCD-7238
Some minor corrections to the developer guide.

Bug fixLuciadFusion

LCD-7247
Fixed a Lightspeed issue with retrieving selection candidates where, in rare cases, different domain objects could be treated as equal. The issue caused these objects to be missing from selections that should contain them.

Bug fixLuciadFusion

LCD-7248
WKT strings using the projection name "Rectified_Skew_Orthomorphic_Natural_Origin" can now be parsed using TLcdWKTReferenceParser.

Bug fixLuciadFusion

LF-837
Fixed a bug in the fusion of vector data, similar to LF-451, which could cause some features to fail with "No corresponding builder for edge link" in some circumstances.

Bug fixLuciadFusion

LCD-6521
Raster layers no longer use direct memory sharing between OpenGL (rendering) and OpenCL (image processing) by default to avoid stability issues. This can result in a slightly longer latency when using image processing. The direct memory sharing can be enabled again by using the following JVM option: -Dcom.luciad.view.lightspeed.opencl.allowCLGLInterOp=true.

Bug fixLuciadFusion

LCD-7236
Fixed issue where a status notification for a new Networklink being loaded would appear before the loaded Networklink was fully processed. This means that when you subscribe to a TLcdKML22DynamicModel.addStatusListener(), and you get an END_BUSY status, the downloaded KML file will be available for consumption at that instant.

Bug fixLuciadFusion

LF-835
Fixed a bug which caused some Geospatial PDF to be fused a level too deep in some cases.

Bug fixLuciadFusion

LF-831
Fixed a bug in the fusion of vector data which could affect coverages with a bounding box that wraps around the 180th meridian. This could cause fusion to fail with "No corresponding builder for edge link".

Bug fixLuciadFusion

LCD-7234
When using continuous labeling for non-selected labels and an other labeling algorithm for selected labels, the selected labels could be dropped.

Bug fixLuciadFusion

LF-828
Fixed a bug in the fusion of vector data which could affect features with a line segment spanning more than 180° in the longitudinal direction. This could cause fusion to fail with "No corresponding builder for edge link".

Bug fixLuciadFusion

LCD-7229
lonlatheight2worldOnEllipsoidSFCT now produces more precise results for TLcdRectifiedPolynomialProjection instances with a degree of 2 or more.

Bug fixLuciadFusion

LCD-7220
TLcdMGRSFormat couldn't parse MGRS Strings with a separator between the grid zone designation and the 100km grid square designation.

Bug fixLuciadFusion

LCD-7219
A rare problem was fixed where TLspInteractiveLabelsController sometimes moved a new interactive label to the incorrect location.

Bug fixLuciadFusion

LCD-7222
The alpha component of TLspPinLineStyle#getColor() was not taken into account. Because of this, transparent pins were painted as opaque pin lines.

Bug fixLuciadFusion

LCD-7243
Fixed NPE that got triggered when removing a TLspPanController from a view.

Bug fixData Connectivity Manager

LF-827
DCM displays all the job failures instead of the last one when used with a remote server.

Bug fixDefense Symbology

LCD-7235
Fixed IllegalArgumentException error for 30 digit coded APP-6C objects.

2015.1.11

ImprovementLuciadFusion

LCD-7198
It is now possible to calculate the closest point on a rhumbline for spheres. See TLcdSphereRhumblineUtil#closestPointOnRhumbline().

ImprovementLuciadFusion

LCD-7185
Performance improvement when using TLspLayer#query with TLspIsTouchedQuery when the queried object is already painted.

ImprovementWeather & Environment Standards

LCD-7177
Unknown datums are created with the name "Unknown" instead of empty string.

Bug fixLuciadFusion

LCD-7208
Fixed memory leak in raster layer. The issue was visible when creating layers or changing models frequently.

Bug fixLuciadFusion

LCD-7199
lonlatheight2worldOnEllipsoidSFCT didn't always produce correct results for TLcdRectifiedPolynomialProjection instances with a degree of 2 or more.

Bug fixLuciadFusion

LCD-7183
A line with two coinciding geodetic points on the date line could cause visual artifacts in a Lightspeed view.

Bug fixLuciadFusion

LCD-7196
The WMTS client no longer shows error tiles in case of a service exception report sent by the server (e.g., often sent if a tile is missing in case of sparse data sets). Instead, the service exception report information can be retrieved via the logs by enabling tracing.

Bug fixLuciadFusion

LCD-7197
The WMTS client did not support the handling of service exception reports in case compression was used by the server.

Bug fixLuciadFusion

LCD-7197
The WMS client did not support the handling of service exception reports in case compression was used by the server.

Bug fixLuciadFusion

LCD-7197
The WFS client did not support the handling of service exception reports in case compression was used by the server.

Bug fixLuciadFusion

LCD-7197
The WCS client did not support the handling of service exception reports in case compression was used by the server.

Bug fixLuciadFusion

LCD-7191
Fixed a NullPointerException that could occur when using an ILspController that returns null in its getLayered() method.

Bug fixLuciadFusion

LCD-7188
Fixed a rare threading issue during label placement that occurred because the ILspView#layers() method was called on a task executor thread.

Bug fixLuciadFusion

LCD-7107, LCD-7195
ALspSwingLabelStyler now clears its cache for objects that are removed from a model.

Bug fixLuciadFusion

LCD-7182
TLcdGXYMagnifierController: when opening the magnifier window for the first time, it could be empty.

Bug fixWeather & Environment Standards

LCD-7207
Add obfuscation exception for some NetCDF packages to the proguard configuration file.

Bug fixAviation Standards

LCD-7150
The labels that indicate the altitude of the sectors on SafeAltitudeArea features are now always placed within the corresponding sector. Additionally, the default style for these labels has changed, allowing a higher level of customization.

2015.1.10

Bug fixLuciadFusion

LCD-7167
Fixed a performance issue for tile set models such as Bing Maps and WMTS in a Lightspeed view: tiles were retrieved one at a time instead of multiple in parallel. Only raster layers with type BACKGROUND and a tile set that does not match the internal tiling structure (e.g. geodetic reference, 4x2 tiles at level 0, 256x256 tiles) were affected.

Bug fixLuciadFusion

LCD-6988
Fixed a WMTS performance issue in Lightspeed views: tiles were retrieved one at a time instead of multiple in parallel. Only layers with type BACKGROUND and a tile set that did not match the internal tiling structure (e.g. geodetic reference, 4x2 tiles at level 0, 256x256 tiles) were affected.

Bug fixLuciadFusion

LCD-7175
Fixed a selection ordering issue for draped shapes in a 3D view without terrain.

Bug fixLuciadFusion

Calling ALspLayer#getCurrentViews() is now thread-safe.

Bug fixLuciadFusion

ALspSwingLabelStyler didn't always call componentChanged() when needed with aInvalidateOnModelChangeEvent == true. In that case, it could for example happen that componentChanged() is called for the ALspSwingLabelStyler of the EDITED paint representation, but no for the REGULAR paint representation.

Bug fixLuciadFusion

LCD-7171
Fixed a rare NullPointerException during navigation in a Lightspeed view with a grid layer.

2015.1.09

Bug fixLuciadFusion

LF-451
Fixed a bug in the fusion of vector data which could cause some features to fail with "No corresponding builder for edge link" in some circumstances.

Bug fixLuciadFusion

LF-826
The fusion engine can now also resume from checkpoint even when the commit policy is PER_COVERAGE.

Bug fixLuciadFusion

LF-196
Fixed a synchronization bug which could occasionally cause the progress to keep on going up even after a job had been stopped.

Bug fixLuciadFusion

LF-760
A fusion job's progress now preserves the elapsed time so that it no longer resets unexpectedly.
  • The elapsed time continues after a stop/restart of a job, instead it continues from the last checkpoint, in accordance with the progress itself.
  • The elapsed time continues after disconnecting and reconnecting the DCM to a remote fusion server.

Bug fixData Connectivity Manager

LF-825
Jobs running on a remote server are now visible in the DCM job manager.

Bug fixData Connectivity Manager

LF-820
Asset sources in Tile Store are now consistently enabled for S-57 coverages when adding a layer to a Tile Store.

Bug fixData Connectivity Manager

LF-822, LF-823
Fixed a bug when opening vector coverages in the DCM with tile format "application/vnd.luciad.vector.gzip:1.0", which could result in an "Unexpected major version 1 != 0" error upon visualization. This bugfix prevents the issue in the future, but it doesn't fix affected coverages. You'll have to fix affected coverages manually:
  1. Find the Tile Store's root directory, where tile-store.xml is located.
  2. Edit the corresponding coverage's XML file in the Coverages subdirectory.
  3. Locate "<lts:FormatVersion>" tag and change its value from "0" to "1.0".
If you're running a server, you'll need to stop the server before the edit and restart it afterwards. If you're a programmer, you can also change this by editing the ALfnCoverageMetadata and setting coverageMetadata.asBuilder().formatVersion("1.0").build(). Be sure to do this only for the affected coverages!

Bug fixData Connectivity Manager

LF-815
Starting a fusion job now consistently warns when no filters are configured for vector data.

Bug fixData Connectivity Manager

LF-818
The metadata editor no longer rounds the numbers in the 'Bounding box' field to 3 digits, instead the numbers are shown with full accuracy. This avoids unintentional overwriting of accurate numbers with rounded ones.

Bug fixData Connectivity Manager

LF-817
Fixed a bug which caused "Node is locked" error when clicking on a metadata field of a coverage which has a running fusion job.

2015.1.08

ImprovementLuciadFusion

LCD-7106
Improved the label alignment of the ILcdVVRenderer implementations.

ImprovementLuciadFusion

LCD-7146
The optional logging servlet filter, TLcdLogFilter, has been upgraded with an improved encryption algorithm (AES) to encode log entries.

ImprovementLuciadFusion

LCD-7141
Improved overall security by replacing the use of a pseudo random number generator with a cryptographically strong random number generator.

ImprovementLuciadFusion

LCD-6799
Improved overall security by implementing additional output neutralization measures to avoid CRLF injection and cross-site scripting.

Bug fixLuciadFusion

LCD-196
The GXY warping raster painters now paint data accurately when printing at a higher resolution than the view.

Bug fixLuciadFusion

LCD-7148
TLspRasterLayer did not handle changes to the image's semantics nicely: the bounds were shown for a brief moment which appears as flickering when done frequently. It is now handled like other non-structural changes: the old data is shown until the new data is ready.

Bug fixDefense Symbology

LCD-7143
Fixed the javadoc for width property of TLcdEditableAPP6AObject and TLcdEditableMS2525bObject. setWidth(double)/getWidth() methods of arrow symbols, set/get the distance between the axis of the arrow and the edge of the bounding box of the arrow.

Bug fixDefense Symbology

LCD-7129
Textual line decorations of a tactical graphic are always shown even if the layer's labels are toggled to invisible in a GXY View.

2015.1.07

ImprovementLuciadFusion

LCD-6227
The decoder for the WMS server sample's XML configuration format, samples.wms.server.config.xml.WMSCapabilitiesXMLDecoder, has been upgraded to use the JDOM XML framework.

ImprovementLuciadFusion

LCD-7124
TLcdMGRSFormat is now more flexible with respect to the number of digits passed as input.

ImprovementWeather & Environment Standards

LCD-7108
u and v components of WRF NetCDF files are displayed as wind barbs.

Bug fixLuciadFusion

LCD-4299
Geodetic lines with linear interpolation (ILcdCurve.INTERPOLATION_LINEAR), no longer show wrap-around artifacts in a Lightspeed view.

Bug fixLuciadFusion

LCD-7123
Painting labels in view-space (i.e. using a null model reference) didn't work as expected when using a style target provider that returns null as the style target reference.

Bug fixLuciadFusion

LCD-7115
TLcdComponentPrintable: improved memory use and performance when printing many pages.

Bug fixLuciadFusion

LCD-7116
The orientation of a point was not applied correctly to icons when using a grid reference with a TLcdGeodetic projection.

Bug fixLuciadFusion

LCD-7110
The combination of a TLspWorldSizedLineStyle and a TLspFillStyle would result in the incorrect visualization of polygons. The TLspWorldSizedLineStyle was applied to all the edges of the triangles of the discretized polygon.

Bug fixLuciadFusion

LCD-7091
TLcdCartesian#orientation2D would throw an ArrayIndexOutOfBoundsException when passing a point list with length 1.

Bug fixDefense Symbology

LCD-7088
Fixed the ArrayIndexOutOfBoundsException error when drawing a Bounded Areas of Weather - Icing on a GXY View.

2015.1.06

ImprovementLuciadFusion

LCD-7089
The OGC server sample now comes by default with a set of vendor-specific deployment configuration files to ease the deployment on GlassFish, Apache Geronimo and Oracle WebLogic. The files can be found in build/ogc/resources/WEB-INF and are also packaged together with the ready-to-use OGC server sample in distrib/.

ImprovementLuciadFusion

LCD-6125
ALspSwingLabelStyler now avoids firing style change events when they are not needed.

ImprovementAviation Standards

LCD-1021
Support for daylight savings time dependent times have been added to handle properties with schedules. A date in the included timesheet can now be set to EDLST or SDLST.

ImprovementAviation Standards

LCD-7112
Improved support for time zones when processing AIXM 5.1 messages. The generateSnapshot and updateSnapshotSFCT methods in TLcdAIXM51MessageUtil have been overloaded and it is now possible to pass a Calendar including time zone information instead of a Date.

Bug fixLuciadFusion

LCD-7054
TLspTouchNavigateController: fixed a NullPointerException when rotating around a point that is not on the terrain.

Bug fixLuciadFusion

LCD-7098
TLspEditableStyler would fire style change events for all objects (even the ones that are unaffected) when calling the clearStyles() method.

2015.1.05

ImprovementLuciadFusion

LF-814
Fusion now picks up an SLD style file next to the data file by default when building a coverage using any of the concrete subclasses of ALfnCoverageMetadata.Builder. This benefits the following use cases:
  • The Fusion Engine automatically applies the SLD style when fusing vector as image.
  • The WMS Fusion Server automatically applies the SLD style when serving coverages with asset sources in Tile Store, including the specific case of non-tiled coverages.
  • The Fusion Client automatically applies the SLD style when visualizing a vector coverage.
  • The preview layer in the DCM uses the SLD style, but beware that the map layer (when opening the file as a layer) does not.
You can of course still override the default styling with your own.

ImprovementLuciadFusion

LCD-2382
Developer guide was updated to include an image projection topic. A sample was also added to illustrate image projection in a Lightspeed view.

Bug fixLuciadFusion

LCD-6943
Lighting could sometimes change abruptly and incorrectly when navigating the view.

Bug fixLuciadFusion

LCD-7065
TLspCompassNavigationControl: optimized the performance of the fix for LCD-6989.

2015.1.04

ImprovementLuciadFusion

LF-811
Explained how to ignore non-fatal failures in theLuciadFusion Developer's Guide.

ImprovementLuciadFusion

LCD-7050
TLcdSHPPolylineZ, TLcdSHPPolygonZ and TLcdSHPMultiPointZ contained in models produced by the TLcdSHPModelDecoder are now editable.

ImprovementLuciadFusion

LF-808
When fusing vector data as raster, labels will be off by default.

ImprovementLuciadFusion

LCD-7045
To improve the interoperability with non-compliant OGC WMTS servers, the XML capabilities decoder no longer requires that the LowerCorner / UpperCorner XML elements are defined in the OGC OWS 1.1 namespace.

ImprovementLuciadFusion

LF-472
Fusion now takes the clipping shape into account to avoid the creation of empty tiles. Also non-contiguous clipping shapes are correctly dealt with.

ImprovementLuciadFusion

LCD-6877
Allow translation of undoables fired by TLspCreateController, TLspEditController, TLspRulerController and TLspDeleteSelectionAction. This is achieved by setting a ILcdStringTranslator instance on these objects.

ImprovementLuciadFusion

LCD-7033
TLcdPolynomialRasterReferencer and TLcdRationalRasterReferencer now report invalid input during the execution of the #createRasterReference() method.

ImprovementLuciadFusion

LCD-6596
The EPSG resources are updated to EPSG database v8.7.

ImprovementLuciadFusion

LCD-7027
TLcdAxisAlignedRasterReferencer can now handle the case where all tie points are aligned horizontally or vertically.

ImprovementData Connectivity Manager

LF-811
Explained the difference between non-fatal and fatal failures and how they're handled in the LuciadFusion User's Guide.

ImprovementData Connectivity Manager

LF-571
TLcyWMSCientAddon was added to the Data Connectivity Manager and it is now possible to create a map layer for non-tiled coverage as a WMS layer.

ImprovementData Connectivity Manager

LF-803
It is possible now to create a map layer from an uncommited asset.

ImprovementWeather & Environment Standards

LCD-6362, LCD-6875
Resolved several minor bugs while decoding a NetCDF file.

ImprovementAviation Standards

LCD-6158
Duplicate labels on arc angles that are shared between multiple adjacent safe altitude areas are not shown any more.

Bug fixLuciadFusion

LCD-7048
TLspLabelLocations#getLabelLocations() didn't work in some cases, for example when passing a layer to it, but not a paint representation, or vice versa.

Bug fixLuciadFusion

LCD-4461
On Windows systems the selection rectangle would be drawn again on the view when maximizing the window by double clicking the title bar.

Bug fixLuciadFusion

LCD-7031
TLspFusionVectorLayer now no longer loads tiles when out of scale range.

Bug fixLuciadFusion

LCD-6708
Fix 3D (geocentric) TLspViewNavigationUtil#animatedPan.

Bug fixLuciadFusion

LCD-6996
Panning while the view's controller changed could raise a NullPointerException.

Bug fixLuciadFusion

LCD-6989
TLspCompassNavigationControl#setMagneticNorthMap was not taken into account in 3D.

Bug fixData Connectivity Manager

LF-809
A bug was fixed which caused fusion to fail on non-fatal errors for some coverages created with the DCM. Fusion now consistently skips non-fatal errors for coverages created with the DCM.

Bug fixData Connectivity Manager

LF-715
In the metadata editor, cancelling the choice of a reference no longer provokes a NullPointerException later on.

2015.1.03

ImprovementData Connectivity Manager

LF-704
Improved the behavior of the selection in the Job Manager panel.

ImprovementData Connectivity Manager

LF-685
Preview layers are now asynchronous.

ImprovementData Connectivity Manager

LF-744
The tile format "image/png" for elevation coverages has been optimized further for compactness, at the cost of some accuracy. This reduces the coverage size roughly by half. The default tile format remains "image/tiff" for accuracy. This leaves the user with a clear choice:
  • "image/tiff" for accuracy (the default)
  • "image/png" for compactness

Bug fixLuciadFusion

LCD-7008
The LAS model decoder now handles files that incorrectly store color as big-endian instead of little-endian. The decoder will detect this case, log a warning and read the color as big-endian. Such files will now show their color instead of black.

Bug fixLuciadFusion

LCD-5760
When ECDIS is not available while a client is trying to update a coverage with S-52 SLD styling, the server now responds with 400 "Bad Request" and an appropriate message.

Bug fixLuciadFusion

LCD-7018
Visualizing SLD files with SVG-icons that have real-world distance measurements (such as cm, mm, or in) has now been made more robust in a Lightspeed view. Previously, in certain edge cases, it was possible for a program to run out of memory in Lightspeed views. This bug did not apply to the rendering of such SLD files in GXY views.

Bug fixLuciadFusion

LCD-6584
In Lightspeed views, SVG-Icons which are linked as external graphics from an SLD stylesheet, and which have a width or height specified in a unit of measure that corresponds to a real-world distance such as mm, cm, or in, are now drawn so that those dimensions correspond to actual distances on the map. A practical result is that the icon's size on the screen will change as the scale of the map changes.

Bug fixLuciadFusion

LF-786
Fixed a bug that could cause artifacts from less detailed levels to bleed through to more detailed levels. This bug affected vector-as-raster coverages such as ECDIS (S-57 and S-63) coverages.

Bug fixData Connectivity Manager

LF-729
The Data Connectivity Manager now uses the VM argument -XX:SoftRefLRUPolicyMSPerMB=0 by default. Its MAXIMUM_MEMORY was increased to 1500 MB. This allows fusion of large ECDIS data sets such as the NOAA data set with the default settings.

Bug fixData Connectivity Manager

LF-807
Fixed a bug which prevented drawing layers created from an asset's clipping shape from being used again as clipping shape.

2015.1.02

ImprovementLuciadFusion

LCD-4879
Labels are now painted correctly when using right-to-left (e.g. Hebrew or Arabic) text with TLspCurvedPathLabelingAlgorithm or TLcdGXYCurvedPathLabelPainter.

ImprovementLuciadFusion

LCD-6629
TLcdWKTReferenceParser can now recognise datums with name "D_GGRS_1987" or variants.

ImprovementLuciadFusion

LCD-7003
GML encoders and decoders now support any model reference in addition to the ones that have an EPSG code. Model references that can't be encoded as EPSG will be encoded as WKT, resulting in a URN like this: urn:ogc:def:crs:WKT::<URL-encoded WKT string> This benefits OGC services such as WMS, WMTS, WCS and WFS, which will now be able to offer models in these references.

ImprovementLuciadFusion

LCD-6643
The WMS client now sends the PIXELSIZE parameter when making requests to a WMS server. If the WMS server supports it, it can take the clients pixel size into account when determining scale ranges. The LuciadLightspeed WMS server supports this PIXELSIZE parameter. For more information, please consult the reference documentation of:
  • com.luciad.wms.client.model.ALcdWMSProxy
  • com.luciad.wms.client.model.TLcdWMSGetMapRequest

ImprovementLuciadFusion

LCD-6643
The WMS server can now accept a PIXELSIZE parameter. This server takes this into account when evaluating scale ranges. This way, these scale range calculations on the server can correspond to the map scale on the client. The pixel size is defined in mm per pixel.

ImprovementLuciadFusion

LCD-6892
The WMS client samples 'samples.wms.client.gxy.MainApplet' and 'samples.wms.client.lightspeed.MainPanel' now include a 'Select all' and a 'Clear all' button to easily select all available WMS layers or none at all.

ImprovementAviation Standards

LCD-6852
Temporal data without time zone information are now assumed to be in UTC. This ensures more deterministic behavior when generating snapshots.

Bug fixLuciadFusion

LCD-6955
TLcdEarthAssetModelCodec did not close its input and output streams explicitly. As a result the file handle release relied on the garbage collector.

Bug fixLuciadFusion

LCD-5760
When ECDIS is not available, the LTS client now omits coverages containing S-52 SLD styling rather than failing the whole connection. The client treats such 'bad' coverages as if they don't exist, while you can continue working with the 'good' ones.

Bug fixLuciadFusion

LCD-6930
ILspView#setAltitudeExaggeration() implementations now throw an IllegalArgumentException when the passed value is 0 or less.

Bug fixLuciadFusion

LCD-7006, LF-701
Fixed a bug in the marshalling of model references when using clipping shapes. The bug affected assets with model references that do no have an EPSG code.

Bug fixLuciadFusion

LCD-7004
Fixed a rendering issue for filled shapes crossing the boundaries of a TLcdGeodetic projection.

Bug fixLuciadFusion

LCD-6661
The evaluation of an SLD rule's scale range did not work properly with a geodetic view reference.

Bug fixLuciadFusion

LCD-6922
TLspLayer: resolved a rare issue where a NullPointerException could happen while painting a layer that is out of its scale range.

Bug fixLuciadFusion

LCD-6598
Fixed some minor bugs in checking of parameters when building an ALfnCoverageMetadata or one of its subclasses.

Bug fixLuciadFusion

LCD-6931
TLspRasterLayer: tile set data (ex. WMTS) was not painted at the correct level if the number of tiles at the least detailed level was very high (ex. 100x100 tiles).

Bug fixLuciadFusion

LCD-6765
Anti-aliasing is now turned on when visualizing SLD circle marks. This means that the outline of the circle now looks smoother.

Bug fixLuciadFusion

LCD-6663
The ALcdScaleIndicator implementations could display invalid scale indications for world references that don't not have meter as the unit of measure. The AScaleSupport sample class now takes this into account as well.

Bug fixLuciadFusion

LCD-6872
TLspRasterLayer: fixed error "Triangles per row must be a multiple of 4". Previously this could happen when painting an image with a tile resolution that is small or not a power of 2.

Bug fixAdvanced GIS Engine

LCD-7025
Performing a constructive geometry operation with an ILcdShapeList which contained an ILcdSurface did not work.

Bug fixWeather & Environment Standards

LCD-7009
WRF NetCDF files support has been added.

Bug fixAviation Standards

LCD-7005
When handling a IF leg, TLcdProcedureGeometryCalculator will check the leg lower or the upper altitude to determine the starting altitude. If there is no altitude set to the IF leg, it will use the Z coordinate of the leg fix.

Bug fixAviation Standards

LCD-6959
Fixed issue with sunrise and sunset calculation for timesheets, where the calculated time would become negative in some conditions.

Bug fixDefense Symbology

LCD-5147
The Effective Date/Time field does not become disabled anymore after editing on the symbology sample. SymbolTextModifierDateTimeCustomizer now keeps a reference to the related modifier.

Bug fixDefense Symbology

LCD-7015
The Symbology sample now displays the same symbols for all standards.

Bug fixDefense Symbology

LCD-7016
APP6C Land Installation symbols are now counted as Ground Units. Thus movement direction for those symbols are painted as kinked

Bug fixDefense Symbology

LCD-6236
The altitude of a Missile Engagement Zone can now be configured by setting the value of the Altitude/Depth modifier of the symbol.

Bug fixDefense Symbology

LCD-6958
The z-order in TLspMS2525bSymbolStyle and TLspApp6ASymbolStyle is taken into account while displaying military symbols.

Bug fixDefense Symbology

LCD-7001
Location labels are not displayed by default for Warfighting symbols.

2015.1.01

ImprovementLuciadFusion

LCD-6892, LCD-6948
The WMS client samples 'samples.wms.client.gxy.MainApplet', 'samples.wms.client.lightspeed.MainPanel' and 'samples.wms.client.opengl.MainApplet' will now automatically try to connect with either the LuciadLightspeed or the LuciadFusion WMS service running on localhost. Additionally, the samples will no longer show two redundant error dialogs in case of a WMS connection failure.

ImprovementLuciadFusion

LCD-6932
To improve the interoperability with non-compliant OGC WMS servers, the XML capabilities decoder has been made less strict regarding the KeywordList XML element position and regarding the need for a Title inside a Style XML element.

ImprovementLuciadFusion

LF-774
Security improvements:
  • The server no longer exposes the stack trace of the internal server error to the client.
  • The server is now more robust against malicious attempts to escape the confinements of its directories.

ImprovementLuciadFusion

LCD-6742
The TLcdEllipsoidalEquidistantCylindrical projection was added. Unlike TLcdEquidistantCylindrical, this projection uses ellipsoidal instead of a spherical approximation.

ImprovementLuciadFusion

LF-785
The build script for the LuciadFusion server application now includes a geronimo-web.xml so that it can readily be deployed in an Apache Geronimo application server.

ImprovementAdvanced GIS Engine

TLcdCartesianConstructiveGeometry, TLcdEllipsoidalConstructiveGeometry and TLcdSphericalConstructiveGeometry now support ILcdSurface if its outer and inner rings are instances of ILcdPolygon.

ImprovementReal-time Engine

LCD-6853
TLspRadarVideoLayerBuilder can now handle input data where the cell duration is not constant across all records, provided that the longer cell durations are an exact multiple of the shortest duration encountered in the data feed.

ImprovementDefense Standards

LCD-6938
Fixed text alignment in TLspVPFGeoSymStyler to behave similarly to GXY.

ImprovementDefense Standards

LCD-6873
The TLspVPFGeoSymStyler now has a default styling in case no GeoSym style was found for a specific VPF feature. Previously the feature would not be rendered.

ImprovementDefense Symbology

LCD-4057
Support for offset icons has been added for Lightspeed 2D View. You can define offset values via ILcdAPP6AStyle and ILcdMS2525bStyle.

Bug fixLuciadFusion

LF-804
WMS service: fixed a bug which could cause a NullPointerException when performing a WMS GetFeatureInfo request on an a non-tiled coverage when the initial version of the coverage is still incomplete.

Bug fixLuciadFusion

LCD-6947
EPSG code that use an oblique mercator projection could produce transformation results that are shifted. This affected EPSG codes 3167, 3168, 5247, 29871, 29872 and 29873.

Bug fixLuciadFusion

LCD-6946
TLcdBILModelDecoder: the decoder did not preserve negative no-data values. This is typically used for elevation data.

Bug fixLuciadFusion

LCD-6944
The WCS server now generates a service exception report compatible with WCS version 1.0.0 if an 1.0.0 request is sent specifying an unknown request name.

Bug fixLuciadFusion

LCD-6942
The server no longer logs exceptions that are caused by client abort actions, to avoid log poisoning.

Bug fixLuciadFusion

LCD-4274
When setting the data model name manually by calling TLcdGeoJsonModelDecoder#setDataModelName, this value is no longer automatically sanitized to only include alpha numerical characters.

Bug fixLuciadFusion

LCD-6846
Remove casts to internal ALspRulerMeasurement implementation in ruler controller code. This allows users to add custom ALspMeasurement objects to the ruler controller's model.

Bug fixLuciadFusion

LF-779
GeospatialPDF: fixed a bug in the computation of the pixel density which could cause virtually infinite fusion ETA.

Bug fixLuciadFusion

LCD-6742
TLcdEPSGReferenceParser now creates a grid reference that uses ellipsoidal instead of spherical calculations when parsing EPSG:4087.

Bug fixLuciadFusion

LCD-3366
When creating a default namespace from the data model name, invalid characters are now correctly escaped so that the namespace is always a valid URI, even if the data model name isn't. This avoids browsers to fail in those cases.

Bug fixData Connectivity Manager

LF-667
Fixed a bug in the computation of the ideal coverage layout and tile size when adding assets to an existing coverage.

Bug fixDefense Standards

LCD-6934
Fixed a potential ClassCastException that could occur while using TLspVPFGeoSymStyler.

Bug fixDefense Symbology

LCD-6834
The custom symbology sample showed the custom symbol flags at the wrong location, depending on the viewing angle. This undesired location shift of flags has been fixed.

Bug fixDefense Symbology

LCD-6882
Anchor point of Special C2 Headquarters Component symbol has been fixed for all standards.

Bug fixDefense Symbology

LCD-6868
Improved the visualization of anticipated linear target lines.

2015.1

ImprovementLuciadFusion

TLcdGXYEditController2 now also displays a preview of the object's labels during translation.

ImprovementLuciadFusion

The interpolation mode set to a TLcdWCSProxy can now be retrieved by invoking getInterpolationMethod().

ImprovementLuciadFusion

LCD-1137
The sample class samples.ogc.server.Main has been updated with a -fromsource mode to easily start the OGC sample services in an IDE, directly from the source code.

ImprovementLuciadFusion

LF-778
The WCS service in the LuciadFusion Data Server now supports version 1.1.0 and 1.1.1 of the OGC WCS protocol, next to the already supported version 1.0.0.

ImprovementLuciadFusion

LCD-6826
The WCS server now supports version 1.1.0 and 1.1.1 of the OGC WCS protocol, next to the already supported version 1.0.0.

ImprovementLuciadFusion

Is it now possible to provide a custom ALcdWCSCoverageDecoder which decodes GetCoverage responses according to the imaging API. This decoder replaces the deprecated ILcdWCSCoverageTileDecoder.

ImprovementLuciadFusion

TLcdWCSProxy can specify the resolution of the raster tile instead of the tile width and height.

ImprovementLuciadFusion

TLcdKML22DynamicModel now implements ILcdStatusSource.

ImprovementLuciadFusion

The TLcdWCSProxy model elements of TLcdWCSProxyModels now support the imaging API. They do not extend ALcdImage directly, but instead they have a data property that does. You should access the ALcdImage object using the method ALcdImage.fromDomainObject(TLcdWCSProxy). In other words, they obey the 'has an image' paradigm rather than the 'is an image'.

ImprovementLuciadFusion

LCD-6700
Slightly improved the rendering of filled shapes crossing the projection boundaries.

ImprovementLuciadFusion

LF-746
The server by default no longer saves its statistics in a fusion.stats file. Saving the statistics can still be enabled in the web.xml if desired.

ImprovementLuciadFusion

The WCS server now supports point-sampling mode. The appropriate sampling mode is not configurable, it is automatically chosen based on the sampling mode of the data being served:
  • Image data, such as GeoTIFF areal imagery, is typically area-sampled.
  • Elevation data, such as DTED or GeoTIFF, is typically point-sampled.
When using the default GeoTIFF format, the response to a GetCoverage requests is a GeoTIFF with the appropriate tag set to 'RasterPixelIsPoint' or 'RasterPixelIsArea'.

ImprovementLuciadFusion

The WCS server now supports the "bilinear" interpolation method in addition to "nearest neighbor", and advertises this in the coverage offering. Bilinear interpolation usually yields better results than nearest neighbor interpolation, especially when requesting coverages in a much higher resolution than the native one (oversampling).

ImprovementLuciadFusion

TLcdKML22ModelEncoder is a model encoder to export a KML model into a kml file. Its main purpose is to save models made programmatically. TLcdKML22ModelEncoder has several limitations :
  • This model encoder doesn't export non KML models into KML files.
  • This model encoder does not support kmz extension.
  • This model encoder was not made for round-trips and KML models don't have a reference to this model encoder.
  • Relative network links will not be modified and this model encoder will not copy their target contents.

ImprovementLuciadFusion

WMS models decoded with TLcdOGCWMSProxyModelDecoder will now by default use image/png and transparency as image exchange format settings, instead of image/jpeg with a background color.

ImprovementLuciadFusion

LCD-1722
Lighting for 3D icons is now also supported in a 2D view.

ImprovementLuciadFusion

TLcdMGRSFormat now provides an enumeration to indicate the precision used to format MGRS or UTM/UPS strings. The following methods have been deprecated in TLcdMGRSFormat:
  • getNumberOfDigits(), getPrecision() should be used instead.
  • setNumberOfDigits(int aNumberOfDigits), setPrecision(FormatPrecision aPrecision) should be used instead.

ImprovementLuciadFusion

TLsp3DIconStyle: when using a 3D icon containing textures, the textures will now be compressed. This reduces the amount of memory that is needed on the GPU for showing that 3D icon.

ImprovementLuciadFusion

LCD-6587
Added built-in HTTP Basic Authentication support to TLcdOWSHttpTransport: constructors have been added to supply username and password for authentication at an OGC server.

ImprovementLuciadFusion

KML balloons now support dark Nimbus look and feels in that the balloon background remains white, to be sure text is always readable.

ImprovementLuciadFusion

LuciadFusion now supports point-sampled elevation data. By default, the sampling mode of the assets is preserved in the coverage, but it can be set manually as well. Point-sampled and area-sampled assets can be mixed into either a point-sampled or area-sampled coverage. The interpolation of values from the assets' rasters into the coverage's raster takes care of converting the values from assets that have a different sampling mode than the coverage.
  • You can inspect the sampling mode of coverage with TLfnRasterCoverageMetadata.getSamplingMode().
  • A coverage decoded as a LuciadFusion model offers its data as both an ILcdEarthTileSet and an ALcdImageMosaic, so that it integrates with both the tile set API and the imaging API. However, only the imaging API can accurately visualize point-sampled data. Due to the lack of a point-sampled notion in the tile set API, the data will always be interpreted as area-sampled, resulting in inaccuracies such as pixels which are shifted slightly out of place. When working with point-sampled data, it is thus strongly recommended to use the imaging API. The tile set API is only supported for backwards compatibility.
  • Point-sampled coverages have tile width and height +1 compared to their area-sampled equivalent with the same pixel density (resolution).

ImprovementLuciadFusion

LCD-6420
TLfnTileStoreModelDecoder has been adapted for integration with the imaging API. It produces domain objects that extend ALcdImageMosaic as well as implement ILcdEarthTileSet.

ImprovementLuciadFusion

Collada models referenced in KML files can now be visualized in layers build by TLspKML22LayerBuilder.

Collada is a standard for encoding 3D geometries. It is used as the format for 3D objects in KML. The standard is an official Khronos Standard, supported by major companies such as ATI and NVIDIA. It is also being supported in may 3D modelers and game engines and in Google Earth (through KML). See https://www.khronos.org/collada/ for more information.

Opening a KML file containing Collada 3D objects on a Lightspeed view will show the Collada data. An example use-case is a KML file referring to a set of Collada files representing the buildings of a city.

When opening a KML file containing a Collada model on a GXY view, only the bounds of the Collada model will be shown.

ImprovementLuciadFusion

LuciadLightspeed can now visualize Collada models.

Collada is a standard for encoding 3D geometries. It is used as the format for 3D objects in KML. The standard is an official Khronos Standard, supported by major companies such as ATI and NVIDIA. It is also supported in many 3D modelers and game engines and in Google Earth (through KML). See https://www.khronos.org/collada/ for more information.

The TLsp3DIconStyle class now offers a new method to use a Collada file as icon style. See the TLsp3DIconStyle.Builder#icon(String) method for more information.

This is typically used to style moving objects with for example an airplane, a car or a vessel. The TLsp3DIconStyle class javadoc contains more information on this.

LuciadLightspeed supports Collada data in KML files as well. Consult the KML release notes and KML developer guide for more information.

ImprovementLuciadFusion

LCD-6474
TLcdDTEDDirectoryModelDecoder now attempts to automatically detect the bounds of the available data. You can disable this using TLcdDTEDDirectoryModelDecoder.setAutoDetectBounds(false).

ImprovementLuciadFusion

LCD-6483

The default color scheme for elevation data was enhanced to have less saturated colors that are perceived more equally. The new color scheme is available from TLcdColorModelFactory and TLcdDTEDColorModelFactory.

Should you still need the old color scheme, here is a code snippet to create it:

      TLcdDTEDColorModelFactory factory = new TLcdDTEDColorModelFactory();
      factory.setLevels(new double[]{-16000,-8000, -4000, -2000, -1000, 0, 0.1, 100, 200, 300, 400, 500, 600, 700, 800,
      900, 1000, 1100, 1200, 1300, 1400, 2500, 3500});
      factory.setColors(new Color[]{ new Color(0x000000), new Color(0x0000ff), new Color(0x00c0c0), new Color(0x80c0c0),
      new Color(0xa0e0e0), new Color(0x8c96d2), new Color(0x55793d), new Color(0x679349), new Color(0x75a552), new
      Color(0x84b264), new Color(0xedd283), new Color(0xf7d865), new Color(0xf2cd60), new Color(0xedb54f), new
      Color(0xe7aa50), new Color(0xe59547), new Color(0xe56c35), new Color(0xc88c3d), new Color(0xac8533), new
      Color(0xb48352), new Color(0x9a4e2e), new Color(0x909090), new Color(0xffffff)});
      ColorModel colorModel = factory.createColorModel();
    

Depending on how you visualize your data, you have to set the color model to a painter or a style. See ILcdRasterPainter.setColorModel or TLspRasterStyle for example.

ImprovementLuciadFusion

LCD-4550
TLcdSymbologyDateFormat now supports custom formats. In addition, TLcdSymbologyDateFormat#parse(String) accepts strings with or without spaces, and strings with or without seconds, regardless of the value of the isWithSeconds property.

ImprovementLuciadFusion

LCD-6471
TLspRasterLayerBuilder by default builds layers whose styler implements ILspCustomizableStyler.

ImprovementLuciadFusion

LCD-4544
Balloons created via ALcdBalloonManager can be closed by pressing ESC key.

ImprovementLuciadFusion

LCD-6344
The following classes and interfaces have been added, facilitating the use of weak listeners. Consult the javadoc of those new classes and interfaces for more information:
  • Property changes: ILcdPropertyChangeSource and ALcdWeakPropertyChangeListener
  • Model changes: ALcdWeakModelListener
  • Change events: ALcdWeakChangeListener
  • Selection changes: ALcdWeakSelectionListener
  • Layered changes: ALcdWeakLayeredListener
  • Status changes: ALcdWeakStatusListener

ImprovementLuciadFusion

LCD-5489
It is now possible to specify a rotation when using TLspLabelLocationProvider.

ImprovementLuciadFusion

LCD-6207
It is now possible to specify a different x and y offset when using TLspLabelLocationProvider.

ImprovementLuciadFusion

LCD-347, LCD-376, LCD-329, LCD-392, LMAP-5850
MGRS grids can now be displayed in a GXY view with the new TLcdMGRSGridLayer. This is demonstrated in the gxy.grid sample.

ImprovementData Connectivity Manager

TLcyObjectPropertiesComparisonAddOn: a new add-on has been introduced which offers a side-by-side view of object properties, making it easy to compare the properties of different objects.

ImprovementTerrain Analysis Engine

LCD-6302
Added TLcdLOSOptions object. This object allows you to configure certain aspects of the result of a propagation function for our 3 main propagation-functions: TLcdLOSRadarPropagationFunction, TLcdLOSRadarPropagationFunctionSkyInBackground and TLcdLOSPropagationFunctionFixedHeight. The TLcdLOSOption object allows you to create LOS Coverage matrices in a low memory mode. This mode reduces memory used by TLcdLOSCoverageFactory while calculating LOS coverages, at a slight performance cost. TLcdLOSOption also allows you to configure the internal data format used to represent the final LOS coverage values.

ImprovementDefense Symbology

Small enhancements for tactical graphics in GXY:
  • Added the missing 'ENY' label for buffer shapes
  • More symbols are using dashed strokes to represent status Planned, Anticipated and Suspect (seize, turn...).

ImprovementDefense Symbology

LCD-6733
The NVG samples now show how to customize the style of non-military graphics.

ImprovementDefense Symbology

The NVG Industry Specific Component now supports NATO APP-6C symbols.

ImprovementDefense Symbology

TLcdAPP6ANode/TLcdMS2525bNode's names are no longer all capitals.

ImprovementDefense Symbology

Support for the military standard APP-6C has been added. It is now possible to create and visualize TLcdEditableAPP6AObject instances using the new 20-digit SIDC codes. TLcdAPP6ANode also exposes the new domain hierarchy. To better cope the current and future modifier changes, TLcdEditableAPP6AObject#getPossibleSIDCModifiers() has been introduced. The method exposes a symbol's relevant modifiers, such as the new APP-6C specific sector1 and sector2 modifiers.

ImprovementMaritime Standards

S-57 data that has time information can be now filtered using TLcdS52DisplaySettings#setDateFilterValue(Date)

ImprovementMaritime Standards

LCD-5865, LCD-6276, LCD-6269

The S-52 display settings can now be configured to enable or disable object class selection through TLcdS52DisplaySettings#setObjectClassSelectionEnabled(boolean). More specifically, this means that the value of TLcdS52DisplaySettings#getObjectClasses() is completely ignored in case TLcdS52DisplaySettings#isObjectClassSelectionEnabled() yields false. This behavior mirrors the old one when the object class property is nullified (which is also still supported regardless the value of TLcdS52DisplaySettings#isObjectClassSelectionEnabled()). By default, object class selection is allowed.

The S52DisplaySettingsCustomizer sample has changed as well. When display category 'OTHER' is selected, the user is allowed to select the visible object classes through a tabular user interface.

ImprovementS-63

Luciad API users can now act as ECDIS system manufacturers, and use their own hardware IDs and manufacturer IDs. See the TLcdS63UnifiedModelDecoder#setEncryptedHardwareID javadoc and the developer guide for more information.

Note that this functionality requires a specific Luciad license, as explained in the developer guide.

Bug fixLuciadFusion

LF-763
Fusing using "image/tiff" as tile format caused a memory leak in native memory, due to a native memory leak in jai. The jai third party library has been fixed, which resolves this memory leak.

Bug fixLuciadFusion

LCD-6784
TLcdGXYAsynchronousLayerWrapper: resolved an issue where the view would not be repainted. This could happen when using a tiled WMS painter.

Bug fixLuciadFusion

LCD-6761
When TouchDarkNimbusLookAndFeel and Java 8 were used, the selection in combo boxes and lists was sometimes indistinguishable. This is a bug in Java, but a workaround was applied. This appears most notably in the Lucy map-centric front-end.

Bug fixLuciadFusion

LCD-6640
The WCS server now respects caching headers also for XML requests.

Bug fixLuciadFusion

LCD-6615
The WCS server now always selects the appropriate level of detail of the source data, even when the response CRS differs from the model reference and when no area of interest is defined.

Bug fixLuciadFusion

LCD-6184
TLsp3DMeshPainter does not do incorrect culling anymore.

Bug fixLuciadFusion

LF-755
Fixed a bug when creating assets from tree models, which affected some GRIB2 models.

Bug fixLuciadFusion

LCD-6706
When a ELspCreationMode is set to FREEHAND_AND_CLICK, if there is only a single press-drag-release event chain, the creation is terminated like FREEHAND_SINGLE_SWIPE.

Bug fixLuciadFusion

LCD-1674
Fixed a bug in the rendering of coplanar textures used by some OpenFlight files.

Bug fixLuciadFusion

HTTP authentication errors (status code 401) thrown by an ILcdRemoteOWSModelDecoder implementation (e.g., to decode a remote WFS in an SLD user layer) are now correctly passed to the WMS request sender.

Bug fixLuciadFusion

LCD-6487
ALcdObjectSelectionAction now listens for changes on its object filter.

Bug fixLuciadFusion

LCD-6466
TLcdGXYPointListPainter: in some case, artifacts could appear when selecting polylines or polygons.

Bug fixLuciadFusion

LCD-4021
TLcdTransverseMercator.world2lonlatOnEllipsoidSFCT could transform points outside the valid bounds to some point inside the valid bounds. It now throws a TLcdOutOfBoundsException as expected.

Bug fixData Connectivity Manager

LF-697
The preview layer now works for all vector data such as GML, even when it has no SLD styling.

Bug fixData Connectivity Manager

LF-691
Fitting on a theme doesn't provoke exception anymore.

Bug fixData Connectivity Manager

LF-731
Import/export now uses a keep-alive mechanism to prevent timeouts while import/export jobs are waiting in the queue.

Bug fixData Connectivity Manager

LF-762
Replication now uses a keep-alive mechanism to prevent timeouts while computing progress for large coverages.

Bug fixAviation Standards

LCD-6854
Decoding ARINC provoked some memory leaks, these were fixed.

Bug fixDefense Symbology

LCD-7013
Installation icon of Ground Track - Installation symbols does not disappear anymore when Exercise Pending affiliation is selected.

Bug fixDefense Symbology

Small fixes for tactical graphics in GXY:
  • Some labels were not completely painted. Example: the last letter of the label was only partially visible.
  • Changing the GXY view size could cause some symbols to be clipped.

Upgrade considerationLuciadFusion

LCD-6631
The optional RaveGeo component (com.luciad.format.ravegeo) has been removed from the standard product distribution. This data connector was not used anymore. If you have any questions, please contact support@luciad.com.

Upgrade considerationLuciadFusion

LCD-6807
KML now uses apache commons compress to handle compressed KMZ content to improve compatibility with some files. This change adds a new dependency on the commons-compress.jar file, which needs to be included in your classpath when using the KML module.

Upgrade considerationLuciadFusion

LF-767
Added a keep-alive mechanism to replication and import/export protocols. Keep-alives kick in after 15s of no connection activity, with an interval of 15s. This prevents the client from timing out in case the operation takes a long time to respond. Old clients will throw upon these keep-alives, so you should upgrade all clients before upgrading your servers. When import/export and replication remain within the keep-alive interval, no keep-alives are used and the protocol remains backwards compatible, but there is no way to guarantee this up front. Affected operations:
  • Import/export
  • Replication
Use cases that benefit from the new keep-alive mechanism:
  • Replication of large coverages with an AOI, where a lot of tiles are skipped, resulting in long periods of connection inactivity.
  • Scheduling of multiple import/export jobs, where jobs need to wait for others to finish.

Upgrade considerationLuciadFusion

Updated the version of the jai_imageio library. The new version includes fixes a native memory leak when encoding tiffs using the deflate algorithm.

Upgrade considerationLuciadFusion

ILcdOpenFlightNode now extends from ILcd3DMeshNode. Any custom implementations of this interface will have to implement this interface.

Upgrade considerationLuciadFusion

The TLspMesh3DIcon#paint() method has been made final. In case you have overwritten this method, you will get a compile error. The behavior of this method has changed, so that any GL calls made before this method will have no effect on the mesh rendering (e.g. by using a wrapper method).

Upgrade considerationLuciadFusion

LCD-6614
When using SVG based point symbolizers, the width and height of the created SVG icon is now set by width and height of the source SVG file.

Upgrade considerationLuciadFusion

The LuciadFusion API was simplified to allow no more than a single coverage per model. It is no longer possible to decode multiple coverages per model. You may need to adjust your custom code:
  • Callers of TLfnTileStoreModelDecoder.decode need to be adjusted to match the method signature. Use a single String instead of aString[].
  • Callers of ALfnTileStoreModel.setCoverageIds need to be adjusted to use setCoverageId instead.
  • Callers of TLfnTileStoreModelDescriptor.getCoverageMetadatas or TLfnTileStoreDataSource.getCoverageMetadatas need to be adjusted to use getCoverageMetadata instead.
  • Custom extensions of any of the aforementioned classes need to be adjusted to match the new method signatures. Implementations should be adjusted to work with a single coverage ID instead of multiple ones.
There are almost no practical use cases for allowing multiple coverages per model. In case you need it, you can still do it manually:
  • Decode all the relevant coverages into their own models.
  • Get theILcdEarthTileSetCoverages from theILcdEarthTileSets of the separate models, and combine them into a newILcdEarthTileSet. Beware that you can only do this if their coverage structures match.
  • Put the combined ILcdEarthTileSet into a newILcdModel.

Upgrade considerationLuciadFusion

TLcdUTMUtil and TLcdUPSUtil now add leading zeros by default. These used to be stripped. Example: 17T 630084 4833438 is now 17T 0630084 4833438 (See the extra leading 0 after the first space). Default behavior was selected by setting numberOfDigits to -1. This is now equivalent to setting the numberOfDigits to 7. There is no way to restore the old behavior. Note that TLcdMGRSFormat is only affected if FormatType.UTM_UPS was chosen and numberOfDigits was set to -1 as the default behavior is 7 in this case.

Upgrade considerationLuciadFusion

LCD-6524
ILspImageProjectionLayer now allows projecting point from the world onto the image. To support this it now has a new unProjectPoint method which performs the inverse operation from the existing projectPoint method.

Upgrade considerationLuciadFusion

LCD-6404
LuciadLightspeed no longer needs/includes the Acme library. If you need its functionality, you can download the library yourself, or use the JDK's ImageIO API instead.

Upgrade considerationData Connectivity Manager

The OpenGL 3D view in the DCM has been replaced by a Lightspeed 3D view. The Lightspeed 3D view has better performance then the old 3D view. Also, the Lightspeed 3D view supports the visualization of vector coverages which wasn't the case for the old 3D view.

As a consequence, all the OpenGL addons have been removed and are replaced by their Lightspeed counterpart. If you try loading an workspace from a previous version containing a 3D view, the workspace will be restored without the 3D view. In order to fully restore the workspace, you will have to manually create a 3D view (File | New | 3D Map) and add all the data to the 3D view.

Upgrade considerationDefense Symbology

Visualization support for speed leaders has been added for the MIL-STD 2525C and APP-6C standards. Speed leaders are lines whose length and direction are based on an icon's speed and movement direction. ILcdAPP6AStyle and ILcdMS2525bStyle introduce the following methods to configure speed leader properties:
  • double getSpeedLeaderLengthRatio(): Returns the length ratio of the speed leader to the symbol size against the speed value of 1m/s.
  • setSpeedLeaderLengthRatio(double): Sets the length ratio of the speed leader to the symbol size against the speed value of 1m/s.
  • setSpeedLeaderLength(double, ILcdISO19103Measure): Sets the length ratio of the speed leader to the symbol size against the given measure.

Upgrade considerationDefense Symbology

LCD-6705
The style interfaces ILcdAPP6AStyle and ILcdMS2525bStyle introduce two new methods to customize vertical line styles for symbols which have an altitude in a 3D view. The new methods are:
  • setVerticalLineEnabled(boolean): Enables/disables the vertical line for the symbols.
  • isVerticalLineEnabled(): Returns whether the vertical line is enabled

Upgrade considerationDefense Symbology

LCD-639
TLcdEditableAPP6AObject#getAPP6ACode and TLcdEditableMS2525bObject#getMS2525bCode methods no longer return strings containing null characters '\0' (instead of dashes). To restore the original behavior, you can replace the dashes again with null characters (e.g. code.replace('\0', '-')).

Upgrade considerationDefense Symbology

The TLcdMS2525bCode2EchelonMap and TLcdMS2525bCode2AffiliationMap classes were removed. Usages of TLcdMS2525bCode2EchelonMap can be replaced by using the following code: String codeMask = TLcdMS2525bEchelonNode.get(ILcdMS2525bCoded aCoded).getCodeMask();

Upgrade considerationDefense Symbology

The TLcdMS2525bIcon and TLcdAPP6AIcon classes were removed. This will result in a compile error when using this class. These errors can be resolved by using ILcdIcon instead, or down-casting to ILcdAnchoredIcon.

Upgrade considerationDefense Symbology

The TLcdDefaultMS2525bStyle#getLineProperty() and #isLine() methods were removed. It is possible to use the ILcdMS2525bShape interface to retrieve information about the geometry of a military symbol. This also applies to TLcdDefaultAPP6AStyle.

Upgrade considerationDefense Symbology

TLcdEditableAPP6AObject#setDefaultAPP6ACode(String) and #getDefaultAPP6ACode() are now deprecated. The following methods can be used instead:
  • TLcdEditableAPP6AObject#setDefaultAPP6ACode(String, ELcdAPP6Standard)
  • TLcdEditableAPP6AObject#getDefaultAPP6ACode(ELcdAPP6Standard)
This also applies to TLcdEditableMS2525bObject.

2015.0

2015.0.12

ImprovementLuciadFusion

LCD-6751
TLspIconStyle now allows to define a minimum icon size in pixels for world sized icons.

ImprovementDefense Symbology

The length of the speedLabel modifier has been increased from 8 to 12

Bug fixLuciadFusion

LCD-6833
TLspFusionVectorLayerBuilder: a filter set on the layer using the filter() method would not be respected in all cases. This resulted in too many elements being painted.

Bug fixLuciadFusion

LCD-6832
Grid references using a mercator projection with custom latitude limits could not be formatted by TLcdEPSGReferenceFormatter.

Bug fixLuciadFusion

LCD-5579, LCD-3952
Fixed incorrect scaling of non-square world sized icons when using the TLspIconStyle.

Bug fixLuciadFusion

LCD-6777
Fixed floating labels bug for draped lines (paths in MS2525b and NVG) on a terrain.

Bug fixLuciadFusion

LCD-6814
Fixed issue with the undo behavior of pointlists after their creation.

Bug fixLuciadFusion

LCD-5865
The ECDIS-specific WMS sample now allows filtering on object classes.

Bug fixWeather & Environment Standards

LCD-6803
Data with mercator projection is now displayed on correct coordinates. "longitude_of_projection_origin" is taken into account while creating a mercator projection.

Bug fixDefense Standards

LCD-6797
Fixed NullPointerException that could occur when requesting the bounds of a VPF domain object.

Bug fixDefense Symbology

LCD-6811
StringIndexOutOfBoundsException in some cases when saving an NVG model.

2015.0.11

ImprovementLuciadFusion

LCD-6794
Support was added for EPSG:3414 and EPSG:4757.

ImprovementLuciadFusion

LCD-6531
Reduced the amount of temporary files created when decoding KMZ files.

ImprovementLuciadFusion

LCD-3595
The tiled WMS functionality in Lightspeed and GXY views can now effectively use multiple threads to request data from the server, resulting in a significant performance increase. Previously there was at most one request to the server at a time.

ImprovementDefense Symbology

Incorrect label alignment on military icons

ImprovementDefense Symbology

Task graphics now use a slightly larger font to painter the letters integrated in the symbol.

ImprovementMaritime Standards

LCD-6576
TLcdS57ModelDescriptor now exposes all DSID fields. The missing fields that are now available are:
  • UADT: Update application date, see TLcdS57ModelDescriptor.getUpdateApplicationDate()
  • COMT: Comment, see TLcdS57ModelDescriptor.getComment()

Bug fixLuciadFusion

LCD-6802
In case of an ALcdWMSProxy with only a configured SLD or SLD URL, it could happen that no matching map reference was found between the client and the server.

Bug fixLuciadFusion

LCD-6786
A thread safety problem was fixed for TLcdGXYViewMeasureProvider. This problem could be triggered by adding/removing a layer or by changing its visibility.

Bug fixLuciadFusion

LCD-6790
The server now returns valid capabilities instead of throwing a NullPointerException when no output formats are defined.

Bug fixLuciadFusion

LCD-6672, LCD-6785
TLspPointToPointSnapper: Fixed an issue where sometimes shapes would snap to themselves for every single point on the map.

Bug fixLuciadFusion

LCD-6776
The server now always deletes temporary _lmap_*.tmp files as soon as they become obsolete, to prevent cluttering the tmp directory.

Bug fixLuciadFusion

LCD-6758
Fix title of samples.lightspeed.customization.selection sample.

Bug fixLuciadFusion

LCD-6499
Corrected Javadoc for TLspViewNavigationUtil.setFitMargin.

Bug fixAdvanced GIS Engine

LCD-6774
Fix a bug that caused a ClassCastException when performing an INSIDE topology check with TLcdEllipsoidalBasicBinaryTopology or TLcdSphericalBasicBinaryTopology.

Bug fixReal-time Engine

LCD-6579
Fixed an issue with TLspRadarVideoLayerBuilder where radar feeds could exhibit single-cell gaps in the angular direction, due to small fluctuations in the azimuth values of the input data.

Bug fixAviation Standards

LCD-6759
Fixed ADR schema resources collision when configuring the model decoder to use a custom entity resolver for providing access to locally stored schema definitions. This can now be configured by using TLcdXMLEntityResolver.

Bug fixDefense Symbology

LCD-6787
The labels for the 'Minimum Safe Distance Zone' symbol were hard to read.

2015.0.10

ImprovementLuciadFusion

LCD-6764
The GML decoders now support decoding bounded GML features into ILcdBounded objects whose bounds are not editable.

ImprovementLuciadFusion

LCD-4706
The Lightspeed WMS client sample class used to perform GetFeatureInfo requests, WMSGetFeatureInfoController, now allows to configure the amount of features to be retrieved. By default, 10 features are requested, aligned with the GXY WMS client sample.

ImprovementDefense Symbology

The label positions of the Block, Breach, Bypass, Canalize, Clear and Penetrate shapes have been improved when using a GXY view.

Bug fixLuciadFusion

LCD-6756
In case of an unknown CRS, the server will indicate unknown CRS instead of null in WCS DescribeCoverage response.

Bug fixLuciadFusion

LCD-6773
The builder method addInlineExternalGraphic in TLcdSLDGraphic did not produce a valid external graphic object; the inline content was missing.

Bug fixLuciadFusion

LCD-6762
The WMS client sample class WMSLayerList showed an inverted list of available WMS layers in the UI.

Bug fixLuciadFusion

LCD-6760
TLcdEllipsoidUtil#calculateCircleTangentLine() didn't use the given tolerance value. This could often lead to no solution being found.

Bug fixLuciadFusion

LCD-6719
The provides created by TLcdImageModelHeightProviderFactory and TLcdImageModelMeasureProviderFactory did not fall back to less detailed data if data was missing. As a result you could get a NaN value even though there is data when using a model with an ALcdMultilevelImageMosaic (for example DMED).

Bug fixLuciadFusion

LCD-6674
Fixed drawing related problems when using a TLcdEquidistantCylindrical with a non-zero standard parallel.

Bug fixDefense Symbology

LCD-6753
Weapon/Radar Range Fans - Circular: Only the outer circle was painted.

Bug fixDefense Symbology

LCD-6746
Mil-STD 2525c: The "Fix", "Secure", "Occupy" and "Retain" symbols weren't painted using a letter anymore.

Bug fixDefense Symbology

LCD-5448
Labels are not chopped off anymore when increasing the halo of an icon in a GXY View.

2015.0.09

ImprovementAviation Standards

LCD-6645
Improved the visualization of AIXM 5.1 SafeAltitudeArea features in Lightspeed views. The features are now rendered as filled arc bands in 2D and 3D, together with a set of labels that express the altitude, distances and angles of the SafeAltitudeArea's circle sector(s).

ImprovementDefense Symbology

LCD-6707
Labels are displayed for the Emergency and Hazard icons in APP6A/B

Bug fixLuciadFusion

LCD-6722
Fixed a bug in the parsing of WMS requests with an SLD body.

Bug fixLuciadFusion

LCD-6713
TLcdLonLatHeightPolyline#getTangent2D could return an incorrect angle when called with parameter 0.0 or 1.0

Bug fixLuciadFusion

LCD-6694
The WMS client has improved support to detect a faulty WMS service URL (e.g., a link to an HTML website), resulting in a faster response from the API to inform the user.

Bug fixLuciadFusion

LCD-6673
Fixed a WCS regression that caused the malfunction of a previously implemented improvement to rescale raster responses from server's that do not respect the requested resolution.

Bug fixLuciadFusion

LCD-6667
The RectifiedGrid limits and offsetVector values in a DescribeCoverage response sometimes had unexpected signs in case of very high resolutions.

Bug fixDefense Symbology

LCD-6690, LCD-6179
Editing the 'One-way Traffic', 'Two-way Traffic' and 'Alternating Traffic' symbols was very slow.

Bug fixDefense Symbology

LCD-6665
Fixed displacement of labels around a symbol when rotating in 3D view. With this fix, labels always keep their relative position to the symbol.

Upgrade considerationLuciadFusion

LCD-6716
Updated the version of the jai_imageio library, to be able to fix a bug inf the TIFF encoder.

2015.0.08

ImprovementLuciadFusion

LCD-6630
ILcdModelHeightProviderFactory implementations did not choose the correct level of detail when the data was only partially visible in the height provider's reference.

Bug fixLuciadFusion

LCD-6662
Fixed an issue in decoding DATE and DATETIME columns in a GeoPackage.

Bug fixLuciadFusion

LCD-6534
The validation of an OGC filter has been made less strict so that property names with "" as default namespace match any namespace.

Bug fixLuciadFusion

LCD-6650
Fixed a bug that could cause an exception when the GL_ARB_vertex_buffer_object OpenGL extension was disabled.

Bug fixLuciadFusion

LCD-6648
TLcdEarthGXYViewTileSet did not handle tiles that cross the 180 degree meridian correctly. As a result processing such data with LuciadFusion would give incorrect images for these tiles.

Bug fixLuciadFusion

LF-738
Fixed a bug in the progress computation of WMTS fusion.

Bug fixLuciadFusion

LCD-6628
Transforming bounds between geodetic and grid references is more precise when using small bounds that wrap-around the date line, or lie partially outside the projection.

Bug fixDatabase Connectors

LCD-6687
TLcdOracleSpatialModelDecoder kept one connection always open even if alwaysCloseConnection property was set true.

Bug fixWeather & Environment Standards

LCD-6656
Fixed issue; icons are not displayed in 3D with a grid reference which has a unit of measure value different than 1.

Bug fixDefense Symbology

LCD-6668
Fixed an ArrayIndexOutOfBoundsException that occurred when drawing new security symbols in NVG.

Bug fixDefense Symbology

LCD-6638
Fixed alignment of labels with a symbol which has height in 3D view.

Bug fixInfrastructure Standards

LCD-6680
TLcdDGNGXYLineStyle, TLcdDGNGXYFontStyle and TLcdDGNGXYFillStyle setupGraphics now work again if you pass null GXY context.

2015.0.07

Bug fixLuciadFusion

LCD-6595
TLsp2DPointListEditor: Fixed issue where creating a pointlist using ELspCreationMode.FREEHAND_SINGLE_SWIPE would remove a point when pressing the right mouse button.

2015.0.06

ImprovementLuciadFusion

LCD-6516
It is now possible to specify the offset (in pixels) from the grid line or view edge for MGRS labels (TLspMGRSGridLayerBuilder), see TLspMGRSGridStyle#labelGridOffset() and TLspMGRSGridStyle#labelEdgeOffset().

ImprovementLuciadFusion

LCD-6520
It is now possible to use a horizontal label orientation for MGRS labels (TLspMGRSGridLayerBuilder), see TLspMGRSGridStyle#labelOrientation().

ImprovementLuciadFusion

LCD-6098, LCD-3463
The license checking mechanism now supports IP- and MAC addresses of network interfaces whose name does not start with 'eth'.

ImprovementLuciadFusion

LF-732
The WFS service in the LuciadFusion Data Server now uses the coverage id as feature type name in case of a VECTOR coverage with only one data type. Previously, the feature type name was always a combination of the coverage id and the data type name, since multiple data types can occur within one coverage.

ImprovementLuciadFusion

LF-730
The Data Server sample front-end now automatically detects the servlet location (protocol, host name and port), so that this information no longer needs to be hard-coded in the JSON service description files.

ImprovementLuciadFusion

LCD-6544
The XML capabilities decoder has been made less strict with respect to the LegendURL XML element position. By definition, this element is positioned within a WMS layer style element; however, some servers position it within a WMS layer element.

ImprovementLuciadFusion

LCD-6553
The XML capabilities decoder has been made less strict with respect to custom extensions found in the WMS capabilities.

ImprovementLuciadFusion

LCD-6555
Added support to automatically handle server redirects in case the new URL uses a different protocol (e.g., HTTP to HTTPS). Automated redirects within the same protocol were already supported.

ImprovementReal-time Engine

LCD-6597
TLspContinuousLabelingAlgorithm now doesn't make labels for objects closely outside the view border invisible.

ImprovementAviation Standards

LCD-6570
The transition to a FA, FC or FD leg will now try arrive on the line defined by the fix and the course of the leg instead of just changing the course.

Bug fixLuciadFusion

LCD-6623
TLcdGXYImagePainter could update indefinitely for ALcdImageMosaic objects that do not implement ILcdEarthTileSet.

Bug fixLuciadFusion

LF-740
Some bugs were fixed when copying coverages using TLfnTileStoreUtil.copyCoverage and copyCoverageTileData. A more user-friendly method copyCoverage(ALfnCoverage aSource, ALfnTileStore aTarget, String aNewId, ILfnProgressCallback aCallback) was introduced to replace the deprecatedcopyCoverageTileData.

Bug fixLuciadFusion

LCD-6614
TLcdSVGIcon icon width and height are set from defined width and height XML properties instead of the XML element which defines the shape.

Bug fixLuciadFusion

The offset (defined in pixels) passed to the TLspLonLatGridStyler#setPosition() wasn't always interpreted correctly. For example, when specifying an offset of 4 pixels, the offset was interpreted as 8 pixels instead. To keep the default behavior of the lon lat grid labels the same, the default offset was modified.

Bug fixLuciadFusion

LCD-6607
TLspMGRSLayerBuilder: part of the overlay label was clipped away when using some fonts/font sizes.

Bug fixLuciadFusion

LCD-6503
The LRU cache used by the sample WMS server model provider class, DynamicModelProvider, could cause a NullPointerException in case of cached raster models.

Bug fixLuciadFusion

LF-733
Fixed a bug which could provoke a license error when an S-63 license is absent while the lcd_ecdis_s63.jar is present (for example in the WAR file).

Bug fixLuciadFusion

LCD-6591
Added support for SLD or SLD URL configurations on ALcdWMSProxy that solely consist of user-defined layers.

Bug fixLuciadFusion

LCD-6588
ALcdBalloonManager: when selecting a balloon without arrow, the arrow of the previously selected balloon could still be visible.

Bug fixLuciadFusion

TLcdUTMUtil: using -1 as numberOfDigits could result in invalid UTM Strings. Also, trying to parse UTM strings with a negative coordinate now throws an exception as expected.

Bug fixLuciadFusion

LCD-6585
TLcdEPSGReferenceFormatter now throws IllegalArgumentException rather than ClassCastException, when formatting an unknown reference, as stated in the javadoc.

Bug fixLuciadFusion

LCD-6582
Raster layers with type BACKGROUND and ALcdImage domain objects containing elevation data were not rendered correctly.

Bug fixLuciadFusion

LCD-5918
In GXY views, SVG icons which are linked as external graphics from an SLD stylesheet, and which have a width or height specified in a unit of measure that corresponds to a real-world distance such as mm, cm, or in, are now drawn so that those dimensions correspond to actual distances on the map. A practical result is that the icon's size on the screen will change as the scale of the map changes.

Bug fixLuciadFusion

LCD-6577
ALcdBasicImage getPixelSizeX/getPixelSizeY returned an inaccurate value for point-sampled images.

Bug fixS-63

LCD-5808
The S-63 decoder could fail with a cipher error when using JDK 1.7.0_71 or 1.8.0_25 or higher. This is now resolved.

Upgrade considerationAviation Standards

LCD-6624
The method copyExtraModelDescriptor from TLcdDAFIFModelDecoder was wrongly added to the public API and is now removed.

2015.0.05

ImprovementLuciadFusion

The OGC web service front-end now automatically detects the servlet location (protocol, host name and port), so that this information no longer needs to be hard-coded in the JSON service description files.

Bug fixLuciadFusion

LCD-6565
A Spatialite, GeoPackage or LVDB model skipped applyOnInteract2DBounds if the given bounds' width OR height were zero. This could cause missing elements that had zero width or height but still were in the same location. Now, it does a spatial query even when width and height are zero.

Bug fixDatabase Connectors

LCD-6565
A Informix Geodetic model skipped applyOnInteract2DBounds if the given bounds' width OR height were zero. This could cause missing elements that had zero width or height but still were in the same location. Now, it does a spatial query even when width and height are zero.

Bug fixDatabase Connectors

LCD-6565
An MSSQL model skipped applyOnInteract2DBounds if the given bounds' width OR height were zero. This could cause missing elements that had zero width or height but still were in the same location. Now, it does a spatial query even when width and height are zero.

Bug fixDatabase Connectors

LCD-6565
An Oracle model skipped applyOnInteract2DBounds if the given bounds' width OR height were zero. This could cause missing elements that had zero width or height but still were in the same location. Now, it does a spatial query even when width and height are zero.

Bug fixDatabase Connectors

LCD-6565
A DB2 model skipped applyOnInteract2DBounds if the given bounds' width OR height were zero. This could cause missing elements that had zero width or height but still were in the same location. Now, it does a spatial query even when width and height are zero.

Bug fixDatabase Connectors

LCD-6565
An Informix Spatial model skipped applyOnInteract2DBounds if the given bounds' width OR height were zero. This could cause missing elements that had zero width or height but still were in the same location. Now, it does a spatial query even when width and height are zero.

Bug fixDatabase Connectors

LCD-6565
A Postgis model skipped applyOnInteract2DBounds if the given bounds' width OR height were zero. This could cause missing elements that had zero width or height but still were in the same location. Now, it does a spatial query even when width and height are zero.

2015.0.04

ImprovementLuciadFusion

LCD-4728
TLspSelectController now supports rectangle selection in 3D.

ImprovementLuciadFusion

LCD-6539
TLcdImageBuilder now supports changing the metadata (for example bounds or reference) of an ALcdBasicImage.

ImprovementLuciadFusion

LCD-6315
ALcdScaleIndicator: it is now possible to change the height, width and colors of the scale indicator bar.

ImprovementAviation Standards

LCD-5949
The different DAFIF models exposes currently a model descriptor that implements the new interface ILcdDAFIFModelDescriptorSupport. Model descriptors have now the effective and expiration date of the decoded models. These dates come from the VERSION file that can be present next to the root of a DAFIF data set.

ImprovementAviation Standards

LCD-5948
The different models decoded by TLcdARINCDecoder exposes currently a model descriptor that implements the new interface ILcdARINCModelDescriptorSupport. Model descriptors have now the expiration date and the cycle date of the decoded models.

Bug fixLuciadFusion

LCD-6561
TLcdDatabaseModel.applyOnInteract2DBounds now stops when the function returns false.

Bug fixLuciadFusion

LCD-6557
Fixed combined gestures in TLspTouchNavigateController.

Bug fixLuciadFusion

LCD-6551
Improved the support for the SynthLookAndFeel.

Bug fixLuciadFusion

LCD-6323
Allow styling of editing handles in TLspRulerController. This is now possible by passing stylers to TLspRulerController.setHandleStyler and TLspRulerController.setFocusHandleStyler.

Bug fixLuciadFusion

LCD-6547
TLcdGeoTIFFModelDecoder: fixed unintended integer division rounding down to 0.

Bug fixLuciadFusion

LCD-6541
Raster layer did not refresh missing tiles in an ALcdImageMosaic when the geometry is a mosaic and there is a style or model changes that changes the geometry. As a result some tiles could be missing in the view in this case.

Bug fixAdvanced Raster Services

LCD-6540
The ECW decoder could not parse some UTM grid references in the southern hemisphere.

Bug fixDatabase Connectors

LCD-6561
TLcdDatabaseModel.applyOnInteract2DBounds now stops when the function returns false.

Bug fixRadar Connectors

LCD-6542
TLcdASTERIXCategory62: the "Mode 4 Age" field was decoded as 16 bits, it is now decoded as the correct 8 bits.

2015.0.03

ImprovementLuciadFusion

LCD-6502
Image projection layers now support TLspPaintedObjectsTouchQuery.

ImprovementLuciadFusion

LF-728
It is now possible to disable auto-detection of a Tile Store's .ctr file version by setting system property "-Dcom.luciad.fusion.tilestore.autoDetectCtrVersion=false". You should only consider this if you're sure your Tile Store was created with LuciadFusion version 2012.0 or newer. In case of 1000s of coverages, disabling this check may significantly reduce a server's startup time.

ImprovementLuciadFusion

LF-728
It is now possible to disable auto-detection of a TLfnFileSystemTileStore's .ctr file version by setting system property "-Dcom.luciad.fusion.tilestore.autoDetectCtrVersion=false". You should only consider this if you're sure your Tile Store was created with LuciadFusion version 2012.0 or newer. In case of 1000s of coverages, disabling this check may significantly reduce startup time.

ImprovementLuciadFusion

LCD-6489
TLspPointToPointSnapper now supports having certain types of objects snap to themselves. This allows you to (for instance) create a closed polyline during creation.

ImprovementData Connectivity Manager

LF-381
Text fields in the metadata editor such as coverage ID or asset location or now selectable so they can be copy-pasted.

ImprovementAdvanced Raster Services

LCD-6490
Added support for WD and WGC (WGS-72) datums.

ImprovementReal-time Engine

Radar video layers now support antialiasing of the video feed. This reduces "shimmering" artifacts when displaying high-frequency data while zoomed out. Antialiasing is disabled by default, but can be configured by a quality hint which was added to TLspRadarVideoStyle.

Bug fixLuciadFusion

LCD-6533
When using TLspOnPathLabelingAlgorithm in 3D for lines with height, the label orientation was unstable.

Bug fixLuciadFusion

Fixed a bug in icon painting where icons could stop rendering correctly if their corresponding texture was evicted from the view's GL resource cache.

Bug fixLuciadFusion

LF-727
Fixed a bug when using SLD styling to render a vector coverage as WMS layer that could cause an exception saying "The property ... is not a property of type ...".

Bug fixLuciadFusion

LCD-6493
Using TLspLonLatGridLayerBuilder or TLspMGRSGridLayerBuilder in combination with a TLcdGeodetic reference didn't work as expected.

Bug fixLuciadFusion

LCD-6492
Fixed a deadlock that could sometimes occur while creating shapes with TLspCreateController.

Bug fixLuciadFusion

LCD-6479
When using the default labeling algorithm for closed shapes (like polygons), labels could start fading in and out continuously.

Bug fixLuciadFusion

LCD-4286
TLcdEPSGReferenceFormatter could return SR-ORG codes instead of the expected EPSG code.

Bug fixLuciadFusion

LCD-6485
TLcdVVJPanel: cursor change events only contained the left point, not the right point.

Bug fixLuciadFusion

LCD-6526
Fixed an error when using a large lookup table (for example in TLcdColorConvertOp) with the OpenCL implementation of ALcdImagingEngine.

Bug fixReal-time Engine

LCD-6482
Plot layers did not clean up all their model listeners. As a result some of the layer's memory could not be released as long as you reference the plot model.

Bug fixReal-time Engine

LCD-5930
Plot layers did not query the stylers again after the model has changed.

2015.0.02

ImprovementLuciadFusion

LCD-2830
TLspCreateController, TLspTouchAndHoldActionController and TLspKeyActionController now check whether their delegation actions are enabled (ILcdAction.isEnabled) before invoking their actionPerformed() method.

Bug fixLuciadFusion

LCD-6482
Plot layers did not clean up all their model listeners. As a result some of the layer's memory could not be released as long as you reference the plot model.

Bug fixLuciadFusion

LCD-6403
Ruler controller no longer keeps measurements selected when creating a new one. This avoids confusion when styling measurements.

2015.0.01

ImprovementLuciadFusion

LMAP-4763, LCD-816
Fixed problem for KML files that contain NaN or infinity. These files can now be decoded with fallback coordinates.

ImprovementLuciadFusion

LCD-6404
The acme-1.0.jar library dependency in the WMS server has been removed. It was used in the past by TLcdGXYViewGIFEncoder and TLcdGXYViewSWFEncoder to support GIF map generation in the WMS when a Java version older than 1.6 was used; however, Java 1.7 is the minimum required version in v2015.

ImprovementLuciadFusion

LCD-2644
The default snapper in the edit and create controllers now also snaps to the centerpoint of an arcband.

ImprovementLuciadFusion

LCD-6240
Improved parsing of incorrectly formatted dates.

ImprovementLuciadFusion

A new utility method findWMSNamedLayer has been added to ALcdWMSProxy, which allows to find a WMS layer in the WMS capabilities by name.

ImprovementLuciadFusion

LCD-6355
TLcdOpenAction had a threading issue where dialogs could be shown in the worker thread, rather than the event dispatch thread.

ImprovementTerrain Analysis Engine

LCD-1838
Improved default tooltips of TLcdTerrainProfileController and TLcdTerrainRulerController.

ImprovementTerrain Analysis Engine

LCD-5285
Improved the behavior of TLspLOSCalculator with respect to native memory used by OpenCL. Native memory is now recycled instead of re-allocated for OpenCL parameters.

ImprovementTerrain Analysis Engine

LCD-6328
TLspLOSCalculator now checks for the case when the altitude provider returns NaN for the centerpoint of the LOS Coverage.

ImprovementAviation Standards

LCD-6469
For consistency, new model descriptors are added for the following DAFIF models:
  • ILSDME
  • Localizer
  • Glide Path
  • Marker
  • VFR Route
  • VFR Offset
  • Refueling track
  • Refueling Airspace

Bug fixLuciadFusion

LCD-6473
Fixed possible exception when setting a ColorModel that is not an IndexColorModel on a TLspRasterStyle.

Bug fixLuciadFusion

LCD-6470
Parsing SR-ORG codes using TLcdEPSGReferenceParser didn't work anymore.

Bug fixLuciadFusion

LCD-6468
TLcdGeoJsonModelDecoder#decode threw IllegalArgumentException instead of IOException when an exception occurred during decoding.

Bug fixLuciadFusion

LCD-5958
Painting labels in view-space (i.e. using a null model reference) now works as expected.

Bug fixLuciadFusion

LCD-6402
The WMS painters were not capable of coping with a set of requested WMS layers that did not share a common reference.

Bug fixLuciadFusion

LCD-6347
Fixed a NullPointerException which could happen when a custom ILcdModelEncoder implementation created and subsequently closed more than one OutputStream using a single given ILcdOutputStreamFactory.

Bug fixLuciadFusion

LCD-6234
Fixed issue with secure "https://" URL's linking to archived KMZ files. These are now correctly parsed as an archived file instead of a KML file.

Bug fixLuciadFusion

LCD-6239
Fixed an issue that would cause certain calls to handle styling to give the geometry of the handle as the object parameter for styling, instead of the handle itself.

Bug fixAdvanced Raster Services

LCD-6440
TLcdECWModelDecoder did not handle images with more than 3 bands. Such images can now be decoded correctly but only the first 3 bands are available.

Bug fixReal-time Engine

Radar video layers were made more robust in their handling of missing or out-of-order data records.

Bug fixTerrain Analysis Engine

LCD-3397
Fixed incorrect references in the Tea developer guide to point to correct samples.

Bug fixTerrain Analysis Engine

LCD-6326
Improved LOSLayerFactory.LOSModelEventMediator sample code to correctly handle model changes in the Lightspeed LOS sample.

Bug fixAviation Standards

LCD-4630
For ILcdRoute that contain one polyline only, TLcdGXYRoutePainter will set the anchor point to the middle of the polyline, which improves the pin location for labels.

Bug fixDefense Standards

LCD-4259
TLcdNITFModelDecoder can now decode JPEG data with padding bytes.

Bug fixInfrastructure Standards

LCD-6465
Added a workaround to fix font size and position when using symbol fonts.

Bug fixInfrastructure Standards

LCD-6464
Objects painted in color 0 (white / foreground color) are now inverted to black when the view's background color is near white. Note that TLcdDGNLevelSymbology.getColor and getFillColor now have an overloaded version that does this. Other overloaded versions are deprecated. Make sure to use the correct versions if you manually set colors.

Bug fixInfrastructure Standards

LCD-6463
Objects painted in color 255 (background color) are now painted using the view's background color instead of black.

Bug fixRadar Connectors

LCD-6322
TLcdASTERIXLiveDecoder is now more robust against ASTERIX category 240 records that arrive out of order.

Upgrade considerationDefense Symbology

LCD-6454
Some nested classes from TLcdNVG15/20-shapes were incorrectly public and are now private.

2015.0

ImprovementLuciadFusion

LCD-4326
Some editors can change their creation behavior to use free-hand drawing. The affected editors are:
  • TLsp2DPointListEditor
  • TLspShapeEditor
  • TLspSurfaceEditor
  • TLspCompositeCurveEditor
  • TLspGeoBufferEditor

ImprovementLuciadFusion

LCD-6311
The SQLite additional component no longer depends the public domain ForkJoin jsr166y-20130109.jar, since the ForkJoin framework is now part of Java since 1.7.

ImprovementLuciadFusion

An abstract wrapper class ALfnTileStoreWrapper was added to the API to facilitate the development of custom ALfnTileStore implementations that wrap another instance.

ImprovementLuciadFusion

To allow user data on any resource, the hierarchy of resource classes was now completed to mimic that of their metadata:
  • ALfnResource (new)
  • ALfnTheme (new)
  • ALfnAsset
  • ALfnCoverage
The user data API is primarily intended for internal use by replication.

The asynchronous APIs of the resources has been further developed to replace ILfnFailureHandler and its extensions with the more user-friendlyILfnCallback. In this respect, a new extension ILfnProgressCallback was added for long-running asynchronous tasks that report intermediate progress.

ImprovementLuciadFusion

TLcdEarthArrowIcon now doesn't paint an icon anymore when the STRENGTH_2D Parametrization is used and both parameters are 0.

ImprovementLuciadFusion

On Windows systems with NVidia GPUs, Lightspeed now automatically disables the "threaded optimization" setting in the NVidia drivers. This setting, when enabled, has been known to cause severe performance problems for LuciadLightspeed. To prevent Lightspeed from modifying the driver settings, set the system property com.luciad.view.opengl.binding.retainNVIDIAThreadedOptimizationsSetting.

ImprovementLuciadFusion

The JSP-based front-end delivered with the Data Server sample has been replaced by a new JavaScript-based front-end that gives access to the various services and example requests. This also removes the JSP dependency from the sample.

ImprovementLuciadFusion

LCD-1097
The JSP-based front-end delivered with the OGC web services sample has been replaced by a new JavaScript-based front-end that gives access to the various services and example requests. This removes the JSP dependency from the sample.

ImprovementLuciadFusion

LCD-1097, LCD-1103
The JSP-based front-end delivered with the OGC web services sample has been replaced by a new JavaScript-based front-end that gives access to the various services and example requests. This removes the JSP dependency from the sample.

ImprovementLuciadFusion

TLcdGXYImageIconPainter was added. This painter makes it possible to paint ALcdImage objects as a regular icon grid, using ILcdParameterizedIcon.

ImprovementLuciadFusion

An implementation of ILcdParameterizedIcon that displays numeric values was added, TLcdNumericParameterizedIcon.

ImprovementLuciadFusion

LCD-6202
Raster layers now also support explicit ordering for the elements in a single layer. You can configure this using TLspRasterStyle's Z-order property.

ImprovementLuciadFusion

LCD-6176
To support transaction requests containing data defined in a custom data format, it is now possible to register one or more data models via the constructor of TLcdWFSTransactionRequestHandler. A typical use case is the set up of an OGC WFS-T, capable of receiving AIXM 5 data.

ImprovementLuciadFusion

LCD-6173
The performance of TLcdAlbersEqualAreaConic was improved. The lonlatheight2worldOnEllipsoidSFCT() and world2LonLatOnEllipsoid() methods are now 20% to 40% faster on average.

ImprovementLuciadFusion

TLcdAdvancedMapRulerController and TLcdMapTouchRulerController now enable anti-aliasing when painting the measurements.

ImprovementLuciadFusion

TLcdAdvancedMapRulerController and TLcdMapTouchRulerController can now paint a halo around measurement lines. See the setHaloEnabled, setHaloThickness and setHaloColor methods.

ImprovementLuciadFusion

LCD-5465
TLspRulerController now has a setDisplayAzimuth(boolean) method that can be used to easily paint an azimuth label for every segment of the measurement. The ruler controller also paints an arrow in the middle of every line segment when the azimuths are displayed.

ImprovementLuciadFusion

LCD-5465
TLcdAdvancedMapRulerController and TLcdMapTouchRulerController now paint an arrow in the middle of every measurement line segment when setDisplayAzimuth(true) is called.

ImprovementLuciadFusion

LCD-6090
The performance of the contains2D and contains3D methods for geodetic and rhumb polygons has been improved.

ImprovementLuciadFusion

LuciadFusion now supports replication of tile stores. Given a target tile store, replication lets you define a source tile store to replicate data from. The main entry point is the classTLfnReplication. Replication allows you to:
  • Select which coverages or updates to replicate before initiating the actual replication.
  • Define an area of interest to limit the coverage size on the replica (only for tiled raster coverages). Tiles are filtered such that only those overlapping with the area of interest are replicated.
Replication has some interesting properties:
  • It is symmetrical, meaning that there is nothing which inherently defines a tile store to be source or target. Any tile store can be used as source or target at any given moment.
  • It replicates all resources: coverages, assets and themes. Replication operates on both a resource's metadata and data, but the data is only replicated as part of a coverage. This means that, for asset sources in tile store, the asset sources are replicated only if the asset is part of a coverage.
  • Resources are globally identified across tile stores based on the resource ID, which must be globally unique. Updates are detected based on the global update sequence of a resource, which has the semantics of a 'last modified' timestamp.

ImprovementLuciadFusion

LCD-5977
All ILcdGXYView implementations now support setting a different scale along the X and Y axes. This allows changing the aspect ratio of a view.

ImprovementLuciadFusion

TLcdGeorefFormat was added. This format can be used to parse Georef strings as point and vice versa.

ImprovementLuciadFusion

TLspSurfaceEditor can now return a create handle for surfaces that consist of a single exterior ring.

ImprovementLuciadFusion

LCD-4231
Raster layers now process some additional data outside of the view. This reduces the popping effect while panning or zooming. As a result you may experience a somewhat lower performance. You can configure the size of the border with additional raster data on TLspRasterLayer or TLspRasterLayerBuilder. To revert to the old behavior, for example, add TLspRasterLayerBuilder.borderFactor(0.0) or TLspRasterLayer.setBorderFactor(0.0).

ImprovementLuciadFusion

LCD-5837
TLspSurfaceEditor now delegates to more specific editors when a surface consists of only one exterior ring. This is now the case for composite curves, pointlists, arcbands, ellipses and circles.

ImprovementLuciadFusion

LCD-6027
Layers that become visible when you are flickering with TLspFlickerController are now painted immediately, without temporal visual artifacts due to asynchronous tile retrieval, for example. Such artifacts could occur after panning or zooming the map and toggling the visible layer index with the flicker controller.

ImprovementLuciadFusion

LCD-6027
Layer queries now correctly consider swiped and flickered layers. This means that, for example, querying the value of a raster in the swiped area will not return any results anymore.

ImprovementLuciadFusion

LCD-6075
TLcdGXYSetControllerAction and TLspSetControllerAction now automatically update the ILcdAction#SELECTED_KEY value based on whether their respective controllers are active or not. This is automatically picked up by Swing components such as JToggleButton.

ImprovementLuciadFusion

Georef grids can now be displayed in a Lightspeed view with the new TLspGeorefGridLayerBuilder. This is demonstrated in the grid sample.

ImprovementLuciadFusion

Added support for non-tiled painting of WMS data in a Lightspeed view. To enable this feature you must use the TLspWMSLayerBuilder. You can find an example in samples.wms.client.lightspeed.WMSLayerFactory.

ImprovementLuciadFusion

LCD-5924
TLcdFileOutputStreamFactory now accepts local file system URI destinations, which start with file://.

ImprovementLuciadFusion

TLcdGXYShapePainter now has a roundness setting. This setting allows controlling the roundness factor used to render corners of polygons or polylines.

ImprovementLuciadFusion

LCD-384
The new class TLcdSVGIcon allows visualizing SVG icons.

ImprovementLuciadFusion

The fusion of tile set formats has been optimized: if all conditions are met, input tile data is copied raw into the target coverage, without any overhead or image rendering. The conditions are:
  • The coverage must be a raster coverage.
  • The asset must be of a tile set format. A tile set format is a format that creates models with an ILcdTileSet as element. By definition, the tiling structure thus must be power-of-two.
  • The coverage must have exactly one asset with one asset part. For example a single WMTS layer.
  • The coverage's tiling structure must match that of the asset.
  • The coverage's tile format must match the native format class of the tile set.
  • The native format class
By default, a coverage will be automatically configured to meet these conditions if possible. There are two default tile set formats:
  • WMTS
  • Geospatial PDF
You can of course define your own tile set format, in which case you must take the above conditions into account.

ImprovementLuciadFusion

LCD-4139
Raster layers with layer type interactive now support style target providers. You can find all details in the documentation of TLspRasterLayerBuilder and TLspRasterLayer.

ImprovementLuciadFusion

The new package com.luciad.multidimensional describes multidimensional data, such as weather measurements for different heights and/or dates. The data modeling, data manipulation and transformation to LuciadLightspeed shapes or images is format-specific.

ImprovementLuciadFusion

A new data type annotation, TLcdHasGeometryAnnotation, allows specifying that an object's geometry is contained in one or more of its properties. This annotation is mainly used to model ILcdDataObject domain objects that do not extend from ALcdImage, see ALcdImage#fromDomainObject(). All API classes that support ALcdImage domain objects, such as TLcdGXYImagePainter, TLspRasterLayerBuilder, and TLcdGeoTIFFModelEncoder, now support these annotated domain objects as well.

ImprovementLuciadFusion

LuciadFusion now supports point-sampled elevation data. The point-sampled nature of the source data is preserved by default. It is possible to mix point-sampled and area-sampled source data in a point- or area-sampled coverage, in which case the source data will be converted (interpolated) if necessary.

ImprovementLuciadFusion

The notion of a sampling mode was added to raster coverages and assets.

ImprovementLuciadFusion

LCD-5823
Improved visual rendering quality of draped layers in cases where the terrain has high elevation.

ImprovementLuciadFusion

ALcdImage objects can now indicate whether their pixel data is of a point-sampled or area-sampled nature, using the new ELcdImageSamplingMode enumeration. The raster format decoders set the sampling mode correctly. It is also taken into account by TLcdImageHeightProvider. The "Working with images" chapter in the developer's guide provides more information.

ImprovementLuciadFusion

It is now possible to set a TLcdColorMap on TLspRasterStyle.

ImprovementLuciadFusion

ILcdLayerMeasureProviderFactory was added. This factory allows creating measure provider instances based on a layer. The TLcdGXYImageLayerMeasureProviderFactory implementation was also added. It can handle GXY layers that contain models with ALcdImage elements.

ImprovementLuciadFusion

TLspImageLayerMeasureProviderFactory was added. This layer measure provider factory can handle ILspLayer instances that contain models with ALcdImage elements.

ImprovementLuciadFusion

TLspRasterWorldTouchInfo now also contains the raw raster data and the band semantics (if available).

ImprovementLuciadFusion

ALcdImagingEngine#getImageDataReadOnly(..) method was added. This method is potentially more efficient than ALcdImagingEngine#getImageData(..), especially if no processing is necessary to produce the data.

ImprovementLuciadFusion

LuciadFusion now supports fusion of WMTS server data, which can be fused into raster coverages (rasterization).

ImprovementLuciadFusion

TLcdImageModelMeasureProviderFactory was added. This model measure provider factory makes it possible to create an ALcdMeasureProvider for models containing elements of the ALcdImage type.

ImprovementLuciadFusion

TLspViewMeasureProvider now avoids calling ILcdModelMeasureProviderFactory when possible. This improves the performance when using slow ILcdModelMeasureProviderFactory implementations or measure providers that perform caching.

ImprovementLuciadFusion

LCD-5710
Assets now also have a size in bytes and a corresponding statistic. When an asset has sources in Tile Store, its size will be non-zero.

ImprovementLuciadFusion

LCD-4687
ALspStyleCollector#style() and ALspStyleCollector#styles() now throw an exception when a null style is passed. This avoids an obscure NullPointerException being thrown later on in an other part of the code.

ImprovementData Connectivity Manager

LuciadFusion now supports replication of tile stores. Given a target tile store, replication lets you define a source tile store to replicate data from. To initiate replication, choose 'Replicate Tile Store' from a tile store's context menu to initiate replication.
  1. Select a source to replicate data from. The DCM will go in 'Replication mode', and resources eligible for replication be marked in the tile store tree.
  2. You can reject replication for individual resources by choosing 'Revert' from the resource's context menu. This will unmark them for replication.
  3. You can define an area of interest to limit the coverage size on the replica (only for tiled raster coverages). An area of interest is defined on a tile store, but you can tie them to a specific coverage by selecting the coverage and then select the area of interest from the drop-down box in the metadata editor.
  4. Click 'Commit' and 'Start jobs' to start replication.
  5. You can exit replication mode at any time by clicking 'Revert' at the bottom of the Tile Store Manager.
Replication has some interesting properties:
  • It is symmetrical, meaning that there is nothing which inherently defines a tile store to be source or target. Any tile store can be used as source or target at any given moment.
  • It replicates all resources: coverages, assets and themes. Replication operates on both a resource's metadata and data, but the data is only replicated as part of a coverage. This means that, for asset sources in tile store, the asset sources are replicated only if the asset is part of a coverage.
  • Resources are globally identified across tile stores based on the resource ID, which must be globally unique. Updates are detected based on the global update sequence of a resource, which has the semantics of a 'last modified' timestamp.

ImprovementData Connectivity Manager

LF-669
When closing the Data Connectivity Manager, it no longer asks to save your changed workspace. This is controlled by the 'saveWorkspaceOnExit' property in 'fusion_manager_workspace_addon.cfg'.

ImprovementData Connectivity Manager

The connect to tile store dialog now appears after the main window is shown.

ImprovementWeather & Environment Standards

TLcdGRIBArrowIcon now doesn't paint an icon anymore when the "U_V" type is used and both GRIB values are 0.

ImprovementWeather & Environment Standards

TLcdGRIBGXYPainterProvider/TLspGRIBLayerBuilder: improved the default GRIB raster coloring: the used colors are now less obtrusive and more consistent.

ImprovementWeather & Environment Standards

The NetCDF Industry Specific Component adds support for decoding NetCDF files and visualizing them in a Lightspeed view or in a GXY view. For more details, see:
  • The NetCDF Developer's Guide
  • TLcdNetCDFModelDecoder to decode NetCDF files containing rectilinear grids with equally-spaced coordinates. The decoder follows the Climate and Forecast conventions.
  • TLspNetCDFLayerBuilder to visualize NetCDF models in a Lightspeed view.
  • TLcdNetCDFGXYPainterProvider to visualize NetCDF models in a GXY view.
  • GXY and Lightspeed samples in the samples.decoder.netcdf package.

ImprovementAviation Standards

LCD-6148
Improved visualization of point based vertical structures in 3D views. They are now rendered as cylinders, whose dimensions are determined based on the vertical structures properties.

ImprovementDefense Standards

The NITF and ECRG decoders now support multiband imagery and arbitrary pixel depths. Full support is available via the imaging API, legacy rasters are limited to best-effort RGB or grayscale decoding.

ImprovementDefense Symbology

LCD-6294
When you create a symbol with a fix number of points, you don't have to double click to end the creation when all points are created.

ImprovementDefense Symbology

The new NVG Industry Specific Component introduces support for decoding and encoding NVG files, and for visualizing them in a Lightspeed view or in a GXY view. For more details, see:
  • The NVG Developer's Guide
  • TLcdNVGModelDecoder to decode NVG files 1.4, 1.5 and 2.0 files.
  • TLcdNVG15ModelEncoder and TLcdNVG20ModelEncoder to encode NVG 1.5 and 2.0 files.
  • TLspNVGLayerBuilder to visualize NVG models in a Lightspeed view.
  • TLcdNVGGXYPainterProvider to visualize NVG models in a GXY view.
  • GXY and Lightspeed samples in the samples.symbology.nvg package.

ImprovementMaritime Standards

LCD-6279
The ECDIS decoders now ignore missing cell files in a catalog, issuing only a warning instead of throwing exceptions. You can override this behavior using TLcdS57/S63UnifiedModelDecoder.setInvalidCellExceptionHandler.

ImprovementRadar Connectors

TLcdASTERIXModelDecoder can now decode ASTERIX Category 8. The category is modelled in the TLcdASTERIXCategory8 class. ASTERIX Category 8 concerns weather data. Weather data in ASTERIX is modeled by TLcdASTERIXWeatherPicture and TLcdASTERIXPrecipitationZone classes. TLcdASTERIXFinalModelEncoder can encode ASTERIX Category 8.

Bug fixLuciadFusion

LF-524
Coverages starting with a digit or the string "xml" or "XML" are now correctly escaped for use with WFS.

Bug fixLuciadFusion

LCD-6318
TLcdGXYNewController2 does not create anything if the layer is not editable.

Bug fixLuciadFusion

LCD-6317
TLspCreateController doesn't create any thing if the layer is not editable.

Bug fixLuciadFusion

LCD-6053
Clarified interpretation of tileWidth/tileHeight on ILcdRaster and updated the CADRG model decoder accordingly. Previously the last row or column of some CADRG rasters could incorrectly contain padding data.

Bug fixLuciadFusion

LCD-4125
The WCS proxy object TLcdWCSProxy no longer silenty discards exceptions in case no exception handler is configured.

Bug fixLuciadFusion

TLcdGXYSurfacePainter: previously, when TLcdGXYRoundedPointListPainter was used as a painter for external or internal polygonal surfaces, the first corner was not rounded.

Bug fixLuciadFusion

LCD-4703
Raster layers with layer type interactive now support model and style target changes without flickering in most cases. You can find all details in the documentation of TLspRasterLayerBuilder and TLspRasterLayer.

Bug fixLuciadFusion

LCD-5280
Clarified TLcdLonLatBuffer and TLcdLonLatHeightBuffer width and height properties:
  • Width is measured from axis to buffer edge, so the buffer has a total width of 2 * the buffer's width property.
  • Height is measured from the buffer's bottom to top, so the buffer's height property is the sum of the height from the axis to the top and the height from the axis to the bottom.

Bug fixLuciadFusion

LCD-5749
TLcdGXYViewFitAction#fitGXYLayer did not take the isFitToChildren property into account.

Bug fixLuciadFusion

LCD-4984
Calling TLspLabelBoxStyle.Builder#fillColor() or TLspLabelBoxStyle.Builder#frameColor() now enables fill or frames as expected.

Bug fixData Connectivity Manager

LF-688
There was a memory leak when fusing vector data, which caused the original model to be retained in memory even after it was deleted from the UI.

Bug fixAdvanced GIS Engine

LCD-6058, LCD-6059
Improved performance and accuracy of the constructive geometry operators.

Bug fixDefense Symbology

The orientation of the curve of the mine cluster symbol (2.X.3.1.5.7) was fixed.

Bug fixMaritime Standards

LCD-6350
Layers for S-57 or S-63 data in a Lightspeed view used a write lock instead of a read lock on the model when updating the view. This could cause delays or starvation of other tasks using the view's task executor threads.

Upgrade considerationLuciadFusion

ALfnTileStore now has a putTileStoreMetadata method which must be implemented by all of its extensions. The new method is called by the LuciadFusion framework in the context of replication. Wrapper or composite extensions may delegate this method.

Upgrade considerationLuciadFusion

LCD-5731
It is now possible to specify a content type for the response to a WFS DescribeFeatureType request by implementing the new method getContentType on the interfaceILcdWFSModelSchemaEncoder. In case you have a custom implementation of this interface, you must implement this new method. Typical implementations will return a constant MIME type, for example"text/xml".

Upgrade considerationLuciadFusion

Because of the OGC web service front-end improvement (LCD-1097), there is a change in 3rd party library dependencies for the OGC web service sample. Because this new front-end is now built using JavaScript instead of JSP, the following JSP-related libraries have been removed:
  • jspapi-2.2.jar
  • javax.servlet.jsp.jstl-1.2.1.jar
  • javax.servlet.jsp-2.2.2.jar
  • jdt-core-3.7.1.jar
  • el-api-2.2.jar
  • jstl-api-1.2.jar
Instead, a JavaScript library dependency has been added to support the front-end, namely AngularJS 1.3.10. More specifically, the following AngularJS modules have been added to build/ogc/resources/js:
  • angular
  • angular-route
  • angular-sanitize
Users that relied on the front-end need to update their build process to take the 3rd party library change into account.

Upgrade considerationLuciadFusion

Because of the Data Server sample front-end improvement, there is a change in 3rd party library dependencies for the Data Server sample. Because this new front-end is now built using JavaScript instead of JSP, the following JSP-related libraries have been removed:
  • jspapi-2.2
  • javax.servlet.jsp.jstl-1.2.1.jar
  • javax.servlet.jsp-2.2.2.jar
  • jdt-core-3.7.1.jar
  • el-api-2.2.jar
  • jstl-api-1.2.jar
Instead, a JavaScript library dependency has been added to support the front-end, namely AngularJS 1.3.10. More specifically, the following AngularJS modules have been added to build/fusion/resources/js:
  • angular
  • angular-route
  • angular-sanitize
Users that relied on the front-end need to update their build process to take the 3rd party library change into account.

Upgrade considerationLuciadFusion

LCD-6172
It is now possible to separately define output formats for GetFeature and DescribeFeatureType requests. To this end, the new methods ILcdWFSClientModelEncoderFactory.getSupportedSchemaOutputFormatCount and ILcdWFSClientModelEncoderFactory.getSupportedSchemaOutputFormat have been added, which define the supported output formats for the DescribeFeatureType request. The existing methods ILcdWFSClientModelEncoderFactory.getSupportedOutputFormatCount and ILcdWFSClientModelEncoderFactory.getSupportedOutputFormat now only define the supported output formats for the GetFeature request. Existing, custom implementations of ILcdWFSClientModelEncoderFactory can delegate to the default implementation available in TLcdWFSClientModelEncoderFactory.

Upgrade considerationLuciadFusion

LCD-5174
It is now possible to define supported output formats per feature type. To this end, a new method ILcdWFSFeatureType.getSupportedOutputFormats has been added, which returns the supported output formats as an object of type TLcdWFSOutputFormatList. The default implementation, TLcdWFSFeatureType, has been updated accordingly and has also received a setter for this new property. Existing, custom implementations of ILcdWFSFeatureType can implement the new method by returning null, indicating that the global list of output formats needs to be used; this corresponds to the past behavior.

Upgrade considerationLuciadFusion

The ILcdEarthParameterizedIcon interface was removed, and replaced by ILcdParameterizedIcon. On top of the already existing methods, this new interface also adds an anchorPointSFCT(double[], Point) method. All classes in LuciadLightspeed that previously implemented ILcdEarthParameterizedIcon now implement ILcdParameterizedIcon. This change may cause compile errors in the following cases:
  • Direct use of the ILcdEarthParameterizedIcon interface. Can be fixed by using ILcdParameterizedIcon instead.
  • Implementations of ILcdEarthParameterizedIcon that don't extend from ALcdEarthParameterizedIcon will need to implement the anchorPointSFCT method. Wrappers can just delegate to the delegate anchorPointSFCT method. Other classes can use a default implementation, see javadoc of anchorPointSFCT.

Upgrade considerationLuciadFusion

The signature of the user data operations on ALfnCoverage has changed: the result of the operation now uses a WriteResult or ReadResult rather than a Boolean to indicate its outcome. Method signatures need to be updated where necessary:
  • putUserData: the semantics of true and false have been replaced with Result.Code.PUT and CREATED respectively.
  • getUserData: the semantics of true and false have been replaced with Result.Code.FOUND and NOT_FOUND respectively.
  • deleteUserData: the semantics of true and false have been replaced with Result.Code.DELETED and NOT_FOUND respectively.

Upgrade considerationLuciadFusion

TLcdImageFactory was replaced by TLcdImageBuilder, TLcdImageMosaicBuilder, TLcdRasterImageBuilder and TLcdEarthImageBuilder. The factory methods on ALcdBandColorSemantics and ALcdBandMeasurementSemantics were also replaced by TLcdBandColorSemanticsBuilder and TLcdBandMeasurementSemanticsBuilder.

Upgrade considerationLuciadFusion

LCD-4786
The XML framework API in the com.luciad.format.xml and com.format.xml.schema packages has been deprecated in favor of the equivalent API offered by the XML binding framework (see com.luciad.format.xml.bind and com.format.xml.schema.bind).

Upgrade considerationLuciadFusion

The TLspRasterWorldTouchInfo#setColorValue(int, ColorModel) method was removed. The setRasterData(Raster) method should be used instead.

Upgrade considerationLuciadFusion

LCD-3909
It is now possible to define the content type (MIME type) of a custom outputFormat. To this end, the return type of method ILcdWFSClientModelEncoderFactory.createModelEncoder has changed from ILcdModelEncoder to a new type ILcdWFSModelEncoder. You need to update your implementations accordingly:
  • If the ILcdModelEncoder you used to return is an instance of a class under your control, just implement the new method getContentType.
  • If the ILcdModelEncoder you used to return is an instance of a class not under your control, you can wrap it using TLcdWFSModelEncoder and give it a content type. Using null as content type is allowed but not recommended: it means that the GetFeature response will not have a content type, which can result in ill-defined behavior on the client.

Upgrade considerationLuciadFusion

LCD-6103
To enable WMS request parameter access in the layer creation, the signature of the method ILcdWMSGXYLayerFactory#createGXYLayer(ILcdModel, ALcdWMSLayer, String) has been changed into #createGXYLayer(ILcdModel, ALcdWMSLayer, String, TLcdWMSRequestContext). TLcdWMSRequestContext gives access to the original request and a number of additional request-related parameters.

The change will impact WMS implementations that use an implementation of ILcdWMSGXYLayerFactory that does not extend from ALcdSLDWMSGXYLayerFactory. Affected implementations can simply update the signature of the createGXYLayer method and ignore the new parameter.

Upgrade considerationLuciadFusion

TLcdCADRGRaster no longer extends TLcdRaster. Instead it extends ALcdImageMosaic. To maintain existing functionality TLcdCADRGRaster now implements ILcdRaster.

Upgrade considerationLuciadFusion

ALcdGXYSmartController's default pan and zoom keyboard shortcuts have been simplified to the arrow keys and +/-, to prevent interference with application-specific keyboard shortcuts.

Upgrade considerationLuciadFusion

The minimum Java version to run LuciadLightspeed is now Java 7.

Upgrade considerationLuciadFusion

LCD-5281

Fixed an issue in TLcdLonLatHeightBuffer.contains3D(): it checked if points were within [0, +height] measured from the axis line, instead of the interval [-height/2, +height/2] around the axis line.

In addition, TLcdLonLatHeightBuffer's bounds used this interpretation, which caused the bounds to be shifted up incorrectly by height/2.

If you use TLcdLonLatHeightBuffer.contains3D or its bounds, please verify that your application can handle this change.

Upgrade considerationLuciadFusion

The jar file containing the LuciadFusion Server is now called lcd_fusion_server.jar. That makes the name consistent with the jar files from other Luciad products.

Upgrade considerationLuciadFusion

The jar file containing the LuciadFusion Engine is now called lcd_fusion_engine.jar. That makes the name consistent with the jar files from other Luciad products.

Upgrade considerationLuciadFusion

LCD-3516
The XSOM, Jaxen, and JDOM libraries have been updated to versions 20110809, 1.1.6, and 1.1.3, respectively.

Upgrade considerationData Connectivity Manager

The jar file containing the LuciadFusion Data Connectivity Manager is now called lcd_fusion_manager.jar. That makes the name consistent with the jar files from other Luciad products.

Upgrade considerationAdvanced Raster Services

The TLcdGeoSPOTRaster class now requires an ILcdModelReference in its constructor.

Upgrade considerationAdvanced Raster Services

TLcdGeoSPOTRaster no longer extends TLcdRaster, instead it extends ALcdImageMosaic. To maintain existing functionality TLcdGeoSPOTRaster now implements ILcdRaster.

2014.1

2014.1.09

Bug fixLuciadFusion

LCD-6263
It was previously not possible to only configure an SLD or SLD URL on ALcdWMSProxy to define the desired WMS layers; an explicit list of styled named layers was always required.

Bug fixLuciadFusion

LCD-6343
TLcdGeoTIFFModelDecoder no longer fails when the image contains Exif metadata.

Bug fixLuciadFusion

LCD-5697
TLcdRasterModelDecoder's canDecode method now correctly indicates that directories named 'rst' cannot be decoded.

Bug fixLuciadFusion

LCD-5532
TLcdGeoTIFFModelEncoder now truncates the output file when overwriting an existing file.

Bug fixLuciadFusion

LCD-5503
TLcdDTEDDirectoryModelDecoder can now also decode directories that are not named 'dted'.

2014.1.08

ImprovementLuciadFusion

LCD-6319
ALcdBalloonManager no longer replaces the balloon content if the content stays the same.

ImprovementLuciadFusion

LCD-6198, LCD-6200
Clarified the requirements for input/output stream factories of the GeoTIFF model decoder/encoder.

ImprovementMaritime Standards

LCD-6280

TLcdS57UnifiedModel decoder will now decoder Inland ENC data (catalogs and cells), returning a model with product type ELcdS57ProductType.IENC.

Warning: support for IENC isas-is, and is not compliant with the Inland ENC specifications. The data is decoded as if it were regular ENC. This means the data modeling does not include any Inland ENC specifics (object classes, attributes, ...). Also, the visualization will be based only on the S-52 specification (no specific Inland ENC symbology).

By default, the GXY and Lightspeed samples will not display the data using the correct symbology. However, you can manually create layers for IENC data using TLspS52LayerBuilder and TLcdS52ProductConfiguration.getInstance(IENC).createGXYLayerFactory.

ImprovementS-63

LCD-6301
The S-63 model decoders now support validating the running system using an "S-63 Customer System ID". See TLcdS63UnifiedModelDecoder.setS63CustomerSystemID(), TLcdS63ModelDecoder.setS63CustomerSystemID() or TLcdS63CatalogueModelDecoder.setS63CustomerSystemID().

Bug fixLuciadFusion

LCD-6314
Transforming bounds from a grid reference to a geodetic reference did not work well when using a (custom) projection with a small area.

Bug fixLuciadFusion

LCD-6340
Fixed a bug in the interpretation of the default SRS of the bbox of a KVP request: the default SRS is now CRS:84 with lon/lat axis order.

Bug fixLuciadFusion

LCD-6321
Fixed a bug in the interpretation of XML-encoded GetFeature requests containing multiple typeNames: now all intended typeNames are used rather than just the first one. Also, when the request contains no typeNames at all, all typeNames are used rather than an exception thrown. This brings the behavior of XML-encoded and KVP-encoded GetFeature requests in sync with each other.

Bug fixLuciadFusion

LCD-6324
Reduced the amount of undoables created by shapelist-based objects. This caused certain shapes to not be correctly undone.

Bug fixLuciadFusion

LCD-6296
The GeoTIFF decoder failed on images with proprietary tags that have an undefined data type. Such tags are now ignored instead.

Bug fixLuciadFusion

LCD-6316
TLspRasterLayer: raster data that needs to be transformed significantly could sometimes not be painted anymore. This was a regression introduced with the fix for LCD-5904.

Bug fixLuciadFusion

LCD-1206
The default ILcdModelReferenceDecoder used by the TLcdSHPModelDecoder now implements ILcdInputStreamFactoryCapable. This allows to configure an ILcdInputStreamFactory on both the SHP and reference decoder.

Bug fixAdvanced GIS Engine

LCD-6285
The ellipsoidal basic binary topology would throw a ClassCastException when using an ellipse and a circular arc.

2014.1.07

ImprovementReal-time Engine

LCD-6288
TLspRadarVideoStyle now allows configuring the afterglow duration either absolutely (as a duration in seconds) or relative to the radar's rotation speed (as a number of full 360 degree sweeps).

Bug fixLuciadFusion

LCD-6309
TLcdResizeOp could cause an error in the imaging engine when the scaled resolution is not exactly an integer. This could also cause errors when visualizing raster layers in a Lightspeed view with a high start resolution factor.

Bug fixLuciadFusion

LCD-3563
TLcdSHPModelEncoder no throws an IOException with a clear message that ILcdBounded model elements with undefined ILcdBounds cannot be exported.

Bug fixLuciadFusion

LCD-6308
The OpenCL imaging engine did not always handle band-select on color data correctly if the number of significant bits is less than the data type number of bits.

Bug fixLuciadFusion

LCD-5809
Fixed pixel artifacts when using image processing on Windows with NVidia hardware.

Bug fixLuciadFusion

LCD-6284
The linux native libraries used for decoding GeoPackage or SpatiaLite no longer depend on recent versions of GLIBC, only on 2.3.3.

Bug fixLuciadFusion

LCD-3218
Improved memory usage and lock contention when visualizing large LuciadFusion vector coverages.

Bug fixDatabase Connectors

LCD-6290
Updated the IBM DB2 JDBC driver to 9.5 build 3.64. The previous driver did not work with JDK 1.8.

Bug fixReal-time Engine

Fixed erroneous painting of radar video feeds when the blip afterglow time was set to zero.

Bug fixTerrain Analysis Engine

LCD-6292
Fixed an issue that would cause the UNKNOWN color of a LOS coverage to be invisible instead of the set color. This only applied to Lightspeed views when the LOS coverage was not draped.

Bug fixMaritime Standards

LCD-6298
TLcdS57DirectoryModelDecoder now filters files not only on .000 extension, but also on whether the cell decoder can decode the files. This is necessary for example for S-63 cell signature files, which also have .000 extension.

Bug fixMaritime Standards

LCD-6299
Fixed issue in exception handling of invalid cells in TLcdS57DirectoryModelDecoder. It passed the original source instead of the filename of the faulty cell.

2014.1.06

ImprovementLuciadFusion

LCD-6265
TLcdMIFModelReferenceParser now supports the EUREF 89 datum.

ImprovementLuciadFusion

LCD-6264
Implicitly created instances of TLinApacheHttpTransport are now automatically disposed when the corresponding Tile Store is closed. A new flag was added to the API when creating a TLfnLTSClient to indicate if the transport is owned by the LTS client. If it is, it will be disposed when the Tile Store is shut down. You can switch the flag off if you want to reuse a transport instance across multiple LTS clients, in which case you are responsible for disposing the transport yourself.

ImprovementAviation Standards

LCD-6283
TLcdProcedureGeometryCalculator has now different behaviors to calculate CF Legs. The current behaviors are :
  • Minimal Distance :the aircraft will use the shortest path to go onto the fix on the specified course.
  • Follow Course : the aircraft will get on the specified course at an early stage. This is the behavior by default.

Bug fixLuciadFusion

LCD-5982
Fixed a problem in the undo behavior of certain editors, where certain undo operations would get lost. This issue usually occured while editing multiple objects at once.

Bug fixLuciadFusion

LCD-6275
A TLcdGML2Box instance backed by a TLcdGML2Coordinates instance did not have the correct height and width.

Bug fixLuciadFusion

LCD-6274
TLcdTFWRasterModelDecoder: the model decoder always used the model reference from the first file it decoded. As a result the second and other files an instance decoded had an incorrect model reference.

Bug fixLuciadFusion

LCD-6273, LCD-6266
TLspGXYLayerAdapter: improved robustness, especially when switching between 2D and 3D.

Bug fixLuciadFusion

LCD-6267
The default outputFormat now correctly depends on the WFS version also for XML requests (HTTP POST).

Bug fixLuciadFusion

LCD-6254, LCD-6268
TLcdWFSRequestContext now contains the correct requested feature types when passed to ILcdWFSClientModelEncoderFactory implementations.

Bug fixLuciadFusion

LCD-6261
The GeoPackage and SpatiaLite decoders now support opening files with a Windows UNC path with forward slashes.

Upgrade considerationLuciadFusion

The recently added TLcdEllipsoidCircleUtil (LCD-6235) class was removed. Its methods are now available from the TLcdEllipsoidUtil class, see intersectionCircleCircle and calculateCircleTangentLine.

2014.1.05

ImprovementLuciadFusion

LCD-4000
MapInfo binary files can now be opened with the TLcdMapModelDecoder via a *.tab file.

Bug fixLuciadFusion

LCD-6089
When an OGC filter was included in the rule-element of a FeatureTypeStyle in an SLD file, the TLcdSLDFeatureTypeStylePainter#getCreationClickCount method would throw an IllegalStateException when creating a new object, and when that object did not satisfy the OGC filter. This is now no longer the case.

Bug fixLuciadFusion

LCD-5750
Improved robustness of raster layers in the context of the new image processing capabilities.

Bug fixLuciadFusion

LCD-6253
Icon selection did not properly deal with oriented points in combination with anchored icons.

Bug fixLuciadFusion

LCD-6249
Fixed an OpenGL state leak in TLspOpenFlightPainter.

Bug fixLuciadFusion

LCD-6246
The PropertyIsEqualTo OGC Filter evaluation now supports comparing a Double.NaN property with a NaN String literal.

Bug fixLuciadFusion

LCD-6241
TLspCompassNavigationControl/TLcdGXYCompassNavigationControl did not point correctly to the magnetic north.

Bug fixLuciadFusion

LF-678
Fixed a mismatch between asset data types and coverage data types. Previously, the mismatch could cause data fusion to fail with "No matching coverage data model for ...".

Bug fixLuciadFusion

LF-677
The creation of a raster engine for large datasets slowed down considerably. The performance of the engine creation is now again on par with previous releases.

Bug fixLuciadFusion

LF-670
The default formats MAP, MIF, Oracle Spatial, ArcSDE, GML now have anILcdSLDGXYLayerFactory.

Bug fixData Connectivity Manager

LF-676
Fixed a bug which could cause a failure when previewing coverages containing SHP assets and those assets did not overlap with the area of interest.

Bug fixData Connectivity Manager

LF-670
The preview layer now also applies SLD styling (if any) for MAP, MIF, Oracle Spatial, ArcSDE and GML.

2014.1.04

ImprovementLuciadFusion

LCD-6248
TLspRecenterProjectionController now also re-centers TLcdPolarStereographic projections.

Bug fixLuciadFusion

LCD-5686
The Earth painters honor the view's auto-update flag. This avoids issues when using such painters in an offscreen view.

Bug fixLuciadFusion

LCD-6216
TLcdBandSelectOp could re-interpret color bands when it was used for re-ordering. This has been fixed. The interpretation of what a color is, has also been clarified in the ALcdBandColorSemantics javadoc.

Bug fixAviation Standards

LCD-6247
When a leg transition is fly over onto an arc, TLcdProcedureGeometryCalculator tries to avoid unnecessary turns.

Bug fixRadar Connectors

TLcdASTERIXLiveDecoder has been made more robust in its handling of irregularities in category 240 data.

Bug fixRadar Connectors

LCD-6244
TLcdASTERIXLiveDecoder did not respect the mode for firing events when decoding ASTERIX category 240 data.

2014.1.03

ImprovementLuciadFusion

TLspMesh3DIcon now supports the use of an ILcdInputStreamFactory to load texture images.

ImprovementLuciadFusion

LCD-6235
TLcdEllipsoidCircleUtil was added. This class contains methods for topology calculations with circles on the ellipsoid.

Bug fixLuciadFusion

LCD-6217
Fixed possible exception using the band-select operator on an image backed by data with a BandedSampleModel.

Bug fixLuciadFusion

LCD-6213
TLcdGXYCircularArcPainter would not edit handles of arc-by-bulge instances whose bulge factor is 0.

Bug fixLuciadFusion

Icon visualization didn't work when using TLspRasterLayerBuilder for a model containing an ILcdEarthMultivaluedRasterTileSetCoverage with weather data and using a TLspParameterizedRasterIconStyle with the default spacing value of -1.

Bug fixLuciadFusion

LCD-6007
ALcdBalloonManager: improved the balloon layout logic. The manager now better respects the minimum, preferred and maximum balloon size, even after dragging it around.

Bug fixAdvanced Raster Services

LCD-4176
TLcdECWModelDecoder now also supports file names with non-ASCII characters.

Bug fixDefense Standards

LCD-6215
Fixed issue where the NITF decoder would try to cast multilevel rasters to regular rasters when building an image adapter.

2014.1.02

ImprovementLuciadFusion

LCD-6116
TLcdMIFModelReferenceParser now supports the European 1987 (ED 87) datum.

ImprovementLuciadFusion

LCD-6095
Improved responsetime of animations in KML files in a lightspeed view.

ImprovementLuciadFusion

LCD-6105
The WMS XML capabilities decoder now supports connecting with WMS servers that define dimensions containing both values and intervals, which is not allowed by the OGC WMS standard.

ImprovementLuciadFusion

LCD-5929
The OGC WCS web service previously available in build/wcs (containing the build script) and distrib/ogc/LuciadLightspeedWCS_x.x.x (containing a pre-built / ready-to-deploy service) has now been integrated in a combined OGC web service sample, consisting of a WMS, WFS and WCS; the folder build/ogc contains the build script and the folder distrib/ogc/LuciadLightspeedOGC_x.x.x contains a pre-built and ready-to-deploy service. To run the pre-built service, you can still use the script ogc.server.start (.bat/.sh) available in the samples folder, which will deploy the service in a Jetty servlet container.

ImprovementAviation Standards

LCD-5722
Improved default behavior for snapshot generation in TLcdAIXM51MessageUtil when creating snapshots for features that have a timesheet, without an explicit dayMatch parameter. This now matches any day to allow for more accurate snapshots.

Bug fixLuciadFusion

LCD-6062
Lighting of 3D meshes could be wrong in a Lightspeed view.

Bug fixLuciadFusion

LCD-6062
Shapes could be painted wrongly when using a TLcdAlbersEqualAreaConic projection.

Bug fixLuciadFusion

LCD-6112
Transparent texture pixels could turn up all black when visualizing textured meshes in a Lightspeed view.

Bug fixLuciadFusion

LCD-6188
GetFeatureWithLock now always locks all features and no longer requires the lockAction parameter, as prescribed by the WFS specification.

Bug fixLuciadFusion

LCD-6182
GetFeature, GetFeatureWithLock and LockFeature operations now also behave correctly when both featureId and typeName parameters are given.

Bug fixLuciadFusion

LCD-6181
TLcdGeoTIFFModelDecoder: not all files were closed after disposing the model's elements.

Bug fixLuciadFusion

LCD-6167
Fixed visualization of signed 16-bit data using the TLcdWarpRasterPainter with a non-indexed color model configured. In practice this only happens when retrieving such data through a WCS server.

Bug fixLuciadFusion

LCD-6169
A bug was fixed which caused the coverage size of a Tile Store to be reported incorrectly in some situations. You were affected if both these conditions apply:
  • you have multiple TLfnFileSystemTileStores using a shared ALfnEnvironment
  • you use the same coverage IDs in multiple of these Tile Stores

Bug fixLuciadFusion

LCD-6168
The WCS server introduced small gaps in raster data responses in case of an elevation coverage backed by multiple elevation rasters and in combination with a need to transform the requested data to a destination reference.

Bug fixLuciadFusion

LCD-6155
The OpenCL imaging engine did not handle non-color pixel-packed image data correctly.

Bug fixLuciadFusion

LCD-6154
TLcdVVJPanel triggered an ArrayIndexOutOfBoundsException when using a vertical view model with only one point.

Bug fixLuciadFusion

LCD-6141
The WMS painter TLcdGXYTiledWMSProxyPainter could not cope with WMS layers that define scale denominators close to 0 or to infinity.

Bug fixLuciadFusion

LCD-4612
The display name parameter of the constructors of TLcdCGMModelDescriptor was used as the type name.

Bug fixLuciadFusion

LCD-6153
Querying resources matching given metadata properties now also works for non-tiled coverages. This fixes a java.lang.UnsupportedOperationException: Unsupported XPath axis : ATTRIBUTE.

Bug fixLuciadFusion

LCD-6118
The WMS painter TLcdWMSProxyGXYPainter no longer throws a NullPointerException in case of empty / unrecognized map content sent back by the server.

Bug fixLuciadFusion

LCD-6107
ALcdGXYNewControllerModel2/TLcdGXYEditControllerModel2 no longer fire model change events while holding a model write lock. This avoids certain deadlocks.

Bug fixLuciadFusion

LCD-6063
When using TLcdLambertAzimuthalEqualArea with origin at one of the poles, transformations could produce incorrect results for points near the opposite pole.

Bug fixAviation Standards

LCD-6133
When decoding a ARINC record provoke exception, the level of logging is reduced from error to warning.

Bug fixInfrastructure Standards

LCD-6163
Fixed an issue when painting text elements with empty text.

2014.1.01

ImprovementLuciadFusion

LCD-6055
TLspLabelPainter now supports multiple TLspLabelBoxStyle instances to create multiple borders around a label.

ImprovementLuciadFusion

LCD-5992
TLspImageProjectionStyle now allows setting the opacity of the projected image.

ImprovementLuciadFusion

TLcdGeorefUtil can now handle 3 or 4 decimals. This makes it possible do define grid squares with a 0.001 minute or 0.0001 minute precision.

ImprovementAviation Standards

LCD-5182
TLcdARINCLocalizerGlideSlopeHandler will not add a glide path to an ILS during decoding if the ILS category indicates that there is no glide path or if the glide path does not have a valid latitude and longitude.

Bug fixLuciadFusion

TLcdGeorefUtil#lonLat2Georef returned an incorrect georef string when passing a latitude of exactly 90 degrees.

Bug fixLuciadFusion

LCD-6102
A number of model decoders created ALcdImageMosaic's with an inaccurate value for the pixelSizeY property. As a result the TLcdGXYImagePainter and the raster layers in a Lightspeed view could select a suboptimal level. The affected formats are WMTS, BingMaps, GeoPackage, LVDB and GeoSpatialPDF.

Bug fixLuciadFusion

TLcdGeorefUtil#lonLat2Georef now throws an IllegalArgumentException when the given latitude lies outside the [-90, 90] degrees range instead of returning an incorrect georef String.

Bug fixLuciadFusion

LCD-6096
The WFS server now correctly excludes the 'Lock', 'Insert', 'Delete' and 'Update' operations from the capabilities when locking and/or transactions are disabled.

Bug fixLuciadFusion

TLspShapeDiscretizer: possible discretization artifacts when discretizing an ILcdSurface composed of non-polygon rings.

Bug fixLuciadFusion

TLcdCompositeCurve#computePointSFCT could return an incorrect point when its length is 0.

Bug fixLuciadFusion

LCD-6083
TLspZoomByRectangleController and fit actions now retain the aspect ratio of 2D Lightspeed views.

Bug fixLuciadFusion

LCD-5972
Fixed a bug that caused TLcdGeoTIFFModelDecoder to throw an exception when the level count was set on the decoder.

Bug fixLuciadFusion

LCD-6078
When transforming a point to/from a topocentric reference with a geoid geodetic datum, the result point had an incorrect height.

Bug fixLuciadFusion

LCD-5274
TLcdGXYTextPainter has a new option "setFitTextInArea", off by default. With this option enabled, the text painter will stretch the displayed text to fit the area defined by the ILcdText object: character width x text length by character height x number of lines.

Bug fixLuciadFusion

LCD-6008
Touch queries (e.g. when selecting an object) on objects with a TLspIconStyle now correctly consider the orientation of the icon.

Bug fixLuciadFusion

LCD-6016
Fixed a performance bottleneck in the painting of TLsp3DIconStyles.

Bug fixLuciadFusion

LCD-5284
TLspRasterLayer: fixed the default styling for multi-valued Earth layers with layer type interactive

Bug fixLuciadFusion

LCD-5993
TLcdGeorefUtil now uses truncating to determine the minute square coordinates instead of rounding.

Bug fixDefense Standards

LCD-6091
The ECRG model decoder always estimated the raster pixel density based on the first tile, even if that tile was empty. The first non-empty tile is now used.

Bug fixInfrastructure Standards

LCD-832
DGN text elements are now displayed to fit into the area defined by the text object. The TLcdDGNText2D elements are now also always center aligned, so their position corresponds better to MicroStation.

Bug fixRadar Connectors

Fixed the thread safety of the ASTERIX models. Some operations were not thread-safe since version 2014.1.

2014.1

ImprovementLuciadFusion

TLcdImageHeightProvider now checks that the height value is in a valid range, similar to TLcdRasterHeightProvider. The range can be configured using the new constructors or using the keys in ALcdRasterModelHeightProviderFactory when using a TLcdImageHeightProviderFactory. The default range is [-12000,10000].

ImprovementLuciadFusion

Fusion of Geospatial PDF benefits from the upgrade to IcePDF 5.1.1 in its dependencies:
  • Handling of Geospatial PDF files with a suboptimal internal tiling structure is now more robust. This fixes OutOfMemoryErrors which could happen when fusing some of these files.
  • Improved rendering of Geospatial PDF input data results in better looking fused coverages.

ImprovementLuciadFusion

You can now visually compare multiple layer sets by swiping or flickering using TLspSwipeController and TLspFlickerController. Swiping is done by dragging a swipe line horizontally or vertically, hiding the right/bottom part of the first layer set and the left/top part of the other layer set. Flickering is done by (quickly) clicking the mouse button and toggling visibility of two or more layer sets. You can customize these controllers or use them to implement actions that swipe or flicker programmatically. These visual change detection tools work with any layer or painter, in 2D and 3D. As an illustration, you can enable the swipe or flicker controller from the lightspeed.imaging.multispectral sample.

ImprovementAdvanced GIS Engine

LCD-5997
Improved the performance of the union operator when computing the union of many shapes with one of the ILcdConstructiveGeometry implementations.

ImprovementAdvanced Raster Services

LCD-3329, LCD-5426, LCD-5876
Reduced memory usage and improved rendering speed of Geospatial PDF models.

ImprovementReal-time Engine

The new package com.luciad.realtime.lightspeed.radarvideo provides support for the visualization of radar video feeds, e.g. from ASTERIX category 240 data. The main API entry point is TLspRadarVideoLayerBuilder. The package samples.decoder.asterix.lightspeed.radarvideo demonstrates the new functionality.

ImprovementRadar Connectors

ASTERIX category 240 radar video is now supported by TLcdASTERIXLiveDecoder. More information on how to visualize category 240 radar video can be found in the developer guide in the section 'Decoding category 240 radar video'. The 'Visualization of ASTERIX cat 240 radar video' sample illustrates how to visualize the radar video data.

Bug fixLuciadFusion

LCD-6004
Improved performance for density painting when using many different point styles.

Bug fixLuciadFusion

LCD-6002
Fixed possible exception when there are model changes on a non-paint thread. The regression was introduced in the fix for LCD-5158.

Bug fixLuciadFusion

LCD-5910
Navigation with the mouse in a 3D grid reference did not work correctly in the absence of 3D terrain.

Bug fixLuciadFusion

LCD-5985
TLcdEarthGXYRasterPainter: fixed possible infinite loop when using incremental visualization (enabled by default) and there is a lot of memory pressure. As a result the you may get higher memory use when there are a lot of Earth tile sets in a GXY view. You can get the old behavior by invoking TLcdEarthGXYRasterPainter.releaseHardReferencedCache after each paint.

Bug fixLuciadFusion

LF-660
Removed a broken link to the Earth Developer's Guide. The Earth Developer's Guide has been merged into the LuciadLightspeed Developer's Guide.

Bug fixData Connectivity Manager

LF-662
Fixed a bug which could cause an IndexOutOfBoundsException when selecting a job in the job manager panel.

Bug fixAdvanced Raster Services

Geospatial PDFs containing multiple map frames are now displayed correctly in the decoder sample.

Upgrade considerationLuciadFusion

LuciadLightspeed no longer includes ProGuard. It used to be included to demonstrate various deployment scenarios. Those samples are still available, but you now have to download ProGuard separately from its website. The downloaded proguard.jar should be placed in the build/proguard directory.

Upgrade considerationLuciadFusion

LCD-5946, LCD-4201
To enable WMS request parameter access in the data backend, the signature of the method ILcdModelProvider#getModel(String) and its extension ALcdMultiDimensionalModelProvider#getModel(String) have been changed into #getModel(String, ALcdRequestContext). ALcdRequestContext is a new class giving access to the original request; in the WMS, this class is implemented by TLcdWMSRequestContext, which adds a number of additional request-related parameters.

The change will impact WMS implementations that use a custom implementation of ILcdModelProvider or ALcdMultiDimensionalModelProvider. Affected implementations can simply update the signature of the getModel method and ignore the new parameter.

Upgrade considerationLuciadFusion

LCD-5946
To enable WFS request parameter access in the data backend, the signature of the method ILcdOGCModelProvider#getModel(String) has been changed into ILcdOGCModelProvider#getModel(String, ALcdRequestContext). ALcdRequestContext is a new class giving access to the original request; in the WFS, this class is implemented by TLcdWFSRequestContext, which adds a number of additional request-related parameters.

The change will impact WFS implementations that use a custom implementation of ILcdOGCModelProvider. Affected implementations can simply update the signature of the getModel method and ignore the new parameter.

Upgrade considerationLuciadFusion

LCD-5422
Two constructors have been removed from com.luciad.wms.sld.model.ALcdSLDLayer.
  • ALcdSLDLayer()
  • ALcdSLDLayer(String aName, ALcdSLDLayerStyle[] aSLDLayerStyles, TLcdSLDLayerFeatureConstraints aLayerFeatureConstraints)
These constructors threw IllegalArgumentExceptions. They were also semantically incorrect in that they allowed the construction of an SLD-layer without having to specify its DataType.

Upgrade considerationLuciadFusion

ALcdImage now uses an ILcdModelReference instead of ILcdGeoReference. Therefore, ALcdImage#getGeoreference() is replaced with ALcdImage#getImageReference() and it now returns an ILcdModelReference. This allows the use of non-geo-referenced images.

Upgrade considerationAdvanced Raster Services

When decoding a Geospatial PDF containing multiple map frames, the returned model no longer has an instance of TLcdGeospatialPDFModelDescriptor as model descriptor. Instead a TLcdModelDescriptor instance is used with TLcdGeospatialPDFModelDescriptor.TYPE_NAME as type name property.

Upgrade considerationAdvanced Raster Services

Updated icePDF to version 5.1.1. Note that the icePDF license has changed from the Mozilla Public License v1.1 to the Apache Software License v2.0.

2014.0

2014.0.17

ImprovementLuciadFusion

LCD-5994
The WCS server now supports the reprojection of requested data via the RESPONSE_CRS request parameter.

ImprovementLuciadFusion

LCD-5852
The magnetic north data files for WMM and IGRF have been updated to cover the period 2005-2020.

ImprovementLuciadFusion

LCD-5980
TLfnTileStoreModelDecoder: added constructor check for null ALfnTileStoreProvider and improved javadoc on the semantics of passing a TLfnClientFactory which is null.

Bug fixLuciadFusion

LCD-5988
It is now possible to set up a WMS with 0 layers, which can be useful for dynamic services that receive their content at runtime. Previously, this configuration resulted in an Exception when requesting the capabilities.

Bug fixLuciadFusion

LCD-5987
Corrected case where the color bands of certain TIFF images were swapped causing incorrect rendering.

Bug fixLuciadFusion

LCD-5981
Correctly decode GeoTIFF images that use a geographic coordinate system encoded as a projected coordinate system.

Bug fixLuciadFusion

Corrected tile coordinates and gpkg_tile_matrix metadata when exporting a cropped version of tile data set.

Bug fixDatabase Connectors

LCD-6000
The PostGIS decoder now detects data extents using ST_EXTENT instead of ST_ESTIMATED_EXTENT. You can override this using the "bounds" property in the .pgs properties file.

Bug fixDatabase Connectors

LCD-5983
The PostGIS models had wrong bounds for GEOGRAPHY data on some servers, because ST_ESTIMATED_EXTENT produces unreliable extents. Now, GEOGRAPHY data always has world bounds. You can still specify more specific extents using the "bounds" property in the .pgs properties file.

Bug fixDatabase Connectors

LCD-5976
The PostGIS decoder now handles tables in non-public schemas properly. In the .pgs properties file you can set "table = MYSCHEMA.MYTABLE".

Upgrade considerationLuciadFusion

Updated the version of the jai_imageio library, to be able to fix issue LCD-5987.

2014.0.15

ImprovementLuciadFusion

LCD-5967
ALcdImage painting: improved default mapping to gray-scale for non-color data.

Bug fixLuciadFusion

LCD-5974
Fixed artifacts when using a BufferedImage with padding as data for an OpenGL texture.

Bug fixLuciadFusion

LCD-5975
Reduce memory usage of TLcdBufferedTile and TLcdConcurrentBuffer.

Bug fixLuciadFusion

LCD-5962
In some cases, TLcdServiceLoader could trigger a comparison exception.

2014.0.14

Bug fixLuciadFusion

LCD-5960
Possible NullPointerExceptions in TLspLabelPainter when switching projections.

Bug fixLuciadFusion

LCD-5961
TLsp2DImageTextureObject: equality is now identity-based. This for example solves problems when putting such objects in the ILspGLResourceCache.

Bug fixAdvanced GIS Engine

LCD-5915
The line intersection methods from TLcdEllipsoidalBasicBinaryTopology and TLcdSphericalBasicBinaryTopology could sometimes return the wrong result when computing the intersection between rhumb polylines and polygons on the one hand, and circles, ellipses, buffers, arc bands, on the other hand. This has been fixed.

2014.0.13

ImprovementLuciadFusion

LCD-5952
TLspRulerController can now also paint non-draped lines when using a custom line styler.

ImprovementLuciadFusion

LCD-5943
Improved the exception reporting in case of a missing 'service' parameter in the request.

ImprovementLuciadFusion

LCD-5931
It is now possible to change the TLspRulerController's labeling algorithm by wrapping the TLspRulerLabelStyler's style collector.

ImprovementLuciadFusion

LCD-5936
TLspRulerController now allows configuring a line and label styler for different paint states. This can be useful when the measurements layer is used by another controller.

Bug fixLuciadFusion

LCD-5769
Raster layer query sometimes did return a touched point when querying at the boundary between tiles.

Bug fixLuciadFusion

LCD-4266
TLcdInputStreamFactory did not handle percent-encoded URIs correctly.

Bug fixLuciadFusion

LCD-5904
TLspRasterLayer: rasters whose model reference flips the image upside-down were not painted. In practice this could happen in some cases when using an ILcdRasterReferencer to construct the model reference.

Bug fixLuciadFusion

LCD-5930
Plot layers did not query the stylers again after the model has changed.

Bug fixAdvanced Raster Services

LCD-5937
The ECW decoder did not support some of the newer ECW references (for example ETRS89).

Bug fixDatabase Connectors

LCD-5942
The MSSQL decoder didn't use the correct spatial column name when trying to detect the SRID if none was specified.

Bug fixDefense Symbology

LCD-5926
Fixed exception when painting some APP6 or MS2525 symbols using a custom circle or arc band geometry.

Bug fixDefense Symbology

LCD-5917
TLcdEditableAPP6AObject and TLcdEditableMS2525bObject did not initialize the symbology standard property correctly when the provided object was not an instance of one of those classes.

Bug fixMaritime Standards

LCD-5916
Fixed an issue when loading certain S-57 cells with updates. In some cases, the CATLIT attribute of LIGHTS objects was not a parseable number. This caused errors while painting the data.

Bug fixRadar Connectors

LCD-5909
TLcdASTERIXCategory21: the 'Track Angle' property of the 'Airborne Ground Vector' of a track is now used as the orientation of the TLcdASTERIXTrack.

2014.0.12

ImprovementLuciadFusion

LCD-5891
TLcdVVWithControllersJPanel now exposes all its controllers.

ImprovementLuciadFusion

LF-657
WMS GetFeatureInfo is now supported by default for vector coverages.

Bug fixLuciadFusion

LCD-5906
Fixed a bug that could cause TLcdGXYImagePainter to display the color bands of an ALcdImageMosaic in the wrong order.

Bug fixLuciadFusion

LCD-5902
TLcdGXYAsynchronousLayerWrapper: in some cases, getGXYPainter or getGXYEditor would return an instance whose object was not the one configured by the painter provider or editor provider.

Bug fixLuciadFusion

TLcdGXYLabelingPathProvider did not return paths for ILcdGeoBuffer objects.

Bug fixLuciadFusion

LCD-5892
The mapped tie points returned by TLcdProjectiveRasterReferencer and TLcdRationalRasterReferencer contained flipped y coordinates. This could for example cause TLcdResidualErrorCheckingRasterReferencer to calculate in incorrect error value.

Bug fixLuciadFusion

LCD-5889
Input streams created by TLcdWMMMagneticNorthMap are now properly closed.

Bug fixLuciadFusion

LCD-5888
Fixed exception when decoding multilevel data with the TLcdRasterModelDecoder.

Bug fixLuciadFusion

LCD-5884
TLcdVVJPanel: when trying to drag points of non-editable models, the panel would still try to edit the model in some cases.

Bug fixRadar Connectors

LCD-5898
TLcdASTERIXLiveDecoder no longer deadlocks if the input stream passed to decodeBlockSFCT is a PipedInputStream with a limited buffer size.

2014.0.11

ImprovementLuciadFusion

LCD-5791
Improved the editing state listener of a layer when multiple objects are being edited by the TLspEditController. It now throws less events. The events that are no longer thrown were redundant.

ImprovementLuciadFusion

LCD-5859
TLspRulerController now also works in non-georeferenced views, provided that its measure mode is Cartesian.

ImprovementLuciadFusion

LCD-5856
The compass navigation control now also works in non-georeferenced views.

ImprovementMaritime Standards

LCD-5865
The ECDIS decoder sample now allows filtering on object classes, for all S-57 product types (currently ENC and AML). The relevant changes are in S52DisplaySettingsCustomizer.

Bug fixLuciadFusion

LCD-5886
TLspRasterLayer: raster layer query did not return correct results in some cases while panning the view.

Bug fixLuciadFusion

LCD-5885
Due to a regression, the WCS server did no longer accept "Image" and "Engineering" as CRS in a request, making it impossible to serve non-georeferenced content.

Bug fixLuciadFusion

LCD-5870
A memory leak in TLcdGXYInteractiveLabelsController was fixed. This memory leak occurred when dereferencing a view with a TLcdGXYInteractiveLabelsController as controller.

Bug fixLuciadFusion

LCD-5863
Fixed exception when creating an ALcdBasicImage from a RenderedImage that uses a 32-bit integer for each band.

Bug fixDatabase Connectors

LCD-5861
TLcdHanaModelDescriptor can now handle table names with a colon (:) character. In the data type name, the colon will be replaced by an underscore (_) character.

Bug fixDefense Standards

LCD-5842
The ECRG model decoder required the root EPF directory to be part of the frame paths in TOC.xml. This is not required anymore, but still accepted.

2014.0.10

Bug fixLuciadFusion

Calling TLcdGXYViewMeasureProvider#setRetrieveTopMostMeasures(false) did not have any effect.

Bug fixLuciadFusion

LCD-5661
Lightspeed views now detect when they are enlarged beyond the viewport size limits of the underlying OpenGL implementation. If this is the case, rather than allowing errors to propagate, the view will log a one-off warning, and will simply not repaint itself.

Bug fixDefense Symbology

Fixed exception when painting some APP6 symbols with custom geometry.

2014.0.09

Bug fixLuciadFusion

LCD-5840
TLspLabelPainter painted labels at the incorrect height in 3D when using a TLspViewDisplacementStyle and disabling the terrain layer.

Bug fixLuciadFusion

LCD-5839
TLcdImageModelHeightProviderFactory: the factory did not accept models that contain objects implementing ALcdImage but one of the legacy interface (e.g. ILcdRaster or ILcdMultilevelRaster).

Bug fixLuciadFusion

LCD-5838
TLspTouchCreateController logged unnecessary warnings when using multiple fingers.

Bug fixLuciadFusion

LCD-5398
Screenshots of a Lightspeed view taken using the getImage() method now properly respect the transparency of the view's background color.

Bug fixLuciadFusion

LCD-5830
ALfnCoverageMetadata.Builder: fixed a NullPointerException when adding assets without asset parts to a coverage.

Bug fixLuciadFusion

LCD-5416
In some cases, visualization of a TLcdXYArc was wrong after editing its start point.

Bug fixWeather & Environment Standards

LCD-5831
Prevent the decoder from marking GRIB bulletins with WMO headers as corrupt when bulletin support is turned off. The decoder will now correctly decode the first message in non-bulletin mode.

Bug fixWeather & Environment Standards

LCD-5828
Fixed decoding of GRIB bulletins containing custom message headers. The decoder will now look for recognizable patterns and otherwise ignore the header instead of assuming a fixed format.

2014.0.08

ImprovementLuciadFusion

LCD-5286
TLcdLonLatHeightBuffer now handles buffers with zero width or height properly.

Bug fixLuciadFusion

LCD-5827
TLcdEPSGReferenceParser#parseProjection() returned projections with incorrect parameter values. This problem could also cause some geotiff files to be painted at an incorrect location. This was a regression since the 2014.0 release.

Bug fixLuciadFusion

LCD-5825
Fixed possible exceptions when using path-based labeling algorithms like TLspOnPathLabelingAlgorithm or TLspCurvedPathLabelingAlgorithm.

Bug fixLuciadFusion

LCD-5761
Plot layers (created by TLspPlotLayerBuilder) now check for misusage of the ALspStyleCollector in a styler. In particular, you can expect an error if you forget to call submit() or objects().

Bug fixLuciadFusion

LCD-5821
The create handle of a TLsp2DPointListEditor now takes into account existing point list geometry. It will start creation from the last point, instead of assuming that the point-list is uninitialized.

Bug fixLuciadFusion

LCD-5519
ALcdImagingEngine: fixed possible race condition that could cause an imaging engine to get stuck when disposing of it.

Bug fixLuciadFusion

LCD-5780
TLspRasterLayer: fixed performance regression when painting some raster data in a Lightspeed view.

Bug fixTerrain Analysis Engine

LCD-5818
The dispose method of TLspLOSCalculator now also destroys the OpenCL context it is attached to (if any).

Bug fixDefense Symbology

LCD-5829
The width of military symbols with an ILcdGeoBuffer as custom geometry was not correct.

Bug fixInfrastructure Standards

LCD-5797
The DGN native libraries now depends on glibc 2.11 instead of 2.14.

Bug fixInfrastructure Standards

LCD-832
Text 3D elements didn't take font into account.

Bug fixMaritime Standards

LCD-5376
TLcdS57SoundingPoint objects now have height (Z) zero. Before, they had the sounding value as height, indicating a position in the air above the sea. If you need to get the sea depth, use getSoundingValue() instead of getZ().

Bug fixS-63

LCD-5808, LCD-10166
The S-63 decoder could fail with a cipher error when using JDK 1.7.0_71 or 1.8.0_25 or higher. This is now resolved.

Bug fixS-63

LCD-5796
Manually configured S-63 permits are now correctly excluded from the ISO-19139 metadata.

Upgrade considerationLuciadFusion

LCD-5790
On some systems with NVidia GPUs, the "threaded optimization" setting in the NVidia Control Panel can cause serious performance problems with Lightspeed views when set to "auto" or "on". If you experience severely reduced performance, please switch this setting to "off" (it can be found under "Manage 3D settings"). Note that the view will log a warning to this effect if it detects abnormally low repaint rates. The warning can be suppressed, if desired, by adding the system property -Dcom.luciad.view.lightspeed.threadedOptimizationWarning=false to your JVM command line.

2014.0.07

ImprovementLuciadFusion

LCD-5743
TLcdWMTSModelDecoder supports decoding of tile matrix sets with dimensions larger than 360x180 degrees.

ImprovementLuciadFusion

LCD-5813
You can now continue creation for a pointlist that already exists by using the TLspCreateController with an existing pointlist in the "create" method of its model. This allows you to append points at the end of the pointlist.

ImprovementLuciadFusion

LCD-5794

TLcdNoBoundsException now contains a getSharedInstance() method which can be used to reduce the overhead of creating new exceptions by using a shared exception instance. This is useful in performance sensitive code. The drawback of this is that the shared exceptions do not contain a reliable stack trace.

In order to allow creating exceptions with a reliable stack trace for debugging purposes, the setStackTraceOn() method was added. When enabled, new exceptions are created for every call to the getSharedInstance() method. This can have a severe performance impact, so the setStackTraceOn() method should not be used in production code.

ImprovementLuciadFusion

LCD-5792
It is now possible to append a TLspTouchAndHoldActionController to a TLspTouchSelectEditController.

ImprovementLuciadFusion

LCD-4788
A TLcdKML22DynamicModel with a NetworkLink can now be manually updated or reloaded, using the TLcdKML22DynamicModel.updateNetworkLink(). This allows you to retry loading NetworkLinks that failed in the past, or NetworkLinks that use "NEVER" as View Refresh Mode.

Bug fixLuciadFusion

LCD-5703
Fixed issue with caching of documents in TLcdKML22DocumentProvider. The viewFormat parameter was only cached on the values of the parameters given to the server during a request. The viewFormat itself has also been added as a key to ensure that viewFormat elements without parameters can still be distinguished from eachother.

Bug fixLuciadFusion

LCD-5803
TLcdCompositeModelDecoder now falls back to other model decoders when decoding a source name or data source fails. In case there are no model decoders left to fall back to, the first failure is thrown unaltered. The fallback considers both IOException and RuntimeException as decoding failures.

Bug fixLuciadFusion

LCD-5798
TLcdGXYLspAsynchronousPaintQueueManager did not properly dispose its resources when running on unsupported hardware.

Bug fixLuciadFusion

LCD-5776
Fixed a deadlock that could occur in some cases when using a Lightspeed view, for example when changing the world reference, or when adding multiple layers to the view.

Bug fixLuciadFusion

LCD-5783
TLspSwingView would often not fill the entire painting area after resizing the view.

Bug fixLuciadFusion

LCD-5775
Resizing a TLspSwingView could raise an IndexOutOfBoundsException.

Bug fixLuciadFusion

LCD-5789
TLspTouchSelectEditController painted the next controller in the chain multiple times.

Bug fixLuciadFusion

ALcdImagingEngine: fixed possible exception when using color or index lookup operator.

Bug fixLuciadFusion

LF-647
Fixed a bug in the fusion WFS server which prevented the server to return the correct number of features in case of a hits retrieval request.

Bug fixData Connectivity Manager

LF-653, LF-754
The reporting of non-fatal fusion failures now correctly deals with:
  • general failures which are not specific to a specific data object
  • exceptions without message

Bug fixData Connectivity Manager

LF-652
Fixed a bug which caused vector coveragaes with dangling asset pointers to throw a ClassCastException in the DCM.

Bug fixData Connectivity Manager

LF-649
Made the DCM's metadata editor more robust against invalid file:// URIs such as file://unknown.asset.

Bug fixData Connectivity Manager

The Lucy deploy script (in build/lucy) now also works for the LuciadFusion Data Connectivity Manager.

Bug fixAviation Standards

LCD-5801
TLcdDAFIFLoader doesn't throw a cast exception anymore during the decoding of a DAFIFT file when a decoder config file isn't provided.

Bug fixDefense Symbology

LCD-5806
Editing of large T-shaped symbols (for example TASK - BLOCK) did not keep the length of the lines constant.

Bug fixS-63

LCD-5795
The auto-detected permit files are now also correctly included in the S-63 metadata when using the ENC_ROOT directory as source name.

2014.0.06

ImprovementLuciadFusion

LCD-5766
Thh WFS server now advertises Operations also at the level of FeatureTypeList in its capabilities. This improves interoperability with third-party clients such as geoserver.

Bug fixLuciadFusion

LCD-5517
TLcdResizeOp: down scaling an image did not handle no-data pixels correctly on some systems.

Bug fixLuciadFusion

LCD-5772
No label text was painted when using a TLspIconStyle and an ALspLabelTextProviderStyle, without specifying a TLspTextStyle.

Bug fixLuciadFusion

LCD-5770
TLcdTTFIcon did not paints its content within its advertised bounds.

Bug fixLuciadFusion

LCD-5700
Fixed a NullPointerException being thrown when trying to visualize an unstyled mesh in a Lightspeed view. An unstyled mesh is an ILcd3DMesh implementation that does not implement ILcdStyled3DMesh.

Bug fixLuciadFusion

LCD-5765
The WFS server now uses the correct casing for the "outputFormat" parameter name in the capabilities, according to. the WFS specification. This improves interoperability with third-party clients such as geoserver.

Bug fixLuciadFusion

LF-642
When importing a coverage, the server now returns "404 Not Found" if no coverage is found for the given ID instead of "400 Bad Request".

Bug fixLuciadFusion

LCD-5706
TLspClickActionController could trigger exceptions when clicking multiple mouse buttons rapidly in succession.

Bug fixLuciadFusion

LF-640
The LTS mechanism for conditionally getting tiles based on modification times in ETag/If-None-Match headers was fundamentally flawed. The ETag headers were interpreted on the client as milliseconds, which
  1. is against the ETag principle (it must be used as an opaque value);
  2. broke down in more advanced server scenarios where servlet filters may change the ETag headers (for example GzipFilter in Jetty 8).
ETag headers were initially chosen over Last-Modified headers because they offered support for millisecond precision. The ETag mechanism is now replaced with custom X-Luciad-Last-Modified-Milliseconds/X-Luciad-If-Modified-Since-Millisecond headers, with a fallback to standard HTTP Last-Modified/If-Modified-Since headers. The custom headers offer millisecond precision, while the standard headers offer compatibility. If you use a proxy to access a LuciadFusion server, you should configure the proxy to pass on these custom headers unmodified if possible. If the custom headers are stripped by the proxy, you lose millisecond precision of LTS tile modification times. Everything else, such as caching, still works correctly based on the standard headers.

2014.0.05

ImprovementTerrain Analysis Engine

LCD-5469
Improved performance of ellipsoidal LOS calculations when using TLcdLOSCoverageFactory, by caching certain values needed to calculate the ILcdLOSCoverageMatrix.

ImprovementTerrain Analysis Engine

LCD-5468
The javadoc for ILcdLOSPropagationFunction now clarifies that it the LOS Propagation function itself does not calculate or modify the associatedPointX and associatedPointY of its created ILcdLOSCoverageMatrix instances. This allows certain performance optimizations to be applied to certain LOS coverages in the same area.

ImprovementAviation Standards

LCD-5738
Added the ADR extension schema resources to the AIXM5 optional module. The following namespaces can now be used without a reference to their schema location: "http://www.aixm.aero/schema/5.1/extensions/ADR", "http://www.aixm.aero/schema/5.1/extensions/EUR/ADR" and "http://www.aixm.aero/schema/5.1/extensions/EUR/ADR/message"

Bug fixLuciadFusion

LCD-5763
TLspRasterLayer: fixed possible exception when the model changes.

Bug fixAdvanced Raster Services

LCD-5740
Resolved issue where visibility of PDF layers was not initialized to the correct default value.

Bug fixAdvanced Raster Services

LCD-5739
Resolved issue where a NullPointerException was thrown when decoding certain PDF files that did not contain optional metadata.

2014.0.04

ImprovementAviation Standards

LCD-5128
Improved styler performance for lightspeed views when viewing AIXM 5.1 for certain srs-codes.

ImprovementRadar Connectors

TLcdASTERIXModelDecoder: *.ast files are now recognized as raw ASTERIX files.

Bug fixLuciadFusion

LCD-5234
In certain edge cases, synchronization issues could arise when calling ALcdSLDFeatureTypeStylePainter#createFeatureTypeStylePainter from multiple threads. This would result in IndexOutOfBoundsExceptions. This has now been resolved.

Bug fixLuciadFusion

LCD-5737
A Lightspeed view enabled application would not start on a server using VirtualGL due to OpenGL ES not being supported by VirtualGL. This has been fixed by disabling OpenGL ES probing by default. To re-enable OpenGL ES support, use -Djogl.enable.opengles. The Lightspeed view does not require OpenGL ES support to be available.

Bug fixLuciadFusion

LCD-5753
When using a label styler that calls ALspLabelStyleCollector#submit() multiple times in one style() call, the labels could be styled incorrectly.

Bug fixLuciadFusion

LCD-5747
TLspRasterLayer: the painter did not apply the color model correctly on GeoTIFF elevation data

Bug fixLuciadFusion

LCD-5398
TLspOffscreenView.getImage() now properly supports views with a transparent background color.

Bug fixLuciadFusion

LCD-5741
TLsp2DImageTextureObject would not bind the texture in the first call of the bind method after updating the texture's image.

Bug fixLuciadFusion

LCD-5736
TLcdIndexLookupOp: fixed several precision issues in the index lookup operator.

Bug fixLuciadFusion

LCD-5729
The Content-Type (MIME type) of the response to a DescribeFeatureType request now correctly matches one the output formats advertised in the Capabilities. More specifically, for output format "application/gml+xml; version=3.2" the Content-Type of the response is now "application/gml+xml; version=3.2" instead of "text/plain".

Bug fixLuciadFusion

LCD-5726
TLspRasterLayer: rasters where the last sub-tile row or column was 1 pixel were not painted correctly.

Bug fixDefense Symbology

LCD-5696
MIL-STD 2525 STATIC DEPICTION minefield fill was not correct when using multiple such objects with the same mine type and different affiliation in a layer.

Bug fixRadar Connectors

LCD-5493
TLcdASTERIXModelDecoder: files whose extension is not recognized are now treated as raw ASTERIX files again. This behaviour was mistakenly changed in the 2013.1 release.

Bug fixRadar Connectors

LCD-5682
TLcdASTERIXCategory21: records with the same ID were sometimes not linked to together in the same trajectory. For model decoding, this could result in multiple trajectories for a single ID. For live decoding, this could lead to tracks being removed from the model and then immediately added back again. This is now fixed.

Bug fixRadar Connectors

Fixed a problem with retrieving collections through the ILcdDataObject interface. Some could have a incorrect first element.

2014.0.03

ImprovementLuciadFusion

LCD-5719
Reduced stuttering when visualizing elevation data.

ImprovementLuciadFusion

LCD-5709
Empty userdata directories are now automatically deleted when their last entry is deleted. This reduces clutter from empty directories.

Bug fixLuciadFusion

LCD-5672
Possible IndexOutOfBoundsException when using curved path labels.

Bug fixAviation Standards

LCD-5676
In the case of DF as first leg after the IF, the geometry calculation leg will calculate a course if there is no initial course set instead of producing a error line.

Bug fixAviation Standards

LCD-5716
In some cases, ICAO navaid labels could be cut off at the bottom.

2014.0.02

Bug fixLuciadFusion

LCD-5704
Curved labels did not get updated properly when their text was changed. This resulted in old labels not being removed, flickering and possible exceptions.

Bug fixLuciadFusion

LCD-5495
The GeoTIFFModelEncoder now correctly deals with sparse rasters. This fixes for example the visualization of incomplete LuciadFusion coverages when using WCS.

Bug fixLuciadFusion

LCD-5476
When using SLD on a Lightspeed view, the raster symbolizer did not respect the SLD rule's scale range in case of a too high pixel density.

Bug fixAviation Standards

LCD-5705
TLspAIXMStyler: when using multiple stylers in different threads, the stylers could sometimes block.

2014.0.01

ImprovementLuciadFusion

LCD-5674
It is now possible to disable optional industry-specific components (VPF, ECDIS, Geometry) by removing their jars from the classpath, even if they are included in the license. A message will be logged to inform you of this event.

ImprovementLuciadFusion

Improved the robustness and error reporting when decoding XML documents with incorrect values.

ImprovementLuciadFusion

The EPSG resources are updated to EPSG database v8.5.

ImprovementLuciadFusion

LCD-4897
TLcdExtrudedShape now implements ILcdInvalidateable. It now also invalidates its cache when it is modified.

ImprovementLuciadFusion

LCD-5158
TLspRasterLayer: background raster layers in an empty layer tree node can still be merged.

ImprovementLuciadFusion

LCD-5397
When using an ILspView, it is now possible to configure the position of the labels of the lon lat grid relative to the view, see TLspLonLatGridStyler#setLabelPosition().

ImprovementTerrain Analysis Engine

LCD-5480
TLspLosCoverageStyle now supports setting a color for invisible areas. This color is by default transparent. The OpenCL Line-Of-Sight computation now correctly outputs ILcdLineOfSightCoverage.LOS_INVISIBLE_VALUE for areas that are invisible. TLspLOSCoveragePainter now correctly visualizes these areas with the invisible color set on the styler.

ImprovementDefense Symbology

LCD-5454
MIL-STD 2525 minefields objects are now filled with the type of mines depicted in the 'TypeLabel' text modifier. Previously they were always filled with an unspecified mine. More details can be found in the documentation of the ILcdMS2525bCoded class.

ImprovementMaritime Standards

LCD-5492
Added based support for "bENC" data (bathymetric ENC). The data is decoded and visualized as if it were ENC data, so it has product type "ENC".

Bug fixLuciadFusion

LCD-5694
Fixed encoding of TLcdISO19103Measure values with the TLcdGeoJsonModelEncoder.

Bug fixLuciadFusion

LCD-5665
After changing an ILcdGXYAsynchronousLayerWrapper's paint queue, the layers from the old paint queue could temporarily become invisible.

Bug fixLuciadFusion

LCD-5521
TLspRasterLayer: the painter did not paint elevation data when using an TLspImageProcessingStyle instead of the ColorModel on TLspRasterStyle.

Bug fixLuciadFusion

LCD-5598
TLcdEarthGXYViewTileSet: the tile set did not support geodetic references with a datum different from WGS84 as reference for the tile grid.

Bug fixLuciadFusion

LCD-5538
When using curved path labels (TLspCurvedPathLabelingAlgorithm), TLcdLabelPainter could throw an IllegalStateException in rare cases during printing.

Bug fixLuciadFusion

LCD-4860
TLcdEPSGReferenceParser returned an incorrect reference for the codes 32600 and 32700 instead of no reference at all.

Bug fixLuciadFusion

LCD-5498
When using the default labeling algorithm for closed shapes (for example polylines), labels could stay at the original location when editing an object. Now the label position is recalculated using the modified geometry.

Bug fixLuciadFusion

LCD-4876
When using an ILspView, the default labeling algorithm used for arc bands placed arc band labels at ILcdArcBand#getCenter() instead of inside the arc band area.

Bug fixLuciadFusion

LCD-4899
Labels using TLspOnPathLabelingAlgorithm or TLspCurvedPathLabelingAlgorithm could move away from their line when zooming in.

Bug fixLuciadFusion

LCD-4897
TLspExtrudedShapeEditor now invalidates the extruded shape whenever its base class is modified. This for example fixes the problem where the label location is incorrect after moving an extruded shape.

Bug fixLuciadFusion

LCD-5490
ILspImageProjectionLayer did not paint the projected image in the absence of a background terrain layer. This has been fixed.

Bug fixLuciadFusion

LCD-5491, LCD-4818
When using a lon lat grid in a lightspeed view, it was possible that a different amount of grid lines was painted when zooming in or zooming out to the same scale. This can now occur less often.

Bug fixLuciadFusion

LCD-4432
TLcdVVTerrainModel: the z-value of the point returned by TLcdVVTerrainModel#getPoint() was not updated correctly after calling TLcdVVTerrainModel#setPointZ() with 'isLastInRow' false.

Bug fixLuciadFusion

LCD-5483
In very rare cases, labels could be painted in a different color than specified.

Bug fixLuciadFusion

LCD-5293
TLcdVVJPanel now informs its cursor change listeners at the appropriate moment.

Bug fixLuciadFusion

LCD-5092
TLspZoomController: the scale level snapping behavior did not work in some projections.

Bug fixLuciadFusion

LCD-5152
When using TLspComplexStrokedLineStyle, and using two regular strokes, the second stroke would not replace the first stroke when dropped in some cases.

Bug fixLuciadFusion

LCD-5151
When using TLspComplexStrokedLineStyle, and using two regular strokes, part of the second stroke could be painted when it shouldn't.

Bug fixLuciadFusion

LCD-5240
Logging for TLspComplexStrokedLineStyle could only be enabled by referring to a non-public class. It is now possible to adjust the log level for complex strokes using 'com.luciad.view.lightspeed.style.TLspComplexStrokedLineStyle'.

Bug fixLuciadFusion

LCD-5362
When using a lon lat grid in an ILspView, the -180 degrees meridian could disappear in some cases, for example when using a world reference with a rectangular projection like Mercator.

Bug fixLuciadFusion

LCD-5471
Incorrect discretization when discretizing a rhumb line that lies on the pole, and crosses the date line. This for example causes parts of the lon lat grid to disappear in some cases when using a world reference that for example uses the equidistant cylindrical projection.

Bug fixLuciadFusion

LCD-5378
When using an ILspView using grid reference and a TLspViewXYZWorldTransformation3D, the lon lat grid could disappear and not re-appear after moving the view away from the world.

Bug fixLuciadFusion

LCD-5396
In some cases lon lat grid labels could flip all the time.

Bug fixLuciadFusion

Fixed performance bottleneck in TLspEditController when selecting many (10000+) objects.

Bug fixReal-time Engine

LCD-5500
ALcdTimeIndexedSimulatorModel: now indexes the times of the tracks correctly when they are further than 25 days apart in begin- or end-time.

Bug fixTerrain Analysis Engine

LCD-5480
The OpenCL Line-Of-Sight computation could in some cases return the wrong result for invisible areas. This has been fixed.

Bug fixWeather & Environment Standards

LCD-4375
Fixed column being wrongly discarded with wraparound tiles, resulting in an out of bounds exception.

Bug fixDefense Standards

LCD-5488
Fixed rendering of GeoSym icons that had incorrectly filled ovals.

Bug fixInfrastructure Standards

LCD-5484
The DGN decoder failed on files that contained multilines with a single point.

Bug fixInfrastructure Standards

LCD-5485
Errors that occur when decode an individual element are now propagated as IOException from the decode() method. Previously, they were ignored.

Bug fixMaritime Standards

LCD-4956
The exception handler and ignore invalid cells flag are now taken into account for SENC caching as well.

Bug fixMaritime Standards

LCD-5343
Fixed issues with error handling for individual cells: TLcdS57CatalogueModelDecoder.setInvalidCellExceptionHandler and setIgnoreInvalidCells now work as a documented.
  • If the invalid cell exception handler swallows the exception, the cell is ignored and decoding of other cells continues.
  • If the invalid cell exception handler re-throws the exception and ignore invalid cells is set, the cell is ignored and decoding of other cells continues.
  • If the invalid cell exception handler re-throws the exception and ignore invalid cells is not set, decoding is interrupted and the exception is passed to the caller. This is the default.
See class javadoc section "Error handling" of TLcdS57CatalogueModelDecoder for more details.

2014.0

ImprovementLuciadFusion

From now on, patch releases of LuciadLightspeed will be binary compatible with their respective Major.Minor version. For instance, version 2014.0.01 will be binary compatible with version 2014.0. It will not necessarily be binary compatible with version 2014.1 or 2015.0.

There may be occasional exceptions. These will be documented in the release notes.

The appendix 'Compatibility of LuciadLightspeed version' in the developer's guide has more information.

ImprovementLuciadFusion

LCD-5445
TLcdWKTReferenceParser can now parse references containing a geodetic datum named "Hungarian 1972".

ImprovementLuciadFusion

TLcdWMTSModelDecoder now supports decoding of non-quadtree tile matrix sets. Decoded non-quadtree layers will have domain objects which are extensions of ALcdMultilevelImageMosaic. These objects can directly be visualized in an ILcdGXYView (by creating a layer with a TLcdGXYImagePainter) and in an ILspView (by using TLspRasterLayerBuilder to create a layer).

ImprovementLuciadFusion

LCD-5419
Calling ALspCreateHandle.previous() will now allow the create handle to go back all the way to its initial state. If there are no more previous handles, the currently active handle is also removed from the queue, allowing the handle to start again from scratch.

ImprovementLuciadFusion

LCD-5146
The Jetty servlet container delivered with the OGC Web Server Suite to deploy and run the sample OGC services (see samples.ogc.server.Main) has been upgraded from version 6.1.21 to 8.1.15.

ImprovementLuciadFusion

The Jetty servlet container delivered with LuciadFusion to deploy and run the sample Data Server (see samples.fusion.server.MainApplet) has been upgraded from version 6.1.21 to 8.1.15.

ImprovementLuciadFusion

TLspViewNavigationUtil: improved fitting on 3D bounds in a geocentric reference.

ImprovementLuciadFusion

LCD-4162
The TLspEditController now listens to styler changes of the objects it is editing. It will re-generate the handles if the geometry has changed due to styler changes. This change means it is now possible to have objects change geometry due to level-of-detail, while you are editing them, and the editing handles will also update.

ImprovementLuciadFusion

LCD-5156
Support was added for the SWEN08_RH2000 and SWEN08_RH70 geoid geodetic datums. See TLcdGeoidGeodeticDatumFactory#SWEN08_RH2000 and TLcdGeoidGeodeticDatumFactory#SWEN08_RH70.

ImprovementLuciadFusion

LCD-5318
The TLcdGeoJsonModelEncoder#canExport method no longer checks if all elements of the model can be encoded. This method is often used by clients to perform a quick verification. Before this change, this check could take an excessively long time to complete for large models. Now, the check only verifies if the first element can be encoded.

ImprovementLuciadFusion

TLspDensityLayerBuilder now also accepts TLspIconStyle, TLspFillStyle, TLspLineStyle, and TLspWorldSizedLineStyle, next to the ALspDensityStyle instances. This allows for more advanced density visualization, by using custom icons with TLspIconStyle for example.

ImprovementLuciadFusion

The JOGL, JOCL, and GlueGen libraries have been updated to version 2.1.5.

ImprovementLuciadFusion

The TLcdBingMapsModelDecoder has been adapted for integration with the new imaging API. It now produces domain objects that also implement one of the new interfaces: ALcdImage, ALcdMultilevelImage, ALcdImageMosaic or ALcdMultilevelImageMosaic. Please refer to the class javadoc, com.luciad.imaging package javadoc and to the developer's guide for more information.

ImprovementLuciadFusion

A number of model decoders have been adapted for integration with the new imaging API. They now produce domain objects that extend ALcdImage (in addition to still implementing ILcdRaster or ILcdMultilevelRaster). The affected decoders are:
  • TLcdArcInfoASCIIGridModelDecoder
  • TLcdDEMModelDecoder
  • TLcdDMEDModelDecoder
  • TLcdDTEDModelDecoder
  • TLcdETOPOModelDecoder
  • TLcdGeoTIFFModelDecoder
  • TLcdJAIRasterModelDecoder
  • TLcdRasterModelDecoder
  • TLcdTABRasterModelDecoder
Please refer to the class javadoc, com.luciad.imaging package javadoc, and to the developer's guide for more information.

ImprovementLuciadFusion

The TLcdLRDBModelDecoder and TLcdGeoPackageModelDecoder have been adapted for integration with the new imaging API. They now produces domain objects that also implement one of the new interfaces: ALcdImage, ALcdMultilevelImage, ALcdImageMosaic or ALcdMultilevelImageMosaic. Please refer to the class javadoc, com.luciad.imaging package javadoc and to the developer's guide for more information.

ImprovementLuciadFusion

The TLcdWMTSModelDecoder has been adapted for integration with the new imaging API. It now produces domain objects that also implement one of the new interfaces: ALcdImage, ALcdMultilevelImage, ALcdImageMosaic or ALcdMultilevelImageMosaic. Please refer to the class javadoc, com.luciad.imaging package javadoc and to the developer's guide for more information.

ImprovementLuciadFusion

TLcdGeoTIFFModelDecoder has been adapted to retain all bands and the original pixel accuracy. This allows the decoder to be used to work with multi-spectral, hyper-spectral, and high dynamic range imagery and measurement data (12 bit, 16 bit, 32 bit, and so on). Accessing the decoded data is done through the new ALcdMultilevelImage and ALcdBasicImage API. Also please refer to the class javadoc, com.luciad.imaging package javadoc and to the developer's guide for more information on working with multi-band and HDR imagery.

ImprovementLuciadFusion

TLcdGeoTIFFModelEncoder has been adapted to allow encoding of multi-band and HDR imagery. It now also accepts ALcdBasicImage and ALcdMultilevelImage objects, next to ILcdRaster and ILcdMultilevelRaster objects. It can hence be used to encode multi-spectral or HDR imagery and measurement data. This data can also be the result of an applied image filter graph. Please also refer to the class javadoc, com.luciad.imaging package javadoc and to the developer's guide for more information.

ImprovementLuciadFusion

LCD-4763
Improved composite curve creation in Lightspeed. Setting a new curve-type will delete the current curve, and create the new one in its place.

ImprovementLuciadFusion

Support for saving ILcdCircle, ILcdEllipse, ILcdCircleBy3Points and ILcdArc to GeoPackage and LVDB has been added.

ImprovementLuciadFusion

The vertical view now allows retrieving the main profile index of the point located to the left of the cursor.

ImprovementLuciadFusion

ALfnCoverageMetadata.Builder now uses auto-defaults for its properties based on the asset metadata, if this asset metadata is available to the builder. This means that it is no longer required to set all the required properties on the builder. You can set only those properties that you want to set explicitly, and all the others will be set to defaults based on the asset metadata. The asset metadata can be made available to the builder in one of two ways:
  1. By passing an ILfnResourceResolver when constructing the builder. There are two implementations of this interface:
    • ALfnTileStore: resolves resources from a Tile Store.
    • TLfnCollectionResourceMetadataResolver: resolves resources from a collection.
  2. By passing the asset metadata themselves to the builder using ALfnCoverageMetadata.Builder.addAssetInfo(ALfnAssetMetadata, String).
Examples of auto-defaults (non-exhaustive list):
  • A coverage's default ID is a UUID. This actually applies to assets too: you no longer need to set an ID on the ALfnAssetMetadata.Builder.
  • A coverage's default geographic reference is the common geographic reference of the assets. If the assets have no common geographic reference, the default geodetic reference WGS 84 is used (EPSG:4326).
  • A coverage's default bounding box is the union of the asset's bounding boxes.
  • A vector coverage's default data model is a superset of the asset's data models.
If the asset metadata is not available to the builder, the auto-defaults will use constant defaults such as geodetic reference and world bounds. The auto-defaults are active as long as you're updating a builder, but once you've built a coverage metadata the knowledge of whether a property value is an auto-default is lost.

ImprovementLuciadFusion

Support was added for a new tile format "image/tiff" for elevation and multivalued coverages.

ImprovementLuciadFusion

LCD-3261, LCD-4303, LCD-4603
The navigation controllers now navigate around and toward the object that is touched by the mouse. This allows for convenient navigation around tall or airborne objects, such as air tracks.

ImprovementLuciadFusion

When using a Lightspeed view, the default selection style for text and text labels now uses an orange color with a black halo instead of an orange color with the regular halo color. This improves the legibility of the text in cases where a light regular halo color is used.

ImprovementLuciadFusion

The package com.luciad.imaging introduces a new API to perform various image processing operations on raster data. The package defines a new representation for image data (ALcdImage), which supports multi-band and HDR imagery. It also provides a number of operators, such as band select or convolution, which can be applied to images. In GXY views, images can be visualized using the new TLcdGXYImagePainter. In Lightspeed views, TLspRasterLayerBuilder supports the new image types and the new TLspImageFilterStyle can be used to perform image processing on raster layers in a view. Please refer to the package javadoc and to the developer's guide for more information.

ImprovementLuciadFusion

LCD-4836
An appropriate HTTP status code is now set on the response in case of a service exception report: 4xx for client request errors, 5xx for server errors.

ImprovementLuciadFusion

LuciadFusion now supports fusion of floating point elevation values. There are some limitations:
  • The input format needs to support floating point elevation values as well. GeoTIFF is currently the only format that supports this.
  • The new elevation tile format "image/tiff" provides optimal support for floating point values and is the new default. Old clients will not be able to visualize coverages with this new tile format. For backwards compatibility, you need to explicitly set "image/png" as tile format on the coverage.
  • The old "image/png" tile format also provides limited support for decimal values by scaling them. The drawback is that the precision is unpredictable because the scaling depends on the max./min. values which are different in each tile.
  • It may be beneficial to use "image/tiff" even if the input format does not support floating point elevation values: fusion interpolates the values, in which case it makes sense to preserve their floating point nature even if the input values themselves are not floating point.
  • The "image/tiff" tile format can also be used for multivalued data. Even though there is currently no input format that supports floating point multivalued data, it may still be beneficial to use this new tile format to preserve floating point values: fusion interpolates the values, in which case it makes sense to preserve their floating point nature even if the input values themselves are not floating point.

ImprovementLuciadFusion

LCD-5118
The Feature Type Style decoder, TLcdSLDFeatureTypeStyleDecoder, now also supports decoding a Feature Type Style from XML documents that have a Styled Layer Descriptor, Named Layer, User Layer, or User Style as top level element.

ImprovementLuciadFusion

The filtering of vector data during the fusion process can now use SLD. Consult the developer guide, user guide and javadoc of TLfnVectorCoverageMetadata for more information.

ImprovementLuciadFusion

LCD-3578

The creation of a layer for Fusion vector data has been simplified. The classes which are available in the API have been extended to support more use cases by default:

TLfnGXYVectorLayer: used to visualize Fusion vector data in GXY views

  • When the vector coverage for which the layer is created contains SLD feature type styles, the visualization will automatically use those feature type styles for styling (bodies and labels).
  • When the vector coverage for which the layer is created contains VPF data, the visualization will automatically use GeoSym styling.
  • When the vector coverage defines OGC filters, the filters will be respected during the visualization.
  • The layer contains by default a label painter based on the ILcdDataModel of the coverage.

Consult the javadoc of TLfnGXYVectorLayer for more information.

TLspFusionVectorLayerBuilder: used to visualize Fusion vector data in Lightspeed views

  • When the vector coverage for which the layer is created contains SLD feature type styles, those feature type styles define the styling which will be used during the visualization.
  • When the vector coverage for which the layer is created contains VPF data, the visualization will automatically use GeoSym styling.
  • When the vector coverage defines OGC filters, the filters will be respected during the visualization.
  • A label styler is added by default.

Consult the javadoc of TLspFusionVectorLayerBuilder for more information.

ImprovementLuciadFusion

LCD-4282
TLcdScaleFormat now parses plain values as "1 : value" (for example, "25,000" is interpreted as "1:25,000"). It also accepts common decadic multiple suffixes (for example "1 : 25K").

ImprovementLuciadFusion

LCD-5047
ALspAWTView now has a getImage() method, analogous to the one that already existed in TLspOffscreenView, to retrieve a screenshot of the view.

ImprovementLuciadFusion

Added support for PNG in TLcdTFWRasterModelDecoder.

ImprovementLuciadFusion

The EPSG resources are updated to EPSG database v8.4. At the same time, a few EPSG code parsing problems were fixed:
  • Some geocentric references were parsed as geodetic references
  • The datum transformation parameters were improved

ImprovementLuciadFusion

Fusion now supports S-63, the encrypted low-level data format of ECDIS.

ImprovementLuciadFusion

LCD-4980
SLD in Lightspeed views now support the perpendicularOffset property for LineSymbolizers that contain dashed patterns.

ImprovementLuciadFusion

ILcdGXYView#setNumberOfCachedBackgroundLayers: this method will now throw a clear exception when passing a negative number, or a number higher than the number of layers in the view, instead of possibly resulting in a rather meaningless exception later on (e.g. an ArrayIndexOutOfBoundsException).

ImprovementLuciadFusion

Fusion now supports S-57 updates as additional detail, both for tiled and non-tiled coverages. Given an existing S-57 base which was fused into a coverage, you can create a new asset for the S-57 update and add it to that coverage.

ImprovementLuciadFusion

A new, high-performance plot visualization layer was added. It can handle large static point datasets. See the developer's guide or TLspPlotLayerBuilder javadoc for details.

The "lightspeed.plots" sample demonstrates this.

This functionality used to be in the Realtime component and was moved to Lightspeed. The functionality and API are the same.

ImprovementLuciadFusion

The new LIDAR component introduces support to decode LAS files and visualize the point clouds efficiently in a Lightspeed view. For more details, see:
  • The LIDAR Developer's Guide
  • The javadoc of TLcdLASModelDecoder on how to decode .las files
  • The javadoc of TLspLIDARLayerBuilder on how to visualize such data

ImprovementLuciadFusion

Performance improvements for TLspLabelPainter when querying label information and preparing for painting.

ImprovementLuciadFusion

ILcdExpressions created using TLcdExpressionFactory.attribute() now implement equals() and hashCode().

ImprovementLuciadFusion

TLcdCompositeModelDecoder now implements ILcdDataSourceModelDecoder as well.

ImprovementLuciadFusion

LCD-4152
TLcd2DBoundsIndexedModel can now accept an initial bounds that has zero width or height, instead of failing. Keep in mind that for optimal performance, the initial bounds ideally encompass all elements in the model. If this is not possible, it is better not to provide an initial bounds, and use the empty constructor.

ImprovementLuciadFusion

TLcdGeoTIFFModelDecoder and TLcdGeoTIFFModelEncoder now support TIFF images encoded with the BigTIFF variant. The decoder handles both regular GeoTIFF and BigTIFF transparently. The encoder has a new setEncodeBigTIFF() method, which allows the user to choose the encoding format. The encoder.raster.geotiff sample now also has a BigTIFF output option.

ImprovementLuciadFusion

LCD-4385
A new sample (lightspeed.datamodel) now shows the data model of any supported data file.

ImprovementLuciadFusion

LCD-3081
TLspLabelPainter now supports painting non-ASCII characters when using curved path labels.

ImprovementLuciadFusion

LCD-4503
TLspViewBuilder now uses a long instead of an int to specify the size of the view's OpenGL resource cache. This allows caches of more than 2 GB to be used on GPUs that have sufficient memory for this.

ImprovementLuciadFusion

LCD-215, LMAP-5389
TLcdGXYViewFitAction: improved results when fitting on non-bounded models with bounded elements.

ImprovementLuciadFusion

LCD-3625, LCD-4671
TLspLabelEditor now respects the world offset and world rotation offset of the original label. This means that for example path labels stay anchored to their path after moving them.

ImprovementLuciadFusion

LCD-3610
TLspLabelPainter now tries to call the styler as little as possible by passing multiple objects to it. This improves the performance when using a styler that has a large overhead per style call.

ImprovementLuciadFusion

LCD-237, LMAP-4859
The DynamicLonLatGridLayer sample class shows how to dynamically refine a lon lat grid.

ImprovementLuciadFusion

LCD-4402
TLcdEarthGXYRasterPainter now uses a startResolutionFactor of 100 by default instead of infinity. As a result the bounds of the raster may be painted instead of the tiles when zoomed out a lot. This avoids excessive memory usage when visualizing many tile sets or when a tile set has a very large number of tiles at the least detailed level. The latter can for example happen unexpectedly when using an external tile service. You can revert to the old behavior by calling startResolutionFactor(Double.POSITIVE_INFINITY).

ImprovementLuciadFusion

LCD-4051
Added ILcdCurve support for TLcdXYZLine, TLcdXYFloatLine, TLcdLonLatHeightLine.

ImprovementLuciadFusion

LCD-3569
You can now use TLcdLockUtil together with the Java 1.7 try-with-resources idiom. This means that you no longer have to unlock explicitly in a finally block. Example:
      try (TLcdLockUtil.Lock lock = TLcdLockUtil.readLock(model)) {
      Enumeration enumeration = model.elements();
      }
    

ImprovementLuciadFusion

LCD-3974
TLcdDefaultModelModelTransformation, TLcdDefaultModelXYWorldTransformation and TLcdDefaultModelXYZWorldTransformation now have a convenience constructor that takes the source and destination reference as arguments.

ImprovementLuciadFusion

LCD-244, LCD-4583
TLcdGXYMultiFontLabelPainter now extends from TLcdGXYStampLabelPainter. Because of this, it now supports:
  • label editing
  • label halo and pin halo
  • interactive labels
  • labels of labels
  • ...
A bug that caused overly narrow spacing between 2 lines of label text, and left a gap at the bottom of the label, was fixed as well.

ImprovementLuciadFusion

LCD-4284
TLcdUtmMGRSUtil, TLcdUpsMGRSUtil and TLcdMGRSFormat now make it possible to add a separator between the zone designation and the 100km squares designation. See the setZoneSeparator() method.

ImprovementLuciadFusion

LCD-3752
TLcdTransformedHeightProvider is now faster when no height can be found.

ImprovementLuciadFusion

LCD-4473
It is now possible to configure a "Last-Modified" date on a WCS coverage (TLcdCoverageOffering). This information is used to fill in the "Last-Modified" date HTTP header on the response of a GetCoverage and DescribeCoverage request and to support conditional HTTP requests.

ImprovementLuciadFusion

LCD-4473
It is now possible to configure a "Last-Modified" date on a WMS layer (ALcdWMSLayer). This information is used to fill in the "Last-Modified" date HTTP header on the response of a GetMap and GetFeatureInfo request and to support conditional HTTP requests.

ImprovementLuciadFusion

LCD-4472
It is now possible to configure an expiry date on a WCS coverage (TLcdCoverageOffering). This information is used to fill in the "Expires" HTTP header on the response of a GetCoverage and DescribeCoverage request.

ImprovementData Connectivity Manager

The vector coverage configuration panel allows to specify an SLD file to define the filters and styling. Consult the javadoc of TLfnVectorCoverageMetadata for more information.

ImprovementData Connectivity Manager

You can now export LuciadFusion raster data to GeoPackage using File | Save As... for a Fusion raster layer.

ImprovementData Connectivity Manager

The DCM now supports fusing S-57 updates to coverages containing an S-57 base and prior S-57 updates. Given an existing S-57 base which was fused into a coverage, you can create a new asset for the S-57 update and add it to that coverage.

There are some limitations:
  • It is not possible to open a map layer for an S-57 update.
  • It is not possible to create a map layer for an S-57 update asset.
  • It is not possible to create a preview layer for a coverage containing S-57 updates.

ImprovementAdvanced Raster Services

The TLcdDIMAPModelDecoder has been adapted for integration with the new imaging API. It now produces domain objects that also implement one of the new interfaces: ALcdImage, ALcdMultilevelImage, ALcdImageMosaic or ALcdMultilevelImageMosaic. Please refer to the class javadoc, com.luciad.imaging package javadoc and to the developer's guide for more information.

ImprovementAdvanced Raster Services

The TLcdECWModelDecoder has been adapted for integration with the new imaging API. It now produces domain objects that also implement one of the new interfaces: ALcdImage, ALcdMultilevelImage, ALcdImageMosaic or ALcdMultilevelImageMosaic. Please refer to the class javadoc, com.luciad.imaging package javadoc and to the developer's guide for more information.

ImprovementAdvanced Raster Services

The TLcdGeospatialPDFModelDecoder has been adapted for integration with the new imaging API. It now produces domain objects that also implement one of the new interfaces: ALcdImage, ALcdMultilevelImage, ALcdImageMosaic or ALcdMultilevelImageMosaic. Please refer to the class javadoc, com.luciad.imaging package javadoc and to the developer's guide for more information.

ImprovementAdvanced Raster Services

The TLcdGeoSPOTModelDecoder has been adapted for integration with the new imaging API. It now produces domain objects that also implement one of the new interfaces: ALcdImage, ALcdMultilevelImage, ALcdImageMosaic or ALcdMultilevelImageMosaic. Please refer to the class javadoc, com.luciad.imaging package javadoc and to the developer's guide for more information.

ImprovementAdvanced Raster Services

The TLcdSwissDHMMatrixModelDecoder has been adapted for integration with the new imaging API. It now produces domain objects that also implement one of the new interfaces: ALcdImage, ALcdMultilevelImage, ALcdImageMosaic or ALcdMultilevelImageMosaic. Please refer to the class javadoc, com.luciad.imaging package javadoc and to the developer's guide for more information.

ImprovementDatabase Connectors

Added support for decoding and encoding data from/to a SAP HANA database.
  • See samples.hana.lightspeed.MainPanel for an extended sample.
  • See package com.luciad.format.hana for supporting API classes.
WARNING: this API is beta: the API may be modified or removed in subsequent releases.

ImprovementAviation Standards

LCD-5229
More local horizontal datum codes are recognized during the decoding of DAFIF files. All horizontal datum codes are now supported, except for "IND", "LCF", "SOA" and "SGS".

ImprovementAviation Standards

ARINC MORA data is now decoded and visualized. The data type is TLcdARINCDataTypes#MORA, which extends from the new AreaMinimumAltitude type in AIS. See TLcdARINCMORAHandler for details on the decoding.

It is visualized in Lightspeed and GXY layers using labels that denote thousands and hundreds for feet. See TLspAISStyler and TLcdARINCLayerConfiguration for details on how to customize styling.

ImprovementAviation Standards

You can now model area-based minimum safety altitudes in AIS. This can be used to model any area-, cell- or quadrangle-based minimum safety altitudes, such as: MORA (Minimum Off-Route Altitude), ORTCA (Off-Route Terrain Clearance Altitude), MEF (Maximum Elevation Figure), AMA (Area Minimum Altitude). The interpretation of the altitudes is not defined in AIS. For example, it is not specified if obstacles are included, and how much margin is added.

See ILcdAreaMinimumAltitude, TLcdAISDataTypes#AreaMinimumAltitude or the AIS Developer's Guide for details.

It is visualized in Lightspeed and GXY layers using labels that denote thousands and hundreds for feet. See TLspAISStyler for details on how to customize styling.

ImprovementAviation Standards

LCD-5148
Support has been added to decode obstacle data. A new object handler has been added for this, TLcdAIXMObstacleHandler. It is registered by default on the main AIXM model decoder, TLcdAIXMModelDecoder. A dedicated model descriptor and a convenience class listing all decoded obstacle properties can be found in the com.luciad.format.aixm.model.obstacle package.

ImprovementAviation Standards

The TLcdAIXMModelDecoder now has all available object handlers registered by default. This means you can use it to decode everything, without additional configuration. You can still register your own handlers. In this case, the default handlers are ignored.

ImprovementAviation Standards

There now is a convenience TLcdARINCModelDecoder that decodes every object type without additional configuration. You can still use the existing TLcdARINCDecoder for full control.

ImprovementAviation Standards

There now is a convenience TLcdDAFIFModelDecoder that decodes every object type without additional configuration. It can decode:
  • A DAFIF file, for example FILE0
  • A DAFIFT file, for example ARPT/ARPT.TXT
  • A directory containing DAFIF or DAFIFT files
  • A .toc file pointing to DAFIF or DAFIFT files
  • A .toc file in a directory with subdirectories containing DAFIF or DAFIFT files

The TLcdDAFIFModelDecoder produces lazy-loading models, so the actual data is only loaded when accessed, for example by the view or layer.

You can still use the existing TLcdDAFIF...Decoder classes for full control.

ImprovementAviation Standards

You can now visualize AIS data with ICAO styling natively in a Lightspeed view. Please refer to TLspAISStyler, the AIS Developer's Guide or the "ais.lightspeed" sample for more details.

ImprovementAviation Standards

You can now visualize AIXM data with ICAO styling natively in a Lightspeed view. Please refer to TLspAIXMLayerBuilder or the AIXM Developer's Guide for more details.

ImprovementAviation Standards

You can now visualize ARINC data with ICAO styling natively in a Lightspeed view. Please refer to TLspARINCLayerBuilder or the ARINC Developer's Guide for more details.

ImprovementAviation Standards

Improved navaid labels in a similar way as done for LCD-4467: The background now has a greater margin to improve readability.

ImprovementDefense Standards

The TLcdBCIRasterModelDecoder has been adapted for integration with the new imaging API. It now produces domain objects that also implement one of the new interfaces: ALcdImage, ALcdMultilevelImage, ALcdImageMosaic or ALcdMultilevelImageMosaic. Please refer to the class javadoc, com.luciad.imaging package javadoc and to the developer's guide for more information.

ImprovementDefense Standards

The TLcdECRGModelDecoder and TLcdNITFModelDecoder have been adapted for integration with the new imaging API. They now produces domain objects that also implement one of the new interfaces: ALcdImage, ALcdMultilevelImage, ALcdImageMosaic or ALcdMultilevelImageMosaic. Please refer to the class javadoc, com.luciad.imaging package javadoc and to the developer's guide for more information.

ImprovementDefense Standards

The TLcdUSRPModelDecoder has been adapted for integration with the new imaging API. It now produces domain objects that also implement one of the new interfaces: ALcdImage, ALcdMultilevelImage, ALcdImageMosaic or ALcdMultilevelImageMosaic. Please refer to the class javadoc, com.luciad.imaging package javadoc and to the developer's guide for more information.

ImprovementDefense Symbology

LCD-5413, LCD-5415
TLcdEditableAPP6AObject#getPossibleTextModifiers and TLcdEditableMS2525bObject#getPossibleTextModifiers: the possible text modifiers of various symbols have been extended. Most importantly, all symbols now include the unique designation text modifier.

ImprovementDefense Symbology

LCD-5039
Added more context when displaying names of military symbols to make it easier to identify them.

ImprovementS-63

The TLcdS63UnifiedModelDecoder, TLcdS63CatalogueModelDecoder and TLcdS63ModelDecoder now automatically pick up basic/meta permit files which are located next to the source file. This avoids the need to configure those permits on the model decoder itself.

The sample class S63ModelDecoder was removed: it configured the sample permit, and was annotated with @LcdService so that the sample data could be loaded with the service-loader-based model decoder. Since the TLcdS63UnifiedModelDecoder now automatically picks up the permit, this is not necessary anymore.

TLcdS63UnifiedModelDecoder is now annotated with @LcdService instead.

Bug fixLuciadFusion

LCD-4359
TLspTouchNavigateController did not work correctly when trying to rotate tilted geocentric views.

Bug fixLuciadFusion

LCD-5283
TLcdDTEDModelDecoder incorrectly accepted folders in its canDecodeSource method.

Bug fixLuciadFusion

LCD-5455
TLspTouchAndHoldActionController: improved touch and hold detection robustness.

Bug fixLuciadFusion

LCD-5418
Improved the networklink update behavior to avoid deadlocks. Model update notifications are now thrown outside of any model locks, so that model listeners can take read-locks on the model safely. This fix also improves networklink updating performance slightly by reducing the size executed code that locks the kml model.

Bug fixLuciadFusion

LCD-5444
To avoid "Timer already cancelled" problems, each Networklink now has its own timer for scheduling updates.

Bug fixLuciadFusion

LCD-5443
For some GeoPackage files, 'TEXT' table columns were mapped to the core 'Character' data type instead of 'String'. This could happen when using Java 1.8.

Bug fixLuciadFusion

LCD-3789
TLspViewXYZWorldTransformation3D.getScale() now returns a value that does not depend on the current reference point (see getReferencePoint()). This fixes a few scale-related issues:
  • The scale icon showed incorrect values when linking the camera to for example a track
  • When using level-of-detail based on the scale, the incorrect detail level was chosen in some cases.
  • The scale was not always updated immediately during navigation.
  • The shape discretization was too fine-grained in some cases.

Bug fixLuciadFusion

LCD-551
Fixed an issue preventing decoding of non-qualified XML elements.

Bug fixLuciadFusion

TLcdGXYMultiFontLabelPainter now throws a property change event when calling the setConsiderPinForBounds() method.

Bug fixLuciadFusion

LCD-5328
The TLcdSLDFeatureTypeStyle#insertRuleAt now correctly shifts rules towards the back of list of rules instead of replacing the rule at that index. For example, if two rules are inserted at position 0, the one that was added first will now be shifted to position 1. Before, the one added first would be replaced with the one added second.

Bug fixLuciadFusion

Fixed artifacts when painting a text label in combination with a semi-transparent halo color or fill color (TLspLabelBoxStyle.Builder#fillColor).

Bug fixLuciadFusion

LCD-5089

The Lightspeed SLD styler, TLspSLDStyler, used the scale at the center of the map to evaluate rules. This has been changed and it now uses the scale at the center of the projection. This scale is constant over the whole view.

The previous behavior would result in unexpected behavior when e.g. using SLD in combination with tiled WMS requests. Part of a feature could be visible on one tile, but hidden on the other tile as the scale varied between those two tiles. This is avoided by using the scale at the center of the projection which does not depend on the current view location.

Bug fixLuciadFusion

LCD-5175
Fixed an issue in plot layers that caused objects to disappear. This happened sometimes when selecting, de-selecting and re-selecting objects.

Bug fixLuciadFusion

LCD-5031
Leading line breaks are now preserved when parsing literal content from SLD documents.

Bug fixLuciadFusion

LCD-4830
Some polar stereographic projections were incorrectly mapped to a stereographic projection when TLcdWKTReferenceParser was used.

Bug fixLuciadFusion

LCD-4654
Moving the mouse over a TLspAWTView no longer schedules label placements.

Bug fixLuciadFusion

LCD-4051
TLcdLonLatFloatPolygon and TLcdLonLatFloatPolyline getLength2D() returned a value in degrees instead of meters.

Bug fixLuciadFusion

LCD-4051
TLcdLonLatPolyline and TLcdLonLatLine's getTangent2D() method now returns correct results for parameters 1 and 0.

Bug fixLuciadFusion

LCD-3717
Improved the precision when transforming bounds to a grid reference in some cases.

Bug fixLuciadFusion

LCD-2689, LCD-3456
Lon lat polygons or polylines no longer return bounds that are smaller than expected.

Bug fixData Connectivity Manager

TLfnDataImporterGUIFactory: this class wanted to override the ALcyGUIFactory#cleanup method, but the method name contained a typo. It was called cleanUp instead of cleanup (note the different casing). This typo has been fixed.

Bug fixAviation Standards

TLcdARINCEnrouteAirwayHandler could throw a NPE when no DME/TACAN/VOR/NDB model is set.

Bug fixAviation Standards

TLcdARINCHoldingHandler.setRunwayModel() would throw a NPE when calling it with a null reference.

Bug fixDefense Standards

LCD-5126
Improved detection of wrapping coordinates. The decoder sometimes produced stretched images by falsely assuming that the coordinates wrapped around the date line.

Bug fixDefense Symbology

LCD-5358
Corrected specification misspellings of "ordnance" and "maintenance".

Bug fixDefense Symbology

LCD-5070
Fixed some minor affiliation issues with TLcdEditableAPP6AObject and TLcdEditableMS2525bObject.

Bug fixInfrastructure Standards

LCD-5470
The DGN decoder sometimes assigned wrong priorities to elements or holes within cells, causing paint ordering issues. Additionally, the TLcdDGNGXYPainterProvider and TLcdDGNCellGXYPainter now have the "paint unfilled holes" option enabled by default to make sure holes are always painted.

Upgrade considerationLuciadFusion

LCD-5377
You can now register an ILcdViewInvalidationListener to TLspAWTView, TLspSwingView, and TLspOffscreenView. To enable this, two new methods were added to ILspView:
  • addViewInvalidationListener
  • removeViewInvalidationListener
View invalidation listeners can be used to get notified whenever the view has been invalidated.

Upgrade considerationLuciadFusion

ILfnResourceMetadataResolver: the signature of the method getResourceMetadata has changed.
  • It now declares to throw IOException and TLfnServiceException.
  • It returns a generic type argument allowing the user to omit a cast.
These changes make the method signature compatible with the same method on ALfnTileStore, so that ALfnTileStore can now implement ILfnResourceMetadataResolver. Decorator implementations of ILfnResourceMetadataResolver will need to throw on these exceptions. Callers of this method will need to be adjusted to deal with the exceptions. A typical handling will be to ignore or to log the exceptions and treat them the same way as if the call would have returned null.

Upgrade considerationLuciadFusion

The ILspLabelStyler interface was removed. This interface served no purpose, and using it could lead to incorrectly working code. Instead of using ILspLabelStyler, ALspLabelStyler can still be used without changes, or ILspStyler can be used directly by casting the style collector passed in the style() method to ALspLabelStyleCollector. For more information on label styling and examples, see ILspStyler or ALspLabelStyleCollector class doc.

Upgrade considerationLuciadFusion

LCD-4768
To prevent incorrect usage, TLcdModelXYWorldTransformation and TLcdModelXYZWorldTransformation were deprecated and replaced by the TLcdIdentityModelXYWorldTransformation and TLcdIdentityModelXYZWorldTransformation classes.

Upgrade considerationLuciadFusion

The TLcdWMTSLayer.hasCompatibleTileStructure method has been removed. The updated decoder now supports all tile structures. Previously it only supported quad tree tile structures. You can use the new isTileStructureQuadTree method to query if a TLcdWMTSLayer has a quad-tree tile structure. In other words this new method behaves exactly like hasCompatibleTileStructure did in older versions.

Upgrade considerationLuciadFusion

LCD-5089
TLspScaleIndicator: the scale indicator now uses the scale at the center of the projection by default instead of the scale at the center of the map. Consult the javadoc of TLspScaleIndicator#setScaleAtCenterOfMap for more information.

Upgrade considerationLuciadFusion

LCD-5089
TLcdGXYScaleIndicator: the scale indicator now uses the scale at the center of the projection by default instead of the scale at the center of the map. Consult the javadoc of TLcdGXYScaleIndicator#setScaleAtCenterOfMap for more information.

Upgrade considerationLuciadFusion

LCD-5133
The TLcdGXYCompositeViewLabelPlacer#getGroupID(...) method now also takes a view as argument. Code extending from this method can be fixed by adding an ILcdGXYView parameter to the method signature.

Upgrade considerationLuciadFusion

LCD-4200
The capabilities class ALcdWMSCapabilities and its default implementation TLcdWMSCapabilities now implement ILcdCloneable, providing a public clone() method to create a copy of an instance. Additionally, TLcdWMSCapabilities now has a copy constructor that allows to create a new TLcdWMSCapabilities instance based on a given ALcdWMSCapabilities instance.

Custom implementations of ALcdWMSCapabilities or extensions of TLcdWMSCapabilities are recommended to override the clone() method and implement proper behavior for the custom implementation / extension - i.e., take into account potential custom properties or delegate in case of a wrapper implementation.

Upgrade considerationLuciadFusion

TLcdWeakIdentityHashMap no longer extends AbstractMap. This should not affect the use of this class.

Upgrade considerationLuciadFusion

LCD-3634

TLpsFusionVectorLayerBuilder: you can now set any ILspStyler on the builder, without triggering tile loading of the most detailed level.

Prior to this release, you had to make sure that the ILspStyler which was set used a TLspFusionGeometryProvider. If this was forgotten, you would probably trigger the loading of the most detailed tiles, even when visualizing tiles at a less detailed level.

The TLpsFusionVectorLayerBuilder will now automatically ensure that the ILspStyler works with the correct geometries. Consult the class javadoc of TLpsFusionVectorLayerBuilder for more information.

This improvement has two consequences:

  • The ILspStyler which is returned by the ILspInteractivePaintableLayer#getStyler method of the created layer will no longer be the styler which was set on the builder.
  • If your ILspStyler uses an ALspStyleTargetProvider, this style target provider will no longer receive the domain objects as it was previously the case. It will receive the geometries specific to a tile instead. Consult the class javadoc of TLpsFusionVectorLayerBuilder for more information.

Upgrade considerationLuciadFusion

Coverages which were fused with asset sources in Tile Store using V2013.1 are incompatible with V2014.0.
  • The WMS server will fail on non-tiled coverages with an error on the console "Could not create model decoder for asset". WMS clients will not display anything for WMS layers corresponding to such coverages.
  • The WMS GetFeatureInfo requests will fail with a similar error on non-tiled coverages or coverages with asset sources in Tile Store. WMS clients will not display any feature info for WMS layers corresponding to such coverages.
You'll have to remove and recreate those coverages from their original input data.

Upgrade considerationLuciadFusion

With the introduction of support for non-quadtree tile matrix sets, it is no longer guaranteed that WMTS models (created via TLcdWMTSModelDecoder) contain an ILcdEarthTileSet domain object. If a layer's tile structure is not a quadtree, the created domain object (via TLcdWMTSModelDecoder) is an extension of ALcdMultilevelImageMosaic. In this case you can no longer explicitly cast the domain object to an ILcdEarthTileSet as before. If the tile structure is a quadtree, the created domain object can be casted to both ILcdEarthTileSet and ALcdMultilevelImageMosaic.

Upgrade considerationLuciadFusion

For version 2014.0, all LuciadMap customers with the appropriate maintenance contract are upgraded to LuciadLightspeed LM. This is the same product as LuciadLightspeed, but with the hardware-accelerated components disabled. With LuciadLightspeed LM, you cannot instantiate any ILspView implementation, nor use any functionality that uses such a view.

LuciadMap customers upgrading from LuciadMap 2012 or 2013 to LuciadLightspeed LM can find the release notes that are relevant to them here.

LuciadLightspeed LM is only available for customers who bought LuciadMap in the past.

Upgrade considerationLuciadFusion

The lookup table classes used for color filtering have been migrated to the new image processing API. As a consequence the following classes have been renamed:
  • com.luciad.view.lightspeed.style.imagefilter.ALspColorLookupTable to com.luciad.imaging.operator.util.ALcdColorLookupTable
  • com.luciad.view.lightspeed.style.imagefilter.TLspColorLookupTable to com.luciad.imaging.operator.util.TLcdColorLookupTable
  • com.luciad.view.lightspeed.style.imagefilter.TLspComponentColorLookupTable to com.luciad.imaging.operator.util.TLcdComponentColorLookupTable
  • com.luciad.view.lightspeed.style.imagefilter.TLspLookupTable to com.luciad.imaging.operator.util.TLcdLookupTable
The TLspColorLookupTableFilterStyle is still available but you are strongly advised to use the more general TLspImageFilterStyle instead. You can easily convert the lookup table style to an equivalent image filter by chaining TLcdColorLookup operators.

Upgrade considerationLuciadFusion

V2013.1 Tile Stores which already contain coverages with asset sources in Tile Store are not compatible with V2014.0. Opening them will succeed, but the asset sources in Tile Store will appear absent. When upgrading a server from V2013.1 to V2014.0, you need to re-fuse those coverages with asset sources in Tile Store. Any lingering files will not be removed from the server.

Upgrade considerationLuciadFusion

AssetParts now always belong to a parent asset metadata, to which they now have a reference. They can no longer be created as stand-alone instances. The constructors of RasterAssetPart and VectorAssetPart have been removed. As a result, users of any of these constructors will get compile errors which can be fixed by using either AssetPart.Builders or one of the methods addAssetPart or setAssetPart on TLfnRasterAssetMetadata.Builder or TLfnVectorAssetMetadata.Builder.

The AssetPart.Builders can be created using the method ALfnAssetMetadata.Builder.newAssetPart(). When the asset metadata is built, its asset parts will have a reference to it.

There are convenience methods TLfnRaster/VectorAssetMetadata.Builder.addAssetPart and setAssetPart, with which you can immediately add an asset part with its relevant parameters without the need to create a builder.

ALfnAssetMetadata.Builder.getAssetParts has been replaced with ALfnAssetMetadata.Builder.getAssetPartBuilders. This method allows you to inspect the properties of the asset parts being built, without the need to build the asset metadata just yet.

Upgrade considerationData Connectivity Manager

The default tile format for ELEVATION and MULTIVALUED coverages is now "image/tiff", which supports decimal values with floating point precision. This new tile format is not compatible with clients prior to V2014.0. If compatibility with old clients is required, you must set the tile format explicitly to "image/png" on the coverage metadata.

Upgrade considerationReal-time Engine

TLspPlotLayerBuilder is now available in the Lightspeed module. Please replace usages of classes in com.luciad.realtime.lightspeed.plots with equivalent classes in com.luciad.view.lightspeed.layer.plots.

The plots sample is also available in the Lightspeed module as "lightspeed.plots".

2013.1

2013.1.48

Bug fixLuciadFusion

LCD-5425
TLspRasterLayer: fixed a potential NPE when looking to a raster at a very low angle.

Bug fixLuciadFusion

LCD-5423
Calling dipose on a TLcdKML22RenderableModel will now cancel pending tasks (such as networklink updates) more thoroughly.

Bug fixLuciadFusion

LCD-5392
The 3-parameter constructor of TLcdSLDNamedLayer no longer throws an IllegalArgumentException when all three arguments are indeed valid.

Bug fixLuciadFusion

LCD-5417
Added support for the TLcdSimpleRectangular projection in TLcdWKTReferenceFormatter. This projection is encoded in the same way as TLcdEquidistantCylindrical to ensure compatibility with other systems.

Bug fixLuciadFusion

LCD-5209
Added a workaround for an Intel OpenGL driver bug that could lead to out-of-memory exceptions when frequently resizing a window containing a Lightspeed view.

Bug fixAviation Standards

LCD-5099
The TLcdAIXMDefaultLayerFactory constructors had ambiguous javadoc concerning the usage of the properties parameter. It is more clear now that the constructors use the properties parameter to configure general layer properties and styling properties as well.

2013.1.47

ImprovementLuciadFusion

LCD-5403, LCD-5404, LCD-4933
We have improved the way Networklinks are handled in KML. This is a general performance improvement for all Networklink-based KML files, especially the so called "super-overlays". (KML files where networklinks refer to a multi-level node of small GroundOverlays). This improvement also makes sure that Networklinks that become invisible, cancel their pending updates.

ImprovementLuciadFusion

The model content tree sample code is now less prone to keeping hard references to KML resources, meaning that its resources are cleaned up better after KML layers are no longer in the view.

ImprovementLuciadFusion

LCD-5377
You can now register an ILcdViewInvalidationListener to TLspAWTView, TLspSwingView, and TLspOffscreenView. Invalidation listeners can be used to get notified of view invalidation events.

Bug fixLuciadFusion

LCD-5409
Possible NPE when ending interaction with an interactive label (TLspInteractiveLabelsController) and throwing model changes at the same time.

Bug fixLuciadFusion

LCD-5402
Fixed NullPointerException that could occur on models without a region filter.

Bug fixLuciadFusion

LCD-5401
Fixed NullPointerException that could occur when trying to fit on a model node without any elements.

Bug fixLuciadFusion

LCD-5400
Fixed NullPointerException in a lightspeed view for KML that would occur when loading a Networklink was loaded "onRegion", but without a level-of-detail element. These regions are now active by default.

Bug fixLuciadFusion

LCD-5375
TLspSelectController could delegate 2 mouse pressed events to the next controller in the chain when dragging the mouse.

Bug fixAviation Standards

LCD-5336
TLcdDiscretizedLonLatGeoPath and TLcdDiscretizedLonLatOpenGeoPath no longer fail in case of incomplete GeoPath segments of type ARC_BY_EDGE; instead, a log entry is written to indicate the incomplete data. This primarily affects airspace creation and decoding, which relies on the GeoPath functionality

2013.1.46

ImprovementLuciadFusion

LF-627
The WMTS server's capabilities now skip coverages with missing assets rather than failing upon them.

Bug fixLuciadFusion

LF-626
Server startup now skips bad resources rather failing upon them.

Bug fixLuciadFusion

LF-626
When opening a TLfnFileSystemTileStore, bad resources are now skipped rather than failed upon.

Bug fixLuciadFusion

LCD-5389
Fixed NullPointerException that could occur when not setting a TLcdKML22Parameters object on a TLcdKML22DynamicModel, and using it in dynamic context for view-based data retrieval.

Bug fixLuciadFusion

LCD-5387
Resolved problem that caused Networklink to stop functioning after double clicking on a node in the model content tree that did not contain an AbstractView element.

Bug fixLuciadFusion

LCD-5384
Fixed a bug in the deploy_wcs script so that it now correctly includes the license.

Bug fixLuciadFusion

LCD-5381
TLfnFileSystemTileStore now keeps a strong reference to the ALfnEnvironment. This fixes a bug causing RejectedExecutionExceptions when the environment is garbage collected and finalized while it was still being used by the Tile Store.

Bug fixLuciadFusion

LCD-5354
TLcdGML31Vector/TLcdGML31DirectPosition/TLcdGML32DirectPosition inconsistently handled coordinates of model references with inverted axes.

2013.1.45

ImprovementLuciadFusion

LCD-5366
TLcdGXYCirclePainter/TLcdGXYEllipsePainter: improved the visualization of some cartesian-like circles.

ImprovementLuciadFusion

LF-623
Added support for fusion of multivalued coverages with odd tile dimensions.

ImprovementLuciadFusion

LCD-5121
Improved decoding of coordinates elements where 2D and 3D coordinates are mixed in a single coordinate string.

ImprovementLuciadFusion

LCD-5356
The WMS client now better copes with WMS servers that do not respect the version negotiation process. In case of issues when requesting capabilities in version 1.3.0 (e.g., a service exception report encoded as XML or as image), the client will automatically switch to 1.1.1.

ImprovementLuciadFusion

LCD-5353
TLspCreateController now only clears the existing selection when the object to create is committed.

Bug fixLuciadFusion

LCD-5364
Fixed a ClassCastException when accessing a TLcdGML2Box backed by a list of TLcdGML2Coord instances.

Bug fixLuciadFusion

LCD-5192
In some cases, grid labels would temporarily disappear.

Bug fixLuciadFusion

LCD-5259
ALspSwingLabelStyler now throws a style change event when ALspInteractiveLabelProvider throws an interactive labels change event. This means that for example the label frame (TLspLabelBoxStyle) is now correctly updated when the size of the interactive label changes.

Bug fixLuciadFusion

LCD-5360
Fixed issue in sample code of "DataModelTreeModel" class. The functionality of this class has been changed to make sure that infinite recursions due to complex super-types are avoided.

Bug fixLuciadFusion

LCD-5325
Fixed the internal auto-detection mechanism to determine the correct axis order for the EPSG:4326 (WGS 84) reference in case of a WMS 1.3.0 server; it did not work correctly yet for parent layers that did not advertise EPSG:4326 BoundingBox information.

Bug fixLuciadFusion

LCD-5355
Selection of labels with a parent label did not work correctly when using a TLspViewDisplacementStyle.

Bug fixLuciadFusion

LCD-5249
When using a TLspViewDisplacementStyle for labels, the pins did not follow the labels correctly when tilting the view.

Bug fixLuciadFusion

LCD-5086
When painting labels with a semi-transparent halo color using the convolution halo algorithm, artifacts could be visible in some cases.

Bug fixLuciadFusion

LCD-5091
When using SLD on a Lightspeed view, the opacity of the fill and halo colors of the text symbolizer was not taken into account.

Bug fixAviation Standards

LCD-5369
Due to a regression introduced by fix LCD-5269, the transition towards a CF leg sometimes produce unexpected trajectory turns.

2013.1.44

ImprovementLuciadFusion

LCD-5226
It is now possible to place lon lat grid labels to the right or above the grid line (and also to the left or below). See TLspLonLatGridStyler.Position#RIGHT (and Position#LEFT).

ImprovementAviation Standards

The robustness of 3D airspace visualization has been improved.

ImprovementDefense Symbology

LCD-5340
Made the stipple pattern for "WO-DHCB-----A--": Coastal Hydrography - Beach, more apparent to be more compliant with the MS2525b specification.

Bug fixLuciadFusion

TLspPanController: fixed a possible NPE when terminating the controller during a pan.

Bug fixLuciadFusion

LCD-5342
Fixed NullPointerException when using the TLspLonLatHeightBufferEditor for creating non TLcdLonLatHeightBuffer instances.

Bug fixLuciadFusion

LCD-5335
Subtract constant from projection number of MapInfo files if necessary.

Bug fixLuciadFusion

LCD-5329
Fixed issue with balloon positioning in a 3D Lightspeed view with altitude exaggeration.

Bug fixLuciadFusion

LCD-5255
TLcdSLDFeatureTypeStyle no longer throws an IndexOutOfBoundsException when calling #insertRuleAt with an index of 0. Previously, that exception would be thrown when its ruleCount was 0.

Bug fixLuciadFusion

LCD-5327
Prevented an IllegalArgumentException when you have a polyline (or other pointlist) with a TLspIconStyle in your model with 0 points.

Bug fixDefense Symbology

LCD-5339
The "Coastal Hydrography - Beach" symbol in MS2525b now correctly contains a stipple pattern fill for lightspeed views.

2013.1.43

ImprovementLuciadFusion

LCD-5319
TLcdGXYViewBufferedImage#setPaintExecutorService now allows combining asynchronous painting and labeling without having to rely on the Event Dispatch Thread (EDT).

ImprovementLuciadFusion

LF-391
Fusion no longer copies files smaller than 250 MiB to the system's temporary folder before fusing them. This eliminates cluttering of the temporary folder with luciad_fusion_staging* folders.

ImprovementData Connectivity Manager

LF-600
Updated sections of the LuciadFusion user's guide explaining vector and raster data fusion and their limitations.

Bug fixLuciadFusion

LCD-5308
The sample class CachingResourceMetadataResolver now correctly treats a capacity of -1 as unlimited capacity.

Bug fixLuciadFusion

LCD-5303
TLcdArcInfoASCIIGridModelDecoder did not decode files with leading spaces in the header lines or first non-header line correctly. This has been fixed.

Bug fixLuciadFusion

LCD-5304
TLcdVVJPanel no longer shows a resize cursor if the model is not editable.

Bug fixLuciadFusion

LF-587
The bounding box of the LuciadFusion WMS root layer is now the union of the bounding boxes of the child layers, rather than the whole world. If there are no child layers, the bounding box is the whole world.

Bug fixData Connectivity Manager

LF-598
The state of finished jobs is now correctly restored when loading a workspace.

Bug fixData Connectivity Manager

LF-597
The data importer now correctly handles vector data with anonymous data models.

Bug fixAviation Standards

LCD-5314
The course, turn direction and distance/duration parameters of a PI were not correctly interpreted and applied according to the ARINC 424 procedure specification.

2013.1.42

Bug fixLuciadFusion

LCD-5306
Fix array index out of bounds exception when encoding to LRDB.

Bug fixLuciadFusion

LCD-5311
Fixed problem for KML in Lightspeed views where an href to an icon would be an empty string.

2013.1.41

ImprovementLuciadFusion

LCD-5299
Lightspeed KML no longer creates linestyles if the line width is defined as 0. This is a performance optimization.

ImprovementLuciadFusion

LCD-5298
Removed the unused sample class BlockingQueryHandler. Use QueryHandler instead.

ImprovementLuciadFusion

LCD-5220
The WMTS client has been made more flexible to support WMTS servers that provide XML capabilities that are not fully compliant against the OGC WMTS 1.0 XML Schema. More specifically, a correct order of XML elements is now no longer required.

ImprovementLuciadFusion

LCD-5278
TLspBalloonManager did not paint its arrow correctly in a TLspSwingView.

ImprovementLuciadFusion

LCD-5272
ALcdBalloonManager now updates the balloon content if the current balloon descriptor changes.

2013.1.40

ImprovementLuciadFusion

LCD-5207
TLcdCADRGDirectoryModelDecoder used to significantly slow down code that uses the services mechanism to decode files. It is not registered as an ILcdModelDecoder service anymore.

ImprovementLuciadFusion

LCD-5169
The longitude range of the WGS 84 bounds advertised in the WMS capabilities are now always normalized to fit into the [-180, 180] range. Although not required by the WMS standard, it improves this interoperability with 3rd party WMS clients.

ImprovementTerrain Analysis Engine

LCD-5228
TLcdVisibilityStatus now has a toString() method for convenience.

ImprovementAviation Standards

LCD-5271
The TLcdAltitudeReference#toString() method now returns a short, well-known abbreviation for each of the listed references, for easy reuse inside a label.

Bug fixLuciadFusion

LCD-5277
The sqlite3_run.sh scripts referred to the wrong binary executable name.

Bug fixLuciadFusion

LCD-5256
TLspShapeDiscretizer now ignores shapes that contain NaN values as one of their coordinates.

Bug fixLuciadFusion

LCD-5248
When using a TLspLabelBoxStyle in combination with interactive labels (TLspInteractiveLabelsController), the frame position was incorrect.

Bug fixLuciadFusion

LCD-5250
TLspInteractiveLabelsController sometimes updated the interactive label component on a thread other than the Event Dispatch thread.

Bug fixLuciadFusion

LCD-5208, LCD-5239
TLspComplexStrokedLineStyle: small performance improvement when using the same style for more than one object. A computationally expensive initialization is no longer performed more than once for objects moving in and out of the view.

Bug fixLuciadFusion

LCD-5236
When transforming from geodetic to grid, the resulting bounds were too small in some cases when the geodetic bounds cross the date line.

Bug fixLuciadFusion

LCD-5227
TLfnTileStoreModelDecoder now throws an appropriate IOException when a coverage has an unsupported tile format, or when a coverage is not found.

Bug fixAviation Standards

LCD-5269
The transition towards a CF, PI or PT leg did not always respect the leg's turn direction.

Bug fixAviation Standards

LCD-4846
Fixed problem that would occur when opening AIXM 5.0 files with Java JDK 8.

Bug fixMaritime Standards

LCD-5276
Fixed a bug which could cause a NullPointerException when painting deleted cells.

Bug fixMaritime Standards

LCD-5233
In some cases, a few depth areas were not decoded from the cells.

2013.1.39

ImprovementData Connectivity Manager

LF-581
The DCM now attempts to make coverages WMTS compliant by default, even if the GoogleMapsCompatible scale set is not chosen. This applies when a coverage is created from assets, or when assets are added to a coverage and the coverage's properties are updated to take the new assets into account. As soon a coverage's properties geographic reference, bounding box, coverage layout or tile size are manually adjusted afterwards, WMTS compliancy may be lost again.

Bug fixLuciadFusion

LCD-5214
TLcdGXYIconPainter#edit would try to snap icons when simply clicking on them.

Bug fixLuciadFusion

LF-586
When aligning a coverage's raster to a single input asset's raster to preserve the exact input values, there was a bug due to which this scheme not always worked as expected. As a result, the exact input values were not always preserved and the coverage's disk usage was 4x bigger than necessary. This bug has now been fixed.

Bug fixLuciadFusion

LF-585
Fixed a bug in the computation of the optimal scale denominator corresponding to a vector coverage's levels.

Bug fixData Connectivity Manager

LF-585
Fixed a bug affecting the scales in the max. level combo box of vector coverage metadata.

2013.1.37

ImprovementLuciadFusion

LCD-5176
TLspPanController now has a slightly smoother pan behavior.

ImprovementAviation Standards

LCD-5180
Support has been added to create SLD styles that filter on AIXM 5 feature ID in a generic manner.

ImprovementAviation Standards

LCD-5162
Improved styling of inactive airspaces for AIXM 5.0 in Lightspeed views. Also made sure that inactive airspaces are now styled as red in AIXM 5.1 for Lightspeed views.

Bug fixLuciadFusion

LCD-4953
Fixed an issue that caused problems with Networklinks linking directly to GroundOverlay elements.

Bug fixLuciadFusion

LCD-5183
Fixed an internal exception with creation of polylines in a Lightspeed view when pressing the backspace key to go back a step.

Bug fixLuciadFusion

LCD-5172
Fixed incorrect orientation of icons when using TLspIconStyle and painting in view coordinates.

Bug fixReal-time Engine

LCD-5175
Fixed an issue in plot layers that caused objects to disappear. This happened sometimes when selecting, de-selecting and re-selecting objects.

2013.1.35

ImprovementAviation Standards

LCD-5154
The procedure leg transition between a procedure turn (PI or PT leg) and a course to a fix (CF leg) has been improved; the transition now maintains the parallellism of the procedure turn while intercepting with the next course.

ImprovementAviation Standards

LCD-5137
The AIXM procedure handler (TLcdAIXMProcedureHandler) now decodes the Runway, FATO and TLOF direction designators that can be associated with a procedure. These designators can be access via the corresponding data properties introduced in TLcdAIXMProcedureDataProperties.

Bug fixLuciadFusion

LCD-5159
When using a Text Symbolizer using point label placement, the 'AnchorPointY' value was incorrectly interpreted when used in a Lightspeed view. For example, when using an anchor point of (0.5, 0.5), the label was not centered on the point object.

Bug fixLuciadFusion

LCD-4988
TLspComplexStrokedLineStyle: using ALspComplexStroke#wave() with a relative length (WaveBuilder#lengthRelative()) produced incorrectly shaped waves.

Bug fixLuciadFusion

LCD-5149
TLcdGXYBoundsPainter: fixed a regression caused by the fix in LCD-4711.

Bug fixLuciadFusion

LCD-5145
Round-trip transformations using a grid reference with a TLcdRPCProjection did not always produce consistent results. In particular, TLcdRPCProjection.world2lonlatOnSphereSFCT() did not take the height into account.

Bug fixLuciadFusion

LCD-5144
Encoding and decoding a grid reference using TLcdRPCProjection did not work correctly.

2013.1.34

Bug fixLuciadFusion

Fixed a bug that prevented TLspOffscreenView from doing GL context sharing with an external ILcdGLDrawable.

Bug fixLuciadFusion

LCD-5103
Fixed a bug in the handling of TLsp3DIconStyles with transparency.

Bug fixLuciadFusion

ALcdAnimationManager now uses a daemon thread for its timing logic.

Bug fixLuciadFusion

LCD-5129
The label placement performance was bad when using TLspOnPathLabelingAlgorithm, TLspInPathLabelingAlgorithm or TLspCurvedPathLabelingAlgorithm on a non-culled layer, and when using a world reference with a projection that doesn't cover the entire world.

Bug fixAviation Standards

LCD-5135
Procedure leg transitions passing a fix did not always properly followed the configured fix overfly type; if a fly by was configured, a fly over was used in case of large course changes (> 120 degrees).

2013.1.32

Bug fixLuciadFusion

LCD-5100
The GeoPackage decoder can now handle empty files and files with empty tables.

Bug fixLuciadFusion

LCD-5123
Cloning of ILcdDataObjects with a property that has collection type MAP failed. This is now resolved.

Bug fixInfrastructure Standards

LCD-5090
The DGN decoder sometimes assigned wrong priorities to cells, causing paint ordering issues.

2013.1.31

ImprovementLuciadFusion

LCD-4968
ALcdScaleIndicator now allows customizing the distance shown in the scale indicator.

ImprovementLuciadFusion

TLcdDistanceFormat now allows setting a minimum and maximum fraction digit count.

ImprovementLuciadFusion

LCD-5022
TLspLonLatGridStyler now allows its labels to be oriented horizontally instead of following the orientation of the grid lines. This can be configured using TLspLonLatGridStyler#setOrientation().

ImprovementLuciadFusion

LCD-5037
TLcdGXYZoomWheelController now supports snapping to zoom levels provided by the data by holding the control key.

ImprovementAviation Standards

LCD-5052
An improvement has been made in the modeling of the ATS route domain object (see TLcdATSRoute or its data type TLcdAISDataType#ATSRoute) that enables out-of-the-box, automatic encoding of the connected route geometry to GML (e.g., via TLcdGML32ModelEncoder); in the past, only the individual route points were encoded.

ImprovementAviation Standards

LCD-5052
Due to an improvement in the modeling of the ATS route domain object (TLcdATSRoute), AIXM route data that gets exported to GML now also contains the connected route geometry, next to the individual route points.

ImprovementAviation Standards

LCD-5052
Due to an improvement in the modeling of the ATS route domain object (TLcdATSRoute), ARINC route data that gets exported to GML now also contains the connected route geometry, next to the individual route points.

ImprovementAviation Standards

LCD-5052
Due to an improvement in the modeling of the ATS route domain object (TLcdATSRoute), DAFIF(T) route data that gets exported to GML now also contains the connected route geometry, next to the individual route points.

Bug fixLuciadFusion

LCD-5116
TLcdWKTReferenceParser would throw a ParseException when parsing a WKT string using 'Stereographic_North_Pole' as projection.

Bug fixLuciadFusion

LCD-4718
In some cases, large icons that were down-scaled in the style could not be selected.

Bug fixLuciadFusion

LCD-5109
Resolved issue where decoding gzipped data files could result in decoding errors.

Bug fixLuciadFusion

LCD-2280
The labels of a lon-lat grid are now at the edge of the view as much as possible, even when changing the projection center.

Bug fixLuciadFusion

LCD-5098
TLcdGXYLspAsynchronousLayerWrapper: in some cases, the ILcdGXYLayer was not visible if Lightspeed rendering was not supported.

Bug fixLuciadFusion

LCD-5078
Improved handling of large files in TLcdDEMModelDecoder.

Bug fixLuciadFusion

The OSGi bundles created by the make_osgi_bundles script now always follow the JAR specification to the letter. More specifically, the META-INF/ and META-INF/MANIFEST.MF will now be the first zip-entries in the jar file. Some OSGi runtimes, such as Apache Karaf, require this.

Bug fixLuciadFusion

LCD-5115
TLcdGeoTIFFModelDecoder no longer decodes some pixels incorrectly.

Bug fixAviation Standards

LCD-5104
The DAFIF RefuelingTrackPoint type has a data property Navaid Type which has now values of type String in place of type TLcdNavaidType.

Bug fixAviation Standards

LCD-5105
The ORTCA painted shape is now a closed shape.

Bug fixDefense Symbology

LCD-5094
TLcdAPP6ANode#isFolderOnly returned an incorrect value for the APP6B "SOF AVIATION" and "BOTTOM RETURN/NOMBO" nodes.

Bug fixDefense Symbology

LCD-5093
TLcdAPP6aEchelonNode and TLcdMS2525bEchelonNode: improved the consistency of the possible echelon values.

2013.1.30

Bug fixLuciadFusion

LCD-5080
TLspRasterLayer: data in a cartesian reference could disappear when panning near the 180 degree meridian in a 3D view.

Bug fixLuciadFusion

LCD-5079
Fixed an issue with adding new points to a pointlist in a view with a non-georeferenced world reference, and editing it with a TLsp2DPointListEditor.

2013.1.29

ImprovementLuciadFusion

LCD-5068
When printing a GXY view, selection is now also printed.

Bug fixLuciadFusion

LCD-5069
Creating an ellipsoid with parameters different than the WGS 1984 parameters, and not explicitly specifying a name, could still result in an ellipsoid with the WGS 1984 name. This could cause problems when formatting a geo reference using this ellipsoid, and re-parsing the result.

Bug fixLuciadFusion

LCD-5057
The SHP decoder now correctly decodes files containing non-closed polygons.

Bug fixLuciadFusion

LCD-4963
WKT parser now ignores the unsupported EXTENSION block instead of failing to decode the string.

2013.1.28

ImprovementLuciadFusion

The EPSG code 2056 is now supported by default.

ImprovementMaritime Standards

LCD-5066
In some cases, an error occurred in lightspeed S-52 layers when doing model changes. It is now safe to do model updates when the layer is visible.

Bug fixLuciadFusion

LCD-5064
In some cases, data using TLcdObliqueMercator was incorrectly oriented. This was for example the case when displaying data that uses EPSG reference code 2056.

Bug fixLuciadFusion

LF-572
Fixed a bug in remote fusion causing occasional warnings "Non-empty staging directory detected in finalize()".

Bug fixDefense Symbology

LCD-5067
TLcdAPP6ANode and TLcdMS2525bNode equals did not return a correct result for folder nodes.

Bug fixDefense Symbology

LCD-5065
TLcdAPP6ANode#applyOn and TLcdMS2525bNode#applyOn would unnecessarily reset some symbol modifiers.

2013.1.27

ImprovementReal-time Engine

LCD-4997
The realtime.lightspeed.clusterLabeling was added. This sample is the Lightspeed version of the GXY clusterLabeling sample which shows how label clusters can be decluttered dynamically.

ImprovementMaritime Standards

LCD-5004
You can now specify a custom ILcdS52Symbology on TLspS52LayerBuilder. If necessary, you can also specify a custom TLcdS57ProductConfiguration or TLcdS52ProductConfiguration.

Bug fixLuciadFusion

LCD-5062
Labels depending on other labels in a different paint representation were often not updated correctly during label editing.

Bug fixLuciadFusion

LCD-5059
TLspEditController.getMultiObjectHandles() could incorrectly return multi-object handles, even when none were needed. Also, TLspMultiObjectTranslationHandle now correctly handles custom paint representations which are used to paint labels.

Bug fixLuciadFusion

LF-569
Fixed a number of bugs when cancelling the Futures of remote engines created by TLfnLFSEngineFactory.

Bug fixLuciadFusion

LCD-5049
Improved handling of DTED data sets where file names use mixed upper and lower casing in TLcdDMEDModelDecoder and TLcdDTEDDirectoryModelDecoder.

Bug fixDefense Symbology

LCD-5050
TLcdAPP6ANode: removed trailing white space from some APP6B symbol names.

2013.1.26

ImprovementLuciadFusion

LCD-4951
The XML binding framework now supports anonymous list item types.

ImprovementTerrain Analysis Engine

LCD-5034
When using OpenCL (such as for Terrain Analysis Line-Of-Sight), the Lightspeed backend now gives priority to devices that support double precision and are GPU's (in that order). This change ensures that the best device is chosen for the job, while maintaining optimal precision and performance.

Bug fixLuciadFusion

LCD-5041
Some EPSG grid references using an oblique Mercator projection (for example EPSG:2056) incorrectly transformed points.

Bug fixLuciadFusion

TLcdWKTReferenceParser could return model references containing an incorrect ellipsoid when the 'inverse flattening' value in the WKT string is 0.

Bug fixReal-time Engine

LCD-5043
In rare cases, TLspContinuousLabelingAlgorithm could throw a NPE when using sticky labels (see ALspLabelLocation#setSticky(boolean)).

Bug fixDefense Standards

LCD-5038
NSIF/NITF images defined in UPS north or south are now decoded correctly.

Bug fixDefense Symbology

LCD-5048
Military symbol icons could sometimes disappear for a moment when their content changes.

Bug fixDefense Symbology

LCD-5046
Military symbology icon labels could flicker when there was a change (ex. model change, style change, selection change, ...).

2013.1.25

ImprovementLuciadFusion

TLcdISO19115Code now has an additional 'type' property, which is required to support for XML-Java-XML roundtripping of ISO metadata.

Bug fixLuciadFusion

LCD-5013
Polylines were drawn as filled polygons in GeoJson decoder sample.

Bug fixLuciadFusion

LCD-5023
Fixed possible exception when opening a GeoPackage file in a Lightspeed view.

Bug fixLuciadFusion

LCD-5021
Fixed an overflow bug which caused SHP files larger than 1 GiB to be fused incorrectly.

Bug fixLuciadFusion

LCD-5021
Fixed an overflow bug in TLcdSHPTiler so that now SHP files larger than 1 GiB can also be tiled.

Bug fixLuciadFusion

If one ILspController would set another controller on the view in its startInteraction method, its layers would not be correctly unregistered.

Bug fixLuciadFusion

LCD-4480
The XML decoding and encoding in TLcdISO19139MetadataDecoder and TLcdISO19139MetadataEncoder have been improved: full roundtripping from XML to Java and back to XML is now possible without information loss.

2013.1.24

ImprovementLuciadFusion

LF-568
Fusion's SHP format now allows setting the character set on the model decoder. To set the character set, one must

ImprovementLuciadFusion

LCD-4842
Improved flexibility of decoding of coordinates. If the coordinates can not be parsed, the shape will resort to a default location, to allow the rest of the file to be decoded.

ImprovementLuciadFusion

ILcdGLDrawableFactory now includes a new method createExternalGLDrawable(), which allows creating an ILcdGLDrawable that is associated with an externally supplied OpenGL context. Combined with OpenGL context sharing, this feature unlocks various integration scenarios between Lightspeed views and, for instance, native windowing toolkits.

ImprovementLuciadFusion

LCD-4985
TLspNavigationControlsBuilder now has a new method #compassAndPanNavigationControl to create a compass and pan navigation control that are combined in 2D mode.

ImprovementLuciadFusion

LCD-4949
LuciadFusion environments created by ALfnEnvironment.newInstance(), ALfnClientEnvironment.newInstance() or ALfnEngineEnvironment.newInstance() are now automatically closed in finalize(). This helps to avoid resource leaks. Because there is no guarantee when the finalizer will be called, it is still recommended to close them explicitly.

ImprovementLuciadFusion

LCD-4928
Improved flexibility when dealing with namespace problems with commonly used schemas in kml: missing namespace declaration for common prefixes and unavailable remote schemas. This includes robustness when dealing with atom, xsi and gx.

Bug fixLuciadFusion

LCD-4967
ALcdBalloonManager now picks up balloon content changes better.

Bug fixLuciadFusion

LCD-5014
Fixed a bug which could cause the Tile Store to become inconsistent when frequently adding/removing a coverage with the same ID.

Bug fixLuciadFusion

LCD-5012
The shape painter could paint certain ILcdText objects incorrectly scaled and outside the ILcdText bounds.

Bug fixLuciadFusion

LCD-4843
Fixed issue with rotated icons in a GXY view. Rotation now happens in the painter instead of the icon. This implies that retrieving an icon from the KML icon provider no longer rotates the icon.

Bug fixLuciadFusion

LCD-5005
When parsing an invalid String, TLcdUTMUtil/TLcdUPSUtil could throw a StringIndexOutOfBoundsException instead of a ParseException when no coordinate separator is used.

Bug fixLuciadFusion

LF-325
A bug was fixed when cancelling the fusion engine which caused Future.cancel() to return an unreliable value. More specifically, it could cause Future.cancel() to return 'false' when it should have been 'true'.

Bug fixLuciadFusion

LCD-4999
TLcdMercator.loadProperties() and TLcdMercator.writePropertiesSFCT did not take the true scale latitude into account.

Bug fixLuciadFusion

LCD-4996
Prevented a NullPointerException when using certain Look and Feel implementations.

Bug fixLuciadFusion

LCD-4990
Fixed a NullPointerException when accessing TLcdGMLApplicationModelDecoder#canDecodeSource.

Bug fixLuciadFusion

LCD-4971
The TLcdSHPModelDecoder parsed floating point numbers as Float, which sometimes resulted in precision loss. The decoder can now be configured with setParseFloatAsDouble to use Double instead, thereby decreasing the precision loss.

Bug fixReal-time Engine

LCD-4991
Plot layers could in some cases fail to initialize their data structure when they were not in a view.

Bug fixAviation Standards

LCD-4993
Fixed issue with label-painting. In some instances the identifier would get mistaken for the type. This is now corrected.

Bug fixMaritime Standards

LCD-4975
The S-57 model decoders can now load AML V3 data. The V2 data modeling and visualization is used.

2013.1.23

ImprovementLuciadFusion

GML decoding speed has been considerably improved for certain geodetic models.

ImprovementLuciadFusion

LCD-4745
Decoding a model of a coverage from a Tile Store has now become a lot easier:
  1. Create a TLfnTileStoreModelDecoder instance using the default constructor. It uses default internal resources.
  2. Decode an ALfnTileStore using tileStoreModelDecoder.canDecodeTileStore(sourceName) and decodeTileStore(sourceName).
  3. Get the Tile Store's list of coverage IDs using tileStore.getCoverageIDs().
  4. Decode an ALfnTileStoreModel for any coverage using tileStoreModelDecoder.decode(tileStore, coverageId).

ImprovementLuciadFusion

LCD-4949
LuciadFusion environments created by ALfnEnvironment.newInstance() and ALfnClientEnvironment.newInstance() are now automatically closed in finalize(). This helps to avoid resource leaks. Because there is no guarantee when the finalizer will be called, it is still recommended to close them explicitly.

ImprovementLuciadFusion

LCD-4872
TLcdVVTerrainModel: considerably improved the efficiency when working with very large pointlists.

ImprovementAviation Standards

LCD-4467
Improved airspace labels. The background now has a greater margin to improve readability.

ImprovementDefense Symbology

LCD-4927
The label frame color and padding between the label text and the label frame can now be configured on ILcdAPP6AStyle/ILcdMS2525bStyle.

Bug fixLuciadFusion

In some cases, an ArrayIndexOutOfBoundsException could be thrown when trying to access a GML point with an empty position.

Bug fixLuciadFusion

LCD-4972
Fixed artifacts that could occur when painting a tile set in a 3D view. The issue only occurred with layers whose type is set to interactive and some a grid reference as model reference that does not cover the earth's surface completely.

Bug fixLuciadFusion

LCD-4978
The equals() and hashcode() methods of TLcdMercator and TLcdPseudoMercator did not produce correct results when modifying certain parameters.

Bug fixLuciadFusion

LCD-4976
Fixed an error in the implementation of TLspOffscreenView#resize().

Bug fixLuciadFusion

LCD-4071
GML model decoding now better supports a mismatch between srsDimension and srsName.

Bug fixLuciadFusion

LCD-4817
Some parts of the grid could disappear right of the date line. This problem was caused by the fix for LCD-3529.

Bug fixDefense Symbology

LCD-4959
The text in military symbol labels with a frame was sometimes not positioned correctly w.r.t. the frame. As a result labels could be hard to read when the frame was enabled.

Bug fixDefense Symbology

LCD-4926
The anchor point for the icon of the Marine Life symbol in APP-6A/B and MIL-STD 2525b/c was not correct; it was set to the right of the icon instead of to the left.

2013.1.22

Bug fixLuciadFusion

LCD-4947
TLspComplexStrokedLineStyle was not applied correctly to vertical edges, for example edges of extruded shapes.

Bug fixS-63

LCD-4962
Warnings are now logged 30 days in advance of S-63 cell expiry date instead of 20 days in advance.

2013.1.21

ImprovementLuciadFusion

LCD-4917
TLfnTileStoreModelDecoder can now decode tile-store.xml files as well. The file chooser of the fusion client samples now include tile-store.xml files by default.

Bug fixLuciadFusion

LCD-4937
TLspViewNavigationUtil: fixed an issue when fitting on geodetic bounds crossing the date line.

Bug fixLuciadFusion

LCD-4934
The tolerance for scale denominators used when verifying if a tile matrix set is a strict power-of-two pyramid was increased. This was necessary to accept some ArcGIS tile matrix sets that have scale denominators that are conceptually always divided by two, but have relatively large rounding errors.

Bug fixLuciadFusion

LCD-4874
The TLcdMIFModelEncoder drops features which are not a primitive type. The header was not correctly adjusted, resulting in a corrupt file. The header is now correctly adjusted when features are dropped.

Bug fixLuciadFusion

LCD-1171
Fixed incorrect encoding of TLcdMIFRegion in TLcdMIFModelEncoder

Bug fixLuciadFusion

LCD-4841
The calculation of the "Expires" HTTP header did not take into account the children of the requested layers.

2013.1.20

ImprovementAviation Standards

LCD-4478
Improved rendering of vertical structures that contain no height information in 3D views.

ImprovementAviation Standards

LCD-4479
The bounds of an AIXM5 feature will now return the bounds of the envelope if the feature does not contain any geometry. If no envelope is defined, it will return undefined bounds instead. This also implies that features without any geometry that have an envelope (such as Taxiways, Aprons and Runways) now will have a valid focus point.

Bug fixLuciadFusion

LCD-4881
Labels that are smaller than 1 pixel are now no longer painted as a small dot.

Bug fixLuciadFusion

LCD-4880
Fixed problem where the KML label painter would use the highlight style instead of the normal style state for painting labels, even when their placemarks are not selected.

Bug fixDatabase Connectors

LCD-4871
The PostGIS decoder now works with PostGIS 2.0 and 2.1. In some cases, it still used deprecated function (without ST_ prefix).

2013.1.19

Bug fixLuciadFusion

LCD-4875
The data model of MapInfo incorrectly declared the type of DateTime fields as String, this is now corrected to the Calendar type. Smallint fields were incorrectly read as Integer objects, which is now corrected to Short.

Bug fixLuciadFusion

LCD-4870
Fixed a rare NPE that could happen when querying the terrain or an image projection layer while nothing is visible.

Bug fixLuciadFusion

LCD-4868
TLspRasterLayer.query could sometimes return a TLspRasterWorldTouchInfo with an incorrect model point.

Bug fixLuciadFusion

LCD-4866
TLspFillStyle now allows enabling and disabling linear texture filtering (if a texture is present), using the builder's textureInterpolationType() method.

Bug fixLuciadFusion

LCD-4865
Improved robustness of the default raster styler for elevation data with more than 16 bits.

Bug fixLuciadFusion

LCD-4479
Abstract features no longer consider their envelope as part of their geometry, so they no longer expose it in their ILcdShapeList methods. However, abstract features without geometry still use the envelope to calculate their bounds and focus point.

Bug fixLuciadFusion

LCD-4861
TLcdSHPDataTypes now correctly maps multi points on ILcdPolypoint interface.

Bug fixDefense Standards

LCD-4847
TLcdNITFUncompressedImageDecoder now correctly decodes multiband rasters.

2013.1.18

Bug fixLuciadFusion

LCD-4337
TLspZoomController: fixed a bug in CTRL-zoom which prevented snapping to the least detailed of the two levels for layers with exactly two zoom levels.

Bug fixAviation Standards

LCD-4857
Fixed threading issue for labeled Airspace features in Lightspeed views.

2013.1.17

ImprovementLuciadFusion

LF-564
Fusion now supports ILcdPolypoints, also known as multi-points. More specifically, fusion now supports SHP files containing multi-points.

ImprovementLuciadFusion

LCD-4852
DateTime fields are now supported when decoding MAP files.

ImprovementLuciadFusion

LCD-4747
TLcdMAPModelDecoder now logs warnings for exceptions that occur during decoding of the TAB file.

ImprovementLuciadFusion

LF-160
The scale estimation for some vector formats such as SHP has been improved so that it no longer blocks the UI when adding an asset to the Tile Store.

ImprovementLuciadFusion

LF-362
The fusion WFS server now supports multiple feature types per coverage. Each of a coverage's non-core data types now corresponds to a WFS feature type, where the feature type name is a combination of the coverage ID and the data type name.

ImprovementLuciadFusion

LF-558
ALfnFormat.createAsset(ILcdModel) now returns null to indicate that the model is not supported rather than throwing IllegalArgumentException. Remember that you can check if a model is supported using ALfnFormat.isModelOfFormat(ILcdModel) before calling ALfnFormat.createAsset(ILcdModel).

ImprovementLuciadFusion

LF-289
Fusion now supports also non-square tile resolutions for elevation and multi-valued data.

ImprovementData Connectivity Manager

LF-160
Adding a large asset of some vector formats such as SHP to a Tile Store could block the UI for some time. This has now been improved.

Bug fixLuciadFusion

LCD-4855
TLspRasterLayer now ensures that high resolution ILcdRaster objects are always rendered on top of lower resolution ILcdRaster objects. Note that this ordering is on a per-layer basis; not cross-layer.

Bug fixLuciadFusion

LCD-4855
TLcdGYXLayer now ensures that high-resolution ILcdRaster objects are always rendered on top of lower-resolution ILcdRaster objects. Note that this ordering is on a per-layer basis, not cross-layer.

Bug fixLuciadFusion

LF-563
Fusion now correctly fuses SHP data sets containing only a single point.

Bug fixLuciadFusion

LF-554
Fixed a bug in the fusion WFS server which prevented fused GML data from being served as WFS.

Bug fixData Connectivity Manager

LF-188
A bug was fixed which sometimes caused fusion of additional detail to finish instantly without having fused any new data.

2013.1.16

Bug fixLuciadFusion

LF-563
Fixed several bugs affecting models with degenerate bounds (width and height 0) and models with infinite precision.

2013.1.15

ImprovementLuciadFusion

LCD-4838
The GetCoverage response generation performance has been improved for coverages that are backed by multiple rasters contained in a single model (ILcdModel).

ImprovementLuciadFusion

LCD-3658
LuciadFusion Tile Store models can now be decoded by the lightspeed.decoder and gxy.decoder samples. A Tile Store is shown as a tree layer with children for all the coverages. Only the first layer is made visible by default. All coverage types are supported, but because non-tiled coverages don't support the tiling protocol, only their bounds are painted. You can pass a Tile Store URI as command-line parameter to open a Tile Store on startup.

Bug fixLuciadFusion

LCD-4714
Improved robustness when visualizing and fitting on data with unsupported model references.

Bug fixLuciadFusion

LCD-4839
String features are now truncated to 254 bytes in the TLcdSHPModelEncoder, longer features resulted in a corrupt dBase file.

Bug fixLuciadFusion

LCD-4840
Improved handling of GeoTIFF images with a SampleFormat tag containing the 'undefined data format' (4) value.

Bug fixLuciadFusion

LCD-4835
CGM font decoding: decoder does not rely on separators or word ordering anymore.

2013.1.14

Bug fixLuciadFusion

LCD-4824
You can now create new elements for use in a database model using newInstance() on its data type, instead of creating a custom domain object. The new instance will be a TLcdDataObjectShapeList. You can get the datatype using TLcdDatabaseModelDescriptor.getModelElementType().

Bug fixLuciadFusion

LCD-4823
In some cases, it was not possible to add a new element to a database model.

2013.1.13

ImprovementLuciadFusion

LF-543
It is now possible to select a tile combining strategy for elevation data which takes the maximum of contributing values rather than the average. This strategy can be configured on the TLfnEngineFactory.RasterSessionBuilder. This feature can only be used with local engines, and can only be configured using a deprecated engine session. There is no equivalent configuration method on the coverage metadata.

Bug fixLuciadFusion

LCD-4791
Fixed issue with passing a viewFormat template to a server. The viewFormat no longer becomes corrupted due to missing parameters. Added defaults for all parameters mentioned in KML specification. For 2D, some of these will default to 0 however. For example [cameraAlt], [lookatTerrainAlt], [horizFov] and [vertFov]. These have no meaning in a 2D view. To override this behavior, you can customize TLcdKML22GXYViewParametersUpdater.

Bug fixLuciadFusion

LF-553
Fixed duplicate weblogic.xml and sun-web.xml files in LuciadFusion.war.

Bug fixLuciadFusion

LF-552
Fixed an incompatibility with GlassFish 4.

Bug fixLuciadFusion

LF-551
Fixed a broken link to the OGC Web Server Suite developer's guide in the HTML documentation.

Bug fixReal-time Engine

ALcdTimeIndexedSimulatorModel: the init method now takes the appropriate write locks before modifying the given track model.

Bug fixReal-time Engine

LCD-4815
ALcdTimeIndexedSimulatorModel: the write lock on the track model is now unlocked before firing the model changes. This prevents a certain class of dead locks.

Bug fixReal-time Engine

LCD-4804
TLcdTrackModel: the model bounds now also include the height information when the contained elements also contain height.

2013.1.12

ImprovementLuciadFusion

LCD-4783
The WCS server has been updated with support for coverages that are backed by multiple rasters contained in a single model (ILcdModel). Based on the supplied area of interest and resolution parameters, the WCS server now takes into account all raster instances found in a model to calculate the resulting GeoTIFF raster.

ImprovementLuciadFusion

LCD-4007, LCD-4781
TLcdSHPModelDecoder and TLcdSHPModelEncoder are now configurable to trim feature names or not.

Bug fixLuciadFusion

LCD-4801
TLspModelElementTrackingPointProvider did not work correctly in 3D when tracking ILcdOriented instances that did not implement ILcd3DOriented.

2013.1.11

ImprovementLuciadFusion

LCD-4660
Added extra functionality to TLcdKML22GXYPainterProvider to be able to set a default loading icon while loading point- based placemarks. By default this is null, which means that there is no default loading icon (as before).

ImprovementLuciadFusion

LCD-4676
For Lightspeed views: Floating GroundOverlays with transparency used to obscure shapes rendered below them. This has now been fixed. This only affects GroundOverlay elements that were not clamped to ground.

ImprovementLuciadFusion

LCD-4764
TLcdCGMGXYPainterProvider now supports ILcdMultilevelRaster.

ImprovementLuciadFusion

LCD-4731
The Earth GXY raster painter now supports caching the warped image. This increases memory usage but can improve performance when there are multiple Earth rasters in the view whose model reference does not match the view's world reference.

ImprovementLuciadFusion

The TLcdGML31Measure and TLcdGML32Measure types now have an additional 'type' property, which is required to support for XML-Java-XML roundtripping of ISO metadata.

ImprovementLuciadFusion

LCD-3618
Fitting on ILcdGXYViews now takes the rotation into account.

Bug fixLuciadFusion

The target property of TLcdGML31Observation and TLcdGML32Observation was incorrectly mapped to QName, this is now changed to TLcdGML32AbstractGML, which corresponds with the GML Schema definition. The getter and setter methods for the property are updated accordingly.

Bug fixLuciadFusion

LCD-4775
Improved 3D fitting when using TLspViewTransformationUtil or TLspViewNavigationUtil with very narrow or wide bounds.

Bug fixLuciadFusion

LF-550
Fixed a bug in the WMS rendering of fused ECDIS data which could cause overscale indicators to be rendered on WMS GetMap results at a scale where none are expected yet. This bug affected tiled ECDIS coverages with GetFeatureInfo enabled.

Bug fixLuciadFusion

LCD-4773
Fixed a rare NPE that could happen when querying touch info or bounds for objects painted with TLspShapePainter. The NPE could occasionally occur when creating measurements with TLspRulerController.

Bug fixLuciadFusion

LF-548
Fixed a backwards incompatibility in the fusion engine so that it now correctly picks up the GXY layer factory of legacy ALfnFormat extensions.

Bug fixLuciadFusion

LCD-4755
Fixed issue that would cause some KML files with Networklinks to keep updating, even after they were disposed. The TLcdKML22RenderableModel.dispose() method now iteratively disposes internal resource updaters.

Bug fixLuciadFusion

LCD-4769
A NoClassDefFoundError could be thrown when not adding JAI as a dependency, for example when using the ruler controller.

Bug fixLuciadFusion

LCD-4765
Fixed a bug in the encoding of LTS XML files, which could cause duplicate 'lts' prefix definitions in the XML data, in case another StAX implementation than Woodstox was used.

Bug fixLuciadFusion

LF-547
Fixed a bug in the fusion of S-57 data, which could cause the resulting coverage to be too detailed/not detailed enough in some areas.

Bug fixLuciadFusion

LCD-4760
TLcdLonLatCircularArcByBulge was not correctly visualized when using a bulge of 0. This was a regression caused by the fix for LCD-4436.

Bug fixLuciadFusion

LF-545
Fixed a bug when fusing points into a coverage with bounds that wrap around the date line. In some cases, fused points could end up squashed against the left edge of a tile. This has now been fixed.

Bug fixLuciadFusion

LCD-4753
Encoding a decoded GeoJson file with an id field resulted in incorrect results or errors when using TLcdSHPModelEncoder or TLcdMIFEncoder.

Bug fixLuciadFusion

LCD-4766
TLspRulerLabelStyler could not be used with a custom ALspRulerMeasurement.

Bug fixLuciadFusion

LF-376
Improved memory consumption when fusing very large S-57 catalogues. A maximum heap of 1 GB now suffices when fusing the full NOAA data, where previously 3 GB was needed.

Bug fixReal-time Engine

When visualizing data using a plot layer (TLspPlotLayerBuilder) in 3D, the data could be culled sooner than needed.

Bug fixMaritime Standards

Some AML attributes (PRODCT,sorfir,sorlst) did not have display names for their attribute values. This has been fixed.

2013.1.10

ImprovementDefense Symbology

LCD-4667
A new modifier sFrameShapeModifier has been added to the domain object interfaces ILcdAPP6ACoded and ILcdMS2525bCoded, and refers to the extra icon decorations introduced by affiliation and battle dimension settings - for instance, the J and K characters respectively introduced by the Joker and Faker affiliations. The new modifier can be used to enable or disable its visualization through the method setLabelEnabled in the style interfaces ILcdAPP6AStyle and ILcdMS2525bStyle.

Bug fixLuciadFusion

LCD-4761
Due to a driver bug, painting label pins or curved labels could cause a VM crash on certain hardware. A workaround was added for this.

Bug fixLuciadFusion

LF-501
Fixed a bug in area simplification so that it no longer removes points and lines, it only operates on areas now.

2013.1.09

Bug fixDefense Symbology

LCD-4757
Military Symbology labels (text icons) were always recalculate on model updates when using a Lightspeed view, even when the content doesn't change.

2013.1.08

ImprovementLuciadFusion

LCD-4749
Added to ability to specify the character set on the TLcdMAPModelDecoder.

ImprovementLuciadFusion

LCD-4746
TLcdGXYZoomNavigationControl's response to clicks has been improved.

ImprovementLuciadFusion

LCD-620
The XML encoders and decoders now support the xsi:type construct. Full roundtripping from XML to Java and back to XML without information loss is now possible for XML documents containing xsi:type constructs.

Bug fixLuciadFusion

LCD-4744
TLcdSHPModelDecoder did not always respect the decoding bounds that were set.

Bug fixLuciadFusion

LCD-4740
Fixed CGM font decoding: supported fonts are now correctly mapped to system font families.

Bug fixLuciadFusion

LCD-3404
XML-based model decoders now throw an IOException with a detailed message in case the decoded object was not an ILcdModel, instead of a ClassCastException.

Bug fixLuciadFusion

LCD-4754
Style changes were not propagated correctly when relying on the default shape painter selection styler. This resulted in the change not being applied for selected shapes.

2013.1.07

ImprovementReal-time Engine

LCD-4696
Label editing is now supported for plot layers. See TLspPlotLayerBuilder#labelEditable() and TLspPlotLayerBuilder#labelEditor().

Bug fixLuciadFusion

LCD-4717
The shape painter's vertex buffer resources could remain in the OpenGL resource cache, even if not needed anymore. This has been fixed.

Bug fixLuciadFusion

LCD-4721
TLcdGXYPointListPainter#getTouchedPoint did not work correctly for point lists with only one point. In some cases, this prevents snapping to work during creation of a point list.

Bug fixLuciadFusion

LCD-4743
ALspToggleStyler did not correctly propagate style change events. This could prevent the updating of editing handles.

Bug fixReal-time Engine

LCD-4329
When using the continuous labeling algorithm and configuring parent and child labels, the child labels could push the parent labels away.

2013.1.06

Bug fixLuciadFusion

LCD-4961
The table gpkg_geometry_columns is now only required for GeoPackages containing feature data types.

Bug fixLuciadFusion

LCD-4958
GeoPackage decoder now correctly derives zoom level information from the gpkg_tile_matrix table.

Bug fixLuciadFusion

LCD-4725
Fixed potential NPE that could occur while editing labels with the TLspGXYLayerAdapter

Bug fixLuciadFusion

TLspImageProjectionLayerBuilder created layers with their LayerType set to BACKGROUND. This could result in a seemingly illogical painting order w.r.t. other layers. The layer type is now set to INTERACTIVE instead.

Bug fixLuciadFusion

LCD-4696
TLspEditController now doesn't fire model changes anymore when editing labels.

Bug fixRadar Connectors

TLcdASTERIXCategory30: The definition of the "Reserved Expansion Field" has been fixed. Before this fix, the presence of such an item could cause exceptions when reading the value for it.

Bug fixRadar Connectors

LCD-4675
TLcdASTERIXLiveDecoder: the methods initDecode and decodeBlockSFCT now allow you to process the live ASTERIX data on the AWT thread. This way you can follow the threading guidelines for LuciadMap.

2013.1.05

ImprovementLuciadFusion

LCD-4590
When connecting to a WMTS service using the decoder sample, the first layer (if any) is set visible by default.

ImprovementLuciadFusion

LCD-4470, LCD-4656
When there is an error retrieving tiles from a WMTS service, the full stack trace is no longer logged on the default log level, but on the trace log level. Additionally, the reason is now rendered on a transparent tile together with the layer ID.

ImprovementRadar Connectors

LCD-3781
TLcdASTERIXFinalModelEncoder: ASTERIX models can now also be saved in the plain asterix format instead of only in the ASTERIX Final format.

Bug fixLuciadFusion

LCD-4711
TLcdGXYBoundsPainter: in some cases, extraneous lines were painted for bounds bordering the view.

Bug fixLuciadFusion

LCD-4707
In some cases, the view performance MBean could throw a NoSuchElementException.

Bug fixLuciadFusion

LCD-4705
Fixed a bug in the decoder sample which could cause layers to be ordered incorrectly for custom layer factories.

Bug fixLuciadFusion

LCD-4694
Fixed lighting and fog for an Earth terrain with data draped on top of it.

Bug fixDefense Standards

LCD-4698
Fixed an error in the coordinate transformation of southern UTM zones.

Bug fixRadar Connectors

LCD-1595
TLcdASTERIXModelDecoder: the time information in raw asterix files is now interpreted correctly. Such files containing ASTERIX records before and after midnight will now be decoded correctly.

2013.1.04

ImprovementLuciadFusion

LCD-4692
A TLfnTileStoreModelDecoder constructor was added which takes a TLfnTileStoreProvider instance as a parameter, to promote reuse and sharing of a TLfnTileStoreProvider instance.

ImprovementLuciadFusion

LCD-4677
Balloon managers now always revalidate their balloons whenever there is a change. This prevents balloons from becoming blank.

ImprovementDefense Standards

LCD-4424
Support for older SENSRB files has been restored. Files that fail to decode using the 2011 specification will fall back to the 2009 draft.

Bug fixLuciadFusion

LCD-4674
TLcdCGMModelDecoder did not correctly determine the sweep angle for arcs, resulting in the incorrect rendering of circular and elliptical arcs. These arcs are now rendered correctly.

Bug fixLuciadFusion

LCD-4690
Fixed a bug in the WMTS client which caused layers with non-square tiles to be painted incorrectly (overstretched).

Bug fixLuciadFusion

LCD-4501
Fixed a memory leak that occurred in shape layers when using frequently changing textured TLspFillStyles.

Bug fixLuciadFusion

LCD-4693
TLspLabelPainter.getLabelIDs() could (temporarily) return an incorrect amount of labels. This could for example cause label editing to work less reliably in some cases.

Bug fixLuciadFusion

LCD-4691
Fixed a bug which could cause a NullPointerException when asking TLfnTileStoreModelDecoder.canDecodeSource with a URI such as http://localhost:8081/LuciadFusion/lts.

Bug fixLuciadFusion

LCD-4689
In some rare cases, objects could disappear when they were selected or de-selected.

Bug fixLuciadFusion

LCD-2007
TLspViewNavigationUtil: the center and fit actions now cancel already running navigation animations.

Bug fixLuciadFusion

LCD-4685
TLcdGeoTIFFModelDecoder and TLcdGeoTIFFModelEncoder now work correctly in environments using partitioned class loading (NetBeans, OSGi, servlet containers).

Bug fixLuciadFusion

LCD-4648
Made CGM line dash patterns easier to distinguish.

Bug fixLuciadFusion

LCD-4665
Fixed a bug when decoding models from a Windows network paths such as file:////SERVER/TileStore?COVERAGE_ID=coverage.

Bug fixLuciadFusion

LCD-4681
Fixed out-of-bounds error when a tile set is not completely visible in the view's world reference.

Bug fixMaritime Standards

LCD-4697
Sometimes, in a Lightspeed view, the safety contour was not updated on the view when the property in the display settings changed.

2013.1.03

ImprovementLuciadFusion

LCD-4208
TLcdGXYPointListPainter can now be configured to change the winding rule that determines the inside of self-intersecting polygons.

ImprovementLuciadFusion

LCD-4249
Added a UI widget to the various WMS client samples to control the visibility status of the layers offered by an OGC WMS server. In the past, all layers were loaded by default.

ImprovementLuciadFusion

A new method has been added on ALfnEnvironment, configureDataModel(TLcdDataModel), which allows to register extension data models on the Fusion environment. The primary use case is plugging in extension data models (custom XML Schema's) for ISO 19139 metadata.

Bug fixLuciadFusion

LCD-124
Fixed some isTouched inconsistencies with filled shapes in an ILcdGXYView.

Bug fixLuciadFusion

LCD-4658
Fixed NullPointerException that would occur when trying to paint a GroundOverlay that has no LatLonBounds. This has been changed to a logging warning. The element will still be added to the model, but it will not be visualized.

Bug fixLuciadFusion

LCD-4669
TLcdScaleFormat could parse strings representing a negative scale (e.g. "-1 : 3000" ), and returned a negative double for it. Such a scale is meaningless, and is no longer parsed by the format.

Bug fixLuciadFusion

LCD-4666
Label pins were incorrectly updated when using labels with a world orientation.

Bug fixLuciadFusion

LCD-4663
In some cases, shapes were drawn with less accuracy than expected when zooming in. This is now resolved.

Bug fixLuciadFusion

LCD-4661
Fixed a bug preventing hatched fill styles to be used in CGM models.

Bug fixMaritime Standards

LCD-4664
The safety contour color was not updated when the S-52 color scheme changed; this has been fixed now.

2013.1.02

Bug fixLuciadFusion

LF-542
Fixed a threading issue which could cause the depth contours of ECDIS data to be fused with slightly wrong colors.

Bug fixLuciadFusion

LCD-4657
Fixed problem with cloning of TLcdKML22Polygon, which could cause a StackOverflowException.

Bug fixLuciadFusion

LCD-4319
MGRS grid: Some labels, located at a negative height, could be turned upside down at a certain scale in 3D.

Bug fixLuciadFusion

LCD-3626
Labels following a line using points with a non-zero height could temporarily detach from the line.

Bug fixLuciadFusion

LCD-4346
A bug was fixed in the WMTS client which caused failure to connect to some RESTful WMTS services.

2013.1.01

ImprovementLuciadFusion

LF-541
The fusion WMTS server now accommodates a limitation of ArcGIS clients, so that it is now compatible with them.

ImprovementLuciadFusion

LCD-4314
GML 3.2 now imports identifiers with the "urn:uuid:" codespace as lower-case.

ImprovementLuciadFusion

LCD-473
TLcdEarthTileRepository: added setModelReference method. This method initializes the bounds to the correct type (e.g. TLcdXYBounds vs TLcdLonLatBounds). Previously the bounds were always for a cartesian reference. TLcdEarthRepositoryModelDecoder and TLcdEarthRepositoryModelFactory automatically initialize this property.

ImprovementLuciadFusion

LCD-4183
Certain unambiguous units of measure now supported both in uppercase and lowercase, to increase data compatibility.

ImprovementLuciadFusion

LCD-4587
TLcdCompositeCurve.getFocusPoint() always returned a lon-lat point, even when the curve consisted of XY shapes. It now returns a point of the appropriate type.

ImprovementLuciadFusion

LCD-4145
It is now possible to pass an EPSG code to TLcdEPSGGeodeticDatumFactory.

ImprovementLuciadFusion

LCD-4296, LCD-4489, LCD-3828, LCD-3825
Several improvements and fixes for the lightspeed.limitnavigation sample:
  • The constraints used to limit navigation now handle movement along the border of the area of interest much better.
  • The navigation constraints now handle changing the world reference better.
  • The navigation constraints now do not use the area of interest constraint if the area lies completely outside the projection bounds.

ImprovementLuciadFusion

LCD-4446
Made balloons more robust after they become visible without any content.

ImprovementLuciadFusion

LF-505
The fusion WFS server now overcomes a limitation of ArcGIS clients so that it is now compatible with them. The feature type name is now the same as the GML element name, as required by ArcGIS clients. Because of the extra restrictions on the characters allowed in a feature type name, the feature type names may now be different from the coverage IDs: certain characters in the coverage ID are now escaped. This means that feature type names may have changed after upgrade.

ImprovementLuciadFusion

LCD-549
The XML built-in type parser now attempts to reuse already parsed instances of some data types, to reduce the overall memory footprint of decoded XML data.

ImprovementDefense Standards

LCD-4469
TLcdNITFModelDecoder now uses a better sub-tile size when decoding JPEG2000 files.

ImprovementS-63

LCD-4393
TLcdS63ModelDecoder.canDecodeSource() now additionally checks whether a cell permit is available for the given source; if no cell permit is available, it returns false.

Bug fixLuciadFusion

LCD-4245
In some cases, a TLcdDatabaseModel did not extend its bounds when an object was moved outside its original bounds.

Bug fixLuciadFusion

LCD-4463
In some cases, TLcdTransformedHeightProvider incorrectly returned NaN when using a delegate height provider defined in a geodetic reference.

Bug fixLuciadFusion

LCD-4507
A bug in one of the constructors of TLcdWMSClient has been fixed. This fixes a NullPointerException, occurring when configuring an SLD layer descriptor on a TLcdWMSGetMapRequest that was created by the TLcdWMSClient.

Bug fixLuciadFusion

LCD-5968
Improved TLspRulerController robustness. Before ruler measurement lines or labels could disappear sporadically when creating new measurements. This has been fixed.

Bug fixLuciadFusion

LCD-3837
The pin from a balloon to its corresponding object is now properly rendered when printing the view.

Bug fixLuciadFusion

LCD-4085
getEndTangent2D() of TLcdXYPolygon, TLcdLonLatPolygon, TLcdXYCompositeRing and TLcdLonLatCompositeRing returned incorrect results.

Bug fixLuciadFusion

LCD-4616
Fixed flickering of labels when their content frequently changes.

Bug fixLuciadFusion

LCD-4617
A bug in the encoding of SLD Styled Layer Descriptors in TLcdWMSGetMapRequest, causing TLcdWMSGetMapRequest.setStyledLayerDescriptor() to throw a NullPointerException, has been fixed.

Bug fixLuciadFusion

LCD-3398
TLspLonLatGridLayerBuilder did not allow disabling labels by setting the styler to null.

Bug fixLuciadFusion

LCD-3529
TLspLonLatGridLayerBuilder created a set of lon lat lines that don't include the grid origin when using some spacings.

Bug fixLuciadFusion

LCD-4613
TLcdXYEllipse.computePointSFCT returned incorrect points.

Bug fixLuciadFusion

LCD-4438
TLspWorldSizedLineStyle#asBuilder() did not copy the Z order and texture properties. TLspStrokedLineStyle#asBuilder() did not copy the Z order properties.

Bug fixLuciadFusion

LCD-4597
Fixed a bug when using WFS transaction requests to populate an empty GML model.

Bug fixLuciadFusion

LCD-4085
TLcdLonLatLine.getTangent2D(1.0) and getEndTangent2D() returned incorrect results.

Bug fixLuciadFusion

LCD-3452
MGRS grid: some labels could have an incorrect rotation after switching the world reference.

Bug fixLuciadFusion

LCD-4456
Raster data could sometimes disappear when partially outside the view.

Bug fixLuciadFusion

LCD-4607
TLspSLDStyler didn't handle labels of moving domain objects well, possibly leaving a trail of labels.

Bug fixLuciadFusion

LCD-4608
Possible deadlock when using TLspSLDStyler for dynamic models.

Bug fixLuciadFusion

LCD-3061
TLspLabelPlacer could perform a label placement, even after removing it from the view.

Bug fixLuciadFusion

LCD-4436
TLcdLonLatCircularArcBy3Points did not always intersect with its three defining points.

Bug fixLuciadFusion

LCD-3932
TLcdEllipsoid.geodesicPointSFCT() did not interpolate the longitude value when interpolating two geodetic points that are both located on the same pole. This could cause artifacts in projections where the pole is represented by a line instead of a point (for example TLcdEquidistantCylindrical).

Bug fixLuciadFusion

LCD-2056
Fixed a memory leak when using a Lightspeed view with a geocentric reference.

Bug fixLuciadFusion

LCD-2631
Geobuffer contour calculations could fail when one of the baseline points lies on one of the poles.

Bug fixLuciadFusion

LCD-4487
TLcdGeoPackageModelDecoder.commit() and TLcdGeoPackageModelEncoder.save() now set the generated id on newly added elements.

Bug fixLuciadFusion

LCD-3620
Possible OutOfMemoryError when enabling halo for label pins and using the in- or on-path labeling algorithm.

Bug fixLuciadFusion

LCD-4482, LCD-3058
Fitting on multiple layers and on special layers has been made more robust.

Bug fixLuciadFusion

LCD-4458
Zooming in on an MGRS grid in 3D could cause an out of memory exception.

Bug fixLuciadFusion

LCD-4506
The SRS name is now encoded in the GML envelope. It is no longer repeated for each individual feature. This reduces bandwidth for WFS GetFeature responses.

Bug fixLuciadFusion

LCD-4508
TLcdGXYDensityLayer: it did not always respect the color specified to be used at index 0, depending on the specific values and colors that were used.

Bug fixLuciadFusion

LCD-4182
TLcdGML32ArcByCenterPoint did not always respect conversion on axis order. The angles also had to be recalculated: This now happens correctly.

Bug fixLuciadFusion

LCD-4395
Fixed possible deadlock when removing a layer while the view is being painted.

Bug fixLuciadFusion

LCD-4484
Fixed a bug when opening Tile Stores on a Windows network path such as \\SERVER\Path.

Bug fixLuciadFusion

LF-516
Fixed a bug in the server's backwards-compatibility with V11 clients.

Bug fixLuciadFusion

LCD-4584
TLcdGXYViewMeasureProvider is now thread-safe, as long as it uses thread-safe delegate measure providers.

Bug fixData Connectivity Manager

LF-296
Fixed a bug in the selection highligting of the tile store tree when drag-and-dropping multi-selected items.

Bug fixData Connectivity Manager

LF-539
Fixed a bug when dropping multiple assets in between coverages.

Bug fixData Connectivity Manager

LF-527
Fixed a bug which caused an ArrayIndexOutOfBoundsException to be logged on the console when dragging an asset beyond the empty coverages node.

Bug fixData Connectivity Manager

LF-518
A bug was fixed in the automatic grouping of vector assets which could lead to "No matching coverage data model" errors when fusing later on. The affected assets are those which have data models with empty data types (data types that have no properties).

Bug fixData Connectivity Manager

LF-510
A bug was fixed which caused an exception when adding a VPF layer tree node to the Tile Store. In general, it is now possible to add layer tree nodes to a Tile Store or a coverage, either via drag-and-drop or via the tool bar action.

Bug fixDatabase Connectors

LCD-4485
In some cases, the MSSQL decoder didn't set the key auto-generated by the database back on the java objects that were inserted.

Bug fixAviation Standards

LCD-4483
Fixed NPE that could occur when previewing an AIXM 5.x file with Navaids with limited time-span.

Bug fixAviation Standards

LCD-4520
Fixed a potential error in TLcdProcedureGeometryCalculator when connecting CI and AF legs in cases where the latter has a very large radius.

Bug fixDefense Standards

LCD-4469
TLcdNITFModelDecoder can now decode files larger than 2 GB.

Bug fixDefense Standards

LCD-4469
TLcdNITFModelDecoder now supports drag-n-drop when decoding JPEG2000 files.

Bug fixDefense Standards

LCD-4469
TLcdNITFModelDecoder now correctly orders the rasters in the resulting multilevel raster when setDecodeMultilevelRasters(true) is used for JPEG2000 files.

Bug fixDefense Symbology

LCD-4610
The labels for the Non-Submarine symbol in APP-6B (1.X.5.4) were not shown on a map.

Bug fixDefense Symbology

LCD-4594
The possibility to use Unknown affiliation has been added to the APP-6A/B MOOTW symbols Refugees (2.X.3.4.1) and Safe House (2.X.3.4.2). These symbols were previously restricted to respectively friend, neutral and friend, hostile.

Bug fixMaritime Standards

LCD-3339
The memory consumption of TLcdS52GXYCatalogueLayer has been reduced; this is most noticeable when panning around in large catalogues.

Bug fixMaritime Standards

LCD-3964
Catalogues can now be rendered when the S-57 meta object class Coverage (M_COVR) has been excluded from decoding. This may affect performance though, as the M_COVR information is used to optimize rendering performance.

Bug fixMaritime Standards

LCD-4019
The angles of light sectors were computed incorrectly for some projections; this has been corrected.

Bug fixMaritime Standards

LCD-4287
Full light sector lines are no longer drawn when the the map scale is smaller than the SCAMIN value of the light sector.

Bug fixMaritime Standards

LCD-3975
Some S-52 icons were being chopped off 1 pixel at their border due to rounding errors. This has been fixed.

Bug fixMaritime Standards

LCD-4066
Icons of two-way route parts (TWRTPT) and currents (CURENT) are now properly rotated when the map is being rotated.

Bug fixRadar Connectors

Records that do not contain any location data are now discarded. This way, more asterix files can be decoded without visual artifacts.

Bug fixRadar Connectors

LCD-4502
TLcdASTERIXCategory21: the target address is now used as the ID of a trajectory. This way, more files containing category 21 data can be decoded. The TargetIdentification of a trajectory can now be changed using the setValue method of TLcdASTERIXTrajectory.

2013.1

ImprovementLuciadFusion

LCD-4464
Improved the rounding behavior of certain scaled vector icons.

ImprovementLuciadFusion

LCD-4440, LCD-4457
Updated the DescribeCoverage response with a RectifiedGrid description and reorganized the request CRS listing to improve support for non-compliant OGC clients.

ImprovementLuciadFusion

LCD-4452
Improved the rendering quality of certain vector based icons.

ImprovementLuciadFusion

LCD-4441
Latency has been reduced when submitting multiple objects to TLspShapePainter's style collector.

ImprovementLuciadFusion

LCD-4416, LCD-3089
Any model changes that happen on a non-EDT thread while a model is being edited with a TLspEditController will now be scheduled on the EDT thread internally to prevent threading issues.

ImprovementLuciadFusion

LCD-4408
TLcdCartesian now contains a method that makes it possible to calculate a point inside a polygon, but not inside a list of other polygons, see TLcdCartesian.computeInsidePoint().

ImprovementLuciadFusion

LCD-4373
It is now possible to configure an expiry date on a WFS feature type (TLcdWFSFeatureType). This information is used to fill in the "Expires" HTTP header on the response of a GetFeature and GetFeatureWithLock request.

ImprovementLuciadFusion

LCD-4374
It is now possible to configure an expiry date on a WMS layer (ALcdWMSLayer). This information is used to fill in the "Expires" HTTP header on the response of a GetMap and GetFeatureInfo request.

ImprovementLuciadFusion

TLfnWMSLayerFactory now uses the DTED color model by default for the styling of elevation layers. For the styling of elevation layers, you should by preference pass an ILcdColorModelFactory to its constructor rather than a TLcdColorMap.

ImprovementLuciadFusion

The TLspTouchSelectEditController#selectWhat method now returns a set containing all available paint representations in the view.

ImprovementLuciadFusion

The Fusion WMS server now supports serving S-57 data with pixel-perfect rendering at any scale. This feature will automatically be enabled for coverages that have been fused with asset sources in Tile Store. You can combine this with a tile structure or not, depending on the use case.
  • Standard tiled coverage: for serving pre-rendered S-57 tiles. Pixel-perfect rendering is limited to a fixed style, a set of discrete scales and a fixed geographic reference. Supported protocols are WMS, WMTS and LTS.
  • Tiled coverage with asset sources in Tile Store: same as above, plus the flexibility to use client-side WMS styling. Supported protocols are WMS, WMTS and LTS.
  • Non-tiled coverage (always with asset sources in Tile Store): for serving pixel-perfect S-57 images at any scale, in any geographic reference, with any style. There are no pre-rendered tiles. WMS is the only supported protocol.

ImprovementLuciadFusion

TLcdLayerTree now allows setting the minimum visible row count, which affects its preferred size in a scroll pane. This behavior is especially useful when overlaying a JTree on a map, where you want to prevent unused empty space, but you also want to allow it to grow when needed.

ImprovementLuciadFusion

LCD-2088
ALspViewXYZWorldTransformation has a new method getGeodeticVisibleArea(), which returns a polygon that bounds the currently visible area of the world. An example usage of this method can be seen in the new Map Overview sample (samples.lightspeed.mapoverview).

ImprovementLuciadFusion

TLspShapeLayerBuilder now uses an object view margin of 32 pixels by default.

ImprovementLuciadFusion

NimbusTouchLookAndFeel (sample code) now uses larger slider thumbs.

ImprovementLuciadFusion

LCD-4168
Added support to the ALcdGXYPen implementations and TLcdGXYShapePainter for visualizing ILcdCurve implementations.

ImprovementLuciadFusion

Added support for ASCII Raster Format files (*.asc). Such files can be decoded into an ILcdModel with the TLcdArcInfoASCIIGridModelDecoder.

ImprovementLuciadFusion

LCD-253
TLcdGXYBusyLayerTreeNodeCellRenderer now also takes into account the busy status of layers of which the painter provider implements ILcdStatusSource.

ImprovementLuciadFusion

TLcdEarthGXYRasterPainter and TLcdEarthGXYMultivaluedRasterPainter now send out status events when retrieving raster tiles.

ImprovementLuciadFusion

TLcdMercator now allows changing its latitude boundaries.

ImprovementLuciadFusion

Added parser and formatter for PROJ.4 parameter strings (see com.luciad.reference.format.TLcdProj4ReferenceParser/Formatter).

ImprovementLuciadFusion

TLspComplexStrokedLineStyle was introduced. This new style makes it possible to use complex strokes to visualize shapes. This style makes it possible for example to repeat stroke patterns along the line, add decorations at the start or end, such as arrow heads, and more. See samples.lightspeed.style.strokedline for examples of how to use it.

ImprovementLuciadFusion

During creation, TLspGeoBufferEditor now chooses a better initial width of the buffer. It is now based on the distance of the first segment of the base line.

ImprovementLuciadFusion

TLcdISO19139MetadataDecoder and TLcdISO19139MetadataEncoder now support decoding and encoding of data using ISO19115 extension schema's. Custom extensions can be plugged in by generating a TLcdDataModel from the extension schema(s) using TLcdXMLDataModelBuilder, and providing this data model to the decoder or encoder constructor.

ImprovementLuciadFusion

The ISO19115 Metadata model has been extended with the ISO GMX types. TLcdISO19139MetadataDecoder and TLcdISO19139MetadataEncoder have been extended to support decoding and encoding from these types.

ImprovementLuciadFusion

The LVDB (LuciadMobile Vector Database) and LRDB (LuciadMobile Raster Database) format support was moved from LuciadMobile. These formats are intended for use only with existing LuciadMobile applications and should not be used otherwise. If you are looking for an SQLite-based exchange format, we advise to use OGC GeoPackage instead. Please refer to the LuciadMobile Developer's Guide for a detailed description of the LVDB and LRDB formats.

ImprovementLuciadFusion

A new sample, samples.wms.client.ecdis.gxy, has been added, illustrating how to connect to an ECDIS-supporting WMS server and customize the WMS layer rendering, by including S-52 styling parameters in the GetMap requests. This sample requires a running, ECDIS-supporting LuciadFusion server (ECDIS WMS is supported in LuciadFusion from version 2013.1). See the sample documentation and developer guide for more information.

ImprovementLuciadFusion

Fusion supports copying of a coverage's asset sources to the Tile Store, if this is so specified in the coverage metadata. If a coverage's asset sources are in the Tile Store, it no longer requires tiles and may be non-tiled. From this perspective, there are now three kinds of coverages:
  1. Tiled raster or vector coverages without asset sources in Tile Store. These are the regular coverages you're already familiar with.
  2. Tiled coverages with asset sources in Tile Store. These hybrid coverages behave as regular tiled coverages, in addition offer support for WMS GetFeatureInfo requests.
  3. Non-tiled coverages with asset sources in Tile Store. Due to the absence of tiles, these coverages cannot be visualized using a regular fusion client. They can only be visualized using a WMS client.
A limitation is that this only works for S-57 asset sources. Fusion will fail otherwise.

ImprovementLuciadFusion

TLspShapeLayerBuilder has a new synchronous() method. This forces created layers to paint synchronously, i.e. to perform discretization and other non-rendering tasks on the EDT.

ImprovementLuciadFusion

The fusion metadata model now supports specifying a non-tiled coverage. Such a coverage is identified by its metadata class TLfnNonTiledCoverageMetadata. It has no tile-specific information such as type, format and so on. Non-tiled coverages always have asset sources in Tile Store. Due to the absence of tiles, they cannot be visualized with a regular fusion client, only with a WMS client. These coverages will be invisible to older clients.

ImprovementLuciadFusion

WMS GetMap requests support client-side styling for non-tiled coverages with S-57 asset sources. A client-side style can be passed as argument a WMS GetMap request, and has precedence over a coverage's default styling. Due to the absence of tiles, non-tiled coverages cannot be accessed with LTS, only with WMS.

ImprovementLuciadFusion

Latency of filled shape painting using TLspShapePainter has been considerably reduced, especially for large shapes. This is due to a much improved triangulation algorithm in TLspShapeDiscretizer. The old triangulation algorithm can still be re-enabled using the system property -Dcom.luciad.view.lightspeed.geometry.discretization.TLspShapeDiscretizer.gluTesselator=true.

ImprovementLuciadFusion

ALfnFormat.getName() now returns a unique name such as "VPF", "S-57", "GeoTIFF". If not explicitly specified, this name defaults to the display name of the model decoder, which is the old behavior.

ImprovementLuciadFusion

The fusion metadata model now supports specifying the format of the asset, such as "S-57" or "GeoTIFF". This allows identification of an asset's format without having to decode it.

ImprovementLuciadFusion

When a coverage is fused with its asset sources in the Tile Store, WMS GetFeatureInfo requests will automatically be enabled for that coverage. In order to keep the GetMap and GetFeatureInfo in sync, the Tile Store's commit policy must be configured to PER_COVERAGE in the web.xml deployment descriptor. Otherwise the information returned by GetMap may be running ahead of that returned by GetFeatureInfo.

ImprovementLuciadFusion

The fusion metadata model now supports specifying that the asset sources must be stored in the Tile Store. This can be specified on the coverage metadata. The presence of asset sources in the Tile Store enables WMS GetFeatureInfo requests for a coverage. There are limitations as to the input data formats:
  • S-57 catalogues and cells are supported.
  • All other formats only supported if the source is a single file. Auxiliary files are lost. Fusion does not fail on these formats, instead it copies only a single asset source.
  • Only files are supported, not streams in general.

ImprovementLuciadFusion

OGC GeoPackage is now supported.
  • You can open .gpkg files using TLcdGeoPackageModelDecoder. You can use a shape layer to visualize vector data, or a raster layer to visualize raster data, as demonstrated in the common decoder sample: samples.lightspeed.decoder.MainPanel
  • You can create .gpkg files using TLcdGeoPackageModelEncoder, as demonstrated in samples.encoder.sqlite.geopackage.Main
See developer's guide or javadoc of com.luciad.format.sqlite.geopackage for more details.

ImprovementLuciadFusion

TLcdRotatingIcon can now be used on the Lightspeed view overlay panel.

ImprovementLuciadFusion

LCD-4155
The TLcdGeoJsonModelDecoder.decode instance method is less restrictive now. Instead of allowing only sources with FeatureCollections, it now allows you to decode sources that contain either a single geometry, a single feature, or an array of features, into an ILcdModel.

ImprovementLuciadFusion

The WMS server now allows the Post method as access point for GetFeatureInfo requests. This is also reflected in the WMS capabilities.

ImprovementLuciadFusion

LCD-4097
It is now possible to decode a single GeoJSON feature into an ILcdDataObject using the static TLcdGeoJsonModelDecoder.decodeFeature method.

ImprovementLuciadFusion

S-52 styling support has been added for S-57 raster and vector coverages. An SLD-based S-52 symbolizer can be included in the coverage metadata to specify the display settings with which the coverage should be rendered. See the s52-sld.xsd schema in the ECDIS component resources (resources/com/luciad/format/s52/s52-sld.xsd) for the exact XML Schema definition.

ImprovementLuciadFusion

SQLite has been updated to version 3.8.0.2.

ImprovementLuciadFusion

The fusion metadata model now supports specifying one or more SLD feature type styles for coverage metadata. The feature type styles are used for two purposes: to specify how data should be styled when fusing as raster, and to provide a default style for rendering vector data via WMS, if WMS clients do not specify a custom style. To support this, the LTS protocol version has been upgraded to LTS 1.0.5. ALfnCoverageMetadata now provides a getter and setter for TLcdSLDFeatureTypeStyle's.

ImprovementLuciadFusion

ALfnFormat now provides an ILcdSLDGXYLayerFactory, enabling SLD-based styling of data. By specifying SLD feature type styles in the coverage metadata, you can now customize how data needs to be rendered for formats that support SLD (currently only SHP and S-57).

ImprovementLuciadFusion

The Fusion WMS server now supports WMS queries with embedded SLD-encoded S-52 display settings. This allows each WMS client to use its own, ship-specific S-52 display settings. Fallback S-52 display settings can be added in the SLD entry of the coverage metadata, to specify a fallback behavior if a non-S-52-aware WMS client is querying the server. If no fallback is specified, the server will use the official defaults from the S-52 specification.

ImprovementLuciadFusion

ALcdWMSProxy can now be configured with an SLD or SLD URL to be encoded in GetMap requests.

ImprovementLuciadFusion

TLcdWMSClient and TLcdOGCWMSProxyModelDecoder now support custom SLD extensions (to allow plugging in custom SLD content in the GetMap request). New constructors have been added for these classes, which allow to pass the TLcdDataModel of the extension. The TLcdDataModel should be annotated with a TLcdXMLSchemaMappingAnnotation providing the mapping from Java domain classes to SLD XML encoding.

ImprovementLuciadFusion

The XML binding framework now supports non-qualified elements.

ImprovementLuciadFusion

The zip file containing all OGC clients is now called Ogc_client.zip instead of Wms_client.zip

ImprovementLuciadFusion

LCD-2833
Painting performance when using many different icons (more than 100) has been considerably improved. You can disable this change using the system property -Dcom.luciad.view.lightspeed.painter.TLspShapePainter.iconAtlasSupport=false

ImprovementLuciadFusion

Temporary object allocation has been significantly reduced when discretizing and painting vector shapes using TLspShapePainter.

ImprovementLuciadFusion

TLspFillStyle now supports specifying an ILcdIcon as a texture. This supports high-resolution printing of texture fills. Icon textures also respond to the feature scale.

ImprovementLuciadFusion

LCD-3916
It is now possible to configure the TLcdGeoJsonModelDecoder with a data type.

ImprovementLuciadFusion

LCD-3915
It is now possible to export single features and geometries with the TLcdGeoJsonModelEncoder.

ImprovementLuciadFusion

When fusing S-57 catalogs as raster, the resulting rasterized coverage now visually matches the input data better.
  • The compilation scale is used to determine the maximum level of detail of the resulting coverage.
  • The navigational purpose scale is used to determine the minimum level of detail at which data becomes visible in a coverage.
  • The coverage now has underscale indicators by default.
  • The coverage now has overscale indicators by default. These will never become visible "earlier" than in the input data. They may become visible "later" than in the input data, but never later than twice the scale of the input data. The coverage will have exactly one level with overscale indicators, and that is the most detailed level.
  • There is at least one level in the coverage where the data is visible without overscale indicators.
  • Using square pixels minimizes visual rasterization artifacts such as "squashed" icons. New static methods have been added to TLfnTileStoreUtil to adjust coverage layout, tile size and bounding box to ensure square pixels in the coverage's native georeference.

ImprovementLuciadFusion

Fill styles using TextureCoordinateMode.VIEW_SCALED now translate the texture coordinates together with the view while it is being panned. This is visually less distracting.

ImprovementLuciadFusion

LCD-327, LMAP-4641
TLcdMapLocation now accepts a custom Format.

ImprovementLuciadFusion

ALcdAnimation now has sensible default implementations for all methods except setTimeImpl.

ImprovementLuciadFusion

LCD-3792
A default TLcdLonLatPointFormat instance now uses the same default Locale as the standard JDK under JDK 7 (Locale.getDefault( Locale.Category.FORMAT ) ) .

ImprovementLuciadFusion

LCD-3702
The sample layer factories DatabaseLayerFactory (Lightspeed and GXY views) were removed. You can use UnstyledLayerFactory (Lightspeed) and GXYUnstyledLayerFactory (GXY) instead. They offer the same functionality but are not database-specific.

ImprovementLuciadFusion

LCD-3702
The sample layer factories DatabaseLayerFactory (Lightspeed and GXY) were removed. You can use UnstyledLayerFactory (Lightspeed) and GXYUnstyledLayerFactory (GXY) instead. They offer the same functionality but are not database-specific.

ImprovementData Connectivity Manager

LF-259
Several enhancements have been done regarding the synchronization of the coverage preview layer.
  • When a coverage's assets are reordered in the Tile Store panel by drag-and-drop, the preview layer is updated to reflect the new order.
  • When an asset is added to a coverage, you get a dialog which lets you select the new asset parts to include in the preview layer.
  • When an asset is removed from a coverage, the preview layer is updated accordingly.
  • ImprovementData Connectivity Manager

    LF-218
    Several enhancements have been done regarding the creation of a coverage preview layer.
    • The coverage preview layer now correctly reflects the order of the assets and their asset parts.
    • It is now also possible to create an empty preview layer.
    • It is now also possible to create a preview layer for an empty coverage.

    ImprovementData Connectivity Manager

    LF-484
    The scale chooser now uses a logarithmic scale by default. Its slider's default min/max scale limits are now 1:10000000 to 1:10000. These values automatically adjust to newly added scales. You can still switch to the old behavior by using the 'Logarithmic scale' toggle button in the scale chooser's tool bar.

    ImprovementData Connectivity Manager

    The DCM now provides an S-52 display settings panel in the coverage metadata, to define the settings an S-57 (ECDIS) coverage should be fused with.

    ImprovementData Connectivity Manager

    A non-tiled coverage can be created and configured in the DCM. Such a coverage has asset sources in Tile Store, but no tiles. It will support WMS GetFeatureInfo and GetMap requests with client-side styling.

    ImprovementData Connectivity Manager

    A coverage can be configured to support WMS GetFeatureInfo requests in the DCM. This will enable asset sources in Tile Store for that coverage.

    ImprovementData Connectivity Manager

    When fusing vector as raster, the DCM now automatically adjusts the coverage metadata for square pixels. This minimizes rasterization artifacts when viewing the coverage in its native georeference. It even eliminates rasterization artifacts when viewing the coverage at one of its native scales.

    ImprovementDatabase Connectors

    LCD-3702
    The sample layer factories DatabaseLayerFactory (Lightspeed and GXY) were removed. You can use UnstyledLayerFactory (Lightspeed) and GXYUnstyledLayerFactory (GXY) instead. They offer the same functionality but are not database-specific.

    ImprovementTerrain Analysis Engine

    TLspLOSCoveragePainter now supports the use of ALspStyleTargetProvider.

    ImprovementTerrain Analysis Engine

    Added support for earth tilesets for GXY-based hypsometry. A new painter has been introduced for this: TLcdHypsometricEarthPainter. This painter is capable of performing hypsometric visualization on top of an elevation-based earth tileset.

    ImprovementAviation Standards

    LCD-4453
    To improve the icon quality of certain icons, we have increased the size of most vector icons to be 17x17 instead of 16x16. This allows certain icons (such as cross-hairs) to be pixel perfect and correctly centered.

    ImprovementDefense Standards

    Added support for the ECRG format. See MIL-PRF-32283.

    ImprovementDefense Symbology

    There is now a single GXY sample (samples.symbology.gxy) and a single Lightspeed sample (samples.symbology.lightspeed) demonstrating all supported military symbologies. In addition, a new sample shows how to customize the visualization of military symbols and implement new military symbols in a Lightspeed view.

    ImprovementDefense Symbology

    LMAP-5459, LCD-648
    The samples now show how to build your own military symbol customizer. Several API enhancements now facilitate this:
    • TLcdEditableMS2525bObject and TLcdEditableAPP6AObject have been extended with methods to retrieve and change symbol properties
    • TLcdAPP6ANode and TLcdMS2525bNode have been introduced to allow browsing the symbol hierarchy
    • TLcdAPP6AEchelonNode and TLcdMS2525bEchelonNode have been introduced to allow browsing and configuring echelon values

    ImprovementDefense Symbology

    The military symbology customizers now allow changing the unique designation of all symbols.

    ImprovementDefense Symbology

    The zip file containing the functionality of the military symbology is now called Military_symbology.zip instead of Ms2525b.zip.

    ImprovementDefense Symbology

    TLspAPP6ALayerBuilder and TLspMS2525bLayerBuilder now provide visualization support in a Lightspeed view for all APP-6 (a/b) and MIL-STD 2525 (b/c) objects, including tactical line-based symbols. In addition, the layer builders also allow interactive creation and editing of all symbols. This is demonstrated in the symbology samples.

    ImprovementDefense Symbology

    APP-6 and MIL-STD 2525 objects now expose their symbol code (SIDC) through the ILcdDataObject interface.

    ImprovementMaritime Standards

    LCD-4430
    You can now decode multiple catalogues simultaneously as one virtual catalogue by passing a file 'MULTICATALOG.031' to TLcdS57CatalogueModelDecoder.decode(), which should be located in the common parent directory of all catalogues to be decoded. The file is only used as a marker file, to be recognizable by the decoder (TLcdS57CatalogueModelDecoder.canDecodeSource() will return true for these files), and should be empty.

    ImprovementMaritime Standards

    TLcdS52DisplaySettings now implements ILcdDataObject. The color scheme, point symbol type, area symbol type and display category are now also available as Java enumerations, and are used as property types in the S-52 display settings data type.

    ImprovementMaritime Standards

    A custom XML Schema is now provided for encoding of S-52 display settings, together with a decoder/encoder implementation to save/restore a TLcdS52DisplaySettings to/from XML. The schema can be found in the ECDIS resources jar, in com/luciad/format/s52/s52.xsd. An XML decoder/encoder can be instantiated by configuring the TLcdS52DataTypes class on a TLcdXMLSchemaBasedDecoder/TLcdXMLSchemaBasedEncoder instance.

    ImprovementMaritime Standards

    The useNationalLanguage flag is now available on TLcdS52DisplaySettings, which aggregates all S-52 display configuration options. This is now the preferred place to enable/disable this flag.

    ImprovementMaritime Standards

    TLcdS52DisplaySettings now provides a 'scaleDenominator' setting as a way of configuring the scales for each navigational purpose. These scales are expressed as the ratio between one centimeter on the map and the corresponding number of centimeters in reality (similar to paper chart scales), and replace the existing 'scaleRanges' setting, which was device-dependent (pixels/meter). The 'scaleRanges' setting can still be used but will internally be converted into device-independent scale denominators; slight rounding errors may occur in the 'scaleRanges' values, due to the conversion.

    ImprovementMaritime Standards

    TLcdS57CatalogueModelDecoder now supports conversion to a SENC (System ENC) format. SENC is a LuciadLightspeed specific format for representing S-57 data, optimized for optimal performance (reading and visualization). The SENC format is not intended for exchange purposes; it is available on TLcdS57CatalogueModelDecoder as an internal caching mechanism, and is automatically used if the setUseSENCCache(boolean) flag on TLcdS57CatalogueModelDecoder is enabled (default is false). See the javadoc of TLcdS57CatalogueModelDecoder for more information.

    ImprovementMaritime Standards

    ECDIS data can now be visualized on a Lightspeed view. The TLspS52LayerBuilder class been introduced which allows you to create ILspLayer instances for S57 data. The data will be visualized as specified by S52. The same TLcdS52DisplaySettings as in GXY can be used to customize the visualization.

    ImprovementMaritime Standards

    TLcdS57ProductConfiguration and TLcdS52ProductConfiguration can now be retrieved through getInstance instead of newInstance. The getInstance method will return a singleton instance that can be re-used where necessary. newInstance has been deprecated, you should replace these calls with getInstance.

    ImprovementMaritime Standards

    The decoding of S-57 data into ILcdModels and the visualization of those models on a GXY view has been simplified.

    • There is now a single model decoder available which can decode cells and catalogues for both the ENC and AML product type. See the TLcdS57UnifiedModelDecoder class.
    • There is now a single ILcdGXYLayerFactory which can create layers for all S-57 models (cells and catalogues of both product types). See the TLcdS52GXYLayerFactory class.
    • It is no longer required to order the models (see TLcdS52ProductConfiguration#createOrderedModelDecoder) before passing them to the layer factory. Therefore, the createOrderedModelDecoder method has been deprecated.

    The developer guide and corresponding javadoc has been updated to illustrate this. The developer guide contains code snippets illustrating the new simplified way of providing ECDIS visualisation to your application.

    ImprovementMaritime Standards

    TLcdS57ModelDescriptor now provides an optimized way of retrieving the compilation scale, which does not trigger the loading of the full cell. This allows much faster analysis of the data structure in e.g. LuciadFusion.

    ImprovementMaritime Standards

    S-52 visualization of S-57 data in Lightspeed views is now supported. See TLspS52LayerBuilder for details, or samples.decoder.ecdis.lightspeed.

    ImprovementS-63

    TLcdS63ProductConfiguration can now be retrieved through getInstance instead of newInstance. The getInstance method will return a singleton instance that can be re-used where necessary. newInstance has been deprecated, you should replace these calls with getInstance.

    ImprovementS-63

    A new model decoder has been introduced which can decode both cells and catalogues for ENC and AML. See the TLcdS63UnifiedModelDecoder class.

    ImprovementS-63

    LCD-2957
    A new model decoder is available for S-63 catalogues, TLcdS63CatalogueModelDecoder. This decoder automatically filters out all cells for which no cell permit is available.

    Bug fixLuciadFusion

    Fixed an error in the implementation of getSinY() in TLcdSHPPointM and TLcdSHPPointZ.

    Bug fixLuciadFusion

    LCD-4455
    Fixed rare deadlock when switching projection in certain cases.

    Bug fixLuciadFusion

    LCD-4448
    Fix error when creating text in a model in screen coordinates.

    Bug fixLuciadFusion

    LCD-4434
    TLcdGXYCompositeRingPainter did not paint snap indicators.

    Bug fixLuciadFusion

    LCD-4428
    TLcdGXYCompassNavigationControl did not normalize its angle when changing the rotation of the view.

    Bug fixLuciadFusion

    LF-503
    Reduced the maximum heap for the fusion.server sample so that it runs in a 32-bit JVM as well. The setting of -Xmx768m may be too limited to run a substantial fusion on the server. If you're using a 64-bit JVM it is recommended to increase this to -Xmx1500m in the sample's startup script.

    Bug fixLuciadFusion

    LCD-4417
    TLcdGMLApplicationModelEncoder can now handle types with properties of type TLcdCoreDataTypes.OBJECT_TYPE. The encoder now removes these properties in the exported GML type (because it is opaque, the encoder does not know how to encode it), instead of throwing an exception.

    Bug fixLuciadFusion

    LCD-4410
    A ClassCastException which could happen in rare cases when viewing fused vector data in a Lightspeed view and switching between 2D and 3D projections, has been fixed.

    Bug fixLuciadFusion

    LF-498
    Two bugs were fixed affecting some WMTS layer's tile matrix set limits, if defined.
    1. Tile matrix sets for less detailed levels are always included if there is a more detailed level for which a tile matrix set limit exists, even if the tiles for the less detailed levels are empty. This improves memory consumption on the WMTS client, and avoids potential OutOfMemoryErrors, especially for high-resolution coverages.
    2. Tile matrix set limits can never be about other levels than those defined by the tile matrix set itself.

    Bug fixLuciadFusion

    LCD-4396
    Raster layers should not apply lighting and fog effects in a 2D view.

    Bug fixLuciadFusion

    LCD-4390, LCD-4388, LCD-4391
    Improved ruler controller robustness when using the cartesian measure mode.

    Bug fixLuciadFusion

    LF-489
    Fixed a deadlock when importing large coverages.

    Bug fixLuciadFusion

    LCD-4369
    TLspViewNavigationUtil now takes a model read lock when iterating over the model elements.

    Bug fixLuciadFusion

    LCD-3092
    Visualization of TLcdLonLatHeightSphere and TLcdLonLatHeightDome with TLspShapePainter in a 3D view has been corrected to correspond to the contains3D method.

    Bug fixLuciadFusion

    LCD-4169
    TLspViewDisplacement style, that can be used for painting icons with TLspShapePainter, was sometimes not honored after style change events. This has been fixed.

    Bug fixLuciadFusion

    LF-483
    Fixed the awkward color model for elevation data served by the WMS fusion.server sample. It now uses the default DTED color model.

    Bug fixLuciadFusion

    LCD-3322
    Data properties which cannot be serialized to valid JSON (for example, because of internal circular references in the property) will be encoded as a null-value by the TLcdGeoJsonModelEncoder.

    Bug fixLuciadFusion

    LCD-4014
    Fixed wrong layout of ILcdText instances when drawn with TLspShapePainter.

    Bug fixLuciadFusion

    LCD-3807
    On a printed GXY view, labels could overlap in some cases. This no longer happens.

    Bug fixLuciadFusion

    LCD-3320
    By default, instances of ILcdPolypoint which represent a point-cloud are now rendered correctly as a collection of individual points. Previously, they were rendered as polygons in certain edge cases.

    Bug fixLuciadFusion

    LCD-4129
    TLcdGeoTIFFModelDecoder can now also decode GeoTIFF images containing 64-bit floating point samples.

    Bug fixLuciadFusion

    LCD-856
    The JDBC driver used to connect to SQLite databases has been changed to a custom implementation that is more robust. In particular, it avoids certain rare native crashes that could occur.

    Bug fixLuciadFusion

    The classes of the samples are now delivered in jar files. These jar files are located in the samples/lib folder of the LuciadMap distribution. This prevents error messages about java.util.ServiceConfigurationErrors. The sample classes used to be delivered as extracted class files in the samples/classes folder.

    Bug fixLuciadFusion

    LCD-3372, LCD-3649
    Added a workaround for a Java 7 bug on Linux where multiple screen setups were not dealt with correctly leading to problems when dragging a Lightspeed view from one screen to another. The workaround is enabled by default. It can be disabled using the system property -Dcom.luciad.view.lightspeed.multipleScreenWorkAroundForLinuxJava7Enabled=false.

    Bug fixLuciadFusion

    TLcdAWTUtil now has a method invokeAndWait that takes a Callable as an argument. This allows to conveniently return a result computed on the event dispatch thread.

    Bug fixData Connectivity Manager

    LF-467
    It is not possible to fuse vector as raster when fusing on the server, albeit with the limitation that any of the layer's styling in the DCM will be discarded in favor of the server's default styling.

    Bug fixData Connectivity Manager

    LF-511
    The Data Connectivity Manager no longer throws an exception when a coverage is deleted after its preview layer has been deleted.

    Bug fixData Connectivity Manager

    LF-496
    Coverages with message digest algorithms other than the default casing are now also correctly recognized by the DCM.

    Bug fixData Connectivity Manager

    LF-495
    The Data Connectivity Manager Job Configuration panel now supports filtering on properties that have type BigDecimal. This is used for example by Oracle Spatial data sets.

    Bug fixData Connectivity Manager

    LF-452
    Fixed an issue when fusing vector data as a raster coverage. In some cases the type of the coverage was wrongly set to VECTOR, causing errors. Note that if you have such faulty coverages, you need to re-create them to be able to fuse them.

    Bug fixData Connectivity Manager

    LF-461
    Fixed a bug which causes the coverage preview layer not to update upon changes in the asset or coverage metadata. Examples of relevant changes:
    • When an asset's compilation scale is adjusted.
    • When the filtering is adjusted for a vector job configuration.

    Bug fixTerrain Analysis Engine

    LCD-4420
    TLcdHeightProviderAdapter could return incorrect heights when passing a point in a difference reference than the reference of the adapted height provider.

    Bug fixDefense Standards

    LCD-4429
    TLcdNITFModelDecoder can now decode files larger than 2 GB.

    Bug fixMaritime Standards

    LCD-4442
    The S-57 decoders now support the comma as a decimal number separator in ISO8211 data streams.

    Bug fixMaritime Standards

    LCD-4123
    Dusk and night colors were not applied to all text elements: those elements were displayed in day color. This is now resolved, all text elements have the proper dusk and night color.

    Upgrade considerationLuciadFusion

    ALfnServiceContext.getCompositeFormat is a new abstract method on an abstract class. There should be no custom extensions of this class. However, if there are, those will need to implement the new method. It is safe to implement this method to return null.

    Upgrade considerationLuciadFusion

    LCD-4324
    TLcdWMTSModelDescriptor now doesn't implement ILcdEarthModelDescriptor anymore. Models for individual WMTS layers will still have a model descriptor that is both TLcdWMTSModelDescriptor and ILcdEarthModelDescriptor. However, when decoding multiple WMTS layers, the decoded model is a model tree node, with no data in the root node and sub-models for each WMTS layer. Since the root node does not contain any data, it should not have an ILcdEarthModelDescriptor.

    Upgrade considerationLuciadFusion

    TLspShapePainter now only applies style change events from its own stylers. In particular, style events with the wrong event source will be ignored. This can happen when one styler decorates another styler, and forwards events without adapting the source. If you use a styler decorator, make sure it does not attach external listeners to its delegate directly. Instead, it should intercept the events of the delegate and re-fire the events, as shown here:
            public class StylerDecorator extends ALspStyler {
                private final ILspStyler fDelegate;
    
                private StylerDecorator( ILspStyler aDelegate ) {
                    fDelegate = aDelegate;
                    fDelegate.addStyleChangeListener( new ILspStyleChangeListener() {
                        @Override public void styleChanged( TLspStyleChangeEvent aEvent ) {
                            fireStyleChangeEvent( aEvent.getAffectedModel(), aEvent.getAffectedObjects(), aEvent.getAffectedStyles() );
                        }
                    } );
                }
    
                @Override public void style( Collection aObjects, ALspStyleCollector aStyleCollector, TLspContext aContext ) {
                    // ...
                }
            }
        

    Upgrade considerationLuciadFusion

    In order to support SLD-based WMS queries, TLfnWMSCommandDispatcherFactory now extends ALcdOGCSLDWMSCommandDispatcherFactory instead of ALcdOGCWMSCommandDispatcherFactory. The createWMSGXYLayerFactories() method is now final, and any implementations overwriting this method should now overwrite the createSLDWMSGXYLayerFactories() method instead.

    Upgrade considerationLuciadFusion

    TLcdCADRGModelDecoder#canDecodeSource now verifies the entire file name rather than just the file extension. As a result, the decoder can now assess CADRG frame files with malformed filenames as unsupported, while these were considered supported in previous releases.

    Upgrade considerationLuciadFusion

    LCD-3416
    TLcdDatabaseGXYPainterProvider was deprecated in favor of TLcdGXYShapePainter. TLcdGXYShapePainter offers the same functionality but is not database-specific.

    Upgrade considerationDatabase Connectors

    LCD-3416
    TLcdDatabaseGXYPainterProvider was deprecated in favor of TLcdGXYShapePainter. TLcdGXYShapePainter offers the same functionality but is not database-specific.

    Upgrade considerationMaritime Standards

    TLcdS57CatalogueModelDecoder no longer scans directories for additional cell update files, when opening a catalogue. Directory scans were needed in the past to detect update files (.001, .002, ...) which were not part of the base catalogue. Since 2013.0, TLcdS57CatalogueModelDecoder supports simultaneous decoding of multiple catalogues (base catalogue + update catalogues), making directory scanning no longer necessary. As the directory scanning introduced a significant performance overhead in the decoding process, it has now been removed.

    Upgrade considerationMaritime Standards

    ILcdS52FillStyle has a new method "getIcon" that returns the original icon used to create the fill pattern image. If you have an implementation of this interface, you can implement this method by returning an icon if applicable. Otherwise, you can return null and the image will be used as before.

    2013.0

    2013.0.25

    ImprovementLuciadFusion

    LCD-4038
    The WCS GetCoverage request handler currently expects the bounding box to be expressed in either the EPSG:4326 (WGS 84) reference or in the native reference of the offered data. This enhancement adds support for any EPSG and WKT CRS supported by Luciad.

    Bug fixLuciadFusion

    LCD-4378
    TLcdGXYSelectControllerModel2: the selection popup menu entries would disappear whenever the corresponding object changes.

    Bug fixLuciadFusion

    LCD-4268
    TLcdGeoTIFFModelEncoder would create images with all transparent pixels in certain cases.

    Bug fixDefense Standards

    LCD-4381
    The default value for elevation rasters is now 32001, instead of 0. This solves issues with height providers that translate the default value to NaN.

    2013.0.24

    ImprovementLuciadFusion

    LCD-4362
    Extended TIFF codec with support for horizontal differencing predictor combined with 16 or 32-bit sample sizes.

    Bug fixLuciadFusion

    LCD-4347
    TLcdRasterHeightProvider and TLcdInterpolatingRasterHeightProvider now return Double.NaN when the raster value is an unknown height value (ILcdRaster.getDefaultValue()).

    2013.0.23

    Bug fixLuciadFusion

    LCD-4367
    The rotation parameters for the datum transformation of TLcdRD1918DutchGridReference were incorrect, resulting in an offset.

    Bug fixLuciadFusion

    LCD-4363
    Icon selection now takes ILcdAnchoredIcon into account properly. Before, it was possible that you could not select such icons.

    Bug fixTerrain Analysis Engine

    LCD-4361
    Fitting on a layer now works for the case when a layer contains ILcdLOSCoverageMatrices indirectly through style target providers.

    Bug fixMaritime Standards

    Models of cells which have been deleted in an update now have the '.000' file with the highest edition number as source name, instead of the last update file containing the deletion instruction.

    2013.0.22

    Bug fixLuciadFusion

    MGRS overlay labels now don't do calculations when they are invisible. Overlay labels now also have less impact on performance overall.

    2013.0.21

    ImprovementLuciadFusion

    LCD-4339
    The new method TLcdGXYCompassNavigationControl#setMagneticNorthMap now lets the control point to the magnetic north instead of the true north.

    ImprovementLuciadFusion

    LCD-4339
    The new methods TLspCompassNavigationControl#setMagneticNorthMap and TLspNavigationControlsBuilder#magneticNorthMap optionally let the compass point to the magnetic north instead of the true north.

    ImprovementLuciadFusion

    LCD-4313
    For WMTS layers that have no fully compatible tile matrix set, the WMTS client now uses the most detailed compatible subset, instead of the least detailed subset. This ensures that you will see the full detail of the layer instead of only a low-quality version. For some layers, it is possible that the tile matrix with the highest detail is compatible. This may cause performance problems, and you should use a layer scale range.

    ImprovementTerrain Analysis Engine

    LCD-4333
    TLcdViewProfileJPanel: Improved behavior when component is resized.

    ImprovementTerrain Analysis Engine

    LCD-4331
    TLcdViewProfileJPanel: You can now determine whether mouse-interactions result in a change in height, by using the setChangeAltitudeOnInteraction() method. You can also determine whether the observer height is visualized by using the setVisualizeMarkPoint() method.

    ImprovementAviation Standards

    LCD-4334
    TLcdAIXM51AbstractAIXMMessage.getModelEncoder() no longer returns null when it has been decoded by the TLcdAIXM51ModelDecoder, but an instance of TLcdAIXM51ModelEncoder.

    ImprovementS-63

    The S-63 model decoders have been upgraded to support S-63 Edition 1.1.1. The most noticeable changes are in the error reporting: new error codes have been added (see TLcdS63Exception.ErrorCode) and the implementation of the decoders has been updated to use the new error codes where required by the specification. TLcdS57ModelDescriptor now also provides a getWarnings() method which provides access to any non-fatal S-63 warning or error that was encountered during decoding (for example a subscription license that expires within 30 days).

    Bug fixAdvanced GIS Engine

    LCD-4343
    The advanced binary topology code sometimes returned wrong results in case of polygons and polylines with degenerate edges. This has been fixed.

    Bug fixTerrain Analysis Engine

    LCD-4330
    TLcdViewProfileJPanel: Simple Line-of-Sight visualization now works when regular Line-of-Sight is turned off.

    Bug fixDefense Symbology

    LCD-4197
    The Fort symbol in the tactical graphics category in MIL-STD 2525b/c (2.X.3.3.2) and APP-6A/B (2.X.2.2.3.2) was incorrectly rendered as an area instead of a icon.

    Bug fixDefense Symbology

    LCD-4307
    A few MIL-STD 2525b/c and APP-6A/B painters incorrectly required the symbol domain object to be of the type ILcdCache. This impacted applications that use custom implementations / wrappers to represent the symbols.

    2013.0.20

    ImprovementLuciadFusion

    LCD-4308
    Added support for the non-standardized WMS capabilities of MapServer's MapCache WMS.

    ImprovementLuciadFusion

    LCD-4295
    Replaced an external WMS capabilities XML Schema reference in the SLD XML Schemas with a local reference, to avoid unnecessary external network access..

    ImprovementLuciadFusion

    LCD-3504
    TLcdLonLatGridPainter#setLabelPosition now allows displaying grid labels at all sides.

    Bug fixLuciadFusion

    LCD-4306
    Fixed a memory leak that could occur if a very large number of state changes (e.g. selection, styling) was done in a view without allowing that view to repaint itself. This normally happened only with offscreen views or views for which auto-update was switched off.

    Bug fixLuciadFusion

    LCD-4304
    Fixed the awkward color model for elevation data in the fusion.client.lightspeed sample. It now uses the default DTED color model.

    Bug fixLuciadFusion

    LCD-4301
    SLD now takes the stroke width into account when rendering well-known marks. The mark size will be reduced when increasing the stroke width to ensure that the total icon size does not exceed the specified size.

    Bug fixLuciadFusion

    LCD-4195
    A bug was fixed which caused NullPointerExceptions upon GetFeatureType or DescribeFeatureType requests for empty models when using a custom ILcdWFSClientModelEncoderFactory which does not extend from TLcdWFSClientModelEncoderFactory.

    Bug fixLuciadFusion

    LCD-4277
    Fix flickering cursor when editing a shape and holding a modifier key.

    2013.0.19

    ImprovementLuciadFusion

    LCD-3709
    Improved painting accuracy for draped shapes whose model reference does not use the WGS84 reference ellipsoid.

    ImprovementLuciadFusion

    LCD-4187
    Added an internal auto-detection mechanism to determine the correct axis order for the EPSG:4326 (WGS 84) reference in case of a WMS 1.3.0 server. The decision is based on the EPSG:4326 BoundingBox information in the WMS capabilities.

    ImprovementLuciadFusion

    Improved the performance of overlay component painting in a Lightspeed view.

    ImprovementLuciadFusion

    LCD-3707
    TLspRulerController now indicates that a measurement can be moved by showing a 'move' cursor when hovering over it.

    Bug fixLuciadFusion

    LCD-4283
    Fixed exception that could occur when a TLspRasterLayer's is used in multiple views and one of those views is destroyed.

    Bug fixLuciadFusion

    LCD-4203
    ILcdAnchoredIcons were incorrectly aligned when drawn with the ON_TERRAIN elevation mode.

    Bug fixLuciadFusion

    LCD-4023
    TLspShapePainter.boundsSFCT() sometimes produced incorrect results.

    Bug fixLuciadFusion

    LCD-4065, LCD-4064
    Improved the robustness and thread safety of TLspViewXYZWorldTransformation3D and TLspImageProjector.

    Bug fixLuciadFusion

    LCD-4229
    When selecting an MGRS grid layer, it became invisible. Now it's not possible to select and MGRS layer anymore.

    Bug fixLuciadFusion

    LCD-4217
    When setting an MGRS grid layer to invisible before it is added to the view, the overview label remains visible.

    Bug fixLuciadFusion

    LCD-4206
    When using TLcdEPSGReferenceFormatter, formatting a reference with a NAD83 datum and without a reference name, could produce an incorrect code.

    Bug fixLuciadFusion

    LCD-4113
    The printing feature scale is now correctly applied to icons which use the ON_TERRAIN elevation mode.

    Bug fixLuciadFusion

    LCD-4193
    TLspLabelPlacer often used information that is not up-to-date when placing labels for controller layers (i.e. ILspController.getLayered()). This could for example cause measurement labels to disappear when using the ruler controller.

    Bug fixAdvanced Raster Services

    LCD-4209
    Improved the default size of the ECW image cache. Previously it could be up to 1/4 of the available system memory which can easily cause problems when using a 32-bit JVM. Now the cache is limited to 64MB. The performance is not significantly affected. You can change the size of the cache using the TLcdECWModelDecoder.setMaxCacheSize method.

    Bug fixAviation Standards

    LCD-4250
    The DAFIF(T) ILS and Navaid decoders did not take into account the implicit decimal for the frequency value.

    Bug fixDefense Symbology

    TLcdDefaultAPP6AStyle and TLcdDefaultMS2525bStyle did not correctly include the old value in PropertyChangeEvents when configuring (label) halo properties.

    Bug fixDefense Symbology

    LCD-4191
    Several (label) painters for MIL-STD 2525 and APP-6 produced undesirable TLcdOutOfBoundsException log messages when labels / objects felt outside the bounds of a projection.

    2013.0.18

    Bug fixLuciadFusion

    LCD-4189
    In rare cases, TLspInteractiveLabelsController would call ALspInteractiveLabelProvider.startInteraction(), without calling ALspInteractiveLabelProvider.stopInteraction() later. This made it possible for ILspInteractiveLabelListener implementations to be left in an invalid state. This is now fixed.

    Bug fixDefense Symbology

    LCD-4186
    Fixed an exception that occurred when using a custom ILcdMS2525bShape or ILcdAPP6AShape domain object.

    Bug fixDefense Symbology

    LCD-4181
    The movement direction arrow did not take into account the active projection to determine the north.

    2013.0.17

    ImprovementTerrain Analysis Engine

    TLcdProfileViewJPanel now supports setting a target height. Locations on the terrain are considered visible if the sum of the terrain height plus the target height remains smaller than the minimal visible height at that point, looking from the observer's point.

    ImprovementMaritime Standards

    LCD-4188
    A bug in the evaluation of AML file names, prohibiting AML models from being encoded, has been fixed in TLcdS57ModelEncoder.

    Bug fixLuciadFusion

    LCD-4180
    ALcdEarthTileSetRaster: the getColorModel, getPixelSize and getType methods could take a very long time for detailed levels.

    Bug fixLuciadFusion

    LCD-4179
    TLcdEarthTileSetElevationProviderTest: did not handle un-normalized geodetic coordinates correctly.

    Bug fixLuciadFusion

    LCD-4171, LUCY-3983
    In some cases, data formats using HTTP (for example Bing Maps) did not pick up the correct proxy authentication.

    Bug fixLuciadFusion

    LCD-4174
    The XML capabilities decoder has been made less strict with respect to the XML element order of the Style element in the WMS capabilities.

    Bug fixLuciadFusion

    LCD-4173
    The XML capabilities decoder failed when empty LayerLimit, MaxWidth and/or MaxHeight elements were encountered in the WMS capabilities.

    Bug fixLuciadFusion

    LCD-4165
    The property change event fired by TLcdGXYShapePainter#setFontStyle had an incorrect property name.

    Bug fixLuciadFusion

    LCD-4156
    When no spatial reference is specified for the feature collection, the TLcdGeoJsonModelDecoder will now correctly apply the default model reference.

    2013.0.16

    ImprovementLuciadFusion

    LCD-4135
    TLspPinLineStyle.PinEndPosition now has an extra option: MIDDLE_OF_BOUNDS_ON_EDGE. This pin end position works similar as MIDDLE_OF_BOUNDS, but the pin line is clipped at the edge of the label instead of ending at the middle of the bounds itself.

    ImprovementLuciadFusion

    LCD-4141
    TLcdGeoJsonModelEncoder can now encode more shapes.
    • Empty ILcdShapeLists are now encoded as empty GeometryCollections
    • The baseShape of an ILcdExtrudedShape will now be encoded to a GeoJson geometry
    • An ILcdSurface is now encoded as a Polygon (provided all the rings are also an instance of ILcdPointList)
    • An ILcdRing is now encoded as a Polygon (provided it is also an instance of ILcdPointList)
    • An ILcdCurve is now encoded as a LineString (provided it is also an instance of ILcdPointList)
    It is now also possible to configure the TLcdGeoJsonModelEncoder to skip domain objects of an ILcdModel it cannot encode The default behavior remains identical: an exception is thrown when an unsupported object is encountered. However, this behavior can now be turned off using setSkipUnsupportedFeature.

    ImprovementLuciadFusion

    LCD-4137
    It is now possible to make interactive labels appear by hovering over their domain object, see TLspInteractiveLabelsController.setActiveOnObjectHover().

    Bug fixLuciadFusion

    LCD-4151
    When using interactive labels, a deadlock was possible in some cases. This is now fixed.

    Bug fixMaritime Standards

    LCD-4153
    TLcdS52ModelListBuilder now supports models which contain only a single point element or other element with zero width/height.

    2013.0.15

    ImprovementLuciadFusion

    LCD-4140
    ALspDensityStyle has a new "weight" property, which allows the user to specify how much objects contribute to the density plot. Previously, all objects would increment the density value by exactly one.

    ImprovementLuciadFusion

    LCD-4132, LCD-2767
    It is now possible to notify that the interactive component has changed. This makes it for example possible to change the content (and size) of an interactive label, while it is activated. See addInteractiveLabelChangeListener() and fireInteractiveLabelChangedEvent() in ALspInteractiveLabelProvider.

    ImprovementS-63

    TLcdS63ModelDecoder now supports combinations of both basic and meta permit files.

    Bug fixLuciadFusion

    LCD-4138
    In some cases an IllegalArgumentException was thrown when stopping interactive label interaction.

    2013.0.14

    ImprovementLuciadFusion

    LCD-4172
    The XML capabilities decoder has been made less strict with respect to custom extensions found in the WMS capabilities.

    ImprovementLuciadFusion

    LCD-4136
    TLcdCADRGModelDecoder now handles zero-terminated strings correctly.

    ImprovementLuciadFusion

    LCD-3962
    Icons no longer sink into the ground when viewing them at a horizontal angle in a 3D view.

    ImprovementLuciadFusion

    TLcdXMLSchemaBasedDecoder now allows specifying a list of classes for the expected return value of its decode() methods. This can be useful in cases where there are multiple elements allowed as root element in the XML documents to decode.

    ImprovementTerrain Analysis Engine

    LCD-4117
    TLcdProfileViewJPanel#calculateLineOfSight now programmatically triggers the line-of-sight functionality.

    ImprovementDefense Symbology

    LCD-4128
    The Penetration Box symbol in the tactical graphics category in MIL-STD 2525b/c (2.X.2.5.3.6) and APP-6A/B (2.X.2.1.5.3.6) can now have a label based on the Unique Designation modifier.

    ImprovementMaritime Standards

    TLcdS57ModelDecoder and TLcdS57CatalogueModelDecoder now throw an IllegalStateException in their canDecodeSource() and decode() methods if they are not properly configured.

    ImprovementRadar Connectors

    TLcdASTERIXAltitudeRecordFilter: this filter allows you to reject tracks and/or plots based on their altitude. Set it on the model decoder or live decoder with the setRecordFilter method.

    ImprovementRadar Connectors

    The properties that can be changed for TLcdASTERIXTrack can now also be changed for TLcdASTERIXPlot.

    ImprovementRadar Connectors

    LCD-4090
    TLcdASTERIXCategory11: all trajectory properties and related track properties for category 11 can now be changed through the ILcdDataObject interface. More specifically, following trajectory properties can now be changed:
    • Callsign
    • IFPS_FLIGHT_ID and all its subproperties
    • FlightCategory and all its subproperties
    • TypeOfAircraft
    • WakeTurbulenceCategory
    • DepartureAirport
    • DestinationAirport
    The corresponding track properties can also be changed:
    • FlightPlanRelatedData.Callsign
    • FlightPlanRelatedData.IFPS_FLIGHT_ID and all its subproperties
    • FlightPlanRelatedData.FlightCategory and all its subproperties
    • FlightPlanRelatedData.TypeOfAircraft
    • FlightPlanRelatedData.WakeTurbulenceCategory
    • FlightPlanRelatedData.DepartureAirport
    • FlightPlanRelatedData.DestinationAirport

    Bug fixLuciadFusion

    LCD-4127
    TLcdGeoJsonModelDecoder now handles decoding of URLs without having to explicitly set the dataModelName. Previously, this might have thrown an exception, depending on the contents of the URL.

    Bug fixLuciadFusion

    LCD-4134
    In some cases, there was flickering while navigating the view due to object paint order. There now is an improved paint ordering that also takes into account style order for objects with multiple styles.

    Bug fixLuciadFusion

    LCD-4133
    In some cases, an exception "wrong index sizes" could occur for objects with point geometry that is partially out of the view's world bounds.

    Bug fixLuciadFusion

    LCD-4124
    In some cases, labels from a layer could disappear after removing one ore more domain objects from that layer. An example where this can happen is when using the ruler controller and canceling the creation of a measurement.

    Bug fixLuciadFusion

    LCD-4122
    TLcdUtmMgrsUtil.utmMgrs2LonLat() sometimes produced incorrect results for grid squares very close to the 180 degrees meridian.

    Bug fixLuciadFusion

    TLcdXMLSchemaBasedDecoder.decode(String) now properly delegates the construction of the document context to the createDocumentContext() method, consistent with the other decode() methods on the API.

    Bug fixLuciadFusion

    LCD-4116
    Reduced memory usage of TLcdBufferedTile.

    Bug fixTerrain Analysis Engine

    LCD-4112
    Fixed issue with the simple Line-of-Sight calculation offered by the TLcdProfileViewJPanel. This would (for certain values) be inconsistent with the regular Line-of-Sight computation. The simple line of sight calculation now uses the same precision as the regular Line-of-Sight. Simple Line-of-Sight can be called programatically with the TLcdProfileViewJPanel.calculateVisibility() method. The result of the method depends on the TLcdProfileViewJPanel.setMarkPoint() and TLcdProfileViewJPanel.setAltitudeAboveGroundForLineOfSight() methods.

    Bug fixDefense Symbology

    LCD-4131
    A few incorrect characters were present in the country names Côte d'Ivoire, Réunion and São Tomé and Príncipe.

    Bug fixDefense Symbology

    LCD-4108
    The APP-6B symbol Special Point (G*C*OX----*****) was not supported.

    2013.0.13

    Bug fixLuciadFusion

    LCD-4093
    Added a workaround for incorrect Geoserver capabilities. Although mandatory, Geoserver does not always have a style associated with a layer.

    2013.0.12

    ImprovementLuciadFusion

    LCD-4072
    TLspCreateController's logging behavior now distinguishes between exceptional use cases and errors.

    ImprovementLuciadFusion

    LCD-4015
    It is now possible to invalidate all swing labels at the same time. See ALspSwingLabelStyler.allComponentsChanged().

    ImprovementLuciadFusion

    LCD-4084
    The performance of bounds queries has been improved for cases where a single domain object is converted into a large number of style targets.

    ImprovementLuciadFusion

    LCD-4082
    Convenience methods have been added to TLcdWMSRequestContext to access the layers and styles parameters in a request.

    ImprovementLuciadFusion

    LCD-4074
    The sample class GreedyPanController shows how to cancel other controller interactions, in case the user is pressing multiple mouse buttons.

    ImprovementS-63

    LCD-4045
    A bug in the configuration of TLcdS63ModelDecoder prevented the new IHO certificate from being automatically picked up by the decoder. This has been fixed.

    Bug fixLuciadFusion

    LCD-4026
    TLcdLonLatGeoBuffers with segments that make a 180 degree turn could be painted incorrectly. This for example could cause rounded corners or other parts of the buffer to disappear.

    Bug fixLuciadFusion

    LCD-4107
    Null values in the properties member of GeoJson features are no longer encoded as empty hash maps.

    Bug fixLuciadFusion

    LCD-4096
    In some cases, paint order for objects with the same z-order was not always consistent. This could cause flickering while navigating the view.

    Bug fixLuciadFusion

    LCD-4102
    Selected and edited objects did not disappear when they were removed from the model or filtered out due to a model change.

    Bug fixLuciadFusion

    LCD-4099
    Label placement could become very slow when using many (> 10000) different labeling algorithms.

    Bug fixLuciadFusion

    LCD-4060
    Inversion of longitude and latitude is now properly taken into account when points or point lists are transformed during decoding of GML data.

    Bug fixDefense Symbology

    LCD-4100
    A few MIL-STD 2525b/c and APP-6A/B painters incorrectly required the symbol domain object to be of the type ALcd2DEditablePolypoint. This impacted applications that use custom implementations / wrappers to represent the symbols.

    Bug fixDefense Symbology

    LCD-4086
    The dots below icons were not painted in a 3D view.

    Bug fixDefense Symbology

    The APP-6A/B and MIL-STD 2525b/c data models, respectively accessible through TLcdAPP6ADataTypes#getDataModel and TLcdMS2525bDataTypes#getDataModel did not provide a correct list of possible values for the ReinforcedOrReduced and EvaluationRating data types.

    Bug fixDefense Symbology

    LCD-4077
    The Infiltration Line symbol in MIL-STD 2525b/c (2.X.2.5.2.4) and APP-6A/B (2.X.2.1.5.2.4) was not correctly oriented in case of vertically aligned coordinates.

    Bug fixDefense Symbology

    LCD-4054
    The label painter for the MIL-STD 2525b Irregular Airspace Coordination Area symbol (2.X.4.3.2.2.1) did not correctly parse the Additional Information text modifier.

    Bug fixDefense Symbology

    LCD-4056
    The label painter for the MIL-STD 2525c Minimum Risk Route (MRR) symbol (2.X.2.2.2.2) mixed up the minimum and maximum altitude values.

    Bug fixMaritime Standards

    LCD-4103
    Due to a recent update of the ISO8211 implementation, large unsigned integers were no longer parsed correctly, which could lead to unresolved pointers in the decoding of S-57 data, and non-initialized data. This has been fixed now.

    Bug fixMaritime Standards

    LCD-4081
    The rendering of some attribute texts was broken since the introduction of new ILcdS57Attribute implementations. This has been fixed.

    Bug fixRadar Connectors

    LCD-4078
    TLcdASTERIXModelDecoder is now more robust when decoding multiple files containing records of multiple categories.

    2013.0.11

    ImprovementLuciadFusion

    LCD-3738
    TLcdGXYCompassNavigationControl did not behave correctly when the view center was outside the earth bounds.

    ImprovementLuciadFusion

    LCD-4069
    TLcdGXYAsynchronousPaintQueue#reset now also clears stale references to layers.

    ImprovementRadar Connectors

    LCD-4068
    TLcdASDIFileReplayInputStream: the threads created by this class now get a descriptive name instead of the default "Timer-X" names.

    ImprovementRadar Connectors

    LCD-4068
    TLcdASTERIXFinalReplayInputStream: the threads created by this class now get a descriptive name instead of the default "Timer-X" names.

    Bug fixLuciadFusion

    LCD-3772
    ALcdObjectSelectionAction became visible on every selection change if the auto-hide behavior was disabled. This has been fixed.

    Bug fixLuciadFusion

    LCD-4036
    Most ILcdLayered implementations threw a NullPointerException when trying to move a layer that was not in the layered object. This has been changed to the advertised NoSuchElementException.

    Bug fixLuciadFusion

    LCD-1517
    The Z order property of ALspStyle is now applied globally across different style types, whereas before it was only considered within groups of objects with the same type of style.

    Bug fixDefense Symbology

    LCD-4062
    Fixed a caching regression in TLcdMS2525bObjectIconProvider and TLcdAPP6AObjectIconProvider, introduced by the fix for LCD-4009.

    Bug fixRadar Connectors

    LCD-4070
    Data fields that are optional in the ASTERIX streams are now marked as nullable in the ILcdDataModels of the various track types.

    Bug fixRadar Connectors

    LCD-3925
    Support property values that contain NUL characters

    2013.0.10

    ImprovementLuciadFusion

    TLcdGeoTIFFModelEncoder will now produce stripped images when the tile width and/or height properties are set to zero.

    Bug fixDefense Symbology

    LCD-4052
    The Lightspeed creation controller could only create MS2525 and APP6 icon symbols if the domain object implemented ILcd2DEditablePoint. This is for example not the case for a TLcdEditableMS2525bObject/TLcdEditableAPP6AObject. It is now possible to create any ILcdEditableMS2525bShape/ILcdEditableAPP6AShape icon symbol using the creation controller.

    2013.0.09

    ImprovementLuciadFusion

    LCD-1842
    TLspPointToPointSnapper: improved the snapping performance when working with many points.

    2013.0.07

    ImprovementMaritime Standards

    4 new implementations of ILcdS57Attribute are available in the API, which model the specific attribute types available in S-57: TLcdS57EnumeratedAttribute, TLcdS57FloatAttribute, TLcdS57IntAttribute and TLcdS57ListAttribute. Use these implementations when creating S-57 data programmatically. TLcdS57Attribute should only be used for attributes of type coded string or free text.

    Bug fixLuciadFusion

    LCD-4040
    The make_osgi_bundles script now also processes the native libraries necessary for LuciadLightspeed's touch support.

    Bug fixLuciadFusion

    LCD-4031
    Fixed balloon rendering problem for jdk 1.5 that would cause greater-than signs to appear at the side of the balloon.

    Bug fixLuciadFusion

    LCD-4028
    Several ILcdGXYPainter implementations did not return a full deep clone, making the clone potentially unsafe when used in another thread.

    Bug fixLuciadFusion

    TLcdAnchoredIcon: fixed the default anchor point calculation for non-square icons.

    Bug fixLuciadFusion

    LCD-3992
    When modifying halo settings in the label painters, and using domain objects that implement ILcdCache, labels were not updated correctly.

    Bug fixLuciadFusion

    LCD-4020
    The type of the choice property 'ExtendedData' in the AbstractFeatureType was incorrect, this has been fixed.

    Bug fixReal-time Engine

    LCD-4030
    ALcdTimeIndexedSimulatorModel: fixed exception when you removed the last track with the removeTracks method.

    Bug fixDefense Symbology

    LCD-4029
    The APP-6B Non-Submarine symbol (1.X.5.4) was not correct (incorrect font type and alignment) and has been fixed.

    Bug fixDefense Symbology

    LCD-4027
    The label painter for the MIL-STD 2525c Minimum Risk Route (MRR) symbol (2.X.2.2.2.2) did not advertise correct label bounds, causing label decluttering algorithms to fail.

    Bug fixDefense Symbology

    The APP-6B Trawler symbol (1.X.4.3.2.3, S*S*XFTR--*****) could not be created, due to an inconsistency in the symbol list in the APP-6B standard (missing symbol entry).

    Bug fixMaritime Standards

    LCD-4018
    The rendering of S-52 text labels was broken, this has been fixed.

    Bug fixMaritime Standards

    LCD-4032
    A bug in the comparison of ILcdS57Attribute instances has been fixed. This bug could affect the correct visualization of manually created S-57 data (data decoded by the standard S-57 decoders is not affected).

    Bug fixMaritime Standards

    LCD-4024
    Stroke-width now properly takes into account the default pixel density of ecdis.

    Bug fixMaritime Standards

    The TLcdS52DisplaySettings.isDisplayObjectsOutsideView() setting was not taken into account when creating a cell layer via TLcdS52ProductConfiguration.createGXYLayerFactory().createGXYLayer(). This has been fixed.

    Bug fixMaritime Standards

    LCD-4011
    A bug in the rendering of overscale indications has been fixed: the overscale indication was sometimes rendered with line thickness 2, this is now always 1.

    Bug fixMaritime Standards

    The layer factory created with TLcdS52ProductConfiguration#createGXYLayerFactory no longer throws exceptions for invalid models. Now null is returned when no layer can be created for a model which is according to the ILcdGXYLayerFactory documentation. This for example allows to include the layer factory in a composite layer factory.

    Bug fixRadar Connectors

    LCD-4008
    TLcdASTERIXModelDecoder: no longer throws exceptions for some specific PCAP files that contain IP fragments for other IP addresses.

    2013.0.06

    ImprovementLuciadFusion

    LCD-3919
    TLspCreateController now automatically cancels itself if it could not initialize the creation. This is convenient if a controller model asks the user for additional input and the user cancels.

    ImprovementLuciadFusion

    LCD-3986
    The ruler controller (TLspRulerController) now visualizes snapping points for the first point of the ruler measurement.

    ImprovementRadar Connectors

    LCD-3947
    TLcdASTERIXTrajectory: the value of data properties is now the latest non-null value of the corresponding track property instead of simply the latest value.

    ImprovementRadar Connectors

    LCD-3951
    TLcdASTERIXModelDecoder is now able to decode multiple files in one go. A trajectory split over two or more files can be decoded as a single trajectory with this. See the 'How to decode ASTERIX data' section in the developer's guide and the reference documentation of TLcdASTERIXDataSource for more information.

    Bug fixLuciadFusion

    LF-463
    Fixed a class loading incompatibility with Oracle WebLogic so that the fusion server can once again be readily deployed on that platform too.

    Bug fixLuciadFusion

    LF-476
    Fixed a memory leak when fusing large S-57 catalogues.

    Bug fixLuciadFusion

    LF-471
    Fixed double negation in web.xml, in the description of the commit policy.

    Bug fixLuciadFusion

    LF-464
    The asset type for multileveled elevation rasters is now correctly detected as ELEVATION.

    Bug fixLuciadFusion

    The TLspShapePainter contained a memory leak when using TLspIconStyle instances. This memory leak was mainly triggered when icons appeared and disappeared frequently in the view (e.g. during zooming and panning). This has been fixed.

    Bug fixLuciadFusion

    LCD-4003
    Fixed a problem with the ordering of Screenoverlay elements in a GXY view, with respect to their drawOrder.

    Bug fixLuciadFusion

    LCD-3998
    Improved handling of unexpected GDAL_NODATA tag values in TIFF files..

    Bug fixLuciadFusion

    LCD-3961
    Creation handles for 3D pointlists and 3D buffers used to consume mouse wheel events for certain stages of creation. This has been fixed.

    Bug fixData Connectivity Manager

    LF-477
    An internal error, occurring when refreshing the tile store manager while the fusion engine is running, has been fixed.

    Bug fixData Connectivity Manager

    LF-468
    Fixed a ClassCastException When dragging a vector layer to an IMAGE coverage and letting the coverage take the new asset into account.

    Bug fixData Connectivity Manager

    LF-465
    The error dialog when creating a preview layer for a coverage with asset sources that are no longer valid is now correctly formatted.

    Bug fixAviation Standards

    LCD-3872
    Fixed ClassCastException that would occur in some rare conditions.

    Bug fixDefense Symbology

    LCD-4009
    The icon cache in TLcdMS2525bObjectIconProvider and TLcdAPP6AObjectIconProvider did not correctly handle cache entry collisions in all cases, which could lead to incorrect icons.

    Bug fixDefense Symbology

    LCD-3994
    The Fix symbol in APP-6B (2.X.2.1.1.1.1) was incorrectly advertised as a selectable symbol instead of a category in the symbol browser.

    Bug fixMaritime Standards

    LCD-3991
    TLcdS57CatalogueModelDecoder.canDecode() now returns true for directories, to be consistent with decode(), which supports the decoding of directories.

    Bug fixRadar Connectors

    LCD-3997
    TLcdASTERIXCategory11: data Item I011/170 (Track status), field "Track service end" is now recognized as a termination message.

    2013.0.04

    ImprovementLuciadFusion

    LCD-3960
    Added new methods set/getModelReferenceFormatter on TLcdWFSTransactionRequest to be able to set a formatter to encode a model reference to a String in WFS transaction requests. By default, an EPSG encoding is used; the main use case is to support the formatting of custom references that don't have an EPSG encoding.

    ImprovementS-63

    LCD-3973
    The S-63 implementation has been upgraded to support the new IHO certificate, replacing the existing certificate which expires in August 2013. This upgrade is mandatory for all applications loading S-63 data which is ordered as of August 2013. The S-63 decoder now supports both IHO certificates by default (the old certificate is still required for decoding of existing data). In addition, the Primar certificate is now also supported. To implement this functionality, the TLcdS63ModelDecoder API has been extended to support the configuration of multiple SA certificates.

    Bug fixLuciadFusion

    LCD-3985
    A bug was fixed which prevented custom model reference parsers from being called when another custom model reference parser threw a ParseException.

    Bug fixLuciadFusion

    LCD-3967
    The native libraries necessary to access iButtons on Windows are again present in the lib/native folder. This means they no longer have to be copied over from the licenses/hardwarekey folder.

    Bug fixLuciadFusion

    LCD-3982
    The cache of model references is now correctly reset upon servlet initialization. This eliminates problems with unknown references which kept polluting the cache after hot redeployment of the servlet.

    Bug fixLuciadFusion

    LCD-3978
    TLspLabelEditor could throw a NPE when no ALspLabelEditFilter was set. This error was introduced when adding support for LCD-3751.

    Bug fixLuciadFusion

    LCD-3971
    Fixed potential memory leak when re-using the TLspCustomizableStyle instances of a TLspCustomizableStyler.

    Bug fixLuciadFusion

    LCD-3968
    TLspRotateController could slightly pan the view when simply pressing the mouse button. This has been fixed.

    Bug fixLuciadFusion

    LCD-3955
    Resolved an issue where TIFF files containing an associated alpha channel could be rendered incorrectly.

    Bug fixLuciadFusion

    LCD-268
    TLcdTouchDevice.getTouchDeviceStatus now returns more relevant error codes.

    Bug fixDefense Standards

    LCD-3977
    TLcdNITFModelDecoder now correctly processes blocked images in combination with JPEG compression.

    Bug fixMaritime Standards

    LCD-3983
    TLcdS52GXYCatalogueLayer now listens to scale ranges on the TLcdS52DisplaySettings object it is configured with. This ensures that changes to the scale ranges will be taken into account when the layer is being redrawn.

    Bug fixMaritime Standards

    InputStreams opened within TLcdS57ModelDecoder were not always closed in case the opened files do not contain valid S-57 data. This has been fixed.

    2013.0.02

    ImprovementLuciadFusion

    LF-374
    LuciadFusion now supports clipping assets on single S-57 cells (clipping was previously only supported on catalogues).

    ImprovementLuciadFusion

    LCD-3954
    If a TLcdLayer has a filter that implements ILcdChangeSource, it listens for changes in that filter. If, however, that filter is also referenced by other parts of the application, the layer could not be garbage collected.

    ImprovementMaritime Standards

    The labeling flag of layers created by the TLcdS52ProductConfiguration is enabled by default now. S-52 labeling is controlled via the TLcdS52DisplaySettings, but only works if the layer labeling flag is enabled as well. By enabling this flag by default, it is no longer necessary to modify two flags to enable S-52 labeling.

    ImprovementRadar Connectors

    LCD-3911
    TLcdASTERIXCategory11: trajectories of category 11 now also have properties that correspond to the sub-properties of the FlightPlanRelatedData property of category 11 tracks.

    ImprovementRadar Connectors

    LCD-3910
    The values for the 'TypeOfAircraft' property can now be set for tracks of categories 30 and 30 Version 2.5 Ter. Trajectories of these categories now also have an 'TypeOfAircraft' property whose value you can change.

    ImprovementS-63

    LCD-3950
    The TLcdS63ModelDecoder now support the setting of multiple permit files (both basic and meta permit files).

    Bug fixLuciadFusion

    LF-459
    The deployment script did not deliver working development WAR files (deployment WAR files were unaffected). It also did not include license JAR files correctly.

    Bug fixLuciadFusion

    LF-456
    When adding assets into an existing coverage with explicit scale denominators, fusion failed with an exception. This has now been fixed.

    Bug fixLuciadFusion

    LF-454
    A bug was fixed which caused black blocks when fusing CADRG data.

    Bug fixLuciadFusion

    LCD-3949
    A bug was fixed in the caching Tile Store which could result in a corrupted tile. This could happen in specific circumstances, when cached tiles have been updated on the server, and the server goes offline while updated tiles are being retrieved from the server.

    Bug fixLuciadFusion

    LCD-3759
    Fixed a possible exception in TLcdStatusInputStreamFactory when accessing it in multiple threads.

    Bug fixLuciadFusion

    LCD-3943
    The caching Tile Store has been made more robust in case of exceptions. It now continues serving tiles from cache when the network cable is unplugged (on Linux).

    Bug fixLuciadFusion

    LCD-3933
    Lightspeed rasters painted at a height above the ellipsoid were sometimes also painted on the view's terrain. In particular the issue occurred when combining the OBJECT_DEPENDENT elevation mode with the BACKGROUND layer type.

    Bug fixLuciadFusion

    LCD-3899
    TLcdPrintPreview: fixed a possible ArithmeticException.

    Bug fixLuciadFusion

    LCD-3572
    Grid labels would temporarily disappear in some cases when the view contains many labels with changing content.

    Bug fixLuciadFusion

    LCD-3956
    Fixed an exception that could occur when retrieving the bounds of a vector shape from the layer or painter.

    Bug fixLuciadFusion

    LCD-2993
    Improved the logging output of TLspShapePainter. The painter no longer uses non-API classes for logging, and log levels and messages have been improved.

    Bug fixLuciadFusion

    LCD-2780
    Fixed an issue that caused icons to be drawn upside down in 3D views under certain conditions.

    Bug fixLuciadFusion

    LCD-1470
    Fixed a potential IndexOutOfBoundsException when selecting objects in shape layers.

    Bug fixData Connectivity Manager

    LF-360
    Adding thousands of assets to the Tile Store by using drag-and-drop of map layers is now a lot faster.

    Bug fixData Connectivity Manager

    LF-457
    A number of bugs have been fixed in the extents layer.
    • The extents of all resources are now shown more correctly in all projections, even when the extents wrap around the date line. Any remaining issues are due to LCD-4037.
    • The labels of the extents layer now behave correctly when zooming/panning.
    • When an uncommitted resource is deleted, it is also deleted from the extents layer.
    The visualization of the extents layer has been improved:
    • The extents of assets and coverages have 2 different colors: green for assets, yellow for coverages.
    • Committed resources have a solid outline and a translucent fill.
    • Uncommitted resources have a stroked outline and a translucent fill.
    • Deleted resources have a stroked line and no fill.

    Bug fixData Connectivity Manager

    LF-422
    Adding multiple assets to a coverage now only opens one "Update coverage metadata"confirmation dialog at a time, it is now clear which confirmation dialog belongs to which asset and it is possible to apply the same choice for all added assets by means of a checkbox.

    Bug fixWeather & Environment Standards

    LCD-3774
    GRIB files containing non-multiple-of-2-bits data could cause exceptions during painting.

    Bug fixDefense Symbology

    LCD-3946
    The preview icon and the labeling for the MIL-STD 2525c Censor Zone (2.X.4.3.3.4.*) and Critical Friendly Zone (2.X.4.3.3.6.*) symbols were not correct.

    Bug fixDefense Symbology

    The APP-6B symbol Sonobuoy (G*C*OXY---*****, 2.X.2.5.1.4) was incorrectly interpreted as a symbol directory and could therefore not be created through TLcdEditableAPP6AObject.

    Bug fixDefense Symbology

    LCD-3935
    The visualization of the affiliation frame was not fully correct for APP-6B and MIL-STD 2525c. More specifically, the following issues have been fixed:
    • The Suspect, Pending, Exercise Pending, Assumed Friend, Exercise Assumed Friend, Assumed Neutral and Exercise Assumed Neutral affiliations are now painted with a dashed line style.
    • The Assumed Friend, Exercise Assumed Friend, Assumed Neutral, Exercise Assumed Neutral and Suspect affiliation frames no longer include a ? character at the top right.
    • The Pending and Exercise Pending affiliation frames no longer include a ? character in the center (except for the Unknown battle position symbol, see next item).
    • For the affiliation frame of the Unknown battle position warfighting symbol (1.X):
      • the frame now has the same shape as the frame of the Ground Equipment symbol.
      • the frame now always has a large ? character in the center, for each affiliation type.
      • the frame no longer includes the U, F, N, H, ?F, ?N, ?H characters.

    Bug fixMaritime Standards

    LCD-2901
    The navigational purpose for cell in AML catalogues now defaults to 1 instead of 10. This provides better default scale ranges for AML catalogue data.

    Bug fixMaritime Standards

    A bug in the rendering of S-52 texts in TLcdS52GXYCatalogueLayer has been fixed: the layer's labeling flag no longer needs to be enabled to render labels, nor do the layer factories configure a label painter on the S-52 layers anymore (labels are rendered together with all other geometries, as they need to respect the rendering order of S-52).

    Bug fixMaritime Standards

    The floating point separator for 'TE' instructions, which could differ depending on the operating system settings, is now always represented by a dot ('.'), as required by the specification.

    Bug fixRadar Connectors

    TLcdASTERIXTrajectory: the values gotten through the ILcdFeatured interface now match the values gotten through the ILcdDataObject interface.

    Bug fixRadar Connectors

    LCD-3936
    TLcdASTERIXTrajectory: the bounds returned by getBounds now also include height information.

    2013.0.01

    ImprovementLuciadFusion

    LCD-3764
    TLcdGeodeticDatum.getHeight() now avoids allocations when it can only return height 0.0, which is the case for non-geoid geodetic datums.

    ImprovementLuciadFusion

    LCD-3917
    The WMS client has been made less strict with respect to the ordering of the Attribution and ScaleHint XML elements in the WMS capabilities, to increase interoperability with WMS servers that do not strictly adhere to the OGC WMS Capabilities XML Schema.

    ImprovementLuciadFusion

    LCD-3321
    The content type of output format "JSON" or "application/json" is now correctly set to "application/json".

    ImprovementLuciadFusion

    LCD-3858
    TLsp3DIconStyle no longer throws an exception if it is created with no icon specified. Instead, a default arrow icon is used.

    ImprovementReal-time Engine

    LCD-3861
    TLcdSimulator: now responds quicker to heavy changes in work load in combination with low frame rates.

    Bug fixLuciadFusion

    LCD-3748
    TLcd2DBoundsIndexedModel now does not fire an event when removing an object that is not in the model.

    Bug fixLuciadFusion

    LCD-3758
    Fixed issue with balloons not respecting the balloon borders while calculating the maximum size of its contents.

    Bug fixLuciadFusion

    LCD-3737
    HGTModelDecoder sample class now returns a model descriptor that correctly indicates that the model contains elevation data.

    Bug fixLuciadFusion

    LCD-3708
    Raster data was sometimes not painted accurately when the model reference's geodetic datum differs significantly from the one of the world reference.

    Bug fixLuciadFusion

    LCD-3921
    The release no longer includes versions 2.4 and 2.5 of the servlet api. Only version 2.5 is now included.

    Bug fixLuciadFusion

    LCD-3914
    TLspSLDStyler now paints icons by default using ILspWorldElevationStyle.ElevationMode.OBJECT_DEPENDENT, instead of ILspWorldElevationStyle.ElevationMode.ABOVE_TERRAIN.

    Bug fixLuciadFusion

    A bug in the computation of XML schema dependencies has been fixed: schema's which are only dependent on other schema's via a global element referring to a global type in another schema, now have a proper dependency on this other schema.

    Bug fixLuciadFusion

    The XML Binding framework now supports types with anonymous inner super types.

    Bug fixLuciadFusion

    LCD-3770
    The fusion.client.gxy sample now correctly visualizes coverage bounds, even when they wrap around the date line.

    Bug fixLuciadFusion

    LCD-3903
    TLspLabelPainter could possibly crash by trying to paint destroyed textures.

    Bug fixLuciadFusion

    LCD-3859
    The TLspTiledWMSProxyPainter's query method did not work correctly.

    Bug fixLuciadFusion

    LCD-3761
    The TLspTiledWMSProxyPainter now preferably requests data from the server in the view's world reference. This avoids some distortion since the data is only transformed once on the server instead of both on the server and client.

    Bug fixLuciadFusion

    LCD-3747
    Resolved an issue that caused Geosym icons to be painted outside of their bounds.

    Bug fixLuciadFusion

    LCD-3736
    TLcdEarthTileSetElevationProvider: fixed bug in elevation interpolation when some samples are NaN.

    Bug fixLuciadFusion

    LCD-3763
    Fixed a layer order problem when selecting objects in a TLspGXYLayerAdapter.

    Bug fixLuciadFusion

    LCD-3751
    When an object has more than one label, it is now possible to specify which labels can be moved using TLspLabelEditor.setLabelEditFilter().

    Bug fixLuciadFusion

    LCD-3745
    Fixed a rare BufferOverflowException that could happen when painting stroked lines.

    Bug fixLuciadFusion

    LCD-1468
    TLcdEarthElevationDataCombiner: did not support tiles with odd tile resolutions.

    Bug fixDatabase Connectors

    LCD-3928
    The decoder can now populate the auto-generated primary feature of added elements, even if it is not the ROWID. Previously, it would always the ROWID as primary feature of added elements.

    Bug fixReal-time Engine

    LCD-3927
    TLspPlotLayerBuilder: the plot icons could be too small when printing a plot layer on some configurations.

    Bug fixWeather & Environment Standards

    LCD-3773
    Fixed a possible NullPointerException when decoding GRIB data.

    Bug fixAviation Standards

    LCD-3923
    The procedure leg transition between an AF and a subsequent TF leg did not properly take into account the fixOverflyType property of the AF leg. It always assumed a FLY_OVER value.

    Bug fixDefense Symbology

    LCD-3922
    Changing one of the label style properties of an APP-6 / MIL-STD 2525 object and firing a model changed event did not trigger a label rendering update in a Lightspeed view.

    2013.0

    ImprovementLuciadFusion

    The LuciadLightspeed distribution now contains a sample that creates the necessary metadata to integrate LuciadLightspeed into OSGi-based projects. You can get started by running the make_osgi_bundles.bat (on Windows) or make_osgi_bundles.sh (on Unix-like systems) in the build/osgi directory. You can find additional information in the 'Running in OSGi' chapter in LuciadLightspeed's developer's guide.

    ImprovementLuciadFusion

    ALcdAnimationManager now uses a default update rate of 60 Hz instead of 30 Hz. This is in line with today's monitor refresh rates.

    ImprovementLuciadFusion

    LCD-3471
    The Multi-threaded Data Access chapter in the LuciadLightspeed Developer's Guide has been completely revised.

    ImprovementLuciadFusion

    LCD-2491
    Fixed an issue in the edit and ruler controllers that could result in visual flickering of the painted handles. This was most prominent in the ruler controller during editing in geodetic mode.

    ImprovementLuciadFusion

    The new classes TLcdCompositeModelDecoder and TLcdCompositeGXYLayerFactory provide a composite implementation of ILcdModelDecoder and ILcdGXYLayerFactory, respectively.

    ImprovementLuciadFusion

    The TLcdDataObjectExpressionLanguage has been extended. It is now also possible to update values in a data object for straight property expressions (DataProperty1.DataProperty2...). Some utility methods to work with that kind of expressions are also added.

    ImprovementLuciadFusion

    Asynchronous paint threads are now cleaned up automatically when they are inactive for a certain amount of time.

    ImprovementLuciadFusion

    TLspRasterLayerBuilder can now also visualize parameterized raster data with icons, using a TLspParameterizedIconStyle.

    ImprovementLuciadFusion

    Introduced TLcdDataPropertyValueContext in the API. This class is a container for information about the value of a TLcdDataProperty somewhere in a TLcdDataObject.

    ImprovementLuciadFusion

    TLcdTFWRasterModelDecoder now has a default model reference decoder.

    ImprovementLuciadFusion

    The fusion.client.opengl sample was removed. The fusion.client.metadata.gxy and fusion.client.metadata.lightspeed samples are now changed tofusion.client.metadata.

    ImprovementLuciadFusion

    The interface ILspAWTView and the abstract class ALspAWTView have been introduced as common ancestors of TLspAWTView and TLspSwingView.

    ImprovementLuciadFusion

    Lightspeed raster layers now allow configuring if and how the painted raster data is interpolated. The interpolation type can be configured on TLspRasterStyle.

    ImprovementLuciadFusion

    Lightspeed raster layers now also support painting rasters at a fixed altitude above the ellipsoid instead of only on the terrain. The elevation mode can be configured on TLspRasterStyle.

    ImprovementLuciadFusion

    With the new abstraction ALfnTileStoreProvider and its implementation TLfnTileStoreProvider, you can now easily create ALfnTileStore instances from a URI. TLfnTileStoreProvider can sort out the difference between a "http" and a "file" URI, and creates the correct ALfnTileStore accordingly.

    ImprovementLuciadFusion

    TLcdTransportFactory has been introduced on the API as a default implementation of ILcdTransportFactory. It is based on Apache's HttpClient library 4.2.3. Instances of this class can be used to customize transport in for example FusionClient, BingMaps and OGC web clients.

    ImprovementLuciadFusion

    A new client API for OGC Web Map Tile Services (WMTS) has been introduced.
    For more information, see:
    • The Web Client Suite developer's guide (OGCWebClientSuite_DeveloperGuide.pdf)
    • The class javadoc of TLcdWMTSModelDecoder and TLcdWMTSClient
    • The package javadoc of com.luciad.ogc.wmts

    ImprovementLuciadFusion

    Added the possibility to separate different multi-touch navigation gestures. Pan, zoom and rotate gestures can be combined or performed separately using TLspTouchNavigateController.setCombineGestures( true | false ). Also a new touch gesture is introduced to perform pitch rotations. The gesture is activated by dragging up or down with minimum 3 fingers.

    ImprovementLuciadFusion

    Lightspeed views now support lighting and fog effects in 3D views. This can result in more visually striking images, as well as improved perception of scale and shape. The relevant API can be found in the package com.luciad.view.lightspeed.services.effects. There is a new Lighting theme in the LuciadLightspeed Demo which demonstrates the new functionality (see samples.lightspeed.demo.application.data.lighting).

    ImprovementLuciadFusion

    Touch related samples now make use of a more modern Nimbus based look and feel, instead of the metal look and feel.

    ImprovementLuciadFusion

    TLcdGXYLayerTree and the associated cell renderers are now more compatible with Nimbus Look and Feel. Before, it could cause subtle issues, such as Nimbus ignoring some properties specified in the UIDefaults.

    ImprovementLuciadFusion

    It is now possible to override the ILcdLayer.isEditableSupported() property using TLspShapeLayerBuilder.

    ImprovementLuciadFusion

    TLspLabelPainter now supports the ILspWorldElevationStyle.getElevationMode() property. This property is used to calculate the label anchor.

    ImprovementLuciadFusion

    TLfnCachingTileStore: a new client-side tile caching mechanism has been introduced on the API. It allows visualization to continue working offline when for example the server is offline. It may also speed up the visualization of tiles when a server is slow. By sweeping the oldest tiles, a best-effort attempt is made to keep the cache size roughly between a low and a high mark. Beware that the cache is not synced with the remote server, so it may serve outdated tiles for an indefinite amount of time.

    ImprovementLuciadFusion

    The WFS service in the LuciadFusion Data Server now supports exporting data to GeoJSON, next to GML.

    ImprovementLuciadFusion

    Tile iterations based on ALfnCoverage.getTileCoordinates no longer throw ConcurrentModificationException when write operations have happened since the start of the iteration. This allows for applications to iterate over a coverage while it is being modified (a "live" coverage).

    ImprovementLuciadFusion

    LCD-3517
    Icon painting performance when using TLspShapePainter or TLspShapeLayerBuilder has been improved for the case where many different icons are used.

    ImprovementLuciadFusion

    When tiles are deleted from a Tile Store, space is now reclaimed. Bear in mind that putting tiles over existing ones does not reclaim space; rather the whole history of the tiles is preserved.

    ImprovementLuciadFusion

    TLcdGXYViewComponentPrintable was introduced to make it easier to setup multi-page printing and printing of a view layed out in a Swing hierarchy. The printable can also create a preview component (TLcdPrintPreview). This is demonstrated in the printing sample. For more information on printing, refer to the developer's guide Chapter on printing.

    ImprovementLuciadFusion

    Terminology: a bounding shape has been renamed to a clipping shape. This brings LuciadFusion terminology in line with that of LuciadMap (Earth). This change reflected in the API and the documentation.
    • The method ALfnAssetMetadata.getBoundingShape() has been deprecated in favor of ALfnAssetMetadata.getClippingShape().
    • The builder method ALfnAssetMetadata.Builder.setBoundingShape() has been deprecated in favor of ALfnAssetMetadata.Builder.clippingShape().

    ImprovementLuciadFusion

    All setters on the metadata builders "setSomething(Something aSomething)" have been renamed to "something(Something aSomething)". This brings LuciadFusion conventions in line with those of LuciadLightspeed. The old setters have been deprecated for backwards compatibility, and refer to their new counterparts. Some examples (non-exhaustive list):
    • ALfnResourceMetadata.Builder.setId(String aId) => ALfnResourceMetadata.Builder.id(String aId)
    • TLfnVectorCoverageMetadata.Builder.setMaxLevel(int aLevel) => TLfnVectorCoverageMetadata.Builder.maxLevel(int aLevel)

    ImprovementLuciadFusion

    Fusion of coverages can now also be performed on the server. A system which is both fusion server and tile server is a typical setup. In a more advanced setup, client, fusion server and tile server are all different systems. The client and fusion server both require access to the source data. The data root of the source data may be different on the different machines. You can define path prefixes to make abstraction of system-specific data roots.

    Work has been done to centralize all the information about the fusion of a coverage on the tile server. If a fusion server breaks down, another fusion server has all the information it needs to be able to continue the work. Some configuration has been moved from the engine session to the coverage. Line simplification, area simplification, filtering etc. can now be configured on the coverage rather than on the engine session.

    ImprovementLuciadFusion

    LCD-1895
    The ILspGLResourceCache that is used by the painters to store OpenGL resources such as textures and discretized geometry has been optimized to reduce memory consumption. Next to configuring the cache's size in bytes, the cache can now also be restricted by specifying the maximal number of cache entries. See TLspViewBuilder#glResourceCacheMaxEntries(X) and the system property -Dcom.luciad.view.lightspeed.opengl.maxCacheEntries=X where X is the maximal number. By default there is no limit on the number of cached entries.

    ImprovementLuciadFusion

    Support was added to quickly add all supported LuciadLightspeed data formats to your application by means of a service look-up mechanism. This is demonstrated in the samples.common.serviceregistry sample package and the GXY and Lightspeed decoder samples. In addition, TLcdServiceAnnotationProcessor enables you to add your own services by simply annotating them with @LcdService. See the developer's guide Chapter on adding data formats for more information.

    ImprovementLuciadFusion

    The Lightspeed raster layers now support interactive color filtering. You can apply a custom color filter by using a TLspColorLookupTableFilterStyle. More details are available in the developer's guide and the javadoc of TLspRasterLayerBuilder. The lightspeed.style.raster sample also demonstrates applying a color filter to a raster. Finally, a new Image Filter theme in the LuciadLightspeed Demo also demonstrates this functionality (see samples.lightspeed.demo.application.data.imagefilter).

    ImprovementLuciadFusion

    Added TLcdKML22ResourceProvider to TLcdKML22ModelDescriptor. The resource provider is there for convenience, and is put on every root kml model decoded by the TLcdKML22ModelDecoder.

    ImprovementLuciadFusion

    TLcdModelList now has a setModelEncoder method. This allows you to specify a model encoder for the model list.

    ImprovementLuciadFusion

    The SLDGXYLayerFactory looks for SLD files (.sld) accompanying the model's data files, and applies this style. This allows styling unstyled formats without having to write code. This layer factory is demonstrated in the decoder sample.

    ImprovementLuciadFusion

    KML now has native visualization support in ILspViews. Use TLspKML22LayerBuilder to create an ILspLayer for a KML model. To perform a view-fit action according to the KML specifications, you can use the TLspKML22ViewFitAction class.

    ImprovementLuciadFusion

    Fusion engine checkpoints are now stored on the tile store in the coverage user data (see ALfnCoverage.getUserData).

    This means ALfnEngineEnvironment.getCheckpointDirectory is not used anymore. Using null to disable checkpoints is still valid, but instead you should set the checkpoint interval to -1 (you can set it with RasterSessionBuilder.setCheckpointInterval or VectorSessionBuilder.setCheckpointInterval).

    ImprovementLuciadFusion

    LCD-3501
    Added support for ILcdAnchoredIcon in TLspIconStyle. Anchored icons will automatically be displaced to their anchor-points. Their center of rotation will also shift to their anchor point.

    ImprovementLuciadFusion

    TLcdWatermarkPrintable and TLcdCompositePageable were added. TLcdWatermarkPrintable makes it possible to decorate a Printable with a textual watermark. TLcdCompositePageable makes it possible to compose different Pageables.

    ImprovementLuciadFusion

    LCD-3497
    Loading or refreshing groundoverlays now happens more efficiently.

    ImprovementLuciadFusion

    Several GXY samples have been combined, renamed and restructured. Most notably, there is now a single decoder sample that is able to open all supported formats.

    ImprovementLuciadFusion

    TLcdIndexColorModel now supports TLcdColorMap instances whose levels do not map directly to raster values by making use of an ILcdRasterValueConverter. This allows retaining the semantics of the color map's levels (e.g. height, temperature).

    ImprovementLuciadFusion

    TLcdKML22RenderableModel.applyOnInteracts2DBounds now returns screenoverlay elements if it is queried with an undefined bounds. (See ILcdBounds.isDefined)

    ImprovementLuciadFusion

    LCD-3303, LCD-2373
    TLspCreateController now starts its creation on mouse-moved events instead of on the first mouse released event. This allows creation handles to perform visualizations before the first click. As a first use case, TLspPointSetHandle has been updated to show its point while the mouse is hovering over the globe. This allows you to see snapping on your first point while creating objects.

    ImprovementLuciadFusion

    ILspTaskExecutor now supports executing tasks with a delay. This can for example be used to easily throttle how often a task is run. The delay can be configured on TLspTaskExecutorRunnable.

    ImprovementLuciadFusion

    The "fusion.engine" GUI sample and "fusion.engine.coveragecropper" CLI sample have been replaced with a comprehensive command-line fusion tool: "fusion.engine". Limitations:
    • Fusing GRIB data is not supported.

    ImprovementLuciadFusion

    LCD-104
    Most implementations of ILcdRaster, ILcdMultilevelRaster and ILcdTile now implement the ILcdDisposable interface. This allows applications to explicitly release any resources that are held by a raster and its tiles without relying on format specific implementation details.

    ImprovementLuciadFusion

    Lightspeed views can now be printed at high resolution using TLcdPrintComponentAction. Also, TLspViewComponentPrintable was introduced to make it easier to setup multi-page printing and printing of a view layed out in a Swing hierarchy. For more information on printing Lightspeed views, refer to the Lightspeed printing sample and the developer's guide.

    ImprovementLuciadFusion

    The LuciadFusion Data Server now supports the OGC Web Map Tile Service (WMTS) protocol.

    Image coverages can be exposed as a WMTS layer, if they have square pixels.

    You can enable the WMTS server in the deployment descriptor of the data server, i.e. the web.xml file. Please refer to the LuciadFusion Developer's Guide for more details.

    ImprovementLuciadFusion

    ALcdAnimationManager now has a method to pause/resume all running animations. See ALcdAnimationManager.setPaused(boolean).

    ImprovementLuciadFusion

    TLspLabelPainter now supports ILcdAnchoredIcon objects.

    ImprovementLuciadFusion

    TLspViewBuilder now supports automatic resource sharing between views. This is on by default. It can be turned off using the TLspViewBuilder#disableAutomaticContextSharing() method. All views created by this builder that have this option on will share a resource cache for more optimal memory use.

    ImprovementLuciadFusion

    TLspViewBuilder now has a new method which allows the user to indicate whether any GUI components (such as navigation controls) will be overlaid on top of the views that are created. Switching this off may allow the view to perform some behind-the-scenes optimizations and may avoid some known issues with JDK 1.7. Overlay component support is still enabled by default.

    ImprovementLuciadFusion

    LCD-3051
    TLspViewBuilder has new methods viewType() and worldReference(), which allow the new views to be pre-configured as 2D or 3D with a given reference. These methods can be used in lieu of a subsequent call to TLspViewTransformationUtil.

    ImprovementLuciadFusion

    LCD-263
    The label painters now try to make use of ILcdCache as much as possible when enabling halo painting. This removes the need to manually clear the painter's cache when the domain object implements ILcdCache.

    ImprovementLuciadFusion

    LCD-3237
    TLcdGXYLabelingPathProvider was added. This path provider can provide labeling paths for most supported shapes.

    ImprovementLuciadFusion

    LCD-3399
    TLcdGXYShapePainter was added. This class paints and edits all supported shapes.

    ImprovementLuciadFusion

    The SQLite decoder sample was removed. You can now open .spl files using the common decoder samples: samples.gxy.decoder and samples.lightspeed.decoder.

    ImprovementLuciadFusion

    LCD-3365
    TLcdSHPModelDecoder now reuses String instances for properties having the same value (similar to Java's String.intern() mechanism), which may reduce both the memory usage and decoding time of SHP models significantly.

    ImprovementLuciadFusion

    TLspViewBuilder now has a convenience method to configure the view's background color.

    ImprovementLuciadFusion

    LCD-332
    TLcdGXYViewFitAction now also takes into account child layers when fitting on layer tree nodes (see the setFitToChildren method).

    ImprovementLuciadFusion

    TLspRasterLayer now supports interactively changing the coloring for elevation data. This is demonstrated in the lightspeed.style.raster sample.

    ImprovementLuciadFusion

    LCD-3377
    It is now possible to specify a label location in TLspBoundsQuery and TLspIsTouchedQuery.

    ImprovementLuciadFusion

    Various samples were changed:
    • The "streets" sample was moved to the LuciadLightspeed Demo, see samples.lightspeed.demo.application.data.streets
    • Various label samples were merged into one, see samples.lightspeed.label.placement

    ImprovementLuciadFusion

    LCD-1520
    TLcdStrokeLineStyleBuilder now allows configuring how lines are ended and how their segments are joined.

    ImprovementLuciadFusion

    LCD-3055
    Vertical view: improved the interactivity with the cursor and the altitude points.

    ImprovementLuciadFusion

    LCD-2209
    The color of a TLspBounds3DIcon can now be changed, this is used by the default selection style so that the default selection color for 3D icon styles is the same as for regular icons.

    ImprovementLuciadFusion

    LCD-3368
    TLcdUtmMGRSUtil is now about 10%-20% faster.

    ImprovementLuciadFusion

    LCD-689
    Improved the round trip behavior of TLcdUtmMGRSUtil for points near the UTM zone border. TLcdUtmMGRSUtil.utmMgrs2LonLat() now tries to choose a point that lies in the zone, as well as in the MGRS grid square.

    ImprovementLuciadFusion

    LCD-2862
    Incorrectly encoded BBox spatial filters without an ogc:PropertyName element can now be decoded, and evaluated. This improves compatibility with clients that generate invalid XML.

    ImprovementLuciadFusion

    The new classes TLcdGXYViewMeasureProvider and TLspViewMeasureProvider allow retrieving data values for any point in a view, such as the magnetic north declination or weather information. implementations for the relevant models and layers. To see it in action in a sample, simply To see this in action in a sample, simply hover the mouse over any part of the view displaying such information in, for example, the magnetic north sample.

    ImprovementLuciadFusion

    LCD-2997
    Dependencies between labels of non-discrete and discrete labeling algorithms are now supported by default.

    ImprovementLuciadFusion

    LCD-3333
    TLspRasterLayer now supports queries, similar to ILspInteractivePaintableLayer. This allows for example to determine which raster value is painted at a specific pixel in the view.

    ImprovementLuciadFusion

    LCD-3346
    TLspLabelStyler now implements ILspCustomizableStyler.

    ImprovementLuciadFusion

    LCD-3134
    Stroke dash patterns in the line and polygon symbolizer builders can now also be specified using a series of ints.

    ImprovementLuciadFusion

    Added inertia effects to the pan controller. Inertia can be disabled using TLspPanController.setEnableInertia( false ).

    ImprovementLuciadFusion

    LCD-3221
    Performance improvement: TLspLabelPlacer now avoids calling the styler when possible.

    ImprovementLuciadFusion

    LCD-892
    TLcdModelList now has a method setModelReference that can be used to specify a model reference even when the model list is empty.

    ImprovementLuciadFusion

    LCD-692
    TLcdEllipsoidRhumblineUtil and TLcdSphereRhumblineUtil now have a rhumblinePointSFCT() method that takes two points and a ratio as input.

    ImprovementLuciadFusion

    LCD-578
    TLcdXMLDataModelBuilder now fills in the possibleValues property for restriction types.

    ImprovementLuciadFusion

    LCD-567
    Th GML 3.1 and 3.2 model decoders now provide a decodeFeature() method which allows to decode GML documents containing a single GML feature, instead of feature collections.

    ImprovementLuciadFusion

    TLcdGUIIcon has a new icon for routes.

    ImprovementLuciadFusion

    LCD-677
    TLcdEllipsoidRhumblineUtil.closestPointOnRhumbline() was added.

    ImprovementLuciadFusion

    LCD-3349
    Curved path labels (TLcdGXYCurvedPathLabelPainter) now avoid too much curvature, eliminating most self-overlap.

    ImprovementData Connectivity Manager

    The metadata editor now provides an action to make a coverage compliant with the WMTS GoogleMapsCompatible well-known scale set (urn:ogc:def:wkss:OGC:1.0:GoogleMapsCompatible). The action automatically adjusts the geo reference, bounding box, tile layout and tile size of the coverage to match the GoogleMapsCompatible tile pyramid structure.

    ImprovementData Connectivity Manager

    The Assets folder in the Tile Store tree GUI is not displayed anymore. You can now create a coverage immediately when adding data to the tile store, either through a layer or the data importer.

    ImprovementData Connectivity Manager

    The Data Connectivity Manager now also supports fusion on the server. When you connect to a Tile Store URI, a corresponding fusion server is auto-detected based on URI convention. It is possible to detach and attach the DCM to a fusion server. If you close the DCM, fusion keeps on running on the server. For local Tile Stores, the client is used as fusion engine.

    ImprovementAdvanced Raster Services

    TLcdECWModelDecoder now has a default model reference decoder.

    ImprovementAdvanced Raster Services

    TLcdMrSIDModelDecoder now has a default model reference decoder.

    ImprovementDatabase Connectors

    The Oracle Spatial decoder sample was removed. You can now open .ora files using the common decoder samples: samples.gxy.decoder and samples.lightspeed.decoder.

    ImprovementDatabase Connectors

    The DB2 decoder sample was removed. You can now open .db2 files using the common decoder samples: samples.gxy.decoder and samples.lightspeed.decoder.

    ImprovementDatabase Connectors

    The Informix Geodetic decoder sample was removed. You can now open .ifx files using the common decoder samples: samples.gxy.decoder and samples.lightspeed.decoder.

    ImprovementDatabase Connectors

    The Informix Spatial decoder sample was removed. You can now open .isd files using the common decoder samples: samples.gxy.decoder and samples.lightspeed.decoder.

    ImprovementDatabase Connectors

    The MSSQL decoder sample was removed. You can now open .mss files using the common decoder samples: samples.gxy.decoder and samples.lightspeed.decoder.

    ImprovementDatabase Connectors

    The PostGIS decoder sample was removed. You can now open .pgs files using the common decoder samples: samples.gxy.decoder and samples.lightspeed.decoder.

    ImprovementReal-time Engine

    LCD-3711
    TLcdSimulator: frame rate is now more stable during playback, reducing jitter.

    ImprovementReal-time Engine

    The ALcdTimeIndexedSimulatorModel now has support to add and remove tracks after initialization. This allows you to handle certain changes, without having to reinitialize.

    ImprovementWeather & Environment Standards

    The new TLcdGRIBGXYPainterProvider and TLspGRIBLayerBuilder classes allow visualizing all regular and multi-valued GRIB models in either an ILcdGXYView or ILspView. See the decoder.grib.gxy and decoder.grib.lightspeed samples for more information.

    ImprovementWeather & Environment Standards

    TLcdGRIBModelDecoder now has the ability to automatically create multi-valued models for relevant data (for example, wind). See TLcdGRIBModelDecoder#setMultiValuedRasterCreation.

    ImprovementAviation Standards

    LCD-2746
    Runways that are specified in the data will no longer be moved to (0,0), instead they will have an undefined bounds. As a result, setting a bounds filter will filter out these objects.

    ImprovementAviation Standards

    LCD-3180
    The AIXM 5.1 and 5.0 GXY samples have been merged into a single AIXM 5 sample that focuses mainly on the latest version, which is 5.1. The support for the AIXM 5.0 format remains unchanged, so AIXM 5.0 files can still be decoded and visualized by the new sample.

    ImprovementDefense Standards

    TLcdNITFModelDecoder now has a default model reference decoder.

    ImprovementDefense Standards

    The previous samples have been merged into one sample. This sample still supports orthorectification of NITF rasters using SENSRB.

    ImprovementInfrastructure Standards

    The DWG decoder now supports the DWG 2013 file format.

    ImprovementInfrastructure Standards

    The DWG decoder was upgraded to use the ODA 3.8.1 library.

    ImprovementInfrastructure Standards

    The DGN decoder sample was removed. You can now open .dgn files using the common decoder sample: samples.gxy.decoder.MainApplet.

    ImprovementInfrastructure Standards

    The DWG decoder sample was removed. You can now open .dwg and .dxf files using the common decoder sample: samples.gxy.decoder.MainApplet.

    ImprovementMaritime Standards

    TLcdS57CatalogueModelDecoder now also supports decoding of multiple catalogues. Multiple catalogues can be decoded by passing the common parent directory to the decoder's decode() method. This is the preferred way of applying catalogue updates: by putting the update catalogue(s) next to the base catalogue, the decoder will automatically apply all updates in the correct sequence.

    ImprovementRadar Connectors

    The TLcdASTERIXModelListDescriptor has been added. This model descriptor is used for model lists decoded by the TLcdASTERIXModelDecoder. If offers functionality to edit the source and display names.

    ImprovementRadar Connectors

    LCD-3860
    ALcdASTERIXDecoder: the measure type for all track-properties which denote a relative time is now duration instead of absolute time.

    ImprovementRadar Connectors

    TLcdASTERIXModelDecoder can now decode ASTERIX Category 11 and Category 21. The data models can be found in the TLcdASTERIXCategory11 and TLcdASTERIXCategory21 classes respectively. Also added support for a popular draft version of ASTERIX Category 21 (version 0.23). This category can be found in the TLcdASTERIXCategory21Version0Dot23 class.

    ImprovementRadar Connectors

    TLcdASTERIXModelDecoder: this decoder can read ASTERIX data from PCAP files (network Packet CAPture) where ASTERIX data are in either Ethernet (versionII, LLC or LLC+SNAP) packets directly or in UDP datagrams ( UDP datagrams fragmented across multiple IP datagram are also supported).

    ImprovementRadar Connectors

    Some properties of TLcdASTERIXTrajectory and TLcdASTERIXTrack can now be changed by calling their setValue method. Consult the developer's guide for more information.

    ImprovementRadar Connectors

    TLcdASTERIXTrajectory: ASTERIX trajectories now expose a subset of the underlying track properties. Specifically, the track properties that usually remain the same in the complete trajectory are also available as trajectory properties. Consult the developer's guide for more information.

    ImprovementRadar Connectors

    TLcdASTERIXFinalModelEncoder: this model encoder is able to save models and model lists decoded by the TLcdASTERIXModelDecoder. Together with the set of properties that can now change, this allows you to clean up your recorded ASTERIX data.

    Bug fixLuciadFusion

    The equals() and hashCode() methods of TLspViewXYZWorldTransformation2D and TLspViewXYZWorldTransformation3D did not take the entire state of the transformation (such as camera constraints and the installed listeners) into account. Now they use the transformation's identity. To only compare what the transformation shows, use the getIdentifier() method.

    Bug fixLuciadFusion

    LCD-1596
    Fixed a number of compatibility issues with TLspAWTView and JDK 1.7. In particular, the full screen toggle in the Lightspeed samples is now also available when JDK 1.7 is used.

    Bug fixLuciadFusion

    Fixed an issue in TLspShapePainter where points that were projected out-of-bounds could be painted at (0,0) in 2D. Points that fall outside the projection are now always properly discarded during painting.

    Bug fixLuciadFusion

    The WFS service in the LuciadFusion Data Server did not correctly handle XML POST requests.

    Bug fixLuciadFusion

    LCD-3374, LCD-2061, LCD-3202
    The view fitting when using TLspViewTransformationUtil or TLspViewNavigationUtil has been improved significantly:
    • fit accounts for the rotation of the view when fitting in 2D
    • fit more accurately accounts for terrain elevation and the vertical dimension of 3D objects
    • more accurate view preservation when switching from 2D to 3D

    Bug fixLuciadFusion

    LCD-1579

    The Lightspeed raster layers no longer become blurry near the screen edges. This was especially noticeable in high resolution 3D views.

    As a result of this fix the painter may need to load and paint more data in a 3D view which can reduce the performance. This affects all raster layers, including the view's terrain, image projection layers and hypsometry layers. You can increase the performance of individual layers by using a TLspRasterStyle with a lower levelSwitchFactor. Note that the style of the view's terrain can be configured on the view's ILspTerrainSupport. Alternatively you can revert to the old behavior using the -Dcom.luciad.view.lightspeed.earth.adaptive3DLod=false JVM flag.

    Bug fixLuciadFusion

    Solved a potential threading problem in TLcdSymbol.

    Bug fixLuciadFusion

    LCD-3390
    TLspLabelPainter fired property change events with an incorrect source.

    Bug fixLuciadFusion

    LCD-3332
    When doing a bounds or isTouched query for labels, the label painter sometimes used styler data that is not up-to-date. For example, when modifying the label style so that labels become bigger than before, the query could temporarily return bounds with the old size.

    Bug fixLuciadFusion

    LCD-1467
    TLcdSpeedFormat, TLcdAltitudeFormat and TLcdDistanceFormat now respect the short name of the unit in case where the name of the unit matches one of the predefined names. For example using new TLcdSpeedUnit( "Knots", "kts", TLcdSpeedUnit.KNT.getToMeterPerSecondFactor() ) as unit will now result in a formatted speed with "kts" as unit and not "kn".

    Bug fixLuciadFusion

    LCD-935
    In some cases, a TLcd2DBoundsIndexedModel pre-initialized with a TLcdLonLatBounds could result in a stack overflow error when adding an XY shape. This has been resolved, and a warning message is logged when this case is detected.

    Bug fixLuciadFusion

    LCD-1917
    The accuracy of the ILspImageProjectionLayer is now high, even when zoomed in closely.

    Bug fixLuciadFusion

    TLcdInputStreamFactory now better handles digest authentication.

    Bug fixLuciadFusion

    LCD-2283
    The height provider returned by ILspTerrainSupport.getViewDependentHeightProvider with the valid-heights-only mode returned inaccurate heights when zoomed out.

    Bug fixLuciadFusion

    LCD-2887
    Changing the world reference of an ILcdGXYView while creating an object or ruler measurement would sometimes not update the object or measurement under construction.

    Bug fixLuciadFusion

    LCD-2840, LCD-3335
    Fixed painting artifacts when moving the camera below sea level in a 3D view.

    Bug fixLuciadFusion

    LCD-3265
    Balloons sometimes no longer point in the direction of their object when the object is outside the view bounds, and the view is tilted.

    Bug fixLuciadFusion

    LCD-672, LCD-2726
    TLcdEPSGReferenceParser and TLcdCRSReferenceParser now create world references with a valid unit of measure when passing a geodetic reference code as input.

    Bug fixLuciadFusion

    LCD-3066
    GML rings can now handle null curves as members (e.g. because of an unresolvable XLink): these curves will be filtered out when viewed as ILcdCompositeCurve. The curve list of this rings can not be edited afterwards.

    Bug fixLuciadFusion

    LCD-2597
    Improved correctness of geodetic datum encoding in TLcdGeoTIFFModelEncoder.

    Bug fixDatabase Connectors

    LCD-2949
    The Oracle Spatial-Relational sample has been removed. It corresponds to the Oracle Relational Model, which has been deprecated and is no longer supported by Oracle. New applications should use the com.luciad.format.oracle.spatial package, which offers support for the new Oracle Object-Relational Model.

    Bug fixWeather & Environment Standards

    TLcdGRIBNumericIcon didn't paint its text at the correct location.

    Bug fixWeather & Environment Standards

    LCD-2777
    The default NCEP parameter tables now have the correct originating center id. This prevents invalid warnings from being triggered.

    Bug fixAviation Standards

    LCD-948
    The global bounds of a decoded AIXM 5 message was not correct in case some of its features did not have bounds on their own.

    Bug fixInfrastructure Standards

    LCD-3415
    The DWG decoder is now thread-safe. You can use one (or multiple) model decoders concurrently.

    Bug fixMaritime Standards

    TLcdS57ModelDecoder now supports the deletion of data sets. If a data set is deleted in an update, the model decoder will return an empty model with null bounds; such models can be recognized by their edition number: TLcdS57ModelDescriptor.getEditionNumber() will return 0 (edition numbers normally start at 1).

    Bug fixMaritime Standards

    List attributes, separated by a '/' are supported now.

    Bug fixMaritime Standards

    LCD-3064
    TLcdS57ModelDecoder and TLcdS57CatalogueModelDecoder now support new edition updates as well as reissued updates.

    Bug fixMaritime Standards

    TLcdS57Edge and TLcdS57Face now implement ILcdPointList2.

    Upgrade considerationLuciadFusion

    ILcdGLDrawable has new methods, invokeAndWait() and invokeLater(), which invoke a runnable with the guarantee that the drawable's OpenGL context is current.

    Upgrade considerationLuciadFusion

    The packaging of LuciadLightspeed has been streamlined:
    • The javadoc is now packaged in a separate zip file called Javadoc.zip. That way you can avoid downloading and extracting this documentation.
    • There are now more, but smaller, jar files for LuciadLightspeed. This avoids circular dependencies between jar files that were present in previous versions of LuciadLightspeed. That should make it easier to integrate the jar files in some build tools.
    • The jar files of third party libraries now contain the version number in their filename. That way you can easily determine the version of a jar file.
    • The resources of a jar file are no longer packaged in separate jar files. This way it is clearer that these resources are not optional. This also reduces the number of jar files that are included in the release. Only the optional geoid resources remain in a separate jar file.
    The prerequisites pages in the Technical notes section was updated to reflect these changes. Please take a look at those for more detailed information.

    Upgrade considerationLuciadFusion

    Added support for creating a Lightspeed view that is not geographically referenced. The lightspeed.nongeoreferenced sample demonstrates this. To accommodate this the following API has changed:
    • A model with a reference that does not implement ILcdGeoReference is no longer interpreted as data defined in view coordinates. A null model reference is now used for data in view coordinates. This is demonstrated in the lightspeed.paintinview sample.
    • ALspStyleTargetProvider.getStyleTargetReference now returns an ILcdModelReference instead of an ILcdGeoReference. For all Luciad ILcdGeoReference implementations you can simply cast the reference to ILcdModelReference.
    • The default transformations now also support identity transformations between custom references.

    Upgrade considerationLuciadFusion

    An ILcdOWSRequest now supports REST encoding, if applicable. Implementations must now implement "getRestEncoding", but can return null to indicate that it is not supported.

    Upgrade considerationLuciadFusion

    The constructor of TLspPaintRepresentationState has been removed. Please use TLspPaintRepresentationState.getInstance instead. This ensures that for every paint representation and paint state combination there is only one unique instance. This is important to ensure correctness when using paint representation state instances as key in an identity hash map for example.

    Upgrade considerationLuciadFusion

    The ALspInteractiveLabelProvider#dispatchAWTEvent() and ALspInteractiveLabelProvider#convertAWTEvent() methods were removed. Because of this change, the event dispatching mechanism of AWT is used, which solves problems in corner cases. After this change
    • the removed methods are not called anymore causing a possible behavioral change.
    • rather than handling all events for all components and subcomponents of an interactive label via a single method, it will be needed to register listeners on the components for which events are required.
    • some custom event dispatching is no longer possible. For example: dispatching left mouse button events to a sub component, but handling middle mouse button events in the parent component is no longer feasible using the standard AWT event dispatching system. This is something that AWT does not support.

    Upgrade considerationLuciadFusion

    The interface ILfnFusionHandler was removed from the API because it was not used anywhere. Any existing implementations can safely be removed.

    Upgrade considerationLuciadFusion

    ILcdEarthParameterizedIcon now gets a double[] parameter in its getWidth() and getHeight() methods. As a result of this change you may get some compile errors. Implementations of ILcdEarthParameterizedIcon can be fixed by adding the double[] parameter to the methods. Implementations can be improved by using the double[] parameter in the implementation. Callers of these methods should pass the parameters to it.

    Upgrade considerationLuciadFusion

    LF-36
    The Java Servlet dependency has been upgraded from version 2.4 to 2.5. Consequently, an application server or servlet container with support for Java Servlet 2.5 or higher is now required for deployment - for instance, Tomcat 6 or higher. The impact of this is expected to be low since Java Servlet 2.5 is widely adopted by application server and servlet container products for over 7 years.

    Upgrade considerationLuciadFusion

    The Java Servlet dependency has been upgraded from version 2.4 to 2.5. Consequently, an application server or servlet container with support for Java Servlet 2.5 or higher is now required for deployment - for instance, Tomcat 6 or higher. The impact of this is expected to be low since Java Servlet 2.5 is widely adopted by application server and servlet container products for over 7 years.

    Upgrade considerationLuciadFusion

    LCD-377
    TLcdIconSW has been deprecated in favor of TLcdSWIcon.

    Upgrade considerationLuciadFusion

    LCD-2978
    The HTTP authentication libraries (withay-http.jar, withay-util.jar) are no longer needed and have been removed from the release.

    Upgrade considerationLuciadFusion

    LCD-878
    The implementation of TLcdXYBounds and TLcdXYZBounds have changed slightly. The functionality has not been changed, but the internal method call sequence has. These methods do not always call their related 2D methods anymore: contains3D, interacts3D, setTo3DUnion, setTo3DIntersection and setToInclude3DPoint. For example, contains3D does not always invoke contains2D.

    Upgrade considerationLuciadFusion

    LCD-878
    An ILcdBounds instance can now be undefined. This means that the instance does not describe a geographic region. For this, there is a new method on ILcdBounds: isDefined(). Implementations must add this method. Usually, returning true is enough. Extensions of ALcd2DEditableBounds can use setDefined(boolean) to manage the defined status. The behavior of the LuciadLightspeed bounds implementations is mostly the same.
    • Use ALcdBounds.isDefined(aBounds) as a shorthand to check for null bounds or undefined bounds
    • Bounds transformations will throw TLcdNoBoundsException if the input bounds is undefined
    • Composite shapes such as ILcdShapeList, ILcdPointLists, ILcdPolygon, etc. will return undefined bounds if they are empty
    When creating new bounds instances using LuciadLightspeed implementations:
    • default (empty) constructors -> undefined
    • constructors with values -> defined
    • copy constructor -> copies defined status
    • clone* -> copies defined status
    • equals/hashCode -> take defined status into account
    When modifying bounds instances:
    • move?D, translate?D, setWidth, setHeight, setDepth -> instance becomes defined
    When testing with bounds instances:
    • undefined.contains?D(anything) = false
    • undefined.interacts?D(anything) = false
    • defined.contains?D(undefined bounds) = false
    • defined.interacts?D(undefined bounds) = false
    • Note: this means that new TLcdLonLatBounds().contains2D(0, 0) now returns false instead of true
    Calculating intersections:
    • Position, width and height are always updated as before
    • undefined.setTo?DIntersection(anything) -> stays undefined
    • defined.setTo?DIntersection(undefined bounds) -> becomes undefined
    • defined.setTo?DIntersection(defined bounds, but disjoint, no overlap) -> becomes undefined
    Calculating unions:
    • undefined.setTo?DUnion(defined bounds) -> becomes defined, equal to given bounds
    • defined/undefined.setTo?DUnion(undefined bounds) -> no change in bounds or defined status
    • setToIncludePoint?D -> same as union

    Upgrade considerationLuciadFusion

    ILspShapeDiscretizer's previously deprecated canDiscretize method has been removed. Instead discretizeSFCT should throw a TLspDiscretizationException if it is not capable to discretize the provided shape. Implementations of ILspShapeDiscretizer can simply remove this method. Callers of canDiscretize should instead check whether above exception is thrown on a discretizeSFCT call.

    Upgrade considerationData Connectivity Manager

    The Asset Importer Add-On and all its classes were renamed to Data Importer. The main class is now TLfnDataImporterAddOn.

    Upgrade considerationData Connectivity Manager

    Job configuration is now configured directly on the coverage metadata. As such, ALfnJob.setConfiguration() has been removed. See for example TLfnVectorCoverageMetadata.getFilters() for the replacement configuration settings.

    Upgrade considerationData Connectivity Manager

    The job status enum has been removed. Job status is now denoted by ELfnStatus. This enum has much simpler states.

    Upgrade considerationData Connectivity Manager

    Stopping and cancelling jobs has been unified. The ALfnJob.cancel() and isCancelSupported() methods have been removed.

    2012.1

    2012.1.15

    ImprovementLuciadFusion

    LCD-3730
    The balloon managers now respect the maximum size of a balloon content panel when determining the initial size.

    ImprovementLuciadFusion

    LCD-3640
    Added support for fitting on an image projection layer.

    ImprovementTerrain Analysis Engine

    LCD-3725
    You can now fit on layers containing ILcdLOSCoverageMatrices.

    Bug fixLuciadFusion

    LCD-3731
    TLspZoomToController did not delegate single-click MOUSE_PRESSED, MOUSE_RELEASED and MOUSE_DRAGGED events.

    Bug fixLuciadFusion

    XMLInputFactory and XMLOutputFactory instances are now instantiated using the class loader of the com.luciad.xml classes.

    Bug fixLuciadFusion

    LCD-3724
    Fixed a rare NPE that would occur when deselecting a non-georeferenced shape in an invisible layer, and then making the layer visible again.

    Bug fixLuciadFusion

    LCD-2878
    Raster data could sometimes disappear for a very short amount of time. This typically happened when the view camera was updated continuously.

    Bug fixLuciadFusion

    LCD-3696
    A bug was fixed when cancelling the Future of a 'getTile' or any other operation after the operation was done. The bug caused the future to go to the CANCELLED state even when it was already DONE, violating the contract of Future.

    Bug fixLuciadFusion

    LCD-3693
    Fitting on a layer that only paints data in view coordinates did not work correctly.

    Bug fixLuciadFusion

    LCD-3686
    Shapes were sometimes painted at an incorrect height when using the above terrain elevation mode. This could happen when the model reference had a different geodetic datum than the world reference.

    Bug fixReal-time Engine

    LCD-3183
    TLspPlotLayerBuilder: altitude exaggeration did not work when switching from 2D to 3D without changing the world reference.

    Bug fixInfrastructure Standards

    LCD-3656
    The DGN complex shape painting had artifacts while doing touched queries. This is now resolved.

    2012.1.14

    Bug fixLuciadFusion

    LCD-3654
    TLcdIndexColorModelFactory produced color models with incorrect alpha information.

    Bug fixLuciadFusion

    LCD-3677
    Density layers could sometimes paint stale data. This could also happen when changing the layer's visibility causing the layer to paint nothing until you interacted with the view.

    Bug fixLuciadFusion

    LCD-3674
    The StylePanel of the ogc.sld.lightspeed sample now checks the available paint representations of the stylable layers, before restoring their original stylers (fixes possible IllegalArgumentException).

    Bug fixLuciadFusion

    LCD-3651
    Fixed issue when trying to paint world sized lines above ellipsoid.

    Bug fixLuciadFusion

    Lightspeed views did not properly terminate all background threads when they were destroyed.

    Bug fixLuciadFusion

    LCD-3643
    Fixed an issue with Cartesian ruler measurements created at the wrong altitude when the view's altitude exaggeration differs from 1.

    Bug fixLuciadFusion

    LCD-3642
    Fixed problem with vertical exaggeration for 3D meshes.

    Bug fixReal-time Engine

    LCD-3678
    TLspPlotLayerBuilder: fixed exception that could occur when selecting many plots.

    Bug fixRadar Connectors

    LCD-3669
    TLcdASTERIXModelDecoder: access to the decoded trajectories is again fast and thread-safe if the proper read-locks are taken on the model.

    2012.1.13

    ImprovementLuciadFusion

    The WFS request handler implementations, i.e. the implementations of ILcdRequestHandler in com.luciad.ogc.wfs, have received a new constructor that takes a TLcdWFSCommandDispatcherContext to configure all required settings. This eases custom creation of the request handlers during server startup in the method ALcdOGCWFSCommandDispatcherFactory#createRequestHandler.

    Bug fixLuciadFusion

    LCD-3621
    Vertical or horizontal label pins were not painted when enabling pin halo.

    Bug fixLuciadFusion

    LCD-3609
    Fixed problem jittering 3D icons when zoomed in closely.

    Bug fixLuciadFusion

    LCD-3548
    Including PropertyName parameters in WFS GetFeature requests could affect subsequent GetFeature requests in case of ILcdDataObject-based domain objects.

    Bug fixLuciadFusion

    LCD-747
    Fixed a potential memory leak that would occur for KML files in java 7.

    Bug fixLuciadFusion

    LCD-3602
    TLcdSWAction did not fire a change event when modifying the Action.SMALL_ICON property.

    Bug fixLuciadFusion

    LCD-3600
    The FusionClient Lightspeed sample now correctly visualizes fused vector data, even when no VPF library is present.

    Bug fixLuciadFusion

    LCD-3599
    Resolved issue where the GeoTIFF encoder would generate incorrect downscaled images when processing elevation data.

    Bug fixLuciadFusion

    LCD-3598
    TLspFillStyle.texture() could override the color, even if the texture is null.

    Bug fixLuciadFusion

    LCD-3583
    Resolved parsing error with certain format patterns.

    Bug fixLuciadFusion

    LF-202
    Changing the asset ID of an asset after it has been added to a coverage is now correctly reflected in the coverage.

    Bug fixReal-time Engine

    LCD-3520
    TLspPlotLayerBuilder: plot selection did not work correctly when using a style target provides that does not provide exactly 1 geometry for each domain object.

    Bug fixTerrain Analysis Engine

    LCD-3603
    Fixed problem with the creation of rasters based on LOS calculations using nearest neighbour sampling. The nearest neighbour sampling could be wrong in some cases. This has now been fixed.

    Bug fixRadar Connectors

    LCD-3601
    Fixed a problem with the decoding of Special Purpose Fields and Reserved Expension Fields.

    2012.1.12

    ImprovementDatabase Connectors

    LCD-3576
    TLcdOracleSpatialModelDecoder can now handle geometry with a "measure" dimension. Such geometry is converted to 2D shapes, the measure information is not kept.

    ImprovementMaritime Standards

    The new model encoder TLcdS57ModelEncoder allows to save S-57 domain data. It can save any data decoded by TLcdS57ModelDecoder as well as programmatically created or modified S-57 domain data.

    Bug fixLuciadFusion

    LCD-3592
    The fill pattern for background raster layers was flipped.

    Bug fixLuciadFusion

    LCD-3584
    Streamed raster layers, for example a JPIP layer, could sometimes not load tiles completely.

    Bug fixAdvanced Raster Services

    LCD-2667
    Fixed an issue that could cause a crash when using ECW on modern Linux systems.

    Bug fixInfrastructure Standards

    LCD-3593
    The DGN decoder sometimes had an integer overflow when determining element priority. This could cause wrong priorities as well as comparator errors on JDK 1.7.

    Bug fixInfrastructure Standards

    LCD-3585
    The DGN complex shape painting had artifacts when paint caching was on. This is now resolved.

    2012.1.11

    ImprovementMaritime Standards

    Unknown depth value attributes and properties of TLcdS57Point, TLcdS57Line and TLcdS57Area are now consistently represented by Float.NaN (instead of a mix of Float.NaN, Float.MIN_VALUE and Float.MAX_VALUE).

    Bug fixLuciadFusion

    LCD-3577
    Fixed issue in model content tree that would prevent you from toggling the visibility of a KML file that contained a single feature without a document element.

    Bug fixLuciadFusion

    LCD-3573
    After creating a measurement using TLcdAdvancedMapRulerController, NullPointerExceptions could be thrown, resulting in no measurement labels. This regression was introduced in the fix for LCD-3382.

    Bug fixLuciadFusion

    Fixed a potential NPE when using 3D icons and other shapes together in the same layer.

    Bug fixReal-time Engine

    LCD-3575
    TLspPlotLayerBuilder: models with bounds whose width or height is zero were not painted.

    2012.1.10

    ImprovementLuciadFusion

    LCD-3499
    TLcdGXYInteractiveLabelsController now makes it possible not to select the domain object when making a label interactive. See setSelectObjectDuringInteraction().

    Bug fixLuciadFusion

    LCD-3566
    TLcdGXYPointListPainter.anchorPointSFCT did not always return the expected coordinates when using setAnchorPointLocation with INSIDE_POLYGON as argument.

    Bug fixLuciadFusion

    LCD-3562
    TLcdJetIndexColorModelFactory could produce NullPointerExceptions in certain situations.

    Bug fixReal-time Engine

    TLspPlotLayerBuilder: fixed a potential memory leak if multiple layers are created using the same styler.

    Bug fixWeather & Environment Standards

    LCD-3565
    The parameter value corresponding to the given internal value of a GRIB file is now calculated with a higher precision.

    2012.1.09

    ImprovementLuciadFusion

    LCD-3538
    The interactive label providers now throw more helpful exceptions when dispatching unexpected mouse events.

    ImprovementInfrastructure Standards

    LCD-3522
    Painting performance for cell with holes has been improved. Improvement depends on the size of the view: 4 times faster for small views, 100 times faster for large views.

    Bug fixLuciadFusion

    LCD-3545
    Custom model reference formatters registered by overriding ALcdOGCWFSCommandDispatcherFactory.registerModelReferenceFormatters() are now always correctly registered. In particular, when a custom instance of TLcdWFSClientModelEncoderFactory is created by overriding createClientModelEncoderFactory().

    Bug fixAviation Standards

    LCD-3556
    The DAFIFT loader panel did not support subtype decoding when loading a dataset without organization in ICAO subdirectories.

    Bug fixAviation Standards

    LCD-3553
    TLcdDAFIFTSpecialUseAirspaceDecoder did not set a correct display name on subtype models.

    Bug fixDefense Symbology

    The APP-6A preview icon for the Direction Of Attack tactical symbols 'Enemy Confirmed/Known Ground', 'Templated Enemy Ground' and 'Friendly Planned Or On Order' was not shown in TLcdAPP6AObjectCustomizer.

    Bug fixRadar Connectors

    TLcdASTERIXCategory1: records of the Plot UAP of category 1 are now decoded as TLcdASTERIXPlots.

    Bug fixRadar Connectors

    ALcdASTERIXDecoder: TLcdASTERIXPlot instances will now always get added to their own model. Sometimes they were added to the trajectory model.

    Bug fixRadar Connectors

    TLcdASTERIXModelDecoder: by default, ASTERIX trajectories decoded from a raw ASTERIX file again start in the current date instead of the first of January 1970.

    Bug fixRadar Connectors

    TLcdASTERIXSacSicRecordFilter will no longer throw NullPointerExceptions when reading category 244 data.

    2012.1.08

    ImprovementLuciadFusion

    LCD-3525
    Balloons that do not contain HTML now correctly keep add a line break when the description contains a "new line" character.

    ImprovementLuciadFusion

    LCD-3499
    TLspInteractiveLabelsController now makes it possible not to select the domain object when making a label interactive. See setSelectObjectDuringInteraction().

    Bug fixLuciadFusion

    LCD-3533
    TLcdWFSProxyModel could not cope with feature types that had NaN bounds advertised in the WFS capabilities.

    Bug fixLuciadFusion

    LCD-3097
    Calling "buildDataModel(TLcdDataModel... aAssetDataModels)" before calling "setId(String aId)" on TLfnVectorCoverageMetadata.Builder no longer throws IllegalStateException. The generation of the coverage data model from asset data models is postponed until the "build()" call.

    Bug fixLuciadFusion

    LCD-3001
    Fixed an issue in TLcdSelectionSupport's event firing.

    Bug fixLuciadFusion

    LCD-3527
    Improved correctness of icon rotation calculations in TLcdMultivaluedRasterPainter.

    Bug fixLuciadFusion

    LCD-3524
    TLcdEllipsoid.intersection2DLSSFCT() could throw an exception when one of both line segments contains one point of the other line segment.

    Bug fixLuciadFusion

    LCD-3523
    Certain malformed KML files would cause the TLcdKML22ModelDecoder to throw exceptions other than IOExceptions. These have now been wrapped into IOExceptions.

    Bug fixLuciadFusion

    Fixed rendering issues in TLcdGXYRoundedPointListPainter that occurred in case of a grid reference with TLcdGeodetic projection and modified scale value to express coordinates in meters.

    Bug fixLuciadFusion

    LCD-1574
    Improved stroke implementation for QUADTO and CUBICTO segments.

    Bug fixLuciadFusion

    LCD-3486
    TLcdOBJMeshDecoder can now correctly resolve .MTL files that are contained in a JAR.

    Bug fixLuciadFusion

    LCD-3511
    Vector data features returned by an applyOnInteract call on a fusion vector data model now correctly support contains2D and contains3D operations instead of throwing an UnsupportedOperationException.

    Bug fixLuciadFusion

    LCD-3509, LCD-3515
    Raster layers did not handle all model changes correctly.

    Bug fixLuciadFusion

    LCD-3505
    Fixed issue with TLcdKML22DynamicModel.setHierarchicalVisibility() that would fire wrong element changes for groundoverlays.

    Bug fixLuciadFusion

    LCD-3503
    The color chooser shown when adjusting the colors of a TLcdColorMap using the TLcdColorMapCustomizer no longer shows two transparency sliders under JDK7. The Luciad transparency slider has been removed in favor of the transparency slider which is part of the JColorChooser as of JDK7.

    Bug fixLuciadFusion

    LCD-2936
    TLcdGeoTIFFModelEncoder now ignores alpha channel when compression type is set to JPEG.

    Bug fixReal-time Engine

    LCD-3535
    TLspPlotLayerBuilder: the icon property for the layer is now taken into account.

    Bug fixReal-time Engine

    LCD-3534
    Plot layers did not handle style target providers with a reference different from the model reference correctly.

    Bug fixReal-time Engine

    LCD-3477
    Plot layer icons are now also pixel-perfect in a geocentric reference if their scale expression returns 1.

    Bug fixWeather & Environment Standards

    LCD-3527
    TLcdGRIBWindIcon is now rotated correctly when rotating the map and changing projections.

    Bug fixWeather & Environment Standards

    LUCY-3618
    The GRIB1 model decoder now also supports ECMWF parameter tables. Remember that by default the NCEP parameter table will be used. See TLcdGRIB1ModelDecoder#addParameterTable to add other tables.

    Bug fixAviation Standards

    LCD-3532
    A difference in the determination of the number of points between TLcdProcedureTrajectory#getPointCount and TLcdProcedureTrajectory#getPoint() could lead to inconsistencies.

    Bug fixDefense Symbology

    LCD-3519
    Rounded line / area symbology was not correctly rendered in case of a grid reference with TLcdGeodetic projection and modified scale value to express coordinates in meters.

    Bug fixMaritime Standards

    Enumerated attributes, encoded in S-57 data with an empty value, are no longer included in the decoded S-57 objects (they used to be included with value -1).

    2012.1.06

    ImprovementLuciadFusion

    LF-411
    LuciadFusion now supports fusion of BIL elevation data.

    ImprovementLuciadFusion

    LCD-3498
    The KML model tree content node now filters out html headers, and only keeps the body of the description. This avoids problems with certain files.

    ImprovementLuciadFusion

    TLcdKML22RenderableModel now support property changes for various setters. This allows you to easily listen to changes in (for instance) the default time bounds set on a model through the TimeMediator..

    ImprovementData Connectivity Manager

    LF-195
    It is now possible to select a whole layer as clipping shape of an asset. This behavior applies only when no individual shapes have been selected on the map.

    Bug fixLuciadFusion

    LCD-3496
    Fixed a NPE when setting a null background styler on ILspTerrainSupport.

    Bug fixLuciadFusion

    LCD-2671
    TLspShapeLayerBuilder now uses the font specified by TLspTextStyle (if present) to paint ILcdText objects.

    Bug fixLuciadFusion

    LCD-3495
    Resolved rounding-error in TLcdLonLatPointFormat.

    Bug fixLuciadFusion

    LCD-3494
    Fixed issue with TLcdKML22RenderableModel that would not correctly apply the "aFilterOnRegion" attribute on abstract containers. It now does. When the given attribute is false, the query will return all abstract features and containers regardless of their region.

    Bug fixLuciadFusion

    LCD-3492
    Improved memory management in com.luciad.format.raster package.

    Bug fixLuciadFusion

    LCD-3484
    TLspCreateController no longer (incorrectly) allows creation if the target layer or its paint representation are invisible.

    Bug fixLuciadFusion

    LCD-3473
    The WFS server now respects to the requested feature types, it longer returns irrelevant feature types.

    Bug fixLuciadFusion

    Licensing information is now logged via the logging framework, instead of being printed directly on the console output and error streams.

    Bug fixLuciadFusion

    LCD-3469
    TLcdInputStreamFactory would throw a StringIndexOutOfBoundsException when passing a URI of the form file://\\path\to\file\on\server. URI's of such forms are for example encountered when using drag-and-drop

    Bug fixData Connectivity Manager

    LF-409
    TLfnTileStoreTreeModel's moveAssetInCoverage method now only sends out a treeStructureChanged event if an asset node was actually moved, instead of a treeNodesRemoved and treeNodesInserted event.

    Bug fixData Connectivity Manager

    LF-403
    A bug in the Tile Store tree panel, which prevented deselecting an item in a multiselection by control-clicking, has been fixed.

    Bug fixData Connectivity Manager

    LF-348
    Clipping shapes for assets are now correctly transformed to the asset's georeference if the clipping shape's georeference differs from that of the asset.

    Bug fixData Connectivity Manager

    LF-402
    The asset importer now creates assets with the correct amount of parameters for Grib2 data.

    Bug fixData Connectivity Manager

    LF-400
    When a coverage copy job is cancelled, the partially copied target coverage is now properly deleted during the cancellation.

    Bug fixData Connectivity Manager

    LF-395
    An exception being thrown when a layer was selected after being deleted in the tilestore, has been fixed.

    Bug fixReal-time Engine

    LCD-3491
    Plot layers could throw errors when using certain combinations of expressions, in particular when using TLcdExpressionFactory.sub().

    Bug fixTerrain Analysis Engine

    LCD-3485
    Lightspeed Line-of-Sight: Fixed issue with certain single-precision ATI cards that would cause numerical instability when the maximum vertical angle was set to PI.

    Bug fixAviation Standards

    The AIXM airspace decoder, TLcdAIXMAirspaceHandler, could not correctly parse decimal distance values in case of a decimal symbol mismatch between the active locale in Java and the underlying OS.

    2012.1.05

    ImprovementLuciadFusion

    LCD-3331, LCD-3372

    TLspSwingView is a new ILspView implementation which is backed by a lightweight component (unlike TLspAWTView, which is heavyweight). The two views are otherwise fully equivalent. Using a lightweight view, however, can solve some specific integration issues that may occur, e.g. when adding the view to a JInternalFrame or an SWT user interface.

    Please read the TLspSwingView class javadoc for important information on the performance of lightweight vs. heavyweight views.

    ImprovementLuciadFusion

    LCD-3461
    It is now possible to configure TLspPinLineStyle to place the pin at the closest edge of the label bounds instead of in the middle of the bounds. See TLspPinLineStyle.Builder.pinEndPosition().

    ImprovementAviation Standards

    LCD-3454
    The domain objects to represent and calculate the geometry of procedures and airspaces, i.e. TLcdProcedureTrajectory, TLcdDiscretizedLonLatGeoPath and TLcdDiscretizedLonLatOpenGeoPath, now implement ILcdInvalidateable. This interface offers a general mechanism to invalidate any cached values in a domain object after any external changes - in this case, the calculated geometry.

    ImprovementDefense Symbology

    LCD-3460
    Support for the status indicators Fully Capable, Damaged, Destroyed and Full To Capacity has been added to the MIL-STD 2525c symbology implementation, in accordance with the standard.

    ImprovementDefense Symbology

    LCD-2537
    Support for the echelon indicator COMMAND has been added to the MIL-STD 2525c symbology implementation, in accordance with the standard.

    ImprovementInfrastructure Standards

    The DGN decoder now has an option to display "view level overrides" or not: see TLcdDGNLevelSymbology.setUseViewLevelSymbology().

    ImprovementMaritime Standards

    The unit of measure was incorrectly taken into account during scale computations in the S-52 engine. This has been fixed now. It only affects references for which the UoM != 1.

    Bug fixLuciadFusion

    Cloned TLspViewXYZWorldTransformation3D fired property change events with the incorrect source, or didn't fire property changes at all.

    Bug fixLuciadFusion

    Fixed a bug that caused 3D meshes to be painted twice in 3D by TLsp3DMeshPainter.

    Bug fixLuciadFusion

    Fixed a bug that caused colors of 3D meshes to be ignored by TLsp3DMeshPainter.

    Bug fixLuciadFusion

    TLsp3DMeshPainter now correctly reports progress.

    Bug fixLuciadFusion

    Fixed a bug in TLsp3DMeshPainter that caused a NullPointerException when painting unstyled meshes.

    Bug fixLuciadFusion

    Fixed a bug that caused shapes painted in view coordinates to be incorrectly painted in world coordinates when zooming in on the view.

    Bug fixLuciadFusion

    LCD-3465
    Improved robustness of GeoTIFF resource cleanup.

    Bug fixLuciadFusion

    LCD-3453
    The bounds of the LonLatHippodrome in the sample code was calculated incorrectly.

    Bug fixLuciadFusion

    LCD-3443, LCD-875
    Model change events collected by ALcdModel and TLcdModelChangeEventSupport are now based on object identity instead of equals(). This avoids issues with incorrect events.

    Bug fixLuciadFusion

    LCD-2754
    Setting the references on a TLcdDefaultModelXYZWorldTransformation could cause a NullPointerException.

    Bug fixAviation Standards

    LCD-986
    Editing circle shapes on the map was interpreted the same way as arcs, leading to undesired editing handles which caused exceptions when touched.

    Bug fixAviation Standards

    LCD-1626
    The airspace domain object TLcdAssociationBasedAirspace was not safe to use across multiple threads in parallel.

    Bug fixDefense Standards

    LCD-3425
    Render background pixels transparant instead of black.

    Bug fixDefense Standards

    Resolved regressions in USRP decoder.

    Bug fixInfrastructure Standards

    LCD-3448
    The DGN decoder now folds "ByLevel" level element colors into each element.

    2012.1.04

    ImprovementLuciadFusion

    LCD-3386
    The memory use and rendering performance of TLspStrokedLine have been considerably improved, especially for the case where the view is strongly zoomed in on a long line segment.

    ImprovementLuciadFusion

    LCD-3074
    TLspMGRSGridLayerBuilder can now also be used to visualize a classical UTM grid.

    ImprovementTerrain Analysis Engine

    LCD-3433
    Made ALcdLOSCoverageMatrix.retrieveAssociatedPointX() more robust. It now normalizes the angle before it retrieves the data.

    ImprovementMaritime Standards

    TLcdS57ModelDecoder no longer logs warnings for unresolved object pointers, as unresolved pointers are almost always caused by references to other S-57 cells, which can be safely ignored.

    ImprovementMaritime Standards

    TLcdS57ModelDescriptor now also provided access to a cell's update number.

    ImprovementMaritime Standards

    LCD-3330
    The canDecodeSource() methods of TLcdS57ModelDecoder and TLcdS57CatalogueModelDecoder have been refined; they now properly recognize ENC, AML and S-63 cell files, and S-63 signature files. canDecodeSource() will now only return true if the source is of the right type (catalogue or cell), and is compatible with the decoder's product configuration (ENC or AML).

    ImprovementMaritime Standards

    Checksums are now also verified for update cell files, not only for base cell files. Note that this takes some additional time during the decoding, as an extra file access is needed. Checksum verification can be enabled or disabled via the TLcdS57CatalogueModelDecoder.setVerifyChecksum() flag. It is disabled by default.

    Bug fixLuciadFusion

    LCD-3438, LCD-3439
    At certain zoom levels, polygons, polylines, or other shapes with self-overlapping lines were not painted anymore.

    Bug fixLuciadFusion

    A bug was fixed which caused layers draped over the 3D terrain to appear distorted or "smeared" if the resolution of the 3D view was more than 2048 pixels in either direction.

    Bug fixLuciadFusion

    Fixed documentation of TLpsWorldSizedLineStyle. It now correctly says that the only accepted elevation mode is ON_TERRAIN.

    Bug fixLuciadFusion

    The OGC CRS'es urn:ogc:def:crs:OGC:1.3:CRS:84, urn:ogc:def:crs:OGC:1.3:CRS:83 and urn:ogc:def:crs:OGC:1.3:CRS:27 are now parsed to geodetic references with correct (lon,lat) axis order in their axis metadata.

    Bug fixLuciadFusion

    Labels were sometimes painted at an incorrect height instead of on the terrain. This could happen for labels with an anchor object defined in a reference with a different geodetic datum than the datum of the world reference.

    Bug fixLuciadFusion

    LCD-2543
    The WFS property name filtering mechanism was not supported for domain objects that implemented ILcdDataObject, but were not extensions of the class TLcdDataObject. The latter restriction has been removed: any implementation of ILcdDataObject is now supported.

    Bug fixLuciadFusion

    LCD-3422
    Calling TLcdJPLEllipsoidFactory using Ellipse_Sphere did not create a spherical ellipsoid.

    Bug fixLuciadFusion

    LCD-3420
    When editing labels using TLcdGXYOffsetIconPainter, the selected labels were painted at the incorrect location.

    Bug fixInfrastructure Standards

    LCD-3440
    The DGN decoder now supports level element colors defined by RGB values.

    Bug fixMaritime Standards

    A potential threading issue on the TLcdS57CatalogueModelDecoder has been fixed; when the model decoder settings are changed, they could affect the behavior of previously decoded models, when decoded using SOFT_REFERENCED or WEAK_REFERENCED loading policy. This is no longer the case.

    Bug fixS-63

    LCD-3407
    The exception thrown by the S-63 model decoder now include the S-63 error code in their error message.

    2012.1.03

    ImprovementLuciadFusion

    LCD-3116
    When zooming in on a region were no detailed imagery is available, imagery with less detail will be displayed instead of the white fallback images.

    ImprovementLuciadFusion

    Information from the individual S-57 cell files was used to create assets for S-57 catalogues; as a result, the creation of assets for large catalogues could take a significant amount of time. This has been fixed. The fix for LF-358 (see below) was reverted in order to fix this issue.

    Bug fixLuciadFusion

    LF-377
    The LuciadFusion WFS server now also supports area geometries when format is GML2.

    Bug fixLuciadFusion

    TLcdCompositeIcon was prone to deadlocks when used in multi-threaded environments. This has been fixed.

    Bug fixLuciadFusion

    LCD-3411
    Fixed some artifacts below sea level for raster layers in a 3D grid reference.

    Bug fixLuciadFusion

    LCD-3382
    Fixed ArrayIndexOutOfBoundsException when using an ILcdGXYViewLabelPlacer (with a labeling algorithm that depends on the usage of ILcdGXYLabelPainter2) and creating a measurement with the addGXYLayerToGXYView property of TLcdAdvancedMapRulerController set to true.

    Bug fixLuciadFusion

    LCD-3383
    When the addGXYLayerToGXYView of TLcdAdvancedMapRulerController was enabled, labels decluttered using an ILcdGXYViewLabelPlacer were not painted correctly.

    Bug fixLuciadFusion

    LCD-3400
    TLcdGXYBufferPainter: fixed some visualization problems when the paint cache was enabled.

    Bug fixData Connectivity Manager

    LF-380
    When creating an extents layer from coverages, assets, or themes, the geo reference of the first coverage or asset is used instead of the default geodetic reference. In case of a theme containing both coverages and assets, the coverage georeference takes precedence.

    Bug fixData Connectivity Manager

    LF-150
    The asset importer no longer fails on SHP files without georeference. Upon import, the asset importer informs the user that these files have been skipped.

    Bug fixData Connectivity Manager

    LF-229
    When TLfnServlet.createRequestDispatcherFactory is overridden by a custom implementation, starting the server no longer fails due to a missing initialization parameter "request.dispatcherFactoryClass".

    Bug fixReal-time Engine

    LCD-3414
    The style of selected plots was sometimes not updated correctly.

    2012.1.02

    ImprovementLuciadFusion

    LCD-3033
    The CoverageVerifier sample now explicitly notifies the user there is nothing to be verified when a coverage doesn't have checksums enabled.

    ImprovementLuciadFusion

    LCD-2557
    The WFS server will no longer print stack traces at startup when a certain output format is not usable for a given feature type, a simple warning is printed instead. These warnings are only relevant if the actual output format is in use. The stack traces can still be obtained by enabling debug logging for the "com.luciad.ogc.wfs" package.

    ImprovementLuciadFusion

    LCD-3359
    The GML transformer now supports transforming of ILcdSurface objects.

    ImprovementLuciadFusion

    LCD-1585
    The performance of TLcdGXYBufferPainter has been improved.

    ImprovementLuciadFusion

    LF-273
    Improved performance and memory consumption when fusing S-57 data by optimizing caching.

    ImprovementLuciadFusion

    LF-239
    It is now possible to fuse S-57 data of product type AML with the correct settings, albeit not automatically. The default behavior remains that S-57 AML data is fused with ENC settings without warning. Both the S-57 ENC and AML formats are now registered as fusion formats, with the ENC flavor being the preferred format. At least application developers now have the possibility to reorganize them if needed.

    ImprovementLuciadFusion

    LF-361
    The LuciadFusion sample data was moved one directory up, in samples/resources/Data/LuciadFusion. The coverage layout was also optimized so that it uses less disk space.

    Bug fixLuciadFusion

    LCD-3406
    ILspLayer's with a single point were not painted in a 3D grid reference.

    Bug fixLuciadFusion

    LCD-3405
    Fixed rare race condition in TLspLabelPainter that could trigger a NullPointerException.

    Bug fixLuciadFusion

    LCD-3403
    ILspEditingStateListeners are now always called with the actual domain object in the event, rather than the object's geometry.

    Bug fixLuciadFusion

    LCD-2193
    The TLcdSymbol#DOUBLE_OUTLINED_RECT now fills a rectangle that covers the actual icon size. Visually, this increases the width and height of the icon with one pixel.

    Bug fixLuciadFusion

    LCD-3364
    Tile Stores which are internally created as a result of a call to TLfnTileStoreModelDecoder.decode(String aSource) are now properly closed when the corresponding model(s) is/are disposed.

    Bug fixLuciadFusion

    LCD-3369, LCD-2225
    Components added to the overlay component (TLspAWTView.getOverlayComponent()) didn't always show the correct cursor.

    Bug fixLuciadFusion

    LCD-3316
    Balloon cursor handling was not completely correct. In some cases, no move cursor is shown while it is possible to move the balloon.

    Bug fixLuciadFusion

    LCD-3070
    Removed a memory leak in TLspGXYLayerAdapter.

    Bug fixLuciadFusion

    TLspRasterStyle.asBuilder did not copy the levelSwitchFactor property, instead the default value was used.

    Bug fixLuciadFusion

    LCD-3384
    Fixed rare ArrayIndexOutOfBoundsException in TLspLabelPlacer.

    Bug fixLuciadFusion

    LCD-3387
    When using TLspLabelingAlgorithm (in combination with TLspLabelingAlgorithmProvider), the previous location wasn't always reused when needed.

    Bug fixLuciadFusion

    LCD-3385
    When adding a label for a shape list containing a point, the default labeling algorithm placed the label on top of the icon instead of next to it.

    Bug fixLuciadFusion

    LCD-2715
    TLspLayer.createScaleRange did not return a correct scale range. To create a correct scale range the min values must be less than or equal to the max values.

    Bug fixAviation Standards

    LCD-3065
    The implementation of ILcdExtrudedShape by TLcdAIXM5xVerticalStructurePart has been improved to be more consistent with how AIXM 5 data should be interpreted: the maximum Z corresponds to the elevation of the elevated point, surface or curve, while the minimum Z is the maximum Z minus the vertical extent.

    There will not be an impact on 3D visualization because the vertical structures are already moved during visualization to be aligned with the terrain.

    Bug fixDefense Standards

    LCD-3381
    Prevents TLcdBCIRasterModelDecoder from incorrectly throwing an EOFException.

    2012.1.01

    ImprovementLuciadFusion

    LCD-1586
    The performance of TLcdGXYRoundedPointListPainter has been improved.

    ImprovementLuciadFusion

    Logging of the license server has been extended: the license server for each license request now logs which clients are currently using a license. The port at which the request came in is now also logged, allowing to map each incoming request to its corresponding license file.

    ImprovementLuciadFusion

    LCD-2174
    The predefined hatch fill pattern in TLspFillStyle has been improved to provide better visual results.

    ImprovementLuciadFusion

    LF-283
    When creating a raster asset from a raster coverage, the bounding boxes and pixel densities of the individual original asset parts are now taken into account. This has a couple of interesting consequences:
    • Coverage cropping now also works efficiently for coverages with non-uniform pixel densities.
    • The pixelDensity argument of the TLfnTileStoreUtil.newCoverageAsAssetMetadataBuilder has become obsolete. This method has now been deprecated in favor of a new method without the pixelDensity parameter. The new method also throws appropriate exceptions when accessing the Tile Store fails. There is no longer any need to compute the pixel density upfront using

    ImprovementLuciadFusion

    LCD-3004
    A small LuciadFusion sample data set was added for use with the Fusion Client sample. It contains low-resolution imagery and elevation data, as well as VPF VMAP2i vector data.

    ImprovementLuciadFusion

    LCD-1613, LCD-2693
    Improved javadoc of TLcdETOPOModelDecoder.

    ImprovementLuciadFusion

    LF-364
    The LuciadFusion WMS service now invalidates its tile cache as soon as fusion completes a coverage. As soon as fusion has completed a coverage, there is no longer a delay of up to 5 minutes before new tiles are visible. While fusion is ongoing and before it has completed a coverage, the delay still applies.

    ImprovementLuciadFusion

    LCD-3099
    It is now possible to format UTM and UPS coordinate Strings using TLcdMGRSFormat.

    ImprovementLuciadFusion

    LCD-3088
    It is now possible to configure a coordinate separator and the precision for UTM coordinate Strings.

    ImprovementLuciadFusion

    LCD-3087
    TLcdUPSUtil was added. It is possible to parse and format UPS coordinate Strings using this new class.

    ImprovementLuciadFusion

    LCD-3077
    If the tile width or height is left unspecified or set to an illegal value, an IllegalArgumentException is now thrown upon creation of a TLfnRasterCoverageMetadata. If you now accidentally forget to set these required parameters, you get a clear error rather than fusion getting into an infinite loop because of them.

    ImprovementLuciadFusion

    LCD-3076
    ALfnCoverageMetadata.Builder.setCoverageLayout was added as a convenience method to set both the level-0 column- and row counts with a single call.

    TLfnRasterCoverageMetadata.Builder.setTileLayout was added as a convenience method to set both the tile width and height with a single call.

    ImprovementDatabase Connectors

    LCD-3344
    TLcdOracleSpatialModelDecoder now supports Oracle 11g spatial databases.

    ImprovementMaritime Standards

    LCD-527
    TLcdS57ModelDecoder now always throws an IOException in case something went wrong during decoding. The underlying cause is available in the exception via getCause().

    Bug fixLuciadFusion

    LCD-2906
    Fixed a layer order problem when selecting objects in a TLspGXYLayerAdapter.

    Bug fixLuciadFusion

    The WCS server could not cope with some GetCoverage requests that specified a longitude/latitude outside the coverage bounds.

    Bug fixLuciadFusion

    LCD-3026
    Editing a buffer (using TLcdGXYGeoBufferPainter) did not work well with multiple objects selected. TLcdGXYGeoBufferPainter.isTouched() did not work well when passing ILcdGXYPainter.HANDLES as mode.

    Bug fixLuciadFusion

    LCD-1554
    When the ALcdGXYInteractiveLabelProvider.canStopInteraction() method depends on the focus of a component of the interactive label, label interaction would not immediately be stopped when starting to drag an other label.

    Bug fixLuciadFusion

    LCD-3340
    When using TLcdGXYAsynchronousLabelPlacer and editing multiple labels at the same time, some of the labels could lag behind.

    Bug fixLuciadFusion

    LCD-3025
    When dragging an interactive label, and then clicking the mouse with an other button, an IllegalStateException was thrown.

    Bug fixLuciadFusion

    LF-248
    An LTS GetCapabilities request with no version specified responds with the highest supported version instead of failing. This brings it in line with OCG protocols. Before, such a request would fail with a NullPointerException and a stack trace.

    Bug fixLuciadFusion

    LCD-2790
    TLcdEllipsoidUtil.orientation2D() could produce incorrect results for polygons with points that lie very close together.

    Bug fixLuciadFusion

    LCD-2838
    TLcdLambertAzimuthalEqualArea.inLonLatBounds() was not strict enough for points close to the singular point of the projection.

    Bug fixLuciadFusion

    Image projection layers (see TLspImageProjectionLayerBuilder) could throw an IllegalArgumentException when calling getStyler() with a valid paint representation.

    Bug fixLuciadFusion

    TLspRulerController: geodetic measurements were offset by a small amount. This was introduced in the 2012.1.01 patch release.

    Bug fixLuciadFusion

    LCD-1480
    When building a query, specifying an empty array of property-value pairs now behaves as if not invoked, rather than resulting in a StackOverflowError. The affected methods are TLfnQuery.BasicBuilder.andFilterAnyDoNotEqual() and andFilterAnyEqual().

    Bug fixLuciadFusion

    LCD-3309
    Fixed a NPE when using on path or in path labeling algorithms. This error was introduced in the fix for LCD-3120.

    Bug fixLuciadFusion

    When the encoding of a resource metadata fails due to invalid contents, a proper exception is now logged in all cases (RuntimeExceptions were not logged before).

    Bug fixLuciadFusion

    LCD-3267
    Closing an ALfnEnvironment no longer logs a warning about unfinished initialization tasks when closing it. Unfinished initialization tasks are part of normal behavior, they are automatically restarted.

    Bug fixLuciadFusion

    LCD-3240
    In some cases, interactive labels would not appear after changing the world reference.

    Bug fixLuciadFusion

    LCD-2432
    All samples are now started on the EDT, according to Swing best practices. This avoids Swing threading violations.

    Bug fixLuciadFusion

    LCD-3238
    The sample data has now been fixed so that the fusion.client.proxy3d sample no longer fails when visualizing a terrain from both the imagery and elevation data. This was a very recent regression which has now been fixed.

    Bug fixLuciadFusion

    LCD-2836
    Grid lines could be missing when looking at one of the poles in a 3D geocentric reference.

    Bug fixLuciadFusion

    LCD-3120, LCD-2273
    Grid labels could disappear when tilting the view in 3D.

    Bug fixLuciadFusion

    LCD-3122
    When zooming in in 3D, some MGRS labels could be painted upside down.

    Bug fixLuciadFusion

    LCD-3223
    TLspTextureFont could throw a NullPointerException when trying to retrieve the glyph info from ascii character 255.

    Bug fixLuciadFusion

    LCD-1276
    A bug in the removeElements() method of GML models has been fixed.

    Bug fixLuciadFusion

    LCD-3206
    ILspTerrainSupport: getPointOnTerrain could sometimes incorrectly return no intersection for far away points.

    Bug fixLuciadFusion

    LCD-3205
    The default value -1 "unlimited" for min. and max. scale denominators is now also preserved correctly for vector assets.

    Bug fixLuciadFusion

    In some cases the labels of the TLspRulerController were painted at an incorrect angle.

    Bug fixLuciadFusion

    LCD-40, LMAP-3402
    TLcdGIFImageDecoder now correctly decodes interlaced GIF images.

    Bug fixLuciadFusion

    LCD-3080
    TLcdBILModelDecoder instances are now configured with a model reference decoder by default.

    Bug fixLuciadFusion

    LCD-2809
    TLcdBufferedTile#createImage could produce incorrect results when sub-tile loading produced errors.

    Bug fixLuciadFusion

    LCD-908
    TLcdLonLatHeightPolyline and TLcdXYZPolyline now implement ILcdCurve, and TLcdLonLatHeightPolygon and TLcdXYZPolygon now implement ILcdRing.

    Bug fixLuciadFusion

    LCD-3069
    Various ILcdShape implementations had potential race conditions in getBounds vs. invalidateBounds.

    Bug fixLuciadFusion

    LCD-3056
    TLspStampLabelLocation: absolute location were not marked as view dependent.

    Bug fixLuciadFusion

    LCD-192
    The cursor for interactive labels was often incorrect when using JDK 1.7.

    Bug fixLuciadFusion

    LCD-2926
    Fixed a selection problem with partially visible composite curves and rings.

    Bug fixLuciadFusion

    LCD-462
    TLcdEarthGXYRasterPainter: now cancels any pending tile requests when its cache is cleared.

    Bug fixLuciadFusion

    LCD-1365
    Improved handling of RGBA images in the GeoTIFF encoder.

    Bug fixLuciadFusion

    LCD-131
    In rare cases, TLcdGXYAsynchronousLabelPlacer could cause a NullPointerException.

    Bug fixLuciadFusion

    LCD-3078
    TLcdGeoTIFFModelEncoder did not correctly encode rasters with a single tile where the tile size did not match the raster bounds exactly.

    Bug fixLuciadFusion

    LMAP-5390, LCD-554
    TLcdGML31LineString, TLcdGML32LinearRing, TLcdGML32LineString and TLcdGML32LinearRing now clear their caches when they are edited.

    Bug fixLuciadFusion

    LCD-1788
    Improved robustness of KML decoder in case of invalid characters in KML description elements.

    Bug fixLuciadFusion

    LCD-3067
    Fixed rendering issues with TLcdCompassGridPainter.

    Bug fixLuciadFusion

    LCD-2970
    TLcdDataModelDescriptor now uses the name and display name of the data model as type name and display name of the model descriptor, in case the constructor without type name and display name is used.

    Bug fixLuciadFusion

    LCD-3060
    The WMS scale denominators (optionally configurable on WMS layers) are not correctly taken into account in case of the geodetic reference EPSG:4326 / CRS:84.

    Bug fixLuciadFusion

    LCD-3045
    The GeoTIFF encoder used in the WCS now encodes tiles with an odd resolution or a byte indexed color model more accurately.

    Bug fixDatabase Connectors

    LCD-3136
    The TLcdOracleGeoRasterModelDescriptor display name is now set to the file name instead of the raster ID when there is only resulting one raster model.

    Bug fixAviation Standards

    The formatting of TLcdAIXM51ValDistanceVertical is now always locale independent. In some cases, the wrong decimal value separator was used.

    Bug fixDefense Standards

    LCD-2845
    The USRP model decoder is no longer case sensitive.

    Bug fixDefense Standards

    LCD-530
    GeoSym is now thread-safe.

    Bug fixDefense Standards

    LCD-536
    GeoSym now logs a warning when a GeoSym icon could not be loaded.

    Bug fixInfrastructure Standards

    LCD-706
    The DGN decoder now supports element extended colors defined by RGB values.

    Bug fixInfrastructure Standards

    LCD-706
    In some cases, fill color was missing.

    Bug fixInfrastructure Standards

    LCD-2985
    In some cases, a DGN model did not have a TLcdDGNModelDescriptor associated with it.

    Bug fixMaritime Standards

    LCD-3342
    A bug in the S-57 update mechanism, preventing attributes from being updated correctly, has been fixed. It affects all possible attribute updates (inserts, changes and deletions).

    Bug fixMaritime Standards

    LCD-3338
    TLcdS52GXYPainterProvider kept a hard reference to a list of S-57 objects, even after its model has been garbage collected. This could result in an OutOfMemoryError if lots of S-57 models are displayed simultaneously. This has been fixed.

    Bug fixMaritime Standards

    LCD-540
    S-57 points that don't have a Z-value are now initialized with Z-value 0, instead of Float.MAX_VALUE. This solves an issue in the transformation of points using the vertical perspective projection.

    Bug fixMaritime Standards

    LCD-595, LCD-547, LMAP-5662, LMAP-4145
    TLcdS57CatalogueModelDecoder now throws an IOException during the decode() of a catalogue when no valid cell could be found in the catalogue.

    2012.1

    ImprovementLuciadFusion

    SLD styles (TLcdSLDFeatureTypeStyle) can now be used in a Lightspeed view, through the TLspSLDStyler class. This styler supports the most commonly used features of the standard. Please refer to the developer guide for an overview.

    ImprovementLuciadFusion

    SLD now supports decoding and encoding of Symbology Encoding 1.1.0 styles. By default, new styles will also be saved as 1.1.0 styles.
    The following features from version 1.1.0 are supported:
    • Inline encoding of binary and svg icons.
    • New standardized functions such as interpolate, recode, formatDate, categorize,...
    • Line widths specified in world units.

    ImprovementLuciadFusion

    In order to optimize visualization of vector data for a specific use case, the ELfnDataDensity property was added to the coverage metadata. It is a hint for the visualization how the visualization should be optimized:
    • OVERVIEW is the optimal setting for vast otherwise not so detailed data, such as the world's coutries. This is the default.
    • DETAIL is the optimal setting for detailed data that does not need to be visible far towards the horizon, such as roads or buildings.

    ImprovementLuciadFusion

    It is now possible to plug in custom implementations of a metadata store, for example a database implementation.
    • ALfnBinaryMetadataStore provides the abstraction of a metadata store.
    • Constructors were added to TLfnFileSystemTileStore to allow these implementations to be plugged in.
    • A method ALfnTileStore.close() was added, which custom implementations may override to clean up held resources, such as database handles. Application code that owns a Tile Store instance should call this method when appropriate.

    ImprovementLuciadFusion

    Calling getFocusPoint() on a Fusion vector feature no longer triggers the loading of the geometry tiles at the most detailed level.

    ImprovementLuciadFusion

    LF-361
    The LuciadFusion sample Tile Store was moved and merged with the LuciadFusion sample data from FusionClient, from samples/resources/Data/LuciadFusion/SampleTileStore to samples/resources/Data/LuciadFusion. As a result, there is a single sample Tile Store containing all the sample coverages from both FusionClient and LuciadFusion.

    ImprovementLuciadFusion

    LuciadFusion now supports fusion of vector data retrieved from an Oracle Spatial database.

    ImprovementLuciadFusion

    A new ogc.wfs.proxy.lightspeed sample has been added, showing how to visualize WFS data in a Lightspeed view.

    ImprovementLuciadFusion

    A new ElevationMode 'OBJECT_DEPENDENT' can now be set on TLspLineStyle, TLspFillStyle and TLspIconStyle. This elevation mode tries to derive the most appropriate elevation mode based on the object and geometry that is being styled. The advantage of this new mode is that it is a good default when writing a styler for generic data.

    ImprovementLuciadFusion

    Styles that support textures now have a new texture coordinate mode: VIEW_SCALED. This mode preserves the size of the original texture image, which is necessary wehn applying a patterned fill.

    ImprovementLuciadFusion

    LCD-2617
    Added extra methods to ALspCreateControllerModel that are called whenever object creation is cancelled or finished.

    ImprovementLuciadFusion

    LCD-2199
    An extra fireStyleChangeEvent method has been added to TLspStyleChangeSupport allowing to fire a TLspStyleChangeEvent by passing the event as a parameter to the fireStyleChangeEvent method.

    ImprovementLuciadFusion

    The vertical view now uses anti-aliasing by default. This can be changed with the setAntiAliasing method in TLcdDefaultVVRenderer, TLcdDefaultVVRendererJ2D and TLcdDefaultVVGridRenderer.

    ImprovementLuciadFusion

    LCD-1892
    TLcdSymbol now implements ILcdResizeableIcon, allowing it to be resized.

    ImprovementLuciadFusion

    The default constructor of TLcdSLDMark now initializes a default fill and stroke. This makes it ready for use inside a symbolizer without additional configuration.

    ImprovementLuciadFusion

    A few classes that were needed to decode OGC filters with the old XML framework have now been marked as deprecated. The new TLcdOGCFilterEncoder and TLcdOGCFilterDecoder classes are already in use for a number of releases.

    ImprovementLuciadFusion

    TLspLineStyle now has a new 'pixelOffset' property which allows you to draw a line at a fixed number of pixels from the original geometry. This enables more complex cartographic symbology.

    ImprovementLuciadFusion

    TLcdSymbol now has a new type: a filled rectangle with a double outline.

    ImprovementLuciadFusion

    A new method has been added to ALspStyleTargetProvider: ALspStyleTargetProvider.getEditTargetsSFCT. This method behaves like the getStyleTargetsSFCT. The difference is that it identifies which style targets are editable. This allows you to create complex shapes and still be able to easily edit them. A sample has been added to demonstrate this in the "samples.lightspeed.customization.arrows" package.

    ImprovementLuciadFusion

    TLspShader now allows loading shader source code from a String as well as from a file.

    ImprovementLuciadFusion

    TLspPrimitiveType now provides a getter for the corresponding TLcd3DPrimitiveType.

    ImprovementLuciadFusion

    TLcdOGCFilterFactory has been introduced to simplify creation of SLD filters.

    ImprovementLuciadFusion

    Creation of SLD/SE Feature Type Styles has been simplified: the key SLD classes now contain builders to create the most common types of styles with fewer lines of code compared to the SLD domain model. This reduces the overhead that might be associated with the use of SLD in your projects.

    ImprovementLuciadFusion

    LCD-1010
    The handling of scale ranges in the GXY painter implementation of SLD has been aligned with how scales are computed for the TLcdGXYScaleIndicator.

    ImprovementLuciadFusion

    LCD-1892
    The scale of a TLspIconStyle will now be applied directly to the icon if it implements ILcdResizable. This allows the icon to paint itself with the best possible quality at the given size, and is similar to the behaviour in GXY.

    ImprovementLuciadFusion

    The Fusion Client now adds support for visualization of fused vector data in 2D and 3D Lightspeed views. TLspFusionVectorLayerBuilder provides API for creating Lightspeed layers for Fusion vector models. Styling can be done using default Lightspeed paradigms. GeoSym styling for fused VPF data is supported out-of-the-box.

    The features that are returned by the fusion vector model contain the full detail, which is lazily loaded upon access. This is perfect for limited amounts of features, but it does not scale well when handling features in bulk. For visualization you do not need to worry about this because it is solved internally. For custom use cases, the TLspFusionGeometryProvider supports retrieval of the multi-leveled, tiled geometry of a feature. This scales well whenever features need to be handled in bulk.

    ImprovementLuciadFusion

    The Fusion Client now adds support for visualization of fused raster data in 2D and 3D Lightspeed views.

    ImprovementLuciadFusion

    LCD-2612
    Adding editors to the TLspShapeEditor is now easier. You no longer have to explicitly add the editor multiple times to support their shapelists and extruded variants. It is enough to add the editor, and it will automatically be picked up by the shape editor if the custom domain object is wrapped in an extruded shape or shape list.

    ImprovementLuciadFusion

    The WFS Server sample can now also serve features in the GeoJSON format, by passing 'json' or 'application/json' as OutputFormat.

    ImprovementLuciadFusion

    LCD-355
    ALcdGXYPen now handles shapes crossing the V-opening in a conic projection better. This improvement is enabled only when straight line mode is disabled.

    ImprovementLuciadFusion

    TLspBingMapsCopyrightIcon and TLspBingMapsCopyrightProvider have been introduced. These classes are the Lightspeed equivalent of the TLcdBingMapsGXYCopyrightIcon and TLcdBingMapsGXYCopyrightProvider classes. They facilitate showing Bing Maps copyright information on a Lightspeed view. Their usage is illustrated in the new Lightspeed BingMaps sample (see bingmaps.lightspeed in the samples directory).

    ImprovementLuciadFusion

    TLcdUtmMgrsUtil now has a utmXY2UtmMgrs() and a utmMgrs2UtmXY() method. These methods convert between UTM grid coordinates and UTM MGRS Strings.

    ImprovementLuciadFusion

    Added the com.luciad.format.geojson package. This includes a GeoJson model encoder (TLcdGeoJsonModelEncoder) and a GeoJson model decoder (TLcdGeoJsonModelDecoder).

    ImprovementLuciadFusion

    A CORS (http://www.w3.org/TR/cors/) implementation is included, which can be activated by optionally applying a servlet filter to the WFS servlet. This enables web applications that are not hosted on the same server as the WFS servlet to send Ajax requests to the WFS servlet.

    ImprovementLuciadFusion

    LCD-2641
    It is now possible to configure the spacing between the grid lines of a lon-lat grid. See com.luciad.view.lightspeed.painter.grid.TLspLonLatGridLayerBuilder.spacingRange() for details.

    ImprovementLuciadFusion

    MGRS grids can now be displayed in a Lightspeed view using the new TLspMGRSGridLayerBuilder. This is demonstrated in the grid sample.

    ImprovementLuciadFusion

    Improved bounds transformations from geocentric to geodetic when the geocentric bounds contain a pole.

    ImprovementLuciadFusion

    New API was added to allow for the quick implementation of an action that works on the currently selected objects: ALcdObjectSelectionAction.

    ImprovementLuciadFusion

    Introduced TLcdDomainObjectContext in the API. This class is a container for information about a domain object.

    ImprovementLuciadFusion

    LCD-2566
    The SLD decoders now avoid adding default values that are not specified in the XML or as a default value in the SLD schema. This ensures that an SLD can be decoded and encoded without making (small) changes to the data.

    ImprovementLuciadFusion

    The OGC SLD request handling class TLcdOGCSLDWMSCommandDispatcher now supports the configuration of data models (TLcdDataModel) through a newly added constructor. These data models are used for decoding XML feature data in SLD requests (i.e., SLD inline feature requests).

    ImprovementLuciadFusion

    LuciadFusion now supports fusion of raster data retrieved using the JPEG2000 Interactive Protocol (JPIP).

    ImprovementLuciadFusion

    Added support for ILcdVariableGeoBuffer. TLspShapeDiscretizer and TLspShapeEditor, which uses the newly added TLspVariableGeoBufferEditor, now also support this shape.

    ImprovementLuciadFusion

    LCD-2628
    Labels are now not painted when the label styler specifies an ALspStyleTargetProvider that does not provide any shapes (see ALspLabelStyleCollector.geometry(ALspStyleTargetProvider)).

    ImprovementLuciadFusion

    TLcdVVTerrainModel was added. This ILcdVVModel makes it possible to display a terrain profile in a vertical view.

    ImprovementLuciadFusion

    LCD-2619
    A new sample "Lightspeed: styling editing handles " shows how to customize the visualization of editing handles.

    ImprovementLuciadFusion

    Introduced ALcdActionWrapper, a decorator for ILcdAction instances.

    ImprovementLuciadFusion

    TLspShapeLayerBuilder and TLspShapePainter now support a hinting mechanism through which users can bias the painter either towards higher performance or higher quality/correctness. Currently, this mechanism can be used to change the way fills and outlines of overlapping shapes are rendered. See TLspShapePaintingHints for details.

    ImprovementLuciadFusion

    LCD-2525
    Improved memory usage in layers with invisible paint representations. This includes paint representations that were invisible due to them being out of scale range.

    ImprovementLuciadFusion

    LCD-265, LCD-2494, LCD-2550, LCD-322
    The MGRS (UTM and UPS) and Georef grid visualizations have received several small improvements to increase the readability and consistency. The most notable improvement is the ability to paint labels with a halo.

    ImprovementLuciadFusion

    LCD-374
    TLcdUTMZonePainter#setGridZoneColor now allows configuring the grid zone color separately from the 100,000m square color.

    ImprovementLuciadFusion

    LCD-328
    TLcdUTMZonePainter now also displays the grid zone latitude bands.

    ImprovementLuciadFusion

    LCD-214
    Performance improvement for TLcdGXYPointListPainter.anchorPointSFCT() when getAnchorPointLocation() is set to INSIDE_POLYGON and getPaintCache() is set to true.

    ImprovementLuciadFusion

    LCD-298
    The new sample gxy.highlight shows how to highlight domain objects when moving the mouse.

    ImprovementLuciadFusion

    The GXY samples have been moved to the gxy package, making it easier to differentiate them from the Lightspeed samples.

    ImprovementLuciadFusion

    LCD-2433
    A new GXY grid sample demonstrates the border grid, MGRS grid, Georef grid and lonlat grid. In addition, the mouseLocation and gridSystems samples have been renamed and moved to the transformation package.

    ImprovementLuciadFusion

    The internal EPSG database has been updated to version 7.11.

    ImprovementLuciadFusion

    LCD-2226
    GXY rendering performance has been improved for shapes crossing the projection boundary.

    ImprovementLuciadFusion

    The introduction of TLcdScaleFormat allows for the parsing and formatting of scale values.

    ImprovementData Connectivity Manager

    TLcyOracleLocatorDecoderAddOn is added to the addons.xml file to enable support for vector data stored in an Oracle Spatial database.

    ImprovementData Connectivity Manager

    TLcyConnectionAddOn and TLcyJPIPDecoderAddOn are added to the addons.xml file to enable support for raster data retrieved using the JPEG2000 Interactive Protocol (JPIP).

    ImprovementReal-time Engine

    A new, high-performing track visualization layer was added. It can handle large static point datasets. See developer guide or TLspPlotLayerBuilder javadoc for details.

    ImprovementReal-time Engine

    LCD-2601
    TLcdTrackModel: the memory usage of TLcdTrackModel has been lowered.

    ImprovementReal-time Engine

    LMAP-4013, LCD-8
    Various configuration options were added to TLcdGXYContinuousLabelingAlgorithm and TLspContinuousLabelingAlgorithm:
    • Use setClampOnScreenEdges to specify if labels can be partially outside the view.
    • Use setLabelMovementBehavior to specify when labels should be moved.
    • Use setMinDistance to ensure labels are never too close to their object.
    • Use setMaxDistance to ensure labels are never too far from their object.
    • Use setDisallowedAngle to specify where a label can be positioned around its object.
    • Use setPadding to add space between labels.

    ImprovementAviation Standards

    AIXM data can now be visualized in a Lightspeed view using the new TLspAIXMStyler. This is demonstrated in the new decoder.aixmcommon.lightspeed sample.

    ImprovementDefense Standards

    You can now visualize VPF data in Lightspeed according to the GeoSym styling standard, using the new TLspVPFGeoSymStyler class. The geometries of the VPF domain object can be rendered with TLspShapePainter.

    ImprovementRadar Connectors

    LCD-2805
    TLcdASTERIXTrajectory now also implements ILcdPolyline, which is an ILcdShape. This improves interoperability with the rest of LuciadLightspeed.

    ImprovementRadar Connectors

    Added support for plots in the ASTERIX decoder. If an ASTERIX file or live-feed contains any plot data, it will be output in a specific model with a TLcdASTERIXPlotModelDescriptor. The model will contain TLcdASTERIXPlot elements, which can be visualized using any painter capable of painting ILcdPoint instances.

    Bug fixLuciadFusion

    LCD-3059
    Creating 3D polylines now properly takes into account any altitude exaggeration on the view.

    Bug fixLuciadFusion

    LCD-1478
    The checkboxes for enabling/disabling individual coverages in the fusion.client.proxy3d sample now work correctly.

    Bug fixLuciadFusion

    LCD-1484
    Visualization of fused VMAP2i vector data could result in the GeoSymStyleProvider throwing a NullPointerException. This has now been fixed.

    Bug fixLuciadFusion

    Properties of Fusion vector features having a data type which is not supported by Fusion are now decoded as null values, instead of default instances of the data type's instance class.

    Bug fixLuciadFusion

    The glyphs of a TLspStrokedLineStyle no longer deform near the poles when painted in a 2D view.

    Bug fixLuciadFusion

    LCD-2642
    TLspScaleIndicator#getLabel() now behaves like a standard getter, whereas previously it created a new label every time it was called.

    Bug fixLuciadFusion

    LCD-2991
    The TLspSelectControllerModel could sometimes return too few selection candidates when the terrain was set to invisible in a 3D view.

    Bug fixLuciadFusion

    LF-359
    Fusing data to a checksum-enabled coverage on a Fusion server deployed in Tomcat 6 and 7 caused a failure (NullPointerException), due to an incorrect request header check.

    Bug fixLuciadFusion

    LF-358
    The Fusion ECDIS format now uses the ENC cell's compilation scale for determining the pixel density, instead of the navigational purpose. The compilation scale is a better indicator of the maximum scale (and thus fusion depth) at which the data should be used.

    Bug fixLuciadFusion

    LCD-2768, LCD-2919
    TLspRulerController now uses the configured style also for de-selected measurements. Before, it used a hard-coded thin red line.

    Bug fixLuciadFusion

    LF-356
    Complex polygons containing duplicate polygons are unsupported by fusion. However, fusion's behavior was not consistent: sometimes it silently accepted those polygons, and sometimes it failed with the error message "Unsupported polygon: sequence of end points without intermediate begin point". This has now been fixed so that fusion always fails on those polygons with the error message "Complex polygon contains duplicate polygons".

    There was a bug in VPF which was a common source of this type of unsupported polygons. This bug has now been fixed as well.

    Bug fixLuciadFusion

    LF-351
    Sometimes, when a polygon fully covers a tile but touches it on the edge, it could happen that the affected tile was missing its parts of the geometry's fill. When visualizing the fused data, this could lead to unexpected "holes", or in the worst case, an IllegalStateException with message "Got N fills". This has now been fixed.

    Bug fixLuciadFusion

    LCD-2919
    TLspRasterLayer: the raster layer ignored the levelSwitchFactor for interactive raster layers with an Earth model.

    Bug fixLuciadFusion

    LCD-2841
    TLspLabelingAlgorithm often reused previous placements, event if they become invalid. In order to fix this for custom ALspLabelLocationProvider implementations, ALspLabelLocationProvider now contains an isValidLocation() method, which can be implemented.

    Bug fixLuciadFusion

    LCD-684
    Some datum transformations from references retrieved with TLcdEPSGReferenceParser were incorrect.

    Bug fixLuciadFusion

    TLspLabelPainter didn't handle the ALspStampLabelLocation world rotation offset correctly in all cases.

    Bug fixLuciadFusion

    TLspShapeEditor and TLspShapeListEditor now correctly support recursive shapelists. (i.e. shapelists within shapelists)

    Bug fixLuciadFusion

    Fix NPE when adding a null styler to TLspLabelPainter.

    Bug fixLuciadFusion

    LCD-2581
    In some cases, lon lat grid labels were missing.

    Bug fixLuciadFusion

    During creation, TLspLonLatHeightBufferEditor now determines the initial width based on the length of the first segment of the axis.

    Bug fixLuciadFusion

    LCD-2494
    TLcdUTMZonePainter no longer paints scale labels in the UPS zones.

    Bug fixLuciadFusion

    LCD-2468
    The terrain no longer contains gaps. Previously there could be small gaps in the terrain in some world references.

    Bug fixLuciadFusion

    LCD-120
    TLcdUTMZonePainter now respects the label color settings for all labels.

    Bug fixLuciadFusion

    LCD-2710
    Improved the accuracy of TLcdUTMZone#getMaxXYBounds.

    Upgrade considerationLuciadFusion

    ALspDensityStyle and its descendants no longer implement ILspWorldElevationStyle. The elevation mode property defined in the density styles was redundant, as there is an equivalent setting in TLspDensityLayerBuilder which took precedence. Code that used the elevationMode() method of the density style builders will now result in a compilation error; it should be updated to call the elevationMode() method on TLspDensityLayerBuilder instead.

    Upgrade considerationLuciadFusion

    The new 'OBJECT_DEPENDENT' ElevationMode is now used as the default for TLspLineStyle, TLspFillStyle, TLspIconStyle and TLspWorldSizedLineStyle. This greatly simplifies the creation of styles and stylers, as this elevation mode will provide the best result in most cases. Customers that use a 3D view and rely on the previous default (ABOVE_ELLIPSOID) may want to update their stylers to explicitly use ABOVE_ELLIPSOID.

    Upgrade considerationLuciadFusion

    The structure of the jar files has been changed:
    • lcd_earth_3d.jar has been merged into lcd_3d.jar
    • lcd_wms_client_tiled.jar has been merged into lcd_wms_client.jar
    • lcd_beans.jar is no longer present in the release
    If you copy the new jar files over your existing ones, you should delete the old jar files mentioned in the list.

    Upgrade considerationLuciadFusion

    The 'blend overlap' property of TLspLineStyle is now represented by an enumeration that allows setting the mode to 'AUTO'. This new mode is also the new default, so existing applications that required that blendOverlap was set to false, will now have to set it to 'NEVER'. Do note that the new 'AUTO' mode will result in the correct behaviour in most cases.

    The default styler for shape layers has also been adapted to use this 'AUTO' mode.

    Upgrade considerationLuciadFusion

    A new method, isNormalized(), has been added to ILspVertexAttribute. This allows users to describe whether a vertex attribute is normalized, i.e. in the [0, 1] range, or not. This flag is used internally when calling glVertexAttribPointer().

    Upgrade considerationLuciadFusion

    ILspEditor no longer extends ILcdUndoableSource. As a result, it is no longer possible to attach undoable listeners to editors in general. The functionality has been moved to TLspEditOperationResult. This object now stores an undoable. Like before, each edit operation will create a TLspEditOperationResult. This now has a getUndoable() and a constructor that allows you to supply the result with an undoable.

    So how does this affect your editors? The following rules should apply:

    • If you haven't customized any editors: No change in your code should be required.
    • If you implemented a simple ALspEditor: Everything should work without change to your code. ALspEditor itself has been modified internally to work with the new undo behavior. This will still propagate correctly to the edit controller.
    • If you implemented an ALspEditor that delegates to another editor: Make sure that you check the TLspEditOperationResult of your delegate first. If this contains an undoable, you should pass this undoable
    • If you implemented a fully custom ILspEditor: The same rules apply as the bullet point above. Also, if you generate your own undoables, be sure to create new TLspEditOperationResult objects that contain them, instead of firing the undoable as you would before.

    A general rule is that, if you had the following code:

          @Override
          public TLspEditOperationResult edit(...){
            //Do edit
            ILcdUndoable undoable = ...
            fireUndoableEvent(new TLcdUndoableEvent(this, undoable));
            return TLspEditOperationResult.SUCCESS;
          }
        

    You should replace it with:

          @Override
          public TLspEditOperationResult edit(...){
            //Do edit
            ILcdUndoable undoable = ...
            TLspEditOperationResult result = new TLspEditOperationResult(isSuccesful, isInvalid, undoable);
            return result;
          }
        

    Upgrade considerationLuciadFusion

    The TLspExtrudedShapeEditor no longer returns true for the canEdit method in case its delegate can edit the shape, for consistency with all the other editors. Now each ALspEditor only accepts shapes it can edit itself. The new recommended way to create an editor that supports both extruded shapes and a specific delegate shape is as follows:

          TLspCompositeEditor compositeEditor = new TLspCompositeEditor();
          compositeEditor.addEditor(new TLspExtrudedShapeEditor(compositeEditor));
          compositeEditor.addEditor(new TLsp2DPointListEditor());
        

    The example above works for when you want an editor that edits both 2D pointlists and extruded 2D pointlists.

    Upgrade considerationLuciadFusion

    Some methods in ALspStyleCollectorWrapper and ALspLabelStyleCollectorWrapper have been made final. These methods now convert the argument and forward the call to another method of the wrapper class. An example is the 'object' method, which wraps its argument in a Collection and forwards the call to the 'objects' method. Now it is no longer needed to override both the 'object' and 'objects' method, but it is sufficient to override the 'objects' method.

    In case you have overridden one of the affected methods, you will get a compile error. Normally, you can just delete that overridden final method. The custom behavior of that method should already be included in the other method, otherwise your extension violated the documentation. So in case you had an extension of ALspStyleCollectorWrapper containing the following code:

          @Override
          public ALspStyleCollectorWrapper object( Object aObject ){
            doSomethingCustom( Collections.singleton( aObject ) );
            return super.object( aObject );
          }
          @Override
          public ALspStyleCollectorWrapper objects( Collection<? extends Object> aObjects ){
            doSomethingCustom( aObjects );
            return super.objects( aObjects );
          }
        

    You can just delete the custom 'object' method.

    Upgrade considerationLuciadFusion

    The Batik libraries have been upgraded from version 1.5 to 1.7, to solve issues with respect to SVG XML decoding. Users that are relying on SVG support inside the WMS will need to update their build process accordingly. SVG can be used in the WMS as map output format (through TLcdGXYViewSVGEncoder) or inside OGC Symbology Encoding styles (in an SLD-enabled WMS). If SVG is not used, the Batik libraries are not required.

    Upgrade considerationLuciadFusion

    A third library dependency on Batik 1.7 has been added to support the use of SVG in Symbology Encoding 1.1.0 styles. Existing users of SLD will need to include Batik in their build process if they require support for SVG. If SLD is not used or if SVG support inside these styles is not needed, the Batik libraries are not required.

    Upgrade considerationLuciadFusion

    The method TLfnLTSRequestDispatcherFactory.createRequestDispatcher now declares a ServletException in its 'throws' clause. Any decorator implementations need to be adapted to propagate this exception in their 'throws' clause. The same goes for any extensions of this class that call super.createRequestDispatcher. Other implementations that used to wrap ServletExceptions into RuntimeExceptions may be simplified by removing the wrapping and throw ServletExceptions directly.

    Upgrade considerationLuciadFusion

    ILspLabelPainter.getAnchorObject() can now also return ALspStyleTargetProvider instances. These can for example return anchor objects in a different reference than the model reference.

    Upgrade considerationLuciadFusion

    The signature of the ALspSwingLabelStyler.paintImage(JComponent, Dimension, TLspContext) method was changed to ALspSwingLabelStyler.paintImage(JComponent, Dimension, Object, Object, TLspContext) in order to provide more information about the label for which an image is created.

    Upgrade considerationLuciadFusion

    ILspLabelPainter.getAnchorObject now throws an TLcdNoBoundsException, to indicate that no anchor object could be found.

    Upgrade considerationLuciadFusion

    TLspEditingStateEvent now extends from EventObject. Because of this, the constructor was adjusted to include a source argument. Also the TLspEditingSupport constructor now has a source argument.

    Upgrade considerationLuciadFusion

    TLcdGXYLonLatHeightBufferPainter has been deprecated in favor of TLcdGXYBufferPainter and TLcdGXYGeoBufferPainter.

    Upgrade considerationAviation Standards

    LCD-954
    The 'getShape(int)' method of TLcdSegmentBasedRoute will no longer return the ILcd3DEditablePolyline that was set with 'set3DEditablePolyline' for all indices. It will return a new clone of this instance for each separate index instead. This makes this domain object thread safe for reading and avoids exceptions at runtime.

    Upgrade considerationDefense Standards

    LCD-2535
    The SENSRB decoder has been updated to support latest official specification of December 2010. Files that still use an old version of the specification will no longer decode.

    2012.0

    2012.0.20

    Bug fixLuciadFusion

    LCD-3012
    TLspGXYLayerAdapters that were removed from the view could still be referenced by it.

    Bug fixLuciadFusion

    LCD-3042
    The TLspCreateController no longer fires model changes when no edit operations have been performed. (For instance, if the user clicked outside of the world)

    Bug fixLuciadFusion

    LCD-3041
    The raster painter did not support raster styles with a ColorModel for models that do not contain elevation data.

    Bug fixLuciadFusion

    LCD-3031
    TLcdWFSProxyModelDescriptor mixed up the display and type name properties.

    Bug fixLuciadFusion

    LCD-3030
    The WMS painter TLcdWMSProxyGXYPainter could not send map requests that exceeded a 2000 by 2000 map size. If a view exceeded those values, a smaller map was requested and scaled to match with the view, which could lead to coarse images. The painter has been fixed and now only applies a map size limit when this is advertised by the server.

    Bug fixLuciadFusion

    LCD-3017
    Vector painting was improved to support using domain objects that are 'equal' (objects for which the equals() method returns true). This could result in exceptions during painting.

    Bug fixDefense Symbology

    LCD-3020
    The rendering of the MIL-STD 2525c symbol Munition Flight Path (2.X.4.2.2.5) sometimes generated a NullPointerException stacktrace when the Date / Time text modifier was not filled in.

    2012.0.19

    ImprovementLuciadFusion

    LCD-2956
    Improved the behavior of point list object creation when clicking outside of the bounds of the world.

    ImprovementLuciadFusion

    LCD-2798
    Improvement to TLspEditController: Layer based property changes are now handled more fine-grained. Previously, all layer handles would get updated if a single layer had a visibility change. Now only the modified layer is updated.

    ImprovementLuciadFusion

    LCD-2958
    TLcdEarthAsynchronousTileSet: the tile set now creates daemon threads by default. Previously a java application would not exit naturally when it kept an (indirect) reference to this tile set. Please refer to the documentation of the java.lang.Thread class for more details.

    ImprovementLuciadFusion

    LCD-2615, LCD-2977

    ALspStampLabelLocation (and TLspStampLabelLocation) now support absolute view locations, i.e. labels anchored to the screen origin. See ALspStampLabelLocation.LocationData.isAbsoluteViewLocation() for more information.

    Absolute label locations are used by the StickyLabelsController sample class. When registering a layer to this controller using StickyLabelsController.registerLayer() (see also AbstractLspPanel.createStickyLabelsLayerFilter()), labels are made absolute and sticky when moving the mouse cursor over them. When this is done, labels don't move away from under the mouse cursor, making it easier to select and edit them.

    TLspLabelingAlgorithm now also contains an option not to reuse previous label locations, see TLspLabelingAlgorithm.setReusePreviousLocations(). This option can be used to make sure that labels don't remain at the incorrect location after hovering over them.

    ImprovementDefense Symbology

    LCD-1662
    A number of unlabeled tactical line-based symbols in APP-6 and MIL-STD 2525 now have a label corresponding to the general labeling guidelines for these type of symbols. The following tactical line-based symbols have been updated:
    • Wire obstacle symbols (MIL-STD 2525b/c: 2.X.3.1.11; APP-6A/B: 2.X.2.2.1.13)
    • Forward line of own troops (FLOT) symbol (MIL-STD 2525b/c: 2.X.2.1.2.2; APP-6A/B: 2.X.2.1.1.2.2)
    • Line of contact symbol (MIL-STD 2525b/c: 2.X.2.1.2.3; APP-6A/B: 2.X.2.1.1.2.3)
    • Abatis symbol (MIL-STD 2525b/c: 2.X.3.1.2; APP-6A/B: 2.X.2.2.1.2)
    • Antitank obstacle / ditch symbols (MIL-STD 2525b/c: 2.X.3.1.3.1, 2.X.3.1.3.2, 2.X.3.1.3.4; APP-6A/B: 2.X.2.2.1.3.1, 2.X.2.2.1.3.2, 2.X.2.2.1.3.4)
    • Ferry symbol (MIL-STD 2525b/c: 2.X.3.2.2.3; APP-6A/B: 2.X.2.2.2.2.3)
    • Lane symbol (MIL-STD 2525b/c: 2.X.3.2.2.6; APP-6A/B: 2.X.2.2.2.2.6)
    • Raft site symbol (MIL-STD 2525b/c: 2.X.3.2.2.7; APP-6A/B: 2.X.2.2.2.2.7)
    • Fortified line symbol (MIL-STD 2525b/c: 2.X.3.3.3; APP-6A/B: 2.X.2.2.3.3)
    • Foxhole, emplacement or weapon site symbol (MIL-STD 2525b/c: 2.X.3.3.4; APP-6A/B: 2.X.2.2.3.4)
    • PAA rectangular symbol (MIL-STD 2525b/c: 2.X.4.3.2.6.1; APP-6A/B: 2.X.2.3.3.11)
    • PAA circular symbol (MIL-STD 2525b/c: 2.X.4.3.2.6.2; APP-6A/B: N/A)
    • Bearing line symbols (MIL-STD 2525b/c: 2.X.6.4; APP-6A/B: 2.X.2.1.1.2.5)

    ImprovementDefense Symbology

    LCD-1592
    The position of the labels of a few tactical point symbols was not fully consistent with the standard guidelines for these type of symbols. The following tactical point symbols were affected and have been updated:
    • MIL-STD 2525b: route points (2.X.2.1.1.6) and air control points (2.X.2.1.1.7)
    • MIL-STD 2525c: route points (2.X.2.1.1.6), air control points (2.X.2.1.1.6), sea surface control station points (2.X.2.1.1.9) and subsurface control station points (2.X.2.1.1.10)
    • APP-6A: route points (2.X.2.1.1.8) and air control points (2.X.2.1.1.11)
    • APP-6B: route points (2.X.2.1.1.7) and air control points (2.X.2.1.1.10)

    Bug fixLuciadFusion

    LCD-2994
    Robustness improvements were made to vector painting to avoid a potential deadlock if an unexpected exception occurs in a running application.

    Bug fixLuciadFusion

    LCD-2995
    The view did not log instances of java.lang.Error (e.g., an out of memory error) that occur in asynchronous task. These were also not propagated to the view's exception handler.

    Bug fixLuciadFusion

    LCD-2992
    TLsp3DPointListEditor would create an extra point when ending creation with a right click (on the height-handle step). This has been corrected.

    Bug fixLuciadFusion

    LCD-2989
    Fixed issue that would draw an icon as pinpoints when their size is 0. Instead now, no icon will be visible.

    Bug fixLuciadFusion

    LCD-2982
    In rare cases, labels would temporarily be blurred.

    Bug fixLuciadFusion

    LCD-2983
    Interactive labels sometimes start fading out or disappear for a very short while.

    Bug fixLuciadFusion

    LCD-2896
    Improved the precision when transforming bounds to a grid reference in some cases.

    Bug fixLuciadFusion

    LCD-2968
    Translation of arcs and circles using move2D() did not correctly move the bounds of the objects. This has been fixed now.

    Bug fixLuciadFusion

    LCD-2815
    TLspCreateController now logs problems with initializing an object for creation.

    Bug fixLuciadFusion

    LCD-2964
    Fixed a problem with the resize handles of Lon-Lat-Height Buffers in 2D Lightspeed views.

    Bug fixLuciadFusion

    LCD-2847
    Double click events are no longer consumed by editing handles. This means you can now chain an edit controller with another controller, and the second controller will receive the double click events when objects are in the edited paint state.

    Bug fixLuciadFusion

    LCD-2733
    Some TLspMoveDescriptors were wrongly labelled as a move in the XYZ plane, even though they were moves in the XY plane. These have been fixed to correctly reflect their constraint to not include a change in height.

    Bug fixLuciadFusion

    LCD-2875
    Fixed wrap-around problems when editing TLcdLonLatBounds in certain projections (regression since LCD-258).

    Bug fixLuciadFusion

    LCD-2939
    The WCS server could not cope with GetCoverage requests that specified longitude/latitude request that crossed the date line.

    Bug fixLuciadFusion

    LCD-2938
    The WCS proxy object TLcdWCSProxy could not cope with request bounds that cross the date line.

    Bug fixLuciadFusion

    LCD-2945
    Fixed a performance issue when painting invisible objects with a halo.

    Bug fixAviation Standards

    LCD-2966
    Circular airspaces were painted as arcs instead of circles.

    Bug fixDefense Standards

    LCD-2948
    Some VPF areas might contain the same outer or inner ring multiple times, which could cause the area to be filled incorrectly. This has been fixed.

    Bug fixDefense Symbology

    The internal icon for the Artillery point symbol in APP-6B (2.X.3.1.2) was not correctly centered.

    Bug fixDefense Symbology

    The preview icon for the Abatis symbol in APP-6B (2.X.2.2.1.2) was not correct and has been fixed.

    Bug fixDefense Symbology

    LCD-2979
    A bug has been fixed in the ILcdGXYEditor for L-shaped tactical symbols in APP-6 and MIL-STD 2525 (e.g., the 'Withdraw' symbol), which sometimes resulted in an inaccurate calculation of one of the geometry points.

    Bug fixDefense Symbology

    LCD-2940
    The Seize tactical symbol (MIL-STD 2525b/c: 2.X.3.1.7.3, APP-6A/B: 2.X.2.2.1.8.3) is now defined by 3 points instead of 2 points, following the MIL-STD 2525b/c and APP-6A/B specifications.

    Bug fixDefense Symbology

    LCD-2943
    The edit lines of the Turn tactical symbol (MIL-STD 2525b/c: 2.X.3.1.7.3, APP-6A/B: 2.X.2.2.1.8.3) were not redrawn during symbol editing on the map.

    2012.0.18

    ImprovementDefense Standards

    LCD-1425
    An exception is now thrown when the image file is not available at decoding time.

    Bug fixLuciadFusion

    LCD-2913
    TLcdEarthGLTerrainPainter: the Earth terrain painter did not work correctly for some world references such as grid references with a lambert conformal projection. Common world references such as a geocentric reference or a grid reference with a mercator or equidistant cylindrical reference were not affected.

    Bug fixLuciadFusion

    Moving or translating the GML shapes TLcdGML32LinearRing, TLcdGML31LinearRing and TLcdGML2LinearRing did not update the last point of the shape. This resulted in an incorrect representation when encoding the shapes to XML. It did not impact decoding or visualization because the last point is expected to be the same as the first point and therefore ignored by Luciad's software.

    Bug fixLuciadFusion

    LCD-2894
    Some property change events fired by the TLspScaleIndicator had an incorrect property name.

    Bug fixLuciadFusion

    LCD-2894
    Some property change events fired by the TLcdGXYScaleIndicator had an incorrect property name.

    Bug fixLuciadFusion

    LCD-2890
    TLcdGeoTIFFModelEncoder did not correctly respect the configured level count.

    Bug fixLuciadFusion

    LCD-2877
    In certain stereographic projections, TLcdUTMZonePainter's paint method could hang.

    Bug fixLuciadFusion

    LCD-2867
    A number of issues have been fixed regarding import/export of coverages and DigestExceptions.
  • Import of a coverage could occasionally fail with a DigestException for no good reason. This has now been fixed.
  • In case of a DigestException, the Future.get() did not throw while the exception was still propagated on the handler. This has now been fixed: Future.get() now always throws upon a DigestException.
  • Bug fixLuciadFusion

    LCD-904
    TLcdDatabaseModel now has an isDirty() call to check if there are uncommitted changes.

    Bug fixDefense Standards

    A NullPointerException which could occur when a FACC feature did not have a value for an attribute used by a GeoSym condition, has been fixed in the GeoSym style provider.

    Bug fixDefense Standards

    A potential threading issue in the VPF model implementation has been fixed. The issue (an exception being thrown) could occur when querying models from multiple feature classes in the same coverage via applyOnInteract, on the same tiles.

    Bug fixMaritime Standards

    LCD-2923
    TLcdS57CatalogueModelDecoder now automatically picks up cell update files which are not in the catalogue file. This is particularly useful in the case of differential updates, where the original catalogue file does not contain the cell update files, and the update catalogue file does not contain the original cell files. Differential updates can now be opened by copying all cell update files in the original ENC_ROOT dir, except for the catalogue file.

    Bug fixS-63

    LCD-2924
    The S-63 model decoder can now handle meta permit files without a ':ECS' line declared in them.

    2012.0.17

    ImprovementLuciadFusion

    LCD-2850
    The create controller now checks whether it can handle geometries produced by the styler before applying them. This makes it possible to write a styler that generates multiple geometries. As long as the editor in your layer can only handle one of those geometries, the create controller will be able to create the geometry for you.

    ImprovementLuciadFusion

    LCD-2743
    Labeling algorithms can now optionally ignore previous locations. This is useful if the previous location can become invalid, or if there is only one possible location. See TLspLabelingAlgorithm.setReusePreviousLocations().

    ImprovementLuciadFusion

    LCD-1535
    The performance of evaluating simple XPaths on XML based domain models has been improved. For instance evaluating: 'myns:myElement/myns:Name' should be a lot faster. More complex XPaths like '//myns:Name' are not affected by this optimization.

    ImprovementLuciadFusion

    LCD-2764
    TLspHandleGeometryType now has a public constructor, so you no longer have to extend it to create a new one.

    ImprovementLuciadFusion

    TLcdGXYIconPainter no longer tries to paint icons without height or width.

    Bug fixLuciadFusion

    LCD-2806
    The contains2D method and bounds computation methods of linear lon lat polygons could produce wrong results for polygons that wrap around the date line.

    Bug fixLuciadFusion

    LCD-2849
    The TLspFrustum.isBoundsVisible could sometimes return true for bounds that are actually not visible.

    Bug fixLuciadFusion

    LCD-2851
    Lightspeed raster layers no longer repaint from scratch when the OpenGL context is re-created. This could for example occur when undocking a Lightspeed map in Lucy.

    Bug fixLuciadFusion

    LCD-2855
    The Apache HttpClient transport implementation did not support resending POST requests when required for authentication.

    Bug fixLuciadFusion

    LCD-1564, LCD-182
    TLcdLonLatPointFormat applied truncation rather than rounding to the smallest component of a formatted coordinate. This could lead to formatting errors.

    Bug fixLuciadFusion

    LCD-2817
    TLcdLonLatPointFormat incorrectly parsed strings containing a zero value for the degree component in certain cases.

    Bug fixLuciadFusion

    LCD-2835
    The styling of lon lat grid lines could be incorrect in some cases.

    Bug fixLuciadFusion

    TLcdOWSDomain#getValues() did always return an empty array. This class is used inside OWS (WFS, WCS, WMS) capabilities to model domain metadata.

    Bug fixLuciadFusion

    LCD-2814, LCD-3029, LCD-3053
    TLcdGXYLayer: in some cases (e.g. in combination with SLD), labels could disappear.

    Bug fixLuciadFusion

    LCD-2811
    Fixed possible, temporary, drawing artifacts when a considerable amount of data is loaded in the view and the user is interacting with the view.

    Bug fixReal-time Engine

    LCD-2846
    Labels placed using continuous decluttering would sometimes jitter.

    Bug fixAviation Standards

    LCD-2864
    The turn direction of a procedure turn leg was not correctly taken into account when it was explicitly set to LEFT or RIGHT.

    Bug fixAviation Standards

    LCD-2800
    Procedure decoding will no longer fail if a bounds filter is used and the decoded procedure does not have a bounds.

    Bug fixAviation Standards

    LCD-2800
    Procedure decoding will no longer fail if a bounds filter is used and the decoded procedure does not have a bounds.

    2012.0.16

    Bug fixInfrastructure Standards

    LCD-2427
    The DGN decoder now supports the full level filter syntax.

    2012.0.15

    ImprovementLuciadFusion

    LCD-2786
    Painting icons that are almost entirely transparent has been improved so that they remain visible until the opacity is actually set to 0.

    ImprovementLuciadFusion

    TLcdSelectionSupport is now thread-safe.

    ImprovementAdvanced Raster Services

    LCD-2804
    The performance of the MrSID models has been improved significantly. Due to this improvement the model decoder may require a slightly larger buffer. The default buffer returned by TLcdSharedBuffer.getBufferInstance is always large enough.

    ImprovementAviation Standards

    LCD-2803
    The procedure transition from an aircraft position to an arc segment (for instance, defined by an Arc-to-Fix) has been improved. The transition is now done on the side of the arc that is closest to the current position of the aircraft.

    ImprovementAviation Standards

    LCD-2802
    The procedure transition between an intercept leg (Course-to-Intercept or Heading-to-Intercept) and a Course-to-Fix (CF) leg has been improved in the case the aircraft's position is already very close to the path to be intercepted.

    ImprovementAviation Standards

    LCD-2796
    The procedure transition between an Arc-to-Fix (AF) and Course-to-Fix (CF) leg has been improved. The transition is now done on the side of the arc that is closest to the destination fix of the CF leg, to avoid following the arc until the destination course of the CF leg is intercepted at the complete opposite of the destination position.

    ImprovementS-63

    LCD-2789
    The S-63 model decoder can now handle ENC cells without an DSID_EDTN issue number in their permit file.

    Bug fixLuciadFusion

    LCD-2799
    Fixed issue with TLspEditController that would cause a threading violation to be raised when modifying an edited layer on a non-EDT thread. Modifying models outside of the EDT-thread is perfectly valid, and works properly now.

    Bug fixLuciadFusion

    LCD-2785
    Fixed issue with NetworkLinks not loading that were not explicitly set to have a ViewRefreshMode.

    Bug fixLuciadFusion

    LCD-2784
    Icons visualized with TLspIconStyle are now better aligned with the pixels of the screen. This avoid unwanted blurring of the icon which could sometimes be seen for certain sizes of the view.

    Bug fixLuciadFusion

    Fixed a possible deadlock when using a styler that checks if certain objects are selected.

    Bug fixLuciadFusion

    LCD-2776
    The TLcdEarthGXYRasterPainter.clone method did not return a proper clone of the painter.

    Bug fixAviation Standards

    LCD-2801
    The procedure transition from an aircraft position to a line segment (for instance, defined by a Track-to-Fix) sometimes generated an unexpected S-curve at the start of this segment.

    Bug fixDefense Symbology

    LCD-2782
    The label painters for the Phase Line and Light Line symbols did not take into account the style's labelFontScaling property, which made it impossible to use a custom font size.

    2012.0.14

    Bug fixLuciadFusion

    LCD-2774
    Transforming bounds from a geocentric or topocentric reference to a grid reference could produce bounds that were bigger than expected.

    Bug fixLuciadFusion

    LCD-2772
    Selection now ignores layer where isSelectableSupported() returns false, even if isSelectable() returns true.

    Bug fixLuciadFusion

    LCD-2648, LCD-2750, LCD-2751, LCD-2757, LCD-2765
    Several fixes for interactive labels:
    • In some cases labels were painted twice, or not at all. This fix introduces a new constructor in ALspSwingLabelStyler, with an ALspInteractiveLabelProvider as argument. This constructor should be called when using a TLspInteractiveLabelsController. For an example of how to use these classes, see the lightspeed.labels.interactive sample.
    • ALspSwingLabelStyler now has an option to invalidate itself when model changes are thrown.
    • ALspSwingLabelStyler could cause components to be removed from the Swing hierarchy. This fix also fixes view lags caused by ALspSwingLabelStyler, and fixes label flickering.
    • The paint state wasn't always correctly restored after moving away from an interactive label

    2012.0.13

    ImprovementLuciadFusion

    LCD-2762
    Changed a few style default values to reflect default values found in schema.

    ImprovementLuciadFusion

    LCD-2533
    TLspCreateController now allows the creation of objects that aren't directly shapes, but contain shapes indirectly through stylers. This works for the case when the domain object contains exactly one geometry.

    Bug fixLuciadFusion

    LCD-2756
    When selecting 1 object, and then another, TLspEditController removed both objects from the EDITED paint state.

    Bug fixLuciadFusion

    LCD-2755
    ALspController.setCursor only had effect for active controllers. Now the cursor is picked when the controller is being activated as well.

    Bug fixLuciadFusion

    LCD-2744
    TLspLayer did not recalculate the visible set of objects when changing the view's world reference while the view-world transformation remains unchanged.

    Bug fixLuciadFusion

    LCD-2741
    Fixed an exception when painting raster data that has a model reference with a TLcdPerspectiveProjection. This projection is sometimes used for ortho-rectified data.

    Bug fixLuciadFusion

    LCD-2554
    The traffic indicator of the LuciadFusion client sample no longer violates Swing threading rules. This solves occasional deadlocks when visualizing fusion data.

    Bug fixLuciadFusion

    LCD-2730
    Property getters on classes generated from XML Schema's now return correct default values as defined in the XML Schema, instead of zero (for primitive getters) or null (for non-primitive getters). Default values are no longer explicitly set on the data object instances for XML attribute properties.

    Bug fixReal-time Engine

    LCD-2738
    TLcdSimulator: the 'playInLoop' property no longer causes exceptions when the simulator model is empty.

    2012.0.12

    ImprovementLuciadFusion

    LCD-2724
    The WMS painter TLcdWMSProxyGXYPainter now uses ImageIO instead of JAI to decode images, to increase image format support (such as JPEG 2000).

    ImprovementLuciadFusion

    LCD-96
    TLcdGeoTIFFModelEncoder now adds a TOWGS84GeoKey tag when encoding user-defined datums. TLcdGeoTIFFModelDecoder will use this tag if present.

    ImprovementLuciadFusion

    TLcdEllipsoidUtil.intersection2DLSSFCT() was added. This method calculates the intersection between two geodetic lines, defined by two pairs of points. Unlike TLcdEllipsoidUtil.intersection2DLineSegments, which returns two intersection points, the resulting intersection point is the one closest to one of the end points of the two given segments.

    ImprovementLuciadFusion

    LCD-105
    Added progress reporting capability to TLcdGeoTIFFModelEncoder.

    ImprovementLuciadFusion

    LCD-2719
    Asynchronous layers can now use VolatileImages internally, potentially improving the responsiveness of large ILcdGXYViews. To benefit from this, change the view implementation to a TLcdGXYViewJPanelLightWeight view without caching (see the setCachingMode method), and change the Java system property "com.luciad.view.gxy.asynchronous.useVolatileImages" to true.

    Bug fixLuciadFusion

    LCD-2729
    Fixed a regression in TLcdGXYAsynchronousPaintQueue's BODIES_AND_SKIP behavior that caused needless repaints and the disappearance of labels and selected objects.

    Bug fixLuciadFusion

    LCD-2720
    TLcdGeoTIFFModelEncoder now always generates an END_BUSY status event if a START_BUSY was fired.

    Bug fixLuciadFusion

    LCD-2717
    Some logging statements in com.luciad.concurrent.TLcdLockUtil were not thread-safe. As a result you could get a ConcurrentModificationException when enabling logging for this class. This has been fixed.

    Bug fixLuciadFusion

    LCD-2718
    In some cases, asynchronous layers would not update correctly when used in a TLcdGXYViewJPanelLightWeight or TLcdMapJPanelLightWeight.

    Bug fixLuciadFusion

    LCD-2708
    In some rare circumstances, TLcdGXYAsynchronousPaintQueueManager could throw a ClassCastException.

    Bug fixLuciadFusion

    LF-329
    Image coverages now correctly support odd tile resolutions. There are no longer any grid artifacts.

    Bug fixLuciadFusion

    LCD-103
    Improved TLcdGeoTIFFModelEncoder performance for most raster types.

    Bug fixMaritime Standards

    LMAP-5330
    A potential memory leak in the S-52 display-priority ordered model has been fixed.

    Upgrade considerationMaritime Standards

    LCD-622, LMAP-6020
    TLcdS57Point no longer extends from TLcdXYPoint. The geographical location of a TLcdS57Point is now stored in a TLcdS57Node, referenced by the TLcdS57Point. This matches better with the S-57 domain model, and allows easier editing of data: when an S-57 feature is moved, all other features sharing the same geometry are automatically moved as well. Applications are only affected if they explicitly cast TLcdS57Point instances to TLcdXYPoint. You can easily solve this by either casting to an ALcd2DEditablePoint or a TLcdS57Point instead. There are no methods removed from the TLcdS57Point API.

    2012.0.11

    ImprovementLuciadFusion

    A variable geobuffer shape was introduced, ILcdVariableGeoBuffer. This shape represents a corridor around a given (3D) polyline, adding a width and height to the shape that is defined for every polyline point. It has one implementation, TLcdLonLatHeightVariableGeoBuffer. This shape can be painted and edited using TLcdGXYGeoBufferPainter.

    ImprovementLuciadFusion

    LCD-2541
    All OGC XML schemas included in the release have been updated to the latest version in order to comply with the new OGC XLink policy. All XML decoders will continue to support both XML formats that still use the OGC XLink schema and formats that use the W3C XLink schema. This ensures that existing applications can continue to work without changes.

    Users of custom XML formats that depend on XLink by using 'xlink:simpleLink' in their schema are encouraged to check the correctness of their schema. The OGC XLink schema has been removed from 'http://schemas.opengis.net', but you can still find it in the release. More information about the change made by the OGC can be found at: http://www.opengeospatial.org/blog/1597.

    ImprovementWeather & Environment Standards

    LCD-1409
    Decoded models will no longer have a null reference.

    ImprovementAviation Standards

    LCD-2629
    The discretization step size used by TLcdProcedureGeometryCalculator to discretize procedure arcs can now be configured through the new methods set/getDiscretizationResolutionAngle.

    ImprovementAviation Standards

    The default constructors for the AIXM 5.x message and geometry classes (e.g. TLcdAIXM51AbstractAIXMMessage, TLcdAIXM51Point, TLcdAIXM5ElevatedSurface, ...) now set the model reference or srs by default to "urn:ogc:def:crs:EPSG::4326". This is the default WGS84 geodetic reference with lat/lon axis order, and is defined to be the default reference for AIXM 5.x data. Do note that you still need to ensure that the correct reference is set when using GML geometries, as there is no default reference defined for GML.

    ImprovementDefense Symbology

    LCD-1617
    All task symbols in the tactical graphics category in MIL-STD 2525b/c (2.X.1.*) and APP-6A/B (2.X.1.1.*) can now have a label based on the Unique Designation modifier.

    ImprovementDefense Symbology

    LCD-1663
    It is now possible to render the following symbols with more than two points:
    • Forward Edge Of Battle Area (FEBA) symbol (MIL-STD 2525b/c 2.X.2.4.2.1, APP-6A/B 2.X.2.1.4.2.1)
    • Direction of Aviation Attack symbol (MIL-STD 2525b/c 2.X.2.5.2.2.1, APP-6A/B 2.X.2.1.5.2.2.1)
    • Direction of Ground Main Attack symbol (MIL-STD 2525b/c 2.X.2.5.2.2.2.1, APP-6A/B 2.X.2.1.5.2.2.8)
    • Direction of Ground Supporting Attack symbol (MIL-STD 2525b/c 2.X.2.5.2.2.2.2, APP-6A/B 2.X.2.1.5.2.2.7)

    Bug fixLuciadFusion

    LF-353
    When multiple assets use a common source file but a different clipping shape, the fused result now correctly contains all contributions.

    Bug fixLuciadFusion

    LCD-2691
    An exception could occur when doing a bounds or touched query on a layer, while the data in that layer was being updated. This should no longer occur now.

    Bug fixLuciadFusion

    LCD-2541
    The WMS XML schema's have been updated. The new versions now refer to the official W3C XLink schema, instead of the OGC variant that was used before.

    Bug fixLuciadFusion

    LCD-2541
    The WMS XML schema's have been updated. The new versions now refer to the official W3C XLink schema, instead of the OGC variant that was used before.

    Bug fixLuciadFusion

    LCD-2541
    The WFS XML schema's have been updated. The new versions now refer to the official W3C XLink schema, instead of the OGC variant that was used before.

    Bug fixLuciadFusion

    LCD-2541
    The WFS XML schema's have been updated. The new versions now refer to the official W3C XLink schema, instead of the OGC variant that was used before.

    Bug fixLuciadFusion

    LCD-2541
    The WCS XML schema's have been updated. The new versions now refer to the official W3C XLink schema, instead of the OGC variant that was used before.

    Bug fixLuciadFusion

    LCD-2541
    The OGC Filter XML schema's have been updated. The new versions now refer to the official W3C XLink schema, instead of the OGC variant that was used before.

    Bug fixLuciadFusion

    LCD-2541
    The SLD XML schema's have been updated. The new versions now refer to the official W3C XLink schema, instead of the OGC variant that was used before.

    Bug fixLuciadFusion

    LCD-2541
    The WCS XML schema's have been updated. The new versions now refer to the official W3C XLink schema, instead of the OGC variant that was used before.

    Bug fixLuciadFusion

    LMAP-2541
    The GML schema's have been updated. The new versions now refer to the official W3C XLink schema, instead of the OGC variant that was used before.

    Bug fixLuciadFusion

    LCD-2666
    TLcdEarthImageCombiner: image tile combiner now correctly supports odd tile sizes.

    Bug fixLuciadFusion

    LCD-2582
    Selection of fused vector data features no longer behaves over-eager for shapes that have no fill or outline.

    Bug fixLuciadFusion

    LCD-2559
    GML and the derived formats such as AIXM 5.x now support 'NAD83', as srsName. This code is considered the same as EPSG:4269, but added for compatibility reasons. Users are encouraged to use the official OGC srsName 'urn:ogc:def:crs:ogc:epsg::4269'.

    Bug fixData Connectivity Manager

    LF-170
    Deleting a coverage after restarting the DCM could in some circumstances result in a NullPointerException.

    Bug fixWeather & Environment Standards

    LMAP-5892
    TLcdGRIBWindIcon is now painted correctly: wind barbs for speeds above 100 knots are painted as multiple triangles instead of squares.

    Bug fixInfrastructure Standards

    LCD-866
    The DWG decoder can now handle large files, and gives a proper error when the file is too large.

    Bug fixInfrastructure Standards

    LCD-2658
    The DWG decoder was upgraded to use the recent ODA 3.6 library.

    Bug fixMaritime Standards

    LMAP-5342
    A threading issue in the creation of strokes inside the S-52 rendering engine, which could have resulted in unexpected NullPointerExceptions, has been fixed.

    Bug fixMaritime Standards

    A bug in the boundsSFCT method of the S-52 painters, which could have resulted in NullPointerExceptions, has been fixed.

    Bug fixMaritime Standards

    LCD-2538
    A bug in the cloning operation of S-52 painters has been fixed. This solves potential concurrency issues when using clones of these painters.

    Bug fixMaritime Standards

    The ECDIS layers now support ECDIS painters which are wrapped in a TLcdGXYClippingPainterWrapper.

    2012.0.10

    ImprovementAdvanced GIS Engine

    LMAP-3103
    The classes TLcdSphereRhumblineUtil and TLcdEllipsoidRhumblineUtil, which support topology calculations with rhumblines, have been added. These classes have been used to implement the following topology calculations: polygon-polygon, polygon-polyline, polyline-polyline with rhumbline properties.

    ImprovementAdvanced GIS Engine

    LMAP-1081, LMAP-2652
    TLcdEllipsoidalBasicBinaryTopology now supports ILcdBounds.

    Bug fixLuciadFusion

    LF-342
    Fusion was extended with a commit policy 'per coverage', in addition to the existing one 'per tile'. When configured in 'per coverage', new tiles will not be visible until fusion of the whole coverage is complete. This allows to keep a consistent view on a coverage's tiles: either no new tiles or all new tiles will be available at once. The existing commit policy 'per tile' is still the default. This policy allows tiles to be visible immediately, at the cost of a potentially inconsistent view of the coverage.

    The commit policy is defined on ALfnTileStore.CommitPolicy. It can be set programmatically via the constructor of TLfnFileSystemTileStore, or it can be configured in the servlet descriptor via the optional parameter fusion.tilestore.commitPolicy in the deployment descriptor (web.xml).

    The commit policy 'per coverage' does not work well with the fusion engine's checkpointing mechanism. When the server uses this commit policy, it is recommended to disable saving of checkpoints on the fusion engine environment. This can be done by setting the checkpoint directory to null on the ALfnEngineEnvironment.

    Bug fixLuciadFusion

    LCD-2645
    Fixed some possible NullPointerExceptions in TLcdModelReferenceMetadata.

    Bug fixAdvanced GIS Engine

    LCD-1659
    Due to tolerance considerations TLcdEllipsoidalAdvancedBinaryTopology's topology check sometimes mistook touching shapes for overlapping shapes. This has been fixed.

    Bug fixAdvanced GIS Engine

    LMAP-4642
    TLcdEllipsoidUtil can now also compute contours of ILcdGeoBuffer instances that have as base shape an ILcdPolygon, ILcdComplexPolygon, and ILcdPoint.

    2012.0.09

    ImprovementLuciadFusion

    LCD-2610
    It is now possible to avoid loading the EPSG, AUTO and/or AUTO2 reference codes in the WMS capabilities by leaving out their configuration parameters in the web.xml file.

    ImprovementLuciadFusion

    LCD-2571
    TLcdDataTypeMapping now supports transformation of collection type SET to collection type LIST.

    ImprovementAviation Standards

    LCD-2604
    The Marker ARINC handler (TLcdARINCMarkerHandler) can now cope with records that do not specify the Marker type (although this is required by the specification). Instead of causing an error, the handler now uses TLcdMarkerType.UNKNOWN as value in this case.

    ImprovementAviation Standards

    LCD-2603
    The ILS ARINC handler (TLcdARINCLocalizerGlideSlopeHandler) can now cope with records that do not specify the ILS category type (although this is required by the specification). Instead of skipping the record, the handler now uses TLcdILSMLSCategoryType.UNKNOWN as value in this case.

    ImprovementAviation Standards

    LCD-2603, LCD-2604
    The type safe enumeration classes TLcdMarkerType and TLcdILSMLSCategoryType have both been extended with an UNKNOWN value, to represent respectively an unknown marker or ILS / MLS category.

    Bug fixLuciadFusion

    LF-341
    The putTile and deleteTile request handlers of the Fusion servlet no longer wait on the synchronization stage to reply on requests. This solves a performance regression issue in the fusion of data to a Fusion server via LTS, which was introduced in V2012.0.

    Bug fixLuciadFusion

    LCD-2742
    When adding a layer with selected objects to a view, the edit controller didn't pick up these selected objects as editing candidates.

    Bug fixLuciadFusion

    LCD-2624
    TLspEditController could get into an invalid state when using two paint representation, each having an editor, with one of both editors returning 0 edit handles.

    Bug fixLuciadFusion

    LCD-2613
    The TLspLayer did not always apply its filter correctly. More specifically a visible object was not removed from the view when it is no longer accepted by the filter due to a model change.

    Bug fixLuciadFusion

    LCD-2618
    The TLspTiledWMSProxyPainter did not properly clean up its resources when its layer is removed from the view.

    Bug fixLuciadFusion

    LCD-2578
    Labels painted using ALspSwingLabelStyler would sometimes disappear for a moment when using them for dynamic domain objects (e.g. moving tracks).

    Bug fixLuciadFusion

    LCD-2607
    Each TLfnFileSystemTileStore instance now maintains its own resources. This guarantees that there can no longer be any contamination of resources between Tile Store instances. Because each Tile Store instance is now more self-contained, an explicit close() method has been introduced on ALfnTileStore to allow explicit cleanup of resources. For backwards compatibility, it is not required to call close() on a Tile Store, in which case resources will be cleaned up by the garbage collector. It is however recommended to close Tile Store instances explicitly, because future implementations may do something useful such as closing a database connection.

    Bug fixLuciadFusion

    LCD-2608
    Fitting to a layer with TLspViewNavigationUtil now respects the filter set on the layer (if any).

    Bug fixLuciadFusion

    LCD-2606
    The ILcdGXYView implementations needlessly changed their autoUpdate property if the model was changed.

    Bug fixLuciadFusion

    Fixed a NullPointerException when using ILspInteractivePaintableLayer.query(), using a TLspPaintedObjectsQuery for TLspPaintRepresentation.LABEL.

    Bug fixLuciadFusion

    Fixed an IllegalArgumentException that could occur when model changes are fired and the object is being edited at the same time.

    Bug fixLuciadFusion

    LCD-2600
    When canceling an ongoing import, handler.imported() is no longer called.

    Bug fixLuciadFusion

    LCD-2599
    Import/export no longer gets stuck after canceling a previous import/export.

    Bug fixLuciadFusion

    LCD-2573
    TLsp3DPointListEditor.createPointHeightTranslationHandle() now only creates a handle when the view is a 3D view. This fixes the problem where the cursor is incorrect when editing a 3D pointlist in a 2D view.

    Bug fixLuciadFusion

    LCD-2574
    TLcdGXYLayer would clear the painted status of labels too often, causing problems with label selection.

    Bug fixLuciadFusion

    LCD-2555
    If decoding of a GeoTIFF model fails, for example because the reference cannot be decoded, the corresponding input stream is now closed properly.

    Bug fixLuciadFusion

    LCD-2560
    Fixed a possible StackOverflowError in TLcdDataObject.clone().

    Bug fixLuciadFusion

    Unit of measures are now encoded using their full UCUM URN notation, instead of the UCUM shorthand notation. This fixes an encoding problem for UCUM symbols which contain special characters.

    Bug fixLuciadFusion

    LCD-2556
    The mouse wheel zoom behavior could stop working if the view contains a TLcyLspGXYLayerAdapter with one or more selected shapes.

    Bug fixLuciadFusion

    LCD-2546
    TLcdGXYArcPainter#appendGeneralPath and TLcdGXYEllipsePainter#appendGeneralPath threw ClassCastExceptions.

    Bug fixLuciadFusion

    LCD-2528
    TLfnQuery.Builder.setResourceTypes now accepts null as argument, meaning 'all resource types'.

    Bug fixReal-time Engine

    LCD-2605
    TLcdSimulatorModelList: the begin- and end-date are now always in the proper order when the corresponding property change events are fired.

    Bug fixReal-time Engine

    LCD-2595
    TLcdSimulatorModelList: the old and new values of the property change events for the track models are now filled in.

    Bug fixReal-time Engine

    LCD-2594
    TLcdTimeFilteredSimulatorModel: property change events are now fired appropriately with the correct information.

    Bug fixAviation Standards

    LCD-2602
    The handling of ILS references in procedure records (if present) could cause a ClassCastException in TLcdARINCProcedureHandler.

    Bug fixAviation Standards

    The decoding of enroute communication records has been made more robust with respect to empty feature values. Additionally, the class javadoc of TLcdARINCEnrouteCommunicationHandler did not correctly mention the key features that are used to uniquely identify decoded objects.

    Bug fixDefense Standards

    LCD-2568
    The GeoSym resource files input streams were not closed after reading, this has been fixed now.

    Bug fixDefense Standards

    LCD-2567
    Input streams are now closed correctly when a corrupt VPF data file is being read.

    Bug fixDefense Symbology

    The Task Force echelon icon was not properly aligned with a Hostile affiliation icon.

    Bug fixInfrastructure Standards

    LCD-1528
    The DWG decoder now takes bulges into account for variable-width LWPOLYLINE elements.

    2012.0.08

    ImprovementLuciadFusion

    LCD-2529
    The cached painting performance has been improved for all painters.

    ImprovementAviation Standards

    LCD-2516
    The holding entry point for procedure trajectories is determined more accurately, to obtain a smooth connection between the previous leg and the holding.

    ImprovementAviation Standards

    The default AIXM rendering settings in TLcdAIXMDefaultLayerFactory / TLcdAIXMLayerConfiguration have been updated to a more useful initial configuration. In the past, black was mostly used as default color.

    Bug fixLuciadFusion

    LF-330
    A threading issue was fixed which affected the fusion of vector data such as VPF. The threading issue caused fusion to fail occasionally with "Shared asset missing".

    Bug fixLuciadFusion

    LCD-2536
    TLspLayer no longer fires a property change event on every model change. Users that are interested in model changes should add a listener to its model.

    Bug fixLuciadFusion

    LCD-2527
    Fixed issue with the equals method of TLspShapePainter.

    Bug fixLuciadFusion

    Fixed a possible ArrayIndexOutOfBoundsException in TLcdGXYPolylineLabelPainter.

    Bug fixLuciadFusion

    LCD-2523
    The LTS Tile Store implementations now also guarantees that the message digest has been filled in before calling ILfnGetTileHandler.found(). This facilitates implementations of LTS proxies and gateways.

    Bug fixLuciadFusion

    LCD-2501
    The default exception handler of the Earth painters and elevation provider now handles interrupted exceptions better.

    Bug fixLuciadFusion

    LCD-2513
    The TLcdHaloAlgorithm.CONVOLUTION algorithm did not work correctly for anti-aliased text.

    Bug fixLuciadFusion

    LCD-2506
    Fixed the decoding of complex content in SLD parameter values. It should now again be possible to mix ogc:PropertyName elements with plain text in an sld:CssParameter.

    Bug fixAviation Standards

    LCD-2531
    The TLcdARINCRunwayHandler has been made more robust with respect to incorrect runway direction bearing values; the handler now identifies and logs incorrect values, instead of failing with an exception.

    Bug fixAviation Standards

    LCD-2515
    The points of a calculated holding entry were not always added in the right order to the point list of a procedure trajectory. This did only impact the inspection of the procedure trajectory points through its ILcdPointList interface, not through its processProcedureGeometry method.

    Bug fixAviation Standards

    LCD-1660
    The decoding of runway endpoints has been improved to include the correct elevation in all cases. This may improve the geometry calculation of SID procedures that start with a CA leg in certain cases, as the length of such legs may now be shorter.

    Bug fixInfrastructure Standards

    LCD-2427
    The DGN level filters can now be retrieved through TLcdDGNModelDescriptor.getDGNLevelFilters(). They can be used as an ILcdFilter on model elements.

    Bug fixInfrastructure Standards

    LCD-2489
    TLcdDGNLevelSymbology now retrieving the line style name associated with a style through getStyleName(). TLcdDGNDisplayInfo.getStyle() now returns either a basic style (0-7), or a style ID.

    Bug fixInfrastructure Standards

    LCD-704
    The DGN elements are now painted according to the priority of the elements and levels.

    2012.0.07

    ImprovementLuciadFusion

    TLspScaleIndicator now has a setScaleAtCenterOfMap() property, analogous to that of TLcdGXYScaleIndicator, allowing the user to choose between the scale in the center of the view and the scale at the origin of the projection.

    ImprovementLuciadFusion

    LCD-1790
    Fixed height-line of 3D points,3D point-lists, extruded shapes, domes and spheres when positioned over the ocean.

    ImprovementLuciadFusion

    LCD-1851
    Added visual feedback for inserting points into a pointlist or a buffer.

    ImprovementLuciadFusion

    LCD-1779
    Made 3D bounds creation and extruded shape creation more consistent. 3D bounds creation now no longer has a final adjust height step.

    ImprovementLuciadFusion

    LCD-1805
    Adjusted sample code so that cursor is updated for editing when mouse wheel is used without the mouse moving.

    ImprovementLuciadFusion

    LCD-1773
    Object creation now displays the baseshape, draped on the ground while creating objects. (Only in a 3D view for 3D shapes)

    ImprovementLuciadFusion

    LCD-1844
    It is now possible to edit the min and max radius of an ILcd2DEditableArcband by dragging its inner and outer outline.

    ImprovementLuciadFusion

    TLcdGXYClippingPainterWrapper now provides extra API methods for retrieving the delegate painter and painter provider.

    ImprovementLuciadFusion

    LCD-2249, LCD-2250, LCD-2241
    Improved the cursors for several handles. Handles that modify the height of a handle now have a vertical cursor. Handles that modify the outline of an object now have a cursor with an improved direction.

    ImprovementLuciadFusion

    LCD-674
    Small performance improvement for TLcdSphereRhumblineUtil.intersectsGeodesicRhumbline and TLcdSphereRhumblineUtil.intersectionGeodesicRhumblineSFCT.

    ImprovementLuciadFusion

    XML Schema's are now cached more efficiently by the WFS client, improving overall performance.

    ImprovementLuciadFusion

    XML Schema's are now better cached. This improves the performance of processing XPaths.

    ImprovementLuciadFusion

    The WFS server no longer accesses the elements() method to generate its schema's, if a data model is available.

    ImprovementTerrain Analysis Engine

    LCD-1767, LCD-1833
    Made it easier make the LOS Coverage Input Shape 360 degrees after it was modified in arc angle size. This change only affects the LOS lightspeed sample.

    Bug fixLuciadFusion

    LCD-2503
    TLspGXYLayerAdapter now better takes into account the delegate layer's isEditableSupported and isLabelsEditableSupported methods.

    Bug fixLuciadFusion

    LCD-2501
    The tile sets in Tile Store models did not correctly handle interrupted exceptions. This could for example affect tasks that use thread interruption to implement cancellation.

    Bug fixLuciadFusion

    LCD-2482
    Data painted on the terrain does not disappear anymore in when zoomed in a lot with a 3D grid reference. The fading out is also less aggressive.

    Bug fixLuciadFusion

    LCD-2493, LCD-2286
    It wasn't possible to edit labels with multiple objects selected.

    Bug fixLuciadFusion

    LCD-2496
    Fixed a possible ClassCastException when using TLspLabelEditor, without the painter implementing ILspStampLocationLabelPainter. Now TLspLabelPainter.canEdit() returns false in that case.

    Bug fixLuciadFusion

    LCD-2495
    An issue in the Apache HttpClient library (HTTPCLIENT-1168) could potentially lead to authentication verification issues in a multithreaded environment. This has been fixed by adding the necessary synchronization.

    Bug fixLuciadFusion

    LCD-2495
    An issue in the Apache HttpClient library (HTTPCLIENT-1168) could potentially lead to authentication verification issues in a multithreaded environment. This has been fixed by adding the necessary synchronization.

    Bug fixLuciadFusion

    LCD-2492
    TLspEditController.getEditingCandidates always returned at most one editing candidate per object. Now it returns multiple editing candidates for the same object if it has multiple paint representations that can be edited. This is for example the case when the object and its label can be edited.

    Bug fixLuciadFusion

    LCD-1569
    TLcdGXYInteractiveLabelsController: Dragging an interactive label out of the view made it disappear.

    Bug fixLuciadFusion

    LCD-1533
    With TLcdGXYPolylineLabelPainter.isLabelOnPath() enabled, labels could be placed incorrectly on the polyline segment.

    Bug fixLuciadFusion

    LCD-1670
    TLcdRasterModelHeightProviderFactory did not support models that do not implement ILcd2DBoundsIndexedModel and have a different model reference than the reference in which the height is retrieved.

    Bug fixLuciadFusion

    LCD-2437
    Transformations between a topocentric and a geocentric reference were incorrect when the geocentric reference had a unit of measure value different from 1.0 (meters).

    Bug fixLuciadFusion

    LCD-2413
    When the TLcdWMSProxyGXYPainter applied reprojection of WMS layers, a rendering performance reduction could be caused in some cases due to excessive parsing of references listed in the server's capabilities. This performance reduction has been fixed now.

    Bug fixLuciadFusion

    LCD-2424
    The default labeling algorithm now chooses the largest subshape to determine a label location for closed shapes (for example polylines).

    Bug fixLuciadFusion

    LCD-2426
    Fixed a race condition in TLcdGXYLspAsynchronousPaintQueue that could trigger a NullPointerException.

    Bug fixLuciadFusion

    In rare cases, TLcdGXYCurvedPathLabelingAlgorithm could throw a NullPointerException.

    Bug fixLuciadFusion

    LCD-1786
    Fixed a numerical problem that would occur when visualizing TLcdXYCircularArcBy3Points with a bulge value close to 0.

    Bug fixLuciadFusion

    LCD-2425
    The default transparent map configuration applied by the WMS (TLcdWMSGXYViewFactory) could cause rendering issues when using transparent colors for vector features. The configuration has been updated to avoid these issues.

    Bug fixLuciadFusion

    LCD-1555
    In rare cases (polylines with one segment and one point exactly on the view border), TLcdGXYOnPathLabelingAlgorithm did not find a valid position for a label.

    Bug fixLuciadFusion

    LCD-203
    TLcdGXYPolyline(Stamp)LabelPainter sometimes could not place a label on one of the polyline segments.

    Bug fixLuciadFusion

    LCD-2423
    TLcdGXYPolyline(Stamp)LabelPainter.getPossibleLocationCount() returned a negative count for point lists with 0 points.

    Bug fixLuciadFusion

    LCD-1796
    Fixed point insertion and removal of points in polygons for high altitude exaggeration values in mountainous areas.

    Bug fixLuciadFusion

    LCD-2421
    Fixed minor glitch in arcband creation.

    Bug fixLuciadFusion

    LCD-1519
    TLcdPolarStereographic: inWorldBoundsOnSphere and world2DEditableBoundsOnSphereSFCT could produce slightly incorrect results for a true scale latitude different from 90 or -90 degrees. In addition, the equals method could return true for polar stereographic projections with different true scale latitudes.

    Bug fixLuciadFusion

    LCD-2416
    The boundaryLats method of TLcdGeneralPerspective, TLcdPerspectiveProjection and TLcdVerticalPerspective could generate NaN values.

    Bug fixLuciadFusion

    TLcdGXYClippingPainterWrapper now behaves correctly in case the delegate painter provider should return a null painter for a given object.

    Bug fixLuciadFusion

    LCD-729
    Fixed issue with cloning of some domain objects.

    Bug fixLuciadFusion

    LCD-2379, LCD-2383
    Possible Exceptions when resizing a 3D view, making it smaller than 0 pixels.

    Bug fixLuciadFusion

    LCD-2255, LCD-2381
    TLcdViewXYZWorldTransformation2D could produce NaN values when the width and height are 0. TLcdViewXYZWorldTransformation could return a negative scale for a negative height.

    Bug fixLuciadFusion

    The TLspViewXYZWorldTransformation3D.isAdjustDepthRange property wasn't always respected

    Bug fixLuciadFusion

    LCD-2238, LCD-2253
    TLcdRulerController: It wasn't possible to insert or remove points from a measurement when in cartesian mode.

    Bug fixLuciadFusion

    LCD-698
    TLcdLambertAzimuthalEqualArea could produce NaN values for points very close to the projection border.

    Bug fixLuciadFusion

    TLspViewXYZWorldTransformation2D/3D didn't re-evaluate their constraints when changing properties like the width and height. This could possibly break constraints that rely on these properties.

    Bug fixLuciadFusion

    LCD-2251
    Zooming using the navigation controls could cause the view to pan in 2D.

    Bug fixLuciadFusion

    LCD-129
    When passing a geocentric or topocentric reference to ALcdModelHeightProviderFactory, it returned an ILcdHeightProvider that returned incorrect height values in many cases.

    Bug fixLuciadFusion

    LCD-2228, LCD-2246
    When selecting multiple objects, the move cursor was still shown, even when no object could be edited.

    Bug fixLuciadFusion

    LCD-2244
    It was possible to interact with some editing handle through the globe.

    Bug fixLuciadFusion

    LCD-2231, LCD-2243, LCD-2229, LCD-2248
    Several fixes for interactive labels:
    • Interactive labels couldn't be moved on some location of the label.
    • The position of the interactive and regular label was inconsistent.
    • It was possible that 1 label was painted twice when enabling interactive labels.
    • The move cursors wasn't properly set when hovering over the interactive label.

    Bug fixLuciadFusion

    LCD-2236
    Discretization of shapes would sometimes fail for shapes on the equator, smaller than 2 degrees.

    Bug fixLuciadFusion

    LCD-2240
    TLspContinuousLabelingAlgorithm: labels wouldn't move back to their desired location after editing them.

    Bug fixLuciadFusion

    LCD-2230
    TLspRulerController: the fill of the equal distance circles would flip when they become too large.

    Bug fixLuciadFusion

    LCD-695, LMAP-5656
    Fixed TLcdSphereUtil intersection methods for small collinear line segments on the equator or on a meridians. In addition, the methods accepting doubles as input values returned incorrect results in some cases.

    Bug fixLuciadFusion

    LCD-211
    Views could temporarily return null when calling getGXYViewLabelPlacer, right after calling setGXYViewLabelPlacer.

    Bug fixLuciadFusion

    LCD-1654
    TLcdGXYAsynchronousLayerMonitor could trigger the unnecessary creation of asynchronous paint threads.

    Bug fixLuciadFusion

    LCD-1562
    The GML transformer will now correctly transform object that extend from ALcdPoint to features that have a point property, instead of creating features with bounding shapes and no geometry.

    Bug fixLuciadFusion

    The WCS server GetCoverage response could have some incorrect pixels when the request requires resampling of the raster data.

    Bug fixLuciadFusion

    LCD-1627
    Fixed an NullPointerException that could occur while painting a TLcdWCSProxy with elevation data.

    Bug fixLuciadFusion

    LCD-1624
    The WCS server sometimes returned raster data that is geographically shifted w.r.t. the original data.

    Bug fixLuciadFusion

    LCD-1590
    The WCS server did not expose which value indicates that the value of a pixel is unknown. For example a DTED raster can contain unknown values.

    Bug fixLuciadFusion

    LCD-1581
    The WCS server did not support elevation data with negative heights (e.g. a height below sea level).

    Bug fixLuciadFusion

    LCD-1576
    The WCS server did not always use the optimal level in an ILcdMultilevelRaster. It could use a more detailed level while a less detailed level already provided the same quality for a given request.

    Bug fixTerrain Analysis Engine

    LCD-1787
    Fixed the ripple pattern in the visualization of the LOS coverage using the TLspLOSCoveragePainter that would occur when simulating very large LOS coverages of several thousand kilometres in diameter.

    Bug fixDefense Standards

    LCD-1665
    The order of the shapes in a cross-tile feature in ELEMENT_PER_FEATURE mode could differ when decoded multiple types and retrieved with different applyOnInteract bounds. The implementation has been changed now to ensure a constant order for all shapes in a feature.

    Bug fixDefense Symbology

    LCD-1658
    The direction of the triangles on the outline of the Belt symbol (MIL-STD 2525b 2.X.3.1.1.1, APP-6A 2.X.2.2.1.1.1), the Zone symbol (MIL-STD 2525b 2.X.3.1.1.3, APP-6A 2.X.2.2.1.1.3), the Obstacle Free Area symbol (MIL-STD 2525b 2.X.3.1.1.4, APP-6A 2.X.2.2.1.9) and the Obstacle Restricted Area (MIL-STD 2525b 2.X.3.1.1.5, APP-6A 2.X.2.2.1.9.1) was dependent on the orientation of the shape and therefore not always correct.

    2012.0.06

    ImprovementLuciadFusion

    This release contains over 500 enhancements, performance improvements, and fixes mainly in the Lightspeed view package and subpackages. The main highlights are improved vector shape rendering performance, improved icon and line rendering quality, improved terrain draping quality, improved label deconfliction and painting quality, fully customizable shape editing functionality, a powerful new layer query API, and many more. Externally requested changes are logged as individual release notes, others have been left out to keep the release notes concise. It is recommended to upgrade existing projects to this LuciadLightspeed version before analyzing any issues encountered.

    ImprovementLuciadFusion

    TLspLineStyle now has an additional property isBlendOverlap that can be configured using the builder. It allows to adjust the behavior when painting multiple overlapping lines with the same style. When set to false, all pixels covered will receive the same color, even if this color is transparent and if multiple lines cover the same pixel. If set to true, overlapping (transparent) lines will be blended together resulting in a less transparent color at their crossings.

    ImprovementLuciadFusion

    LCD-1622
    The performance of asynchronous painting when working with many layers has been improved.

    ImprovementLuciadFusion

    New API has been introduced to allow more customization of the editing functionality in Lightspeed views. Please refer to the chapter "Creating and editing domain objects in a Lightspeed view" in the developer's guide for an overview of this new API. All API can be found in the package com.luciad.view.lightspeed.editor and its subpackages. The principal classes and interfaces are:
    • ILspEditor creates editing handles for a given domain object and applies editing operations to this object. Implementations of ILspEditor exist for each type of ILcdShape that can be edited.
    • ALspEditHandle is a small GUI widget which represents some modifiable part of a domain object (e.g. a vertex of a polyline) and which translates user input (e.g. mouse drags) into editing operations that can be applied to the underlying object.
    • TLspEditOperation describes such an operation and is passed from the handle back to the editor, where it is applied to the edited object.
    • ILspSnapper defines a mechanism for snapping objects to one another while they are being edited.
    • ALspMultiObjectHandle is a variant of ALspEditHandle which is used by TLspEditController to capture editing operations that apply to a group of edited objects instead of a single object.

    ImprovementLuciadFusion

    TLcdGXYScaleIndicator can now also show a global, pan-independent scale.

    ImprovementLuciadFusion

    TLspDensityLayerBuilder has been added to facilitate creating layers with density plots of vector data.

    ImprovementLuciadFusion

    A new elevation mode is available for TLspIconStyle: ABOVE_TERRAIN. It means that the icons are placed above the terrain. The elevation of the object is determined by adding the object's elevation to the terrain's elevation. Since icons are normally centered around this elevated point, it can be partially obscured by the terrain, depending on the view angle. To avoid this, you can either set a fixed offset on the TLspIconStyle, or add a TLspViewDisplacementStyle to allow the icon to be moved above the terrain dynamically depending on the view angle.

    ImprovementLuciadFusion

    A new icon implementation TLcdCGMIcon has been added to the com.luciad.format.cgm package. This class supports the decoding of an icon that originates from a CGM file.

    ImprovementLuciadFusion

    LCD-1474
    An attempt to decode a non-existent file using TLcdETOPOModelDecoder will now throw an appropriate IOException rather than return an invalid model.

    ImprovementLuciadFusion

    LCD-179
    TLcdColorMapCustomizer: the behavior of adding a level has been simplified to be more predictable. The new level is now always added between the selected and the next level.

    ImprovementLuciadFusion

    TLcdObliqueMercator: transforming from world to lon lat and from lon lat to world has become more consistent. Points that can be transformed in one direction can now always be transformed back.

    ImprovementLuciadFusion

    It is now possible to import an entire coverage from any Tile Store to any other Tile Store. The previously existing restriction that the source coverage had to be on a local Tile Store is hereby lifted. A new utility class TLfnTileStoreUtil provides additional convenience methods to copy coverages between Tile Stores.

    It is now possible to check the integrity of a local coverage. Each tile can have an optional checksum, according to the message digest algorithm specified on the coverage metadata.

    • TLfnDigestTileStore is a decorator which verifies tile checksums upon access. It defines a handler to receive notifications of corrupt tiles.
    • ALfnCoverage.getTileCoordinates provides iteration over all tiles in a coverage. It only works for local coverages retrieved through a TLfnFileSystemTileStore, not for remote ones retrieved through a TLfnLTSClient.

    ImprovementReal-time Engine

    LCD-1653
    ALcdTimeIndexedSimulatorModel no longer fires change events for empty models.

    ImprovementTerrain Analysis Engine

    The LOS sample now uses arc bands instead of circles as the input shape. This allows you to visually edit the range of the LOS calculation.

    ImprovementDefense Standards

    GeoSym definitions can now be reloaded programmatically. A reload can be triggered by reconfiguring the GeoSym definition paths on TLcdVPFGeoSymProvider.

    ImprovementDefense Standards

    TLcdVPFGeoSymProvider now provides methods for retrieving symbol ids for a given FACC feature, next to the existing methods for retrieving icons for a feature. The new methods allow to use the GeoSym rules with custom styles, independent of the provided built-in styles.

    ImprovementRadar Connectors

    LCD-61, LMAP-2794
    The conversion from relative time to absolute time is now more robust.

    ImprovementRadar Connectors

    Sample class TrackSimulatorModel now also interpolates the track altitudes, not only the 3D location.

    ImprovementRadar Connectors

    The ASTERIX decoders can now filter on the record level, which allows to filter individual tracks while decoding. One could for example filter out tracks based on their SAC/SIC code (radar system), or ignore all coasted tracks. See also ILcdASTERIXRecordFilter, TLcdASTERIXSacSicRecordFilter and ALcdASTERIXDecoder.setRecordFilter.

    ImprovementRadar Connectors

    The ASTERIX decoders now support reading a subset of network capture files (PCAP files). It supports captures of raw Ethernet packages (LLC, IEEE 802.3), where no additional network protocols like IP or UDP are used. Replaying PCAP files is supported as well, please refer to TLcdASTERIXFinalReplayInputStream for more details.

    ImprovementRadar Connectors

    Support for version 2.5 ter of ASTERIX category 30 has been added. This is a draft version of the specification, released in 1997. It is binary incompatible with the final release of category 30 (v6.1 in 2000). It is therefore disabled by default. It can be enabled by setting TLcdASTERIXCategory30Version2Dot5Ter on the ALcdASTERIXDecoder.

    Bug fixLuciadFusion

    TLcdGXYAsynchronousPaintQueue now respects the auto-update property of the view.

    Bug fixLuciadFusion

    LCD-1473
    Resolved an issue that the labels of buffer, band or polygon objects stayed in place when moving the objects.

    Bug fixReal-time Engine

    LCD-58, LMAP-5777
    ALcdTimeIndexedSimulatorModel: the selection of a layer is no longer cleared when making large time jumps.

    Bug fixTerrain Analysis Engine

    LCD-1623
    Fixed an inconsistency between the hardware accelerated and non-hardware accelerated LOS calculations, where (for some conditions) the hardware accelerator would calculate one less column in the resulting coverage matrix.

    Bug fixDefense Standards

    Changes to values in TLcdGeoSymDefaults are now correctly taken into account (some values were only read once during initialization of the GeoSym provider and not updated afterwards).

    Bug fixDefense Symbology

    LCD-1658
    The direction of the triangles on the outline of the Encirclement symbol (MIL-STD 2525b 2.X.2.6.2.3, APP-6A 2.X.2.1.6.1.1.1) should always point outwards, regardless of the orientation of the shape.

    Upgrade considerationLuciadFusion

    The API of all asynchronous methods on ALfnCoverage and ALfnTileStore has been made consistent. The changes:
    • All asynchronous methods return a Future which can be used to block for the result or to cancel the operation
    • All asynchronous methods require an extension of ILfnFailureHandler defining the throwables which may happen during asynchronous operation. This is the equivalent of a 'throws' clause of a synchronous method.
    • Exceptions are propagated via the asynchronous handler, or via an ExecutionException thrown when blocking for the result using Future.get(). In case of multiple exceptions, it is the first one which is propagated. Either one of these mechanisms can be used, they are equivalent.
    • ILfnFailureHandler has an addition callback method cancelled(CancellationException) next to interrupted(InterruptedException). The former happens when a Future is cancelled, while the latter happens when a thread was unexpectedly interrupted.

    Beware that, even though methods have an asynchronous signature, they may do some of their work synchronously. Even in this case, throwables which are thrown synchronously (most notably RuntimeExceptions and Errors) are still propagated via the Future and asynchronous handler. The idea is that this is an implementation detail which is transparent to the application.

    Upgrade considerationLuciadFusion

    New API has been introduced to allow more customization of the editing functionality in Lightspeed views. In the context of this, the ILspEditor interface has changed considerably. If you have implemented this interface and would like assistance to upgrade to a newer version of LuciadLightspeed, please contact Luciad support.

    Upgrade considerationLuciadFusion

    TLspSelectController's default key to enable multi-object selection has been changed to shift instead of ctrl. The default behavior can be modified by overriding TLspSelectController#selectWhat.

    Upgrade considerationLuciadFusion

    The domain objects in the ruler controller model have changed. They are now ALspRulerMeasurement instead of ILspRulerPolyline. The controller now also allows to override distance and azimuth calculation.

    Upgrade considerationLuciadFusion

    ILspShapeDiscretizer's canDiscretize method has been deprecated. Instead discretizeSFCT should throw a TLspDiscretizationException if it is not capable to discretize the provided shape.

    Upgrade considerationLuciadFusion

    ILspTerrainSupport: all terrain query methods now have an additional TLspContext argument. This is necessary to allow the methods to be called from a separate thread. The context in that case would be a snapshot of the view's state which is used for the terrain query, while the view's actual state might be changed by the main thread.

    The impact of this change should be minimal, since the methods in question are primarily used internally by painters.

    Upgrade considerationLuciadFusion

    Camera constraints: replaced ALspCameraConstraint2D and ALspCameraConstraint3D by a generic ALspCameraConstraint class. Also the constrainXxxParameters method was replaced by a more general constrain method. Also removed ConstraintChangeListener interfaces and replaced them with ILcdChangeListener.

    Upgrade considerationLuciadFusion

    In TLspLookAtTrackingCameraConstraint2D the setMaxScale(double) method was removed. This functionality can be replaced using a separate constraint. For an example of how to do this, see the limitnavigation sample.

    Upgrade considerationLuciadFusion

    ALspTrackingPointProvider now doesn't pass around an ILspView in most of its methods. A view can be retrieved using ALspTrackingPointProvider.getView(). Also TrackingPointChangeListener was removed, and replaced by ILcdChangeListener.

    Upgrade considerationLuciadFusion

    ALspViewXYZWorldTransformations are now constructed for a specific view. As a consequence, the registerView(ILspView) and unregisterView(ILspView) methods were removed. TLspViewXYZWorldTransformation2D and TLspViewXYZWorldTransformation3D constructors now have an ILspView as argument.

    Upgrade considerationLuciadFusion

    The various calls to retrieve bounds and touch information from a layer or painter about objects on the screen has changed. They have been replaced by a single ILspInteractivePaintableLayer.query() method that accepts various query objects and returns the relevant information.

    In particular, the following calls have been removed:

    1. ILspInteractivePaintableLayer.queryOnViewBounds
    2. ILspInteractivePaintableLayer.queryTouched
    3. ILspInteractivePaintableLayer.isTouched
    4. TLspLayer.applyOnInteract
    5. ILspPainter.queryOnViewBounds
    6. ILspPainter.queryTouched
    7. ILspPainter.isTouched
    8. ILspPainter.boundsSFCT
    9. ILspLabelPainter.isLabelTouched
    10. ILspLabelPainter.labelBoundsSFCT

    Although you can still query painters directly, it is advised to query the layer instead. You can replace the removed calls above with these query() calls on ILspInteractivePaintableLayer:

    1. query(new TLspPaintedObjectsBoundsQuery(REGULAR_BODY, viewBounds, 10))
    2. query(new TLspPaintedObjectsTouchQuery(REGULAR_BODY, viewPoint, 10))
    3. query(new TLspIsTouchedQuery(object, REGULAR_BODY, viewPoint, 10))
    4. query(new TLspPaintedObjectsQuery(REGULAR_BODY, viewBounds))
    5. query(new TLspPaintedObjectsBoundsQuery(REGULAR_BODY, viewBounds, 10)) (same as #1)
    6. query(new TLspPaintedObjectsTouchQuery(REGULAR_BODY, viewPoint, 10)) (same as #2)
    7. query(new TLspIsTouchedQuery(object, REGULAR_BODY, viewPoint, 10)) (same as #3)
    8. query(new TLspBoundsQuery(object, REGULAR_BODY))
    9. query(new TLspIsTouchedQuery(label, viewPoint, 10)) (similar to #3)
    10. query(new TLspBoundsQuery(label)) (similar to #8)

    The new query method also uses the ALspBoundsInfo and ALspTouchInfo classes as possible return types, with some minor modifications:

    1. ALspWorldBoundsInfo#isGeometryDraped has been removed as there was no clear use case.
    2. ALspWorldTouchInfo#isGeometryDraped has been replaced with getElevationMode. This allows us to return more information about the position of the touched geometry.

    Upgrade considerationLuciadFusion

    ALspActionController, TLspClickActionController and TLspKeyActionController constructors don't accept an ILcdFilter for AWT events anymore. Instead, use the setAWTFilter method of ALspController.

    Upgrade considerationLuciadFusion

    The label location hierarchy was simplified and made more flexible. This has an impact on the location classes and label painter hierarchy.

    TLspFreeLabelLocation was removed, use TLspStampLabelLocation as a replacement, which is more powerful.

    ILspFreeLocationLabelPainter interface was removed. The API of ILspStampLocationLabelPainter was changed to aid algorithms.

    Upgrade considerationLuciadFusion

    ILspLabelPlacer is now tied specifically to one view. This means that its placeLabels() method does not accept a view anymore, and that it only contains label locations for objects in one view.

    Upgrade considerationLuciadFusion

    The API of ALspLabelLocations was simplified. Instead of the various applyOn() methods there is one getLabelLocations() and one getLabelLocation() method.

    Related, TLspLabelLocationVisibilityChangedEvent was merged into TLspLabelLocationChangedEvent. Instead of the processChangedLocations() and isLabelLocationChanged() methods, there now is only a simple getChanges() method.

    Upgrade considerationLuciadFusion

    The ILspPaintGroupsChangeListener interface has been changed to support better control over the event processing. This allows for example to make sure that updates to the body and label of objects are visible at the same time. All ILspPainter's must now also implement this interface.

    To convert an implementation of the old interface you can perform all work previously done in the paintGroupsChanged method in the prepareChanges method and invoke the changesReady method on the callback immediately if it is not null.

    To convert a painter that previously did not implement ILspPaintGroupsChangeListener you should at least invoke the changesReady method on the callback argument passed in the prepareChanges method if it is not null.

    Upgrade considerationLuciadFusion

    The method ILcdOGCFilterEvaluator#buildFilter, used to create a filter evaluator for a given OGC Filter, now returns an ILcdDynamicFilter instead of an ILcdFilter. This has been done for optimal interoperability when using these filter evaluators on GXY, GL and LSP layers.

    Applications that use this method will not be affected, since ILcdDynamicFilter is an extension of ILcdFilter. The change only affects applications that define a custom implementation of ILcdOGCFilterEvaluator or an extension of its default implementation TLcdOGCFilterEvaluator. If this is the case, the new methods introduced by ILcdDynamicFilter, i.e. addChangeListener and addChangeListener), can be given an empty implementation, since dynamic changes to the filter are not supported.

    Upgrade considerationLuciadFusion

    TLspGXYLayerAdapter no longer allows to set an ILcdFilter on the inner GXY layer. Only ILcdDynamicFilter instances are allowed. Exceptions will be thrown at runtime when an incorrect filter is set on the inner layer.

    To convert an ILcdFilter to an ILcdDynamicFilter you can make use of the TLcdChangeSupport class. This class makes it easy to implement ILcdChangeSource.

    Upgrade considerationLuciadFusion

    The signature of the methods getTile, putTile and deleteTile on ALfnCoverage has changed:
    • getTile and putTile now take an additional ByteBuffer parameter which can be used to retrieve/provide a signature for the tile. Existing applications or applications which are not interested in the signature may provide a null argument.
    • the level, row and column parameters have been replaced by a single TLfnTileCoordinates parameter. A TLfnTileCoordinates instance can easily be created via its getInstance() factory method, given the level, row and column arguments.

    Upgrade considerationLuciadFusion

    The Fusion protocol now also supports text geometry. Objects with ILcdText geometry can now be fused to vector coverages, and displayed accordingly in Fusion clients. The vector tile data format used by the Fusion protocol has been updated to allow modelling of text geometry; old clients will no longer be able to read data which has been fused with a new Fusion engine supporting text geometry. New Fusion engines can still fuse to the old tile data format, by setting the appropriate codec version number on the coverage metadata.

    Upgrade considerationDefense Symbology

    The interfaces ILcdMS2525bCoded and ILcdAPP6ACoded are each extended with a method to retrieve the symbology standard in use:
    • ILcdMS2525bCoded#getMS2525Standard(): returns an ELcdMS2525Standard instance, representing either MIL-STD 2525b or MIL-STD 2525c,
    • ILcdAPP6ACoded#getAPP6AStandard(): returns an ELcdAPP6Standard instance, representing either APP-6A or APP-6B.

    The capability to choose the symbology standard per object was already supported in the domain object implementations TLcdEditableMS2525bObject and TLcdEditableAPP6AObject (see LCD-449); as of now, this capability is thus also integrated in the core object interfaces ILcdMS2525bCoded and ILcdAPP6ACoded.

    This change only affects applications that define a custom implementation of ILcdMS2525bCoded or ILcdAPP6ACoded. In the most likely use case where this custom implementation is a wrapper around the domain objects TLcdEditableMS2525bObject or TLcdEditableAPP6AObject, the new methods can just be delegated to these objects. If a custom implementation is written separate from TLcdEditableMS2525bObject or TLcdEditableAPP6AObject, the implementation needs to implement these new methods by returning the symbology standard that is meant to be used: ELcdAPP6Standard#APP_6A or ELcdAPP6Standard#APP_6B for respectively APP-6A or APP-6B, and ELcdMS2525Standard#MIL_STD_2525b or ELcdMS2525Standard#MIL_STD_2525c for respectively MIL-STD 2525b or MIL-STD 2525c.

    2012.0.05

    ImprovementLuciadFusion

    LCD-1580
    TLcdGXYNewController2 can now also perform edit and commit operations when users drag the mouse, if the controller is configured to do so.

    ImprovementLuciadFusion

    LCD-1582
    Changed behavior of the DataModelTreeModel class found in the sample code. If you configure it to only display model elements found in the model descriptor, it will also include all dependent data models in the search. For each dependent data model, it will also display any of the model elements in the tree. This makes the DataModelTreeModel better-suited for complex data models, such as AIXM.

    ImprovementLuciadFusion

    LCD-1538
    TLcdWFSGetFeatureRequest now has an additional setOGCFilters(TLcdOGCFilter[]) method to support the configuration of multiple OGC Filters.

    Bug fixLuciadFusion

    LCD-700
    The implementation of the Google reference system (EPSG codes 900913, 3785, 3857) was incorrect, possibly causing a shift.

    Bug fixLuciadFusion

    LCD-1556
    TLcdSHPModelDecoder did not correctly load the .DBF file associated with a compressed SHP file (.SHP.GZ). This has now been fixed.

    Bug fixLuciadFusion

    LCD-1549
    TLcdWMSClient could not cohpe with WMS 1.1.1 capabilities containing links to DTDs that could not be resolved. Because these DTDs are not used, the resolution of DTD links has now been disabled.

    Bug fixLuciadFusion

    LCD-1549
    DTD resolving has been disabled on the XML decoders (only XML Schema is used by the decoders to interpret data).

    Bug fixLuciadFusion

    LCD-1525
    The bounds of very large TLcdLonLatRhumbPolygons were computed erroneously. This has been fixed.

    Bug fixLuciadFusion

    LCD-1512
    TLcdGXYEllipsePainter could produce painting artifacts for ellipses with an axis length of zero.

    Bug fixDefense Symbology

    LCD-1593
    The icons for the symbols Earthwork / Small Trench / Fortification (APP-6A 2.X.2.2.3.1, MIL-STD 2525b 2.X.3.3.1), Surface Shelter (APP-6A 2.X.2.2.3.6, MIL-STD 2525b 2.X.3.3.6) and Underground Shelter (APP-6A 2.X.2.2.3.7, MIL-STD 2525b 2.X.3.3.7) incorrectly included an offset position indicator.

    Bug fixDefense Symbology

    The Unique Designation label for the tactical graphics symbols Follow And Assume (APP-6A 2.X.1.1.12, MIL-STD 2525b/c 2.X.1.12) and Follow And Support (APP-6A 2.X.1.1.12.1, MIL-STD 2525b/c 2.X.1.12.1) was not correctly positioned anymore since the symbol rendering update introduced by LMAP-4091.

    Bug fixInfrastructure Standards

    LCD-1561
    The DGN decoder now ignores the view attributes related to sheet models.

    Bug fixRadar Connectors

    LCD-1560
    The data models for the various categories no longer confuse the types for properties with the same display name.

    Bug fixRadar Connectors

    LCD-1559
    Following termination messages are now properly interpreted:
    • Category 1, Track UAP: Data Item I001/170 (Track status), field TRE (Last report for track)
    • Category 48: Data Item I048/170 (Track status), field TRE (Signal for End_of_Track)
    • Category 62: Data Item I062/080 (Track status), field TSE (Last message transmitted)
    For category 30, Data Item I030/080 (ARTAS Track status), field TRM (Terminated) was already properly processed.

    2012.0.04

    ImprovementLuciadFusion

    TLcdTransformer now provides an additional transformTo() method with both source and target type parameters.

    ImprovementLuciadFusion

    LCD-1483
    It is now possible to disable the painting of fill or outline of a fused vector feature by returning a null style.

    ImprovementLuciadFusion

    LCD-1526
    TLcdMapGeorefGridLayer now allows configuring the color of the corner labels.

    ImprovementLuciadFusion

    LCD-1496
    ServiceException now shows response code and reason in message.

    ImprovementLuciadFusion

    LCD-1466
    TLcdISO19103Measure now implements Comparable, so that measurements can easily be sorted.

    ImprovementLuciadFusion

    LCD-1465
    TLcdEarthHeightProviderFactory: added support for creating height providers that do not interpolate the height values. You can disable interpolation of height values by using the TLcdRasterModelHeightProviderFactory.KEY_INTERPOLATE_DATA key.

    ImprovementLuciadFusion

    LCD-1295
    TLcdEPSGReferenceParser now supports parsing EPSG references with an OGC prefix ("urn:ogc:def:crs:EPSG:"). TLcdEPSGReferenceFormatter can format these parsed references back to the original code.

    ImprovementLuciadFusion

    LMAP-5289, LCD-201
    The up arrow of the TLcdGXYCompassNavigationControl did not always point north in certain projections. This has been fixed.

    ImprovementAviation Standards

    LMAP-6096
    TLcdAIXM51ValDistanceVertical now supports using TLcdAltitudeUnit to specify the uom. TLcdAltitudeUnit is commonly used by other AIS formats to specify unit of measures for vertical distances.

    ImprovementAviation Standards

    LMAP-6098
    TLcdAIXM51ValDistanceVertical now properly formats values that are set using the 'setValue(double)' method, to be compliant with the AIXM 5.1 schema. This does not affect the formatting if the value is decoded from file, or set using another method.

    ImprovementAviation Standards

    The TLcdAirspaceActivityType type safe enumeration class now has a new methods: 'getCode()'. This method allow working with the acronyms or codes that are in general use by the aviation community, and simplify encoding/decoding of files using these codes.

    ImprovementAviation Standards

    The TLcdAirspaceType type safe enumeration class now has two new methods: 'getCode()' and a static 'valueOf( String aCode )'. These methods allow working with the acronyms or codes that are in general use by the aviation community, and simplify encoding/decoding of files using these codes.

    ImprovementAviation Standards

    LMAP-6088
    A transformation sample from AIXM 3.3/4.5 to 5.1 has been added to the samples. It supports transforming both airspaces and aerodromes, but should be sufficiently extensible so you can add your own transformations.

    ImprovementDefense Standards

    LCD-1437
    VPF area features now implement the ILcdSurface interface, providing direct access to the outer and inner rings of the area.

    ImprovementDefense Symbology

    LMAP-6030, LCD-449
    It is now possible to use the APP-6A, APP-6B, MIL-STD 2525b and MIL-STD 2525c symbology standards together at runtime. For this purpose, the enumeration classes ELcdAPP6Standard and ELcdMS2525Standard have been introduced to represent the supported symbology standards, and the domain objects TLcdEditableAPP6AObject and TLcdEditableMS2525bObject have been extended with new constructors that accept an instance of these new symbology standard classes.

    In the past, the symbology standard had to be chosen upfront by means of a System property. This approach still works and is used when no explicit symbology standard is given upon construction of a TLcdEditableAPP6AObject or TLcdEditableMS2525bObject instance.

    ImprovementMaritime Standards

    LCD-1461
    TLcdS52GXYPainterProvider now has a flag useNationalLanguage to configure whether to use the national (NOBJNM) or international (OBJNAM) object name for visualizing text labels.

    ImprovementMaritime Standards

    LCD-1460
    The S-57 model decoder now supports lexical level 2 (UCS-2).

    Bug fixLuciadFusion

    LCD-1531
    TLcdEarthGLTerrainPainter: the painter could update its tiles too much. This could for example occur when changing the altitude exaggeration factor.

    Bug fixLuciadFusion

    LCD-696
    TLcdLambert1972BelgiumGridReference used inverted rotation parameters for its datum transformation. This could shift the data when transforming to a reference with a different datum.

    Bug fixLuciadFusion

    Depending on the SAX parser being used, some input streams for XML schema's might not be closed. This has been fixed: all input streams opened for XML Schema parsing are now always closed after use.

    Bug fixLuciadFusion

    LCD-1462
    Input streams created by TLcdGeoTIFFModelDecoder and others are now properly closed. This solves issues with "too many open files" when working with a lot of different models.

    Bug fixLuciadFusion

    LCD-1455
    ParseException in TLcdWKTReferenceParser when trying to decode a model reference with name "RGF-93".

    Bug fixLuciadFusion

    LCD-1451
    TLcdEllipsoid.initializeA1OverF() and TLcdEllipsoid.initializeAB() would overwrite the name of the ellipsoid if it was first set with TLcdEllipsoid.setName().

    Bug fixLuciadFusion

    TLcdMIFModelDecoder now supports the "Regional Mercator" projection for files where the standard parallel property is set to zero.

    Bug fixLuciadFusion

    LMAP-6097, LCD-590
    Unit of measures are now correctly encoded using the UCUM code convention, instead of using the LuciadMap built-in symbols (which are not always UCUM-compliant).

    Bug fixTerrain Analysis Engine

    LCD-1532
    Fixed a potential NullPointerException in TLcdHeightProviderAdapter.

    Bug fixAviation Standards

    TLcdAISDataTypes did not include TLcdNavaidType#ILS_DME as possible value for the navaid type data property, which prevented its use as data property value in practice.

    Bug fixDefense Symbology

    LCD-626, LMAP-3595
    An IllegalArgumentException was thrown by the MIL-STD 2525b/c customizer when a weather symbol selection was changed into an installation symbol.

    Bug fixDefense Symbology

    LCD-1452
    The old resources used by the deprecated MIL-STD 2525b API (i.e., ALcdMS2525bIconProvider and implementations) could not be found due to a regression.

    Upgrade considerationLuciadFusion

    LCD-1475
    The TLcdMagneticNorthGXYLabelPainter used to extend TLcdGXYDataObjectPolylineLabelPainter. This is no longer the case.

    2012.0.03

    ImprovementLuciadFusion

    LCD-1449
    TLcdEarthAsynchronousTileSet: the tile set can now enforce that tile operations occur only on its own threads. The default behavior has not changed, you must call the setDelegateTileOperationMode method to change it.

    ImprovementTerrain Analysis Engine

    LCD-1443
    Improved TLspLOSCalculator class documentation.

    Bug fixLuciadFusion

    LF-247
    Fusion of VPF has been fixed so that "Edge already in line geometry" failures no longer happen.

    Bug fixLuciadFusion

    LF-322
    Exceptions logged on the console during servlet initialization now also contain the cause. This makes the message more clear.

    Bug fixLuciadFusion

    Fixed a problem where updating labels of dynamic models could be delayed.

    Bug fixLuciadFusion

    Fixed a possible deadlock during editing or when using a dynamic model.

    Bug fixLuciadFusion

    LCD-346
    The GXY layer performance monitoring did not monitor the time spent for the rendering of labels placed by an ILcdGXYViewLabelPlacer (i.e. the ILcdGXYEditableLabelsLayer.PLACED_LABELS layer paint mode).

    Bug fixLuciadFusion

    LCD-1442
    Touch and hold editing (inserting and deleting points in pointlists using touch input) didn't always work as expected. This has been fixed.

    Bug fixLuciadFusion

    LCD-1441
    Some GeoTiff files could not be rectified properly. This has been fixed.

    Bug fixLuciadFusion

    LF-191
    VPF data containing multiple geometries per feature (since VMAP2i) can now also be fused.

    Bug fixData Connectivity Manager

    LF-5
    When an attempt is made to add a clipping shape with a grid reference to an asset with a geodetic reference, an error dialog is shown. It no longer causes a ClassCastException.

    Bug fixTerrain Analysis Engine

    LCD-1439
    Fixed issue with the hardware accelerated TLspLOSCalculator that would miscalculate the center of the LOS coverage in the case when the minimum vertical angle was set to 0.

    Bug fixDefense Standards

    LMAP-6076, LCD-1410
    A more appropriate default value has been chosen for the maximum residual tie point error. This will ensure that the bounds of a raster are more accurately decoded during the decoding process.

    Bug fixDefense Standards

    LMAP-6084, LCD-1413
    TLcdNITFModelDecoder now also has limited support for symbol elements in the case of NITF 2.0 files. Note that only the CGM format is supported for the symbol elements, so bitmap- and object symbols are ignored.

    2012.0.02

    ImprovementLuciadFusion

    LF-250
    Fusion of VPF data containing lots of complex polygons has been made more efficient.

    ImprovementLuciadFusion

    LF-111
    It is now possible to skip corrupt input files by setting a custom ILfnRasterSessionHandler on the TLfnEngineFactory.

    ImprovementLuciadFusion

    LF-321
    The library dependency on the formats Geospatial PDF and AIXM has been made optional: the Fusion Engine can now work without these libraries.

    ImprovementLuciadFusion

    LCD-414
    TLcdGXYLabelPlacer now throws a more meaningful exception if no labeling algorithm has been set.

    Bug fixLuciadFusion

    LCD-1440
    During creation or editing of a measurement using the ruler controller, label position were unstable in some cases.

    Bug fixLuciadFusion

    LCD-1438
    Fixed a possible issue with model locking while painting shapes that could result in an IllegalMonitorStateException.

    Bug fixLuciadFusion

    LMAP-4858, LCD-1431
    The Lightspeed raster layers did not support ILcdEarthTileSet's elements with an odd number of rows or columns at level 0. This could for example happen when visualizing data from a WMS server in a Lightspeed view.

    Bug fixLuciadFusion

    LMAP-6109, LCD-445
    TLcdEarthGLTerrainPainter: the painter did not support draping on top of another terrain.

    Bug fixLuciadFusion

    LCD-3
    Fixed a repaint problem with TLspGXYLayerAdapter instances that were initially invisible and then made visible.

    Bug fixLuciadFusion

    LMAP-6105, LCD-460
    TLcdEarthGLTerrainPainter: the painter did not always update all its tiles when needed. This could for example occur when changing the altitude exaggeration factor.

    Bug fixLuciadFusion

    LMAP-4676, LCD-455
    TLcdEarthTileRepositoryPreprocessor: the preprocessor sometimes did not process tiles at the edge of an asset.

    Bug fixLuciadFusion

    LMAP-6002, LCD-458
    TLcdEarthTileRepositoryPreprocessor: the preprocessor did not support assets whose bounds crosses the 180 degree meridian.

    Bug fixLuciadFusion

    TLcdEarthGLTerrainPainter now works correctly in stereoscopic 3D views.

    Bug fixLuciadFusion

    LMAP-5977, LCD-456
    TLcdEarthGLShapeTileSet: the tile set did not support models with a non-geodetic reference for its fill and outline coverages.

    2012.0.01

    ImprovementLuciadFusion

    LF-269
    The Fusion server now support custom exception handling. A custom exception handler can be plugged in by overriding TLfnLTSRequestDispatcherFactory.createExceptionHandler.

    ImprovementLuciadFusion

    TLcdMagneticNorthGXYLabelPainter now allows configuring a format for the declination value.

    ImprovementLuciadFusion

    LMAP-6063, LCD-702
    TLcdWKTReferenceFormatter and TLcdWKTReference parser now support formatting and parsing references with a EGM96 geoid geodetic datum in particular cases.

    ImprovementLuciadFusion

    The class TLcdGXYClippingPainterWrapper now has an extra constructor that accepts an ILcdGXYPainterProvider instead of an ILcdGXYPainter, to increase its usability.

    Bug fixLuciadFusion

    LF-309
    Improved handling of invalid models in ALfnFormat implementation for GRIB files.

    Bug fixLuciadFusion

    LF-241
    LuciadFusion now supports clipping shapes for the ECDIS format.

    Bug fixLuciadFusion

    LF-307
    The engine did not always use the ideal level in multi-leveled elevation assets. This could occur when either the minimum or maximum scale denominator is set or when the pixel density of an asset part did not match the actual pixel density of the data.

    Bug fixLuciadFusion

    LF-301
    NITF data containing vector data can now be fused without failure. As a limitation, only raster data is fused, while vector data is ignored.

    Bug fixLuciadFusion

    LF-317
    Data in geodetic grid references (a TLcdGridReference with TLcdGeodeticDatum and TLcdGeodetic projection) can now be fused correctly without failure.

    Bug fixLuciadFusion

    LCD-1
    The TLspLayer did not apply the filter correctly when its model changes. As a result objects that are not accepted by the filter could still appear in the view.

    Bug fixLuciadFusion

    LMAP-5698, LCD-128
    Painting polygons or polylines with a very large line width using TLcdGXYPointListPainter could sometimes cause visual artifacts along the border of the view.

    Bug fixLuciadFusion

    LMAP-5826, LCD-208
    TLcdJULSimpleFormatter did not format the parameter objects into its messages.

    Bug fixLuciadFusion

    LMAP-5675, LCD-154
    TLcdGXYNewController did not respect the isRequestFocusOnMousePressed setting.

    Bug fixLuciadFusion

    LMAP-5660, LCD-195
    When detecting a model change, the ILcdGXYView implementations now fire invalidation events for all layers sharing the model, instead of only one.

    Bug fixLuciadFusion

    LMAP-4591, LCD-454
    TLcdGXYClippingPainterWrapper: the clipped region always used a straight-line approximation for the line segment between the last and first point of a polygon instead of the approximation computed by the clip pen.

    Bug fixLuciadFusion

    LMAP-6060, LCD-122
    In some cases, TLcdGXYPointListPainter could incorrectly fill polygons crossing the projection boundary.

    Bug fixLuciadFusion

    LMAP-6085, LCD-190
    TLcdGeoBufferPainter could not handle ILcdPoint instances that do not implement ILcdPointList.

    Bug fixLuciadFusion

    LMAP-6067, LCD-135
    Fixed a regression (since LMAP-5876) that caused TLcdGXYIconPainter's snaps to be no longer painted.

    Bug fixLuciadFusion

    LMAP-6044, LCD-114
    TLcdTransformedHeightProvider could return a NPE when the bounds of the delegate height provider are null.

    Bug fixLuciadFusion

    LMAP-6037, LCD-461
    TLcdEarthRasterAssetCodec: model reference decoders were not always correctly set on the model decoders. This could result in errors when preprocessing (for example with the preprocessor sample). This is now fixed.

    Bug fixLuciadFusion

    LMAP-5916, LCD-220
    In some cases, TLcdUTMZonePainter could throw an ArrayIndexOutOfBoundsException. This has been fixed.

    Bug fixLuciadFusion

    LMAP-6057, LCD-1281
    Fixed decoding of fill color of CGM graphics elements.

    Bug fixData Connectivity Manager

    LF-306
    Fixed ArrayIndexOutOfBoundsException that could occur when failures occur during fusion.

    Bug fixData Connectivity Manager

    LF-318
    Importing GRIB files now works consistently using drag-and-drop or context menu.

    Bug fixAdvanced Raster Services

    LMAP-5974
    Some raster files could not be rectified properly during decoding. This has been fixed.

    Bug fixAviation Standards

    LMAP-6045
    TLcdDAFIFRunwayDecoder: missing true bearing information required to calculate the position of a runway's arresting gear no longer results in a NullPointerException. If the information is missing, the arresting gear will not be registered on the runway, and a corresponding data issue will be added to the log (see ILcdDAFIFDecoder#getErrorMessage()).

    Bug fixInfrastructure Standards

    LMAP-6081, LCD-715
    The DGN decoder now adds tags as text elements.

    Bug fixInfrastructure Standards

    LMAP-6072, LCD-832, LMAP-6071
    The DGN decoder now takes the font table into account.

    Bug fixInfrastructure Standards

    LMAP-6029, LCD-709
    The DGN decoder now properly filters individual profiles in multilines, based on their classes and levels..

    Bug fixInfrastructure Standards

    LMAP-6046, LCD-711
    The DGN decoder now properly handles files containing empty text nodes.

    Bug fixInfrastructure Standards

    LMAP-5998, LCD-705
    The DGN decoder now supports filled multilines.

    Bug fixInfrastructure Standards

    LMAP-6049, LCD-703
    The DGN decoder now only decodes actual design models and extraction models, not sheet models.

    Bug fixInfrastructure Standards

    LMAP-5997, LCD-706
    Painting DGN shapes with extended colors no longer throws an ArrayIndexOutOfBoundsException.

    Bug fixMaritime Standards

    LMAP-6033, LCD-508
    A NullPointerException in TLcdS57FeatureObject.clone(), occurring when no relationships are present in the object, has been fixed.

    Bug fixMaritime Standards

    LMAP-6034, LCD-538
    Some information was not correctly cloned by TLcdS57Point and TLcdS57Area. This has been fixed.

    Bug fixMaritime Standards

    LMAP-6021, LCD-543
    S-57 point lists now throw proper IndexOutOfBoundsExceptions when points outside the valid range are requested.

    2012.0

    ImprovementLuciadFusion

    LuciadFusion is extended with support for AIXM data, which can be fused into raster coverages (rasterization).

    ImprovementLuciadFusion

    The Fusion server now supports the OGC WCS protocol; Fusion raster coverages can now be accessed from any client using the WCS protocol. A new package, com.luciad.fusion.server.wcs, provides the necessary API classes for plugging in a WCS service into the Fusion servlet. The main entry points, TLfnWCSRequestDispatcherFactory and TLfnWCSCommandDispatcherFactory, offer additional API hooks for customizing the WCS behavior.

    ImprovementLuciadFusion

    The Fusion server now supports the OGC WFS protocol; Fusion vector coverages can now be accessed from any client using the WFS protocol. A new package, com.luciad.fusion.server.wfs, provides the necessary API classes for plugging in a WFS service into the Fusion servlet. The main entry points, TLfnWFSRequestDispatcherFactory and TLfnWFSCommandDispatcherFactory, offer additional API hooks for customizing the WFS behavior.

    ImprovementLuciadFusion

    LuciadFusion now supports fusion of Geospatial PDF data, which can be fused into raster coverages (rasterization).

    ImprovementLuciadFusion

    The memory usage and performance of the fusion of VPF data has been improved significantly.

    ImprovementLuciadFusion

    A dynamic filter class (ILcdDynamicFilter) has been added to the utility package.

    ImprovementLuciadFusion

    TLcdStatusEvent and ILcdStatusListener have been generified, so the type of the source object in the events can be specified.

    ImprovementLuciadFusion

    TLcdCartesian now provides functionality to compute an inner point of a given polygon.

    ImprovementLuciadFusion

    The animation package (com.luciad.view.animation) has been added to facilitate animations.

    ImprovementLuciadFusion

    The fusion engine is now supports raster and elevation coverages as input assets for new coverages. This feature can be used to create a cropped copy of an existing coverage. This use case is illustrated in the samples.fusion.engine.coveragecropper sample.

    ImprovementLuciadFusion

    Performance has been improved for transforming bounds with zero width or height.

    ImprovementLuciadFusion

    Action listeners can now be registered to the TLcdBusyLayerTreeNodeCellRenderer class. Registered listeners are notified at regular intervals whenever a layer is busy in the background.

    ImprovementLuciadFusion

    The Fusion protocol now also supports per-tile signatures, allowing a coverage to be checked for consistency on server side. The binary Tile Store format used by the server has been updated to allow storing an optional signature per tile. The signature is defined by a message digest algorithm on the coverage metadata. New servers can read both old and new formats, and will continue to use the old format for existing coverages. They will use the new format only for new coverages that explicitly have a message digest algorithm set. Old servers will not be able to load coverages in this new format.

    ImprovementLuciadFusion

    The sample samples.rotation has been replaced with the more general samples.gxy.editmodes sample. It shows how to add extra ways to edit an object, by rotation for example, by adding context-dependent handles and editing behavior.

    ImprovementLuciadFusion

    The TLcdEarthGXYRasterPainter now allows painting the tile set bounds when the pixel density is too high, similar to the ALcdRasterPainter. This feature must be enabled explicitly by using the setStartResolutionFactor method, the default behavior of the painter has not changed.

    ImprovementLuciadFusion

    TLcdDataObjectExpressionLanguage now supports the use of constants as function arguments. Constants should be delimited by single quotes "'", and are passed on to the function as a String.

    ImprovementLuciadFusion

    LMAP-4458
    The 'image inputstream factory' property of a TLcdGeoTIFFDecoder no longer needs to be set to an input stream factory that returns instances of the JAI SeekableStream class.

    ImprovementLuciadFusion

    LMAP-3242
    ALcdRasterPainter now support filling a raster's area with a configurable fill style when the desired pixel density is too high.

    ImprovementLuciadFusion

    Model decoders for the Wavefront Object (obj) and the OpenFlight (flt) file formats have been moved from the 3D Additional Component to LuciadLightspeed. They still reside in the same package, but no longer require the 3D Additional Component to function. They can be found in the com.luciad.format.object3d package.

    ImprovementLuciadFusion

    LMAP-4182
    All transformation implementations are now thread-safe.

    ImprovementLuciadFusion

    The Fusion Engine now supports skipping assets when an error occurs (ex. the data on disk is corrupt). To use this feature a session handler must be set when creating the engine session. The default handler will abort the fusion when an error occurs.

    ImprovementLuciadFusion

    ALcdScaleIndicator and TLcdGXYScaleIndicator have been added to support including a scale indicator icon.

    ImprovementLuciadFusion

    LMAP-5639
    TLcdGXYShapeListPainter no longer edits the other shapes when a shape's handle is translated.

    ImprovementLuciadFusion

    LMAP-3523, LMAP-5149, LMAP-1576, LCD-2713
    Considerably improved the rendering of filled shapes crossing the projection boundaries. This requires the use of a TLcdGeodeticPen or TLcdGridPen without straight line mode.

    ImprovementLuciadFusion

    The ILcdFilter interface has been generified, allowing it to be used to define filters for specific types of objects.

    ImprovementData Connectivity Manager

    TLcyHelpAddOn has been introduced. This add-on provides some more help options for the end-user of LuciadFusion. It provides a menu entry to open the Lucy end-user guide with the default PDF viewer of your computer.

    ImprovementReal-time Engine

    TLcdSimulator now supports simulations in both GXY and Lightspeed views. For using TLcdSimulator in combination with a Lightspeed view. The following methods were added:
    • get/setLspLayerFactory: For retrieving/setting the Lightspeed layer factory that creates the simulation layers for the Lightspeed view(s)
    • getLspView: For retrieving the Lightspeed views set on the simulator
    • add/removeView: For adding/removing ILcdViews on which the simulator should display the simulation
    • getSimulationLspLayers: For retreiving all simulation layers pertaining to a given Lightspeed view
    • is/setPlayInLoop: For checking/setting whether the simulator should play the simulation in a loop

    ImprovementTerrain Analysis Engine

    Added the com.luciad.tea.lightspeed.hypsometry package. This package contains various classes to perform hardware accelerated hypsometry calculations for increased performance. The package also contains Lightspeed painters for the hypsometry calculations, so the hypsometric functions can be viewed in the new Lightspeed views.

    ImprovementTerrain Analysis Engine

    Added com.luciad.tea.lightspeed.los package. This package contains various classes to perform hardware accelerated LOS calculations for increased performance. The com.luciad.tea.lightspeed.los.view package has been added to be able to paint LOS calculations (including LOS calculations based on older implementations) in new Lightspeed views.

    ImprovementDefense Symbology

    To easily enable a halo for symbols and their labels, a set of halo properties have been added to the style interfaces ILcdMS2525bStyle and ILcdAPP6AStyle:
    • haloEnabled: enables/disables a halo for a symbol (both icons and line symbols),
    • haloColor: configures the color of the symbol's halo,
    • haloThickness: configures the thickness of the symbol's halo,
    • labelHaloEnabled: enables/disables a halo for the labels of a symbol,
    • labelHaloColor: configures the color of the label's halo,
    • labelHaloThickness: configures the thickness of the label's halo.

    ImprovementDefense Symbology

    The APP-6A and MIL-STD 2525b object customizer classes TLcdAPP6AObjectCustomizer and TLcdMS2525bObjectCustomizer have been extended with the ability to enable a symbol filter that only allows to use point-based symbology.

    Bug fixLuciadFusion

    LF-287
    The engine sometimes fused too few levels. More specifically the problem occurred when fusing a raster asset with type VECTOR (for example an ECDIS asset) that is located close to the coverage edges. Raster assets of type IMAGE or ELEVATION were not affected.

    Bug fixLuciadFusion

    In some cases, TLcdGXYShapeListPainter did not throw a TLcdNoBoundsException when boundsSFCT could not calculate valid bounds.

    Bug fixLuciadFusion

    In rare cases, TLcdGXYInPathLabelingAlgorithm could produce a StackOverflowError.

    Bug fixLuciadFusion

    LMAP-5413
    ALcdRasterPainter and its subclasses now fire property change events for all public properties.

    Bug fixLuciadFusion

    LMAP-4304
    The model descriptor returned by TLcdDTEDModelDecoder will have its 'isElevation' property set to 'false' when the decoder's 'isShading' property has been set to true. This better reflects the actual model contents.

    Bug fixLuciadFusion

    TLcdSymbol's hashCode implementation now matches its equals implementation. Note that a TLcdSymbol's hash code will change if you modify the instance. Hence, it is strongly advised to treat a TLcdSymbol as an immutable object, and never change it after construction.

    Bug fixLuciadFusion

    TLcdIndexColorModel's equals method relied on Java's IndexColorModel, which has an equals method that is not strict enough (Oracle Java bug 7107905). A workaround has been provided.

    Bug fixLuciadFusion

    LMAP-5642
    ALcdGXYPainter catches IllegalArgumentExceptions in its getGXYPainter() method and returns null if the object could not be set on itself. The documentation about the ILcdGXYPainter.setObject() and the ILcdGXYPainterProvider.getGXYPainter() methods has been improved regarding some exceptional cases and how they should be handled.

    Bug fixLuciadFusion

    LMAP-4691
    Fixed gap/discontinuity on edges of elevation data assets.

    Bug fixData Connectivity Manager

    LF-267
    Synchronizing the Tile Store before exporting a coverage now behaves correctly. It no longer causes a NullPointerException.

    Bug fixData Connectivity Manager

    LF-266
    ECDIS catalog models now behave correctly when dragged onto a coverage or when creating a map layer from them. They no longer block the UI and they no longer explode into hundreds of identical map layers.

    Bug fixDefense Symbology

    LMAP-5919
    The APP-6A and MIL-STD 2525b icon providers, TLcdAPP6AObjectIconProvider and TLcdMS2525bObjectIconProvider, returned a shared icon for symbols with the same symbol code, regardless whether they shared a symbol style or not. A shared icon will now only be returned for symbols that have the same code and style properties.

    Upgrade considerationLuciadFusion

    The fusion engine ALfnEngine is now fully asynchronous. The signature and semantics of its methods have changed to reflect this new paradigm.

    A quick way to change existing code is this:
    • Replace all old occurrences of ALfnEngine.fuse() withALfnEngine.fuse(new MyEmptyFusionHandler()).get(), where MyEmptyFusionHandler has empty implementations for all methods.
    • Add a catch ExecutionException and get its cause.
    • Replace old occurrences of ALfnEngine.getProgressNonBlocking() withALfnEngine.getProgress(), which has now become non-blocking.
    • Reevaluate old occurrences ofALfnEngine.getProgress(). The old behavior was blocking, but the new behavior is non-blocking. In case the blocking behavior is irrelevant for your use case, you can just leave it. In case the blocking behavior is relevant for your use case, for example because you want to wait until the progress has been initialized, replace it with ALfnEngine.getInitialProgress().get() .
    • The blocking call void fuse() has been replaced with a non-blocking counterpartFuture<?> fuse(ILfnFusionHandler). Instead of receiving the exceptions synchronously, they can now be received either by listening for them on a handler or by inspecting the ExecutionException when blocking for the result withFuture.get().
    • Replace all old occurrences of ALfnEngine.stop() withFuture.cancel(). This means you need to hold onto the future returned by an earlier call toALfnEngine.fuse(ILfnFusionHandler).

    Upgrade considerationLuciadFusion

    Luciad's abstract OpenGL binding, which is used by ILcdGLView to provide access to the OpenGL API, is now available directly in LuciadLightspeed. The binding is also used by the new Lightspeed view implementations (ILspView).

    Only one concrete OpenGL binding is now shipped with LuciadLightspeed: JOGL version 2.x. Previous implementations, based on GL4Java and older versions of JOGL, are no longer included with the release. Applications that forced the use of a particular binding via the system property "com.luciad.view.opengl.binding.ALcdGLBinding" should now be forced to use the JOGL 2.x binding. Normally, this should not pose any problems, however.

    Upgrade considerationLuciadFusion

    The class ILfnVectorSessionHandler.FailureContext has been made abstract, its constructor has been removed. Users of the API should never instantiate this class. The methods getLevel(), getRow() and getColumn() have been replaced by getTileCoordinates(); the level, row and column information can still be accessed in the returned TLfnTileCoordinates object.

    Upgrade considerationLuciadFusion

    The functionality previously offered by the 'Earth' Additional Component is now available directly in LuciadLightspeed. This Additional Component provides support for preprocessing raster and elevation data into a 3D terrain database, as well as painters and other tools to work with such terrain databases.

    The functionality is still contained inside a separate jar lcd_earth.jar, but this jar is shipped inside the LuciadLightspeed zip file. The documentation of the Earth component, such as the developer's guide and the release notes, has been integrated into the main documentation.

    Upgrade considerationLuciadFusion

    LF-182
    The Fusion protocol now also supports text geometry. Objects with ILcdText geometry can now be fused to vector coverages, and displayed accordingly in Fusion clients. The vector tile data format used by the Fusion protocol has been updated to allow modelling of text geometry; old clients will no longer be able to read data which has been fused with a new Fusion engine supporting text geometry. New Fusion engines can still fuse to the old tile data format, by setting the appropriate codec version number on the coverage metadata.

    Upgrade considerationLuciadFusion

    TLfnScaleUtil has moved from package com.luciad.fusion.engine.vector tocom.luciad.fusion.util. Imports must be adjusted where necessary.

    The default (compilation) scale denominator for a VectorAssetPart is now-1, for which a new constant TLfnScaleUtil.UNKNOWN_SCALE_DENOMINATOR has been defined. Where appropriate, hard-coded values of 0 should be replaced with references to the new constant.

    Upgrade considerationLuciadFusion

    The bundled Earth repository "sample_repository" has been renamed to "World".

    Upgrade considerationLuciadFusion

    The signature of the method ALfnTileStore.query() has been changed compared to LuciadFusion V11.0: it no longer declares to throw InterruptedException. Because it is an asynchronous method, InterruptedExceptions are propagated via the ILfnQueryHandler. This has been the behavior since V10.0, so there is no actual change in behavior.

    Upgrade considerationLuciadFusion

    ILfnVectorSessionHandler: the interface has been modified to support more general failures. More specifically the featureElementFailed method has been renamed to handleFailure and some of the attributes in the context have become optional.

    Upgrade considerationLuciadFusion

    ILcdLayerTreeNode now allows configuring the position at which layers are inserted by setting an ILcdInitialLayerIndexProvider on the node. See ILcdLayerTreeNode#addLayer.

    • Direct implementations of the ILcdLayerTreeNode interface will no longer compile, requiring the implementation of the ILcdInitialLayerIndexProvider getter and setter.
    • The new methods have been added to TLcdLayerTreeNodeSupport, which is the support class for creating such nodes. If you have created an ILcdLayerTreeNode implementation by delegating to this support class, you can implement these new methods by delegating them to the support class as well.

    Upgrade considerationDefense Symbology

    LMAP-3366, LMAP-4581
    The APP-6A and MIL-STD 2525b icon classes TLcdAPP6AIcon and TLcdMS2525bIcon now properly paint within the bounding box determined by the icon width and height.

    In the past, this was not the case for icons that had an anchor point different from the center of the icon (e.g., the icon for the Point Of Interest symbol). For those icons, TLcdAPP6AIcon and TLcdMS2525bIcon shifted the painting position according to this anchor point offset. TLcdAPP6AIcon and TLcdMS2525bIcon now no longer perform the anchor point shift by themselves. To determine the correct anchor point, TLcdAPP6AIcon and TLcdMS2525bIcon now implement ILcdAnchoredIcon, which offers the anchorPointSFCT(Point) method for this.

    This change only affects applications that define a custom painter/editor for the icons (for instance, to customize the selection box around the icon) or that directly use the API of the icons (for instance, to save them to a bitmap). For these use cases, the users of the API needed to explicitly take the anchor point shift into account in the past; this information was retrieved through the methods getIconCenterOffsetX() and getIconCenterOffsetY() available in TLcdAPP6AIcon and TLcdMS2525bIcon. In favor of the new ILcdAnchoredIcon approach, getIconCenterOffsetX() and getIconCenterOffsetY() are no longer available in TLcdAPP6AIcon and TLcdMS2525bIcon. Usage of both methods can easily be replaced by usage of the anchorPointSFCT(Point) method:

          int offsetX = anchoredIcon.getIconCenterOffsetX();
          int offsetY = anchoredIcon.getIconCenterOffsetY();
        
    becomes
          Point anchorPoint = new Point();
          anchoredIcon.anchorPointSFCT( p );
          offsetX = ( anchoredIcon.getWidth() / 2 ) - anchorPoint.x;
          offsetY = ( anchoredIcon.getHeight() / 2 ) - anchorPoint.y;
        

    11.0

    11.0.37

    Bug fixDefense Standards

    LCD-1447
    A cross-tile feature in ELEMENT_PER_FEATURE mode might have contained duplicate shapes in its shape list after tiles have been garbage-collected and reloaded. This has been fixed now.

    Bug fixDefense Standards

    LCD-1445
    The primitives of a cross-tile feature were not always initialized at the same time in ELEMENT_PER_FEATURE mode. As a result, the number of shapes in these features might vary over time, depending on the applyOnInteract operations that were performed on the model. This has been fixed now: all primitives of a cross-tile feature are now initialized at the moment it is first accessed.

    Bug fixDefense Standards

    LCD-1444
    Features with multiple primitives within the same tile but without a feature join table were not merged into a single model element in ELEMENT_PER_FEATURE mode. This has been fixed.

    Bug fixDefense Standards

    LCD-1446
    A potential threading issue in the decoding of cross-tile features in ELEMENT_PER_FEATURE mode has been fixed.

    Bug fixDefense Standards

    LCD-1436
    The source of a VPF model descriptor is now filled in when a feature class is decoded to a model using TLcdVPFModelDecoder.decode(TLcdVPFFeatureClass). The path of a VPF feature class is also available now via the TLcdVPFFeatureClass.getPathName() method.

    11.0.36

    Bug fixDefense Standards

    LMAP-6050, LCD-617
    Extra input validation has been added to the VPF model decoder, to avoid OutOfMemoryErrors due to corrupt input files; these errors are now converted into IOExceptions. In addition, the VPF model now remembers which files have already been decoded (or tried to decode) and which not; this avoids that the decoder reattempts to read corrupted files over and over during each model access. Only the first model access will now throw an IOException in case of corrupted files.

    11.0.33

    Bug fixDefense Symbology

    LMAP-6048
    The available property values defined by the APP-6A domain object's data type (TLcdEditableAPP6AObject#getDataType()) did not fully match with the values actually used in practice, resulting in IllegalArgumentExceptions when relying on this.

    Bug fixDefense Symbology

    LMAP-5527
    The locations of the Unique Designation and Type modifier labels for the Nuclear Detonation Ground Zero symbol in MIL-STD 2525b (2.X.3.4.2, G*M*NZ----****X) were switched.

    Bug fixDefense Symbology

    LMAP-1841
    When one of the geographical locations of a symbol was not visible in the current view projection, a TLcdOutOfBoundsException stack trace was sometimes printed on the console. This will no longer happen, as this situation should only result in the symbol not being painted.

    11.0.31

    ImprovementLuciadFusion

    LMAP-6016
    TLcdGXYCircularArcPainter now has a paintEditingLabels method, making it easier to display extra information while editing circular arcs.

    ImprovementLuciadFusion

    LMAP-6007
    TLcdGXYCirclePainter now supports snapping its outline.

    11.0.30

    Bug fixLuciadFusion

    LMAP-6023
    GetFeatureInfo requests where not correctly handled for layers that did not provide non-null painters for each available object in a model. It is however valid for layers to do that, if they want to hide an object in the map.

    Bug fixLuciadFusion

    TLcdEarthGLTerrainPainter: it was possible that some threads get blocked for a very long time when producing tiles on multiple threads. This situation could only occur when overriding the createAsynchronousTileSet method to create a tile set that uses multiple threads.

    Bug fixLuciadFusion

    TLcdEarthTileSetElevationProviderAdapter: the bounds was incorrect when the source reference did not equal the reference of the elevation provider.

    Bug fixLuciadFusion

    LMAP-6009
    TLcdEarthHeightProviderFactory: the factory did not always consume some of its required keys. In addition it can now also consume the TLcdRasterModelHeightProviderFactory.KEY_INTERPOLATE_DATA key if it its value is true.

    Bug fixLuciadFusion

    LF-237
    The bounding shape of an asset is now encoded in the same geo reference as the asset (used to default to EPSG:4326).

    Bug fixLuciadFusion

    LMAP-6003
    Fixed an exception that could occur when using line placement with objects that do not have a label text.

    Bug fixLuciadFusion

    LMAP-5641
    Manually configured scale ranges on the ILcdGXYLayer instances produced by the layer factory were not correctly taken into account in case of the geodetic reference EPSG:4326 / CRS:84.

    Bug fixDefense Symbology

    LMAP-6015
    The Forward Edge Of Battle Area (FEBA) symbol in MIL-STD 2525b/c (2.X.2.4.2.1, G*G*DLF---****X) was not correctly rendered: a connection line was painted between the two points, while only the points should be visualized.

    Bug fixInfrastructure Standards

    LMAP-5952, LCD-707
    The DWG decoder didn't take per-vertex line width into account for LWPOLYLINE elements.

    Bug fixInfrastructure Standards

    LMAP-5951
    The DWG decoder sometimes added curly braces around MTEXT elements.

    11.0.29

    ImprovementLuciadFusion

    TLcdGXYPointListPainter now supports snapping points of a complex polygon.

    Bug fixLuciadFusion

    LMAP-6004
    Fixed issue where the TLcdKML22GXYPainterProvider would reset the transparency of the groundoverlay painter to 1, regardless of what had been configured.

    Bug fixLuciadFusion

    LMAP-6005
    Fixed issue where an extended style based on a combined style would use the same cache as its parent style, causing icons in the same base style but separate icons to have use the same icon.

    11.0.28

    ImprovementAviation Standards

    Airspace volumes that use buffers and occur in an aggregated airspace are now also supported for visualization.

    Bug fixLuciadFusion

    LMAP-5986
    TLcdLabelConflictChecker could throw an exception upon a reset with zero (or negative) sized bounds.

    Bug fixLuciadFusion

    LMAP-5962
    Improved correctness of reference parsing for GeoTIFF files containing user defined references.

    Bug fixLuciadFusion

    LMAP-5472
    In some cases bounds transformations between two geocentric or two topocentric references, or between a geocentric and a topocentric reference, could return incorrect results.

    Bug fixLuciadFusion

    LMAP-5974, LCD-94
    Some raster files could not be rectified properly during decoding. This has been fixed.

    11.0.27

    ImprovementAviation Standards

    LMAP-5755
    The DAFIFT decoders have been made more robust to avoid exceptions when encountering unexpected record field counts.

    Bug fixLuciadFusion

    TLcdLayerTreeNodeCellRenderer kept a strong reference to the last renderer layer, which caused a memory leak when all layers were removed from the view. This has been fixed.

    Bug fixLuciadFusion

    LMAP-5949
    Fixed issue for 3D views where a NPE would be thrown if a KML file contained a rotated GroundOverlay element for the case where no TLcdKML22Parameters have been set on the model.

    Bug fixLuciadFusion

    LMAP-5948
    The data model transformation API can now be configured to call transformations for properties of which the value is null. This is useful when a null value in the source domain should be mapped on a non-null (default) value in the target domain. TLcdDataModelMapping and TLcdDataTypeMapping now have an extra constructor with a flag to specify whether to make an attempt to transform null properties or not.

    Bug fixTerrain Analysis Engine

    LMAP-5946
    TLcdProfileViewJPanel no longer throws warnings when used with a reference that does not contain geoid information.

    Bug fixMaritime Standards

    LMAP-5950
    As of V11.0, TLcdS52GXYPainterProvider could no longer be extended to use custom painters. This has been fixed.

    11.0.26

    ImprovementWeather & Environment Standards

    LMAP-5612
    TLcdGRIB2ModelDecoder now supports PNG encoded packing.

    ImprovementWeather & Environment Standards

    LMAP-5614
    The documentation on complex packing support has been improved.

    ImprovementWeather & Environment Standards

    LMAP-5613
    TLcdGRIB2ModelDecoder now makes a better estimate of the number of bits required to load GRIB2 files with complex packing, resulting in less memory consumption.

    Bug fixLuciadFusion

    LMAP-5478
    The XML encoder now supports encoding of mixed complex types that extend from other mixed complex types.

    Bug fixAdvanced GIS Engine

    LMAP-5379
    The memory consumption of advanced topology computations for large models has been reduced significantly.

    Bug fixInfrastructure Standards

    LMAP-5904
    The DGN decoder didn't transform text elements in a shared cell properly. This could cause text elements at the wrong location or with the wrong size.

    11.0.25

    Bug fixLuciadFusion

    LMAP-5892
    Fixed painting of wind barbs: speeds above 100 knots are now drawn with multiple triangles instead of squares.

    Bug fixLuciadFusion

    LMAP-5890
    In very rare cases TLcdGXYAsynchronousLabelPlacer could throw a RejectedExecutionException.

    Bug fixLuciadFusion

    LMAP-5889
    Bounds transformations from a grid reference using TLcdMercator to a geodetic reference could return bounds with a width of 350 instead of 360.

    Bug fixLuciadFusion

    LMAP-5871
    GeoTIFF images contain JPEG encoded RGBA data are now correctly decoded and displayed.

    11.0.24

    ImprovementLuciadFusion

    LMAP-5700
    When the tiled approach is used to visualize WMS layers, the maximum level of detail is now determined more accurately in case no scale ranges are defined by the WMS server. In that case, it now assumes a maximum resolution of 2 cm / pixel to generate the tile structure.

    ImprovementLuciadFusion

    LMAP-5837
    TLcdEarthRepositoryModelDecoder: the canDecode method no longer accepts all source names that refer to a directory. It now only accepts source names that either refer to the repository root file (that is tilerepository.cfg) or refer to a directory that contains a repository root file.

    Bug fixLuciadFusion

    LMAP-5894
    Possible IllegalArgumentException when calling TLcdGXYStampLabelPainter.setGXYInteractiveLabelProvider() or when creating a new TLcdGXYStampLabelPainter with a non-null ALcdGXYInteractiveLabelProvider. This error was introduced through the addition of LMAP-2671 and LMAP-3554.

    Bug fixLuciadFusion

    The height providers created by the TLcdEarthGLLayerHeightProviderFactory sometimes incorrectly returned valid heights when the valid heights only option is enabled.

    Bug fixLuciadFusion

    LMAP-5888
    The rotation specified in point placements of text symbolizers is now applied correctly.

    Bug fixLuciadFusion

    LMAP-5887
    The XML generated for WFS-T transaction requests that update a date of type XMLGregorianCalendar now correctly contains the date instead of an empty element.

    Bug fixLuciadFusion

    LMAP-5778
    TLcdEarthTerrainElevationProvider: the elevation provider did not handle rasters that cross the 180 degree meridian correctly.

    Bug fixLuciadFusion

    LMAP-5882
    Fixed problem for certain KMZ files with deflated entries, where a ZipClosed exception could occur while decoding the file.

    Bug fixLuciadFusion

    LMAP-5872
    The Earth GXY painters allow garbage collection of their cached tiles, including those that were painted the last time.

    11.0.23

    ImprovementLuciadFusion

    LMAP-5857
    TLcdGeoTIFFModelDecoder will now skip over invalid sub-images instead of generating a decoding error. Warning messages are logged when invalid sub-images are skipped.

    ImprovementLuciadFusion

    LMAP-5858
    The list of data series supported by TLcdCADRGModelDecoder has been extended to support the complete set of data series defined in MIL-STD-2411-1 Notice 1.

    ImprovementDefense Standards

    LMAP-5846
    Performance of model access has been improved; especially datasets for which many tiles have one or more geometry tables missing will take advantage from this improvement.

    Bug fixLuciadFusion

    LMAP-5876
    TLcdGXYIconPainter: icons with a halo were not displayed if their first paint happened far outside the view bounds.

    Bug fixLuciadFusion

    LMAP-5875
    When using WMS layer dimensions, the support class ALcdMultiDimensionalModelProvider did not accept dimension intervals - only values were accepted.

    Bug fixLuciadFusion

    Tile data which were kept in memory by TLcdEarthGXYRasterPainter are now properly released after painting.

    Bug fixDefense Standards

    LMAP-5865
    TLcdUSRPModelDecoder documentation was updated to correctly reflect the .QAL and .SOU file requirements.

    Bug fixDefense Standards

    LMAP-5774
    TLcdUSRPModelDecoder now sets the Product Type and Dataset ID on the decoded TLcdUSRPZoneDescriptor.

    Bug fixMaritime Standards

    LMAP-5874
    TLcdS57ModelDecoder no longer throws exceptions when decoded models are empty (for example, because the object class selection filter on the decoder is empty).

    11.0.22

    ImprovementLuciadFusion

    LMAP-5843
    TLcdAdvancedMapRulerController and TLcdMapTouchRulerController's measurement segment labels now better follow the segments when measuring geodetic or rhumbline distances.

    Bug fixLuciadFusion

    Prevented a NullPointerException when calling invalidateSelection on a view with a null reason.

    Bug fixLuciadFusion

    TLcdGXYShapeListPainter, TLcdGXYCompositeCurvePainter and TLcdGXYCompositeRingPainter's boundsSFCT methods returned the wrong bounds if the bounds had (only) negative X or negative Y coordinates.

    Bug fixLuciadFusion

    LMAP-5404
    GeoTIFF images containing 16-bit data samples and one or more 'extra' samples are now decoded and rendered correctly.

    Bug fixLuciadFusion

    LMAP-5828
    Possible ConcurrentModificationException when using TLcdGXYCompositeViewLabelPlacer in combination with asynchronous label placement.

    Bug fixLuciadFusion

    LMAP-5827
    Fixed decoding problem for GroundOverlay elements that contained a Region. The Regions now correctly contain a LatLonAltBox.

    Bug fixLuciadFusion

    LMAP-5689
    Improved overridden clone methods so that the behavior for both clone() and clone(Map) is consistent.

    Bug fixMaritime Standards

    LMAP-5806
    TE texts are no longer rendered if a required attribute, used within the text, is not present.

    Bug fixMaritime Standards

    LMAP-5680
    Texts are no longer rendered if a required attribute, used within the text, is not present.

    11.0.20

    ImprovementLuciadFusion

    When an XML attribute has a fixed value, the XML encoders will now always use the fixed value from the schema, instead of taking the actual value of the data, ensuring the correctness of the encoded XML document.

    ImprovementLuciadFusion

    TLcdTFWRasterModelDecoder now also accepts .gfw files for georeferencing .gif files. The sample raster file usa.gif illustrates its use and various alternative ways for georeferencing images.

    ImprovementDefense Symbology

    The APP-6A/B weather symbols Instrument Ceiling (3.X.5.1) and Visual Ceiling (3.X.5.1) are now represented as areas instead of icons, which is more correct according to the specification.

    Bug fixLuciadFusion

    LMAP-5760
    ALcdRasterPainter and its subclasses now render the outline for too high pixel densities and the outline for selected rasters using the same rendering logic. This ensures both outlines are always rendered the same.

    Bug fixLuciadFusion

    LMAP-5795
    All ILcdCircularArc classes had an issue in getStartTangent2D(), getEndTangent2D() and getForwardTangent2D() causing reversed orientation. The calculated tangent angle was correct, but in some cases flipped 180 degrees, so their direction was reversed.

    Bug fixLuciadFusion

    LMAP-5802
    ALcd3DEditableBounds implements setTo3DIntersection and setTo3DUnion based on the 2D versions again, for extensions that depend on it.

    Bug fixLuciadFusion

    LMAP-5799
    TLcdSHPModelEncoder now always encodes Cartesian polylines and polygons, instead of possibly wrapping geodetic versions.

    Bug fixLuciadFusion

    LMAP-5801
    TLcdEarthGXYSinglevaluedRasterPainter did not correctly show transparency changes when using IndexColorModel instances, because of Oracle Java bug 7107905. A workaround has been added.

    Bug fixDefense Symbology

    LMAP-5814
    The labelPosition property of an object's style (ILcdAPP6AStyle or ILcdMS2525bStyle) was not properly taken into account in case the default label painter was used.

    Bug fixDefense Symbology

    LMAP-5805
    Choosing a symbol category in the symbol tree inside the TLcdAPP6AObjectCustomizer or TLcdMS2525bObjectCustomizer resulted in an incorrect event state. This caused the firing of incorrect events when using setObject afterwards to customize a symbol.

    Bug fixInfrastructure Standards

    LMAP-5798
    The DGN decoder was not thread-safe, even when using multiple different instances. This is now fixed by serializing all decode() calls.

    Upgrade considerationLuciadFusion

    LMAP-5797
    The protected constructor of the abstract class ALfnAssetMetadata.Builder was removed from the API. It was never meant to have been part of the API in the first place, so there should be no custom subclasses. The impact of this change should hence be nihil.

    11.0.19

    Bug fixLuciadFusion

    LMAP-5766
    TLcdEarthTileSetElevationProvider: the elevation provider did not take the geodetic datum or unit of measure of the target reference into account if they where different from the geodetic datum or unit of measure of the preferred reference.

    Bug fixDatabase Connectors

    LMAP-5794
    The decoder sometimes created a Box3D statement outside the geodetic world bounds, causing a PostGIS error. This was due to floating point rounding errors.

    11.0.18

    ImprovementLuciadFusion

    Performance improvement for TLcdObliqueMercator.inLonLatBounds() and TLcdSphericalObliqueMercator.inLonLatBounds().

    ImprovementLuciadFusion

    LMAP-4700
    TLcdWFSGetFeatureRequest now has an additional setBoundingBox method to specify a bounding box with a coordinate system other than WGS84.

    ImprovementAdvanced Raster Services

    TLcdGeoSPOTModelDecoder now creates models with shorter display names.

    ImprovementDefense Standards

    LMAP-5767
    TLcdVPFModelDecoder now offers two model element modes: elements per geometry and elements per feature. The former will map each geometry onto a separate model element, the latter will merge geometries of the same feature together into a single model element, implementing ILcdShapeList. The former is the existing behavior and is therefore configured on the decoder by default. Model element modes can be changed using TLcdVPFModelDecoder.setModelElementMode().

    Bug fixLuciadFusion

    LF-252
    Resources which are added on the file system can now be deleted as well, after the server has picked them up dynamically.

    Bug fixLuciadFusion

    LMAP-5499
    Some bounds transformations used many more point transformations than needed for some cases. This fix improves the performance in these cases.

    Bug fixLuciadFusion

    TLcdLonLatBounds and TLcdLonLatFloatBounds now handle some additional numerical rounding problems in their contains2D(double,double) methods.

    Bug fixLuciadFusion

    LMAP-5769
    TLcdOWSHttpTransport will no longer attempt to send GET requests if the ILcdOWSRequest does not support KVP encoding. This avoids unpredictable behavior with WFS-T transaction requests.

    Bug fixLuciadFusion

    LMAP-5762
    TLcdEarthGXYRasterPainter: fixed incorrect rendering when warping partially transparent raster data.

    Bug fixLuciadFusion

    LMAP-5640, LCD-219
    In some cases, TLcdLonLatGridPainter could display erroneous meridian line pieces.

    Bug fixDefense Standards

    The TLcdVPFGXYPainterProvider now supports rendering of VPF models decoded in ModelElementMode.ELEMENT_PER_FEATURE mode in combination with GeoSym.

    11.0.17

    ImprovementLuciadFusion

    LF-231
    When a format is unavailable because of a missing dependency, an info message is logged rather than a warning. In order to make it unaffected by obfuscation, the message displays the format name rather than the class name of the missing dependency.

    ImprovementLuciadFusion

    TLcd2DEditablePointList and TLcd3DEditablePointList now implement ILcdPointList2. In addition, TLcdGeodeticPen and TLcdGXYPen now take better advantage of this interface.

    ImprovementLuciadFusion

    TLcdETOPOModelDecoder now has settings supportGeoidDatums and applyGeoidDatums to consider the results with respect to the EGM96 geoid datum instead of the default WGS84 ellipsoidal datum.

    ImprovementLuciadFusion

    LMAP-5754
    TLcdDatabaseModelDescriptor now implements ILcdAnnotatedElement, thus allowing the addition of annotations to database models.

    ImprovementLuciadFusion

    LMAP-5609
    TLcdDatabaseModelDescriptor now has optional feature display names, which are also used when constructing the data model type.

    ImprovementLuciadFusion

    LMAP-5609
    The model descriptor now supports feature display names, which can be specified in the properties that are passed to to the database model decoder.

    ImprovementLuciadFusion

    LMAP-5509
    ALcdRasterPainter has a new utility method resolutionFactor that returns the ratio between a raster's pixel density and the ideal pixel density, which can be compared with startResolutionFactor and stopResolutionFactor. The raster painters provide more detailed logging about the scale and resolution factor.

    ImprovementDatabase Connectors

    LMAP-5609
    The model descriptor now supports feature display names, which can be specified in the properties that are passed to to the database model decoder.

    ImprovementDatabase Connectors

    LMAP-5609
    The model descriptor now supports feature display names, which can be specified in the properties that are passed to to the database model decoder.

    ImprovementDatabase Connectors

    LMAP-5609
    The model descriptor now supports feature display names, which can be specified in the properties specified to the database model decoder.

    ImprovementDatabase Connectors

    LMAP-5609
    The model descriptor now supports feature display names, which can be specified in the properties that are passed to to the database model decoder.

    ImprovementDatabase Connectors

    LMAP-5609
    The model descriptor now supports feature display names, which can be specified in the properties that are passed to to the database model decoder.

    ImprovementDefense Standards

    The sample samples.decoder.raster.nitf.orthorectified illustrates orthorectification of NITF rasters that have the SENSRB extension.

    Bug fixLuciadFusion

    LF-240
    If new resources are added or removed on the file system, the server now picks them up dynamically, without the need for a restart.

    Bug fixLuciadFusion

    LMAP-5758
    TLcdSHPModelEncoder now always encodes Cartesian bounds, instead of possibly wrapping geodetic bounds.

    Bug fixLuciadFusion

    LMAP-5458
    TLcdGXYAsynchronousLabelPlacer now creates a thread with a meaningful name.

    11.0.16

    ImprovementLuciadFusion

    LMAP-5636
    Raster model decoders that cache tiles in buffers now provide default parameterless constructors that set a globally shared buffer, for convenience.

    ImprovementLuciadFusion

    LMAP-4669, LMAP-5608
    TLcdEarthGLTerrainPainter: the number of tiles requested by this painter has been reduced significantly. As a result the terrain in a 3D view typically updates a lot faster.

    ImprovementAviation Standards

    LMAP-5708
    The computation of procedure trajectories has seen some general improvements to increase the quality, and to ensure consistency when comparing between different LuciadMap versions.

    ImprovementAviation Standards

    LMAP-5696
    Improved the AIXM 5.x airspace painting style to be more inline with ICAO guidance and airspace styles of the other AIS formats.

    ImprovementDefense Standards

    LMAP-5695
    TLcdNITFModelDecoder now has a new setting separateGraphics to decode vector data in graphic segments into separate model tree nodes of the main model.

    Bug fixLuciadFusion

    LMAP-5729
    TLcdInterpolatedRaster now handles unknown values more robustly.

    Bug fixLuciadFusion

    LMAP-5726
    The DMED/DTED model decoders now return rasters that avoid a threading problem with the fall-back mechanism for levels of detail.

    Bug fixLuciadFusion

    LMAP-5725
    TLcdSHPModelEncoder no longer writes out incompatible (dBASE 7) boolean and binary double types in .dbf files. Note that the compatible (dBASE 3/4/5) format has a limited precision for the double type.

    Bug fixLuciadFusion

    LMAP-5718
    TLcdAWTPath could sometimes return incorrect results for large polygons.

    Bug fixLuciadFusion

    LMAP-5715
    TLcdPolyconic projection transformed out of bounds world points instead of throwing an out of bounds exception.

    Bug fixLuciadFusion

    LF-187
    The Fusion Client can now also connect to a server with (encoded) special characters in its URI path (for example "http://www.example.com/Luciad%20Fusion/lts").

    Bug fixLuciadFusion

    LMAP-5706
    When using TLcdGXYCompositeLabelPainter in combination with one or more label painters that do not implement ILcdGXYLabelPainter2, the getPossibleLocationCount() method could produce a NullPointerException. This has been fixed.

    Bug fixLuciadFusion

    LMAP-4339
    The Linux versions of the license server no longer depend on GLIBC_2.7. The minimum requirement is currently GLIBC_2.4.

    Bug fixLuciadFusion

    LMAP-5705
    TLcdDataObjectIndexedModel did not clear unique indices properly on removeAllElements(). This could cause inconsistencies and errors later.

    Bug fixLuciadFusion

    TLcdGUIIcon displayed the wrong icon for the UNKNOWN type. This has been fixed.

    Bug fixLuciadFusion

    LMAP-5697
    TLcdCGMModelDecoder now uses a default line/edge type SOLID for elements that do not specify one.

    Bug fixLuciadFusion

    A memory leak in TLcdGXYRoundedPointListPainter was fixed.

    Bug fixLuciadFusion

    LF-141
    Various improvements have been implemented to reduce the overall memory usage when visualizing coverages of type VECTOR.

    Bug fixLuciadFusion

    LMAP-5688
    An ArrayIndexOutOfBoundsException could occur in the TLcdGXYPointListPainter when the point list did not contain any points.

    Bug fixLuciadFusion

    LCD-3077
    Javadoc for CoverageMetadata.Builder includes some guidance for choosing good values for level 0 row- and column counts.

    Bug fixWeather & Environment Standards

    LMAP-5707
    TLcdGRIB2TileDecoder no longer throws an ArrayIndexOutOfBoundsException for tiles with 2 bits per value.

    Bug fixDefense Symbology

    LMAP-5691
    The label color of a symbol's style was not taken into account for the T, T1 labels of a boundary symbol.

    11.0.15

    ImprovementLuciadFusion

    LF-225
    The engine fast-fails with a clear error message when no identity provider is found for a model.

    ImprovementLuciadFusion

    LF-227
    The servlet class TLfnServlet has been extended with two protected factory methods createRequestDispatcherFactory(ServletConfig) and createTileStore(ServletConfig, ALfnEnvironment) to respectively allow customization of the request dispatcher factory and the Tile Store.

    Bug fixLuciadFusion

    LMAP-5672
    TLcdSymbol: the equals method could throw a NullPointerException when the border and/or fill color of the symbol is null.

    Bug fixData Connectivity Manager

    LF-215
    Map layers which were the result of drag'n'drop of themes are now correctly persisted in the workspace. Also the order of the layers correctly reflects the order of the coverages in the theme.

    Bug fixInfrastructure Standards

    LMAP-5687
    The DGN decoder now ignores empty text node 2d elements.

    11.0.14

    Bug fixLuciadFusion

    LMAP-5672
    TLcdSymbol: the equals method would return false when the border and/or fill color of two symbols were not the same instance.

    Bug fixLuciadFusion

    LMAP-5400
    TLcdGXYBusyLayerTreeNodeCellRenderer could display a busy state for invisible layers.

    Bug fixAviation Standards

    The default AIXM 5 label color has been fixed to be white everywhere. This was already the case in previous versions, and has always been the default in Lucy.

    11.0.13

    ImprovementLuciadFusion

    LMAP-5607
    TLcdSLDSymbolizerPainterFactory now supports TLcdSLDShadedRelief in raster symbolizers to apply a relief shading to elevation data.

    ImprovementLuciadFusion

    The new painter classes TLcdShadedRasterPainter and TLcdShadedMultilevelRasterPainter paint elevation rasters with dark or light shading based on the position of the sun.

    ImprovementDatabase Connectors

    The model decoder and encoder now support the geodetic type GEOGRAPHY that is provided in PostGIS 1.5 and higher.

    Bug fixDatabase Connectors

    LMAP-5668
    The decoder could sometimes return duplicates in the elements() enumeration.

    Bug fixInfrastructure Standards

    LMAP-5526
    The DGN decoder now ignores empty cell definitions and their references.

    Bug fixInfrastructure Standards

    LMAP-5526
    The DGN decoder now applies multi-line joint caps correctly.

    11.0.12

    ImprovementLuciadFusion

    LF-207
    While fusing vector data, complex polygons containing duplicate (sub)polygons now fail with a clear error message.

    ImprovementLuciadFusion

    LF-198
    Extended the API with a geometry provider for area simplification, based on the area size in pixels (TLfnAreaSimplifyingGeometryProvider).

    ImprovementLuciadFusion

    LuciadFusion is extended with support for DGN data, which can be fused into raster coverages (rasterization).

    ImprovementLuciadFusion

    LMAP-5667
    The source name, the type name, and the display name of the decoded model descriptor can now be overridden in the properties specified to the database model decoder. The default source name is now the actual name of the source properties file. The default type name is now the display name of the model decoder, as is conventional for all model decoders.

    ImprovementData Connectivity Manager

    The respective visibility of the assets in the target coverage can be changed by dragging and dropping them under a coverage node. Dropping an asset on its coverage node restored its natural order (based on compilation scale).

    ImprovementData Connectivity Manager

    When rasterizing vector data, the minimum scale of a raster asset can be edited. This allows the user to limit the visibility of an asset in the fused result: high-detailed assets can be omitted altogether at insufficiently detailed fusion levels.

    ImprovementData Connectivity Manager

    When editing asset metadata, the pixel density has been replaced with a compilation scale, thus making it more intuitive to use. It controls the level of detail with which the data will be fused.

    ImprovementData Connectivity Manager

    When rasterizing vector data, the compilation scale of the assets can be configured in the DCM, allowing control over the level of detail with which the data will be rasterized. In addition, preview functionality was added for raster coverages, allowing visual inspection of the level of detail which corresponds to a given compilation scale.

    ImprovementDatabase Connectors

    LMAP-5667
    The source name, the type name, and the display name of the decoded model descriptor can now be overridden in the properties specified to the database model decoder. The default source name is now the actual name of the source properties file. The default type name is now the display name of the model decoder, as is conventional for all model decoders.

    ImprovementDatabase Connectors

    LMAP-5667
    The source name, the type name, and the display name of the decoded model descriptor can now be overridden in the properties specified to the database model decoder. The default source name is now the actual name of the source properties file. The default type name is now the display name of the model decoder, as is conventional for all model decoders.

    ImprovementDatabase Connectors

    LMAP-5667
    The source name, the type name, and the display name of the decoded model descriptor can now be overridden in the properties specified to the database model decoder. The default source name is now the actual name of the source properties file. The default type name is now the display name of the model decoder, as is conventional for all model decoders.

    ImprovementDatabase Connectors

    LMAP-5667
    The source name, the type name, and the display name of the decoded model descriptor can now be overridden in the properties specified to the database model decoder. The default source name is now the actual name of the source properties file. The default type name is now the display name of the model decoder, as is conventional for all model decoders.

    ImprovementDatabase Connectors

    LMAP-5667
    The source name, the type name, and the display name of the decoded model descriptor can now be overridden in the properties specified to the database model decoder. The default source name is now the actual name of the source properties file. The default type name is now the display name of the model decoder, as is conventional for all model decoders.

    Bug fixLuciadFusion

    LF-214
    The server now sends an appropriate error message to the client when the VERSION parameter is missing from the request.

    Bug fixLuciadFusion

    LF-204
    Vector data from assets with different georeference than the coverage's are now also fused correctly when tiles have aspects different from 1:1.

    Bug fixLuciadFusion

    LMAP-5667
    TLcdDatabaseModelDecoder now supports properties specifying a custom source name, type name, and display name when decoding a model.

    Bug fixLuciadFusion

    LMAP-5508
    TLcdDatabaseModelDecoder now correctly sets the source name on the model descriptor of a decoded model.

    Bug fixData Connectivity Manager

    LF-211
    Importing multivalued GRIB2 files now works consistently using drag-and-drop or context menu.

    Bug fixData Connectivity Manager

    LF-209
    The create map layer action is now disabled when an uncommitted coverage is selected (as the coverage is not present in the tilestore yet, it is impossible to create a map layer for it, which would have caused an exception).

    Bug fixData Connectivity Manager

    LF-201
    Browsing large Tile Stores with the Tile Store Manager is now efficient, it no longer causes unresponsiveness of the UI.

    Bug fixData Connectivity Manager

    LF-200
    The filtering rules for vector data fusion job configuration now also accept the empty string (default) as pattern.

    Bug fixData Connectivity Manager

    LF-193
    When visualizing a fused JPEG coverage in a view with a different georeference than the coverage, all colors now appear correctly.

    Bug fixData Connectivity Manager

    LF-194
    Upon changing the geographic reference of a coverage, its bounding box is now correctly recomputed.

    Bug fixDefense Symbology

    LMAP-5671
    The selection color of a symbol's style was not taken into account for arrow-based symbols.

    Upgrade considerationLuciadFusion

    The method TLfnEnginFactory.RasterSessionBuilder.setAssetOrder(Comparator) has been renamed to setAssetPartPartOrder(Comparator), to reflect the fact that it configures the order of asset parts within an asset, rather than the order of the assets.

    Upgrade considerationLuciadFusion

    LF-206
    ALfnEngine has been extended with an abstract method getProgressNonBlocking(), a non-blocking variant of the already existing getProgress() method. The new method is especially useful in UI code, which should never call blocking methods, to ensure the responsiveness of the UI. Wrappers extending from ALfnEngine should delegate this new method to the corresponding method in the wrapped ALfnEngine.

    11.0.11

    ImprovementLuciadFusion

    LF-181
    The LuciadFusion WMS service now supports the EPSG:32663 (WGS 84 / Plate Carree) and EPSG:900913 (Spherical Mercator) references.

    ImprovementLuciadFusion

    LF-161
    The performance to fuse ArcSDE vector data sets has been increased significantly (up to a factor of 10, depending on the data set), due to improving the concurrent access approach to the source data.

    Bug fixLuciadFusion

    LF-180
    Creation of a LuciadFusion engine no longer fails because of missing formats (NoClassDefFoundError). Instead, missing formats are gracefully skipped and a warning message is logged.

    Bug fixLuciadFusion

    LF-171
    The default asset type for ArcSDE raster data sets is now automatically set to either IMAGE or ELEVATION instead of always IMAGE, depending on whether the raster data respectively represents pixel or elevation values.

    Bug fixLuciadFusion

    LF-176
    In some cases, the fusion process failed on point geometry input data in combination with clipping shapes.

    Bug fixLuciadFusion

    LMAP-5658
    When painting a label for only one feature, the label did not update correctly after a change to the feature such as moving the geometry.

    Bug fixLuciadFusion

    LMAP-5652
    TLcdInterpolatingRasterHeightProvider now correctly handles rasters containing truncated tiles in their last rows or columns.

    Bug fixLuciadFusion

    LMAP-5655
    TLcdGLTiledWMSProxyPainter#setQuality fired an incorrect property change event.

    Bug fixLuciadFusion

    LF-173
    The Fusion Engine now uses a connection pool for ArcSDE databases to improve performance.

    Bug fixLuciadFusion

    LMAP-5653
    Fixed potential memory leak in TLcdKML22GLLayer.

    Bug fixLuciadFusion

    LF-163
    A threading issue in the tiled vector data handling caused occasional lockups in the the LuciadFusion WMS service.

    Bug fixLuciadFusion

    LF-151
    Huge vector data geometries can now efficiently be fused. Previously, they suffered from unreasonable fusion times in combination with excessive JVM garbage collection activity.

    Bug fixData Connectivity Manager

    LF-168
    Fusion jobs for which either the coverage or one of its assets has not been committed can no longer be started from the job manager. This avoids "Obsolete version used to put metadata" errors later on, and makes the behavior consistent with that in the Tile Store tree and job configuration.

    Bug fixData Connectivity Manager

    LF-121
    The tree visualizing the Tile Store contents did not show up while using Java 7.

    Bug fixData Connectivity Manager

    LF-154
    When a fusion job is finished, the elapsed time remains visible in the job panel.

    Bug fixData Connectivity Manager

    LF-164
    The job configuration preview layer now uses the last area of interest.

    Bug fixData Connectivity Manager

    LF-155
    Scales can no longer be edited in the DCM metadata editor while fusion is ongoing, thus avoiding IllegalStateExceptions.

    Bug fixData Connectivity Manager

    LF-153
    The Data Connectivity Manager now has the ability to filter vector features based on geometry size.

    11.0.10

    ImprovementDefense Standards

    The decoder now accepts all-hyphen values for all fields in SENSRB extensions, even for fields where they aren't strictly allowed by the standard.

    Bug fixLuciadFusion

    TLcdGXYIconPainter's boundsSFCT and isTouched methods did not respect the UseOrientation flag. The painter can now also handle ILcdOriented instances that return NaN for the orientation.

    Bug fixLuciadFusion

    LMAP-5647
    Fixed a regression with WFS 1.0 GetFeature XML requests that caused the server to return an exception for valid requests.

    Bug fixLuciadFusion

    TLcdDataObject.clone() now creates an instance of the own class, rather than an instance of TLcdDataType.getClass().

    Bug fixLuciadFusion

    TLcdSwissGridReference now properly returns custom names set with setName.

    Bug fixLuciadFusion

    TLcdGXYEditController2: when a shape was moved, extraneous snap targets could be shown. This has been fixed.

    Bug fixMaritime Standards

    Rotated icons are no longer painted if the mandatory orientation attribute is not present.

    11.0.07

    Bug fixLuciadFusion

    LMAP-5637
    Querying on a specified amount of features without a filter is now more memory efficient. This also reduces the memory need on server initialization.

    11.0.06

    ImprovementLuciadFusion

    LMAP-5606
    TLcdShadedRasterPainter and TLcdShadedMultilevelRasterPainter now provide a setting for elevation exaggeration.

    Bug fixLuciadFusion

    The bounds of TLcdLonLatArc were too small sometimes. This has been fixed.

    Bug fixLuciadFusion

    LMAP-5624
    TLcdShadedRasterPainter and TLcdShadedMultilevelRasterPainter now correctly handle large (sub-tiled) tiles, like DTED level 1 and DTED level 2 tiles.

    Bug fixLuciadFusion

    LMAP-5623
    TLcdShadedRasterPainter and TLcdShadedMultilevelRasterPainter now leave areas with unknown elevation values transparent.

    11.0.05

    ImprovementLuciadFusion

    ILcdGML3DirectPosition and ILcdGML3DirectPositionList implementations now recognize srs names matching urn:ogc:def:crs:EPSG:*:4326 as references which have their coordinates in inverse order (first lat, then lon).

    ImprovementLuciadFusion

    The bounds calculation was improved for TLcdLonLatEllipse, TLcdLonLatCircle, TLcdLonLatArc, TLcdLonLatCircularArcBy3Points, TLcdLonLatCircularArcByBulge and TLcdLonLatCircularArcByCenterPoint.

    Bug fixLuciadFusion

    LMAP-5628
    The legacy icons for TLcdGUIIcon.GLOBE16 and TLcdGUIIcon.LAYERLISTCONTROL16 were not entirely the same as the old icons.

    11.0.04

    ImprovementLuciadFusion

    A new model has been added to the API. It allows indexing of data objects based on their properties, similar to the functionality in ILcdFeatureIndexedModel. Next to the new interface, ILcdDataObjectIndexedModel, two implementations have been added: TLcdDataObjectIndexedVectorModel and TLcdDataObjectIndexedAnd2DBoundsIndexedModel. Both implementations additionally implement ILcdIntegerIndexedModel. TLcdDataObjectIndexedAnd2DBoundsIndexedModel also implements ILcd2DBoundsIndexedModel.

    Bug fixLuciadFusion

    LMAP-5552
    The sample picture in Data/Ithaca/GeoTIFF for parametric orthorectification has been corrected to account for height differences between geodetic datums.

    11.0.03

    Bug fixLuciadFusion

    The parameters to specify the levels to produce in TLfnEngineFactory#createRasterSession were not correctly interpreted.

    Bug fixData Connectivity Manager

    LF-156
    DCM disallows fusion unless both the coverage and the assets have been committed to the Tile Store.

    11.0.02

    ImprovementWeather & Environment Standards

    LMAP-5559
    TLcdGRIB2ModelDecoder now supports complex packing with and without spatial differencing. Currently only general group splitting is supported (See GRIB 2 Table 5.4 for more details).

    ImprovementDefense Symbology

    The MIL-STD 2525c symbol groups Navy Group (1.X.4.1.7.*), Surface Decoy (1.X.4.1.8) and Unmanned Surface Vehicle (1.X.4.1.9) were not correctly rendered and have been fixed.

    Bug fixLuciadFusion

    LMAP-5615
    TLcdUTMZonePainter now respects the MGRS formatting conventions of the numerical northing and easting labels.

    Bug fixLuciadFusion

    LMAP-5610
    An exception could occur when using the getCreationClickCount method of the SLD painters during the creation of complex geometries.

    Bug fixLuciadFusion

    LMAP-5479
    The positioning of TIFF rasters based on TFW files with arbitrary rotations has been corrected. Additionally, sheared rasters now supported.

    Bug fixAdvanced Raster Services

    LMAP-5479
    The positioning of MrSID rasters based on SDW files with arbitrary rotations has been corrected. Additionally, sheared rasters now supported.

    Bug fixDefense Symbology

    The MCM Drone symbol is no longer supported in MIL-STD 2525c (1.X.4.1.3.5, S*S*CMMD--*****) according to the specification and has been removed.

    Bug fixDefense Symbology

    LMAP-5541
    The data model of MIL-STD 2525b/APP-6A has been altered slightly. The SignatureType data type no longer contains null as a possible value in its possible value enumeration. The property associated with this data type was already nullable, so the return value of signature can still be null, but it is no longer modeled explicitly using the possible values of SignatureType.

    Bug fixDefense Symbology

    The MIL-STD 2525c symbols Environmental Report Location (1.X.5.5, S*U*E-----*****), Dive Report Location (1.X.5.6, S*U*V-----*****) and Unexploded Ordnance Area (1.X.5.7, S*U*X-----*****) were not correctly rendered and have been fixed.

    Bug fixDefense Symbology

    The Underwater Decoy symbol in MIL-STD 2525b (1.X.5.3, S*U*WD----*****) was not yet rendered with an affiliation frame, a change which was introduced in the MIL-STD 2525b Change 2 specification.

    Bug fixDefense Symbology

    The rendering of the Signals Intelligence symbols Missile Downlink (MIL-STD 2525b: 4.X.2.1.2.9, I*A*SRMD----***), Air Traffic Control (MIL-STD 2525b: 4.X.4.1.2.1, I*S*SRAT----***) and Unknown (MIL-STD 2525b: 4.X.4.1.2.19, I*S*SRU-----***) in case of a Neutral affiliation was not correct.

    11.0.01

    ImprovementLuciadFusion

    LMAP-5605
    TLcdGXYNewController now supports layers that are not selectable.

    ImprovementLuciadFusion

    LMAP-5504
    TLcdColorMapCustomizer: when non-linear scale is used, the arrows can no longer be moved by dragging them with the mouse. A non-linear scale means a fixed pixel spacing between the levels, so when end users dragged the levels, they levels did not move visually. Only the level value was changed. This was confusing for end-users. To visually support this behavioral change, the arrows are replaced with lines if they cannot be moved.

    ImprovementLuciadFusion

    LMAP-5305
    The TLcdEarthGLLayerHeightProviderFactory can now create height providers that only return heights if there is actually height data available in the model. The Earth 3D painter paints a terrain at a default height if no height data is available in order to still allow visualizing the imagery data at this location. These default heights will not be used if the height provider is configured to use only valid heights.

    ImprovementTerrain Analysis Engine

    LMAP-5568
    The TLcdTerrainViewshedFactory and the TLcd3DMeshViewshedFactory now implement ILcdStatusSource, as the creation of viewshed for these factories can take up some time. This interface can be used to receive status updates from the factories.

    ImprovementDefense Standards

    LMAP-3076
    TLcdVPFGXYPainterProvider now provides a flag for enabling and disabling the painter cache. Caching reduces the time to paint an object but requires more memory. By default, caching is turned on.

    ImprovementDefense Standards

    Line and area features with geodetic coordinates are now linearly interpolated between their points, instead of geodetically (now identical to interpolation mode used for cartesian coordinates).

    ImprovementDefense Standards

    LMAP-5278
    The VPF model decoder can now decode VPF feature table files (*.PFT, *.LFT, *.AFT, *.TFT, *.CFT). The behavior of decoding a feature table file is identical to the decoding of the corresponding VPF feature class instance.

    ImprovementDefense Standards

    Some VPF database have small errors in their spatial indices, which might result in an applyOnInteract operation not finding one or more features within the specified bounds. The VPF model decoder has been improved to take these errors into account. Strict-interact applyOnInteract operations will now find the exact number of features, even for these erroneous databases. Non-strict-interact applyOnInteract operations might find slightly more results w.r.t. previous versions.

    ImprovementMaritime Standards

    The S-52 symbology is now by default configured to use the DAY_BRIGHT_COLORS color schema.

    ImprovementMaritime Standards

    LMAP-5417
    Support for visualization of textual information in S-52 has been improved: TE text instructions instructions, full text alignment and multiple text instructions per style are supported now. In order to visualize text instructions, ECDIS layers need to be labeled now (layer.setLabeled(true)).

    ImprovementMaritime Standards

    LMAP-5320
    com.luciad.format.s52.gxy.which allows to disable the painter cache. Disabling this cache may reduce memory usage significantly, but may increase the painting time.

    Bug fixLuciadFusion

    LF-108
    When fusing multiple raster assets with different geo-references, the assets can be incorrectly ordered. As a result, a more detailed asset may not be visible because it is hidden beneath a less detailed asset.

    Bug fixLuciadFusion

    The forceLinearInterpolation flag that can be specified when fusing vector data was sometimes not honored.

    Bug fixLuciadFusion

    POL geometries now invalidate their internal cache when the altitude values are adapted. This means, among other things, that the 3D representation of extruded POL geometries will be updated if the minimum or maximum height is changed.

    Bug fixLuciadFusion

    LMAP-5525
    When transforming large (width > 180 degrees) bounds defined in a geodetic reference to bounds in a geodetic reference with a different datum, it was possible to get an incorrect result.

    Bug fixLuciadFusion

    LMAP-5436
    Labels could disappear when the user zoomed in on a polyline that uses TLcdGXYOnPathLabelingAlgorithm to place its labels.

    Bug fixLuciadFusion

    LMAP-5519
    In the tool tip sample, the tool tip was not cleared from the view when the tool tip controller was disabled, by choosing the pan controller, for example.

    Bug fixLuciadFusion

    LUCY-3204
    Fixed a possible ConcurrentModificationException in the SLD painters.

    Bug fixAdvanced GIS Engine

    LMAP-5501
    In the geometry.constructive sample the result of the convex hull operation was not selected, as opposed to the results of other constructive geometry operations. This has been fixed.

    Bug fixWeather & Environment Standards

    LMAP-5567
    TLcdGRIB2ModelDecoder did not handle GRIB2 files which have adjacent rows stored in opposite direction correctly. This has been fixed.

    Bug fixWeather & Environment Standards

    LMAP-5473
    The GRIB2 model decoder now throws an exception with a meaningful message when decoding a file with an unsupported grid definition template number.

    Bug fixDefense Standards

    Attributes which have an enumerated list of possible values in the INT.VDT or CHAR.VDT table are no longer marked as an enumeration: these types may still have other, non-listed values. The displayable name of the codes is still available via the TLcdDataType.getDisplayName() method.

    Bug fixDefense Symbology

    LMAP-5557
    The label for the Unique Designation modifier was not displayed for the Biological and Chemical release event symbols in MIL-STD 2525b/c (respectively 2.X.3.4.7.1, G*MPNEB---****X and 2.X.3.4.7.2, G*MPNEC---****X).

    Bug fixDefense Symbology

    The Navigational Hazard symbol in APP-6A and APP-6B (1.X.4.6.2, S*S*ZN----*****) was erroneously drawn as a line symbol with 2 points instead of as a point.

    Bug fixDefense Symbology

    The Dummy Minefield symbol in APP-6A (2.X.2.1.3.6, G*C*MDN---*****) was erroneously drawn as an area instead of as a point.

    Bug fixMaritime Standards

    LMAP-2500
    A rounding error bug in the visualization of depth values has been fixed.

    Bug fixMaritime Standards

    LMAP-5601
    The default Z value of geometries that do not have a Z value in their data is now changed from Float.POSITIVE_INFINITY to Float.MAX_VALUE. This fixes a bug in which ECDIS data was deformed on the map, occurring with projections which are not capable of handling the infinite Z value.

    Bug fixMaritime Standards

    A bug in the rendering of traffic junctions has been fixed; these junctions are now visualized with the caution area symbol, as specified by the S-52 specification.

    Bug fixMaritime Standards

    Geometrical computations on some S-57 area features could sometimes cause unexpected errors in the JTS library used by the S-52 rendering engine. The engine has been made more robust to handle these errors.

    Bug fixMaritime Standards

    A rounding error in the decoding of sounding depths, which introduced an error of 0.1m in the visualization of sounding depth values, has been fixed.

    Upgrade considerationDefense Standards

    The ILcdDataObject interface of VPF domain objects no longer translates enumerated values into their equivalent description, as defined in the integer or character description table. It now always returns the original values as contained in the table data. The equivalent description is still available using the TLcdDataType.getDisplayName(aValue) method. To revert to the previous behavior, all calls to object.getValue(property) should be replaced with property.getDataType().getDisplayName(object.getValue(property)).

    11.0

    ImprovementLuciadFusion

    LF-37
    WMS capabilities: LuciadFusion themes are now automatically mapped to WMS group layers; coverages included in a theme appear as WMS layers under a group layer.

    ImprovementLuciadFusion

    Added new TLcdBalloonGUIFactory class that allows for some customization to the visual aspect of balloons. This class can be used in conjunction with ALcdBalloonManager. It can be found in the com.luciad.view.swing package.

    ImprovementLuciadFusion

    LMAP-5503
    TLcdGXYOverviewController can now fill its rectangle. This also allows moving the rectangle by dragging the inside.

    ImprovementLuciadFusion

    TLcdGXYPointListPainter: further improved the painting performance with regards to the functionality added in LMAP-3779.

    ImprovementLuciadFusion

    LF-102
    On Windows, occasional failure to delete a temporary staging directory is expected due to file locking.

    ImprovementLuciadFusion

    LMAP-5198
    A new sample has been added : touch.multiView. This sample demonstrates how to set up two different views that can be used by multiple users at the same time.

    ImprovementLuciadFusion

    A new package com.luciad.io.transport was introduced, offering API to provide an abstract layer for request-response based transports such as HTTP. The ILcdTransport interface will be used in new LuciadMap functionality whenever extensive HTTP access is needed, to allow developers to choose and/or customize their own HTTP transport implementation.

    ImprovementLuciadFusion

    LF-98
    The title and abstract properties of a WMS layer now take the value of the title and abstract properties of the corresponding LuciadFusion coverage.

    ImprovementLuciadFusion

    ALcdWMSProxy now implements ILcdDataSource, allowing it to be passed on to a ILcdDataSourceModelDecoder. Similarly, TLcdOGCWMSProxyModelDecoder now implements ILcdDataSourceModelDecoder. See the LuciadMap release notes for more information on these interfaces.

    ImprovementLuciadFusion

    LCD-395, LMAP-3236
    A new model element comparator property was added to TLcdGXYLayer, see setModelElementComparator(). The applyOnInteract methods, as well as the painting method will handle the object elements in the order determined by the set comparator.

    ImprovementLuciadFusion

    LuciadFusion now adds support to fuse and and distribute raster data representing values other than image and elevation. For instance, meteorological raster data defining temperature or wind speed. To support this use case, a new 'multivalued' coverage type is introduced. Additionally, support for the GRIB weather data format (V1, V2, bulletins) is added, as a primary use case for the new coverage type.

    The Fusion Client is extended with support for the new coverage type and the querying and visualization of fused GRIB data.

    ImprovementLuciadFusion

    LuciadFusion is extended with support for rasterizing vector data into raster coverages. The rasterization relies on a layer factory that should be available for the vector format.

    The Fusion Engine provides built-in support for rasterizing the vector data formats Shapefile (SHP), Vector Product Format (VPF), MapInfo (MIF/MAP), GML (Simple Features profile) and ECDIS. Through the API, additional formats can be plugged in.

    ImprovementLuciadFusion

    LuciadFusion now adds support to fuse and and distribute raster data representing values other than image and elevation. For instance, meteorological raster data defining temperature or wind speed. To support this use case, a new 'multivalued' coverage type is introduced. Additionally, support for the GRIB weather data format (V1, V2, bulletins) is added, as a primary use case for the new coverage type.

    The Fusion Engine is extended with support for the new coverage type and the GRIB data format.

    ImprovementLuciadFusion

    LuciadFusion now adds support to fuse and and distribute raster data representing values other than image and elevation. For instance, meteorological raster data defining temperature or wind speed. To support this use case, a new 'multivalued' coverage type is introduced. Additionally, support for the GRIB weather data format (V1, V2, bulletins) is added, as a primary use case for the new coverage type.

    The Data Server is extended with support for the new coverage type and the distribution of fused GRIB data through the Luciad Tile Service (LTS) and OGC Web Map Service (WMS) protocols.

    ImprovementLuciadFusion

    LuciadFusion is extended with support for vector data, enabling users to use very large vector data sets in applications. By applying tiling and the use of multiple levels of details, LuciadFusion allows to fuse vector data sources into a vector coverage, ready for high performance data streaming, visualization and analysis.

    To support the vector data use case, the Fusion Client introduces new API to query and visualize vector coverages.

    ImprovementLuciadFusion

    New API has been introduced giving users fine-grained control over the OGC Web Map Service provided by the Data Server. The class TLfnWMSRequestDispatcherFactory has been extended with a protected method createWMSCommandDispatcherFactory, allowing users to configure the WMS service. A default implementation TLfnWMSCommandDispatcherFactory is available in the API, which users can extend to customize the published capabilities, request handling and styling.

    ImprovementLuciadFusion

    LuciadFusion is extended with support for vector data, enabling users to use very large vector data sets in applications. By applying tiling and the use of multiple levels of details, LuciadFusion allows to fuse vector data sources into a vector coverage, ready for high performance data streaming, visualization and analysis.

    To support the vector data use case, the Data Server allows users to distribute and use vector data coverages through the Luciad Tile Service (LTS) and OGC Web Map Service (WMS) protocols.

    ImprovementLuciadFusion

    LuciadFusion is extended with support for vector data, enabling users to use very large vector data sets in applications. By applying tiling and the use of multiple levels of details, LuciadFusion allows to fuse vector data sources into a vector coverage, ready for high performance data streaming, visualization and analysis.

    To support the vector data use case, the Fusion Engine introduces new API to fuse vector data. The Fusion Engine factory class, TLfnEngineFactory, has been extended with the capability of creating a vector fusion session, next to a raster fusion session. This makes use of a new package com.luciad.fusion.vector, which contains a number of classes related to vector fusion handling and simplification.

    The Fusion Engine supports fusing vector data consisting of points, polylines and polygons. This comes with built-in support to import vector data from Shapefile (SHP), Vector Product Format (VPF), MapInfo (MIF/MAP) and GML (Simple Features profile). Additional formats can be plugged in as well, by providing an ALfnFormat implementation.

    ImprovementLuciadFusion

    A new icon set is now being used in all of LuciadMap, Lucy, and all Industry Specific and Additional Components. The icons are provided in the PNG format, supporting true color and alpha-transparency. A vector-based version of the new icons (in the SVG format) is also provided, to make it easy to customize the icons. See samples/resources/images/vectorIcons.

    ImprovementLuciadFusion

    The class com.luciad.gui.TLcdTranslatedIcon has been added. This can be used to translate an icon within its bounds. This is especially useful when working with composite icons.

    ImprovementLuciadFusion

    TLcdGXYTiledWMSProxyPainter and TLcdGLTiledWMSProxyPainter were introduced. These painters visualize ALcdWMSProxy objects in 2D and 3D views, respectively, using a tiled approach.

    ImprovementLuciadFusion

    ALcdWMSProxy now implements ILcdBounded. Also, TLcdOGCWMSProxyModelDecoder now produces models with a valid model reference.

    ImprovementLuciadFusion

    TLcdLonLatPointFormat now supports customizable formatting patterns.

    ImprovementLuciadFusion

    The interface ILcdStatusSource was added. Similar to ILcdChangeSource, objects implementing this interface can register and unregister implementations of ILcdStatusListener.

    ImprovementLuciadFusion

    The package com.luciad.format.bingmaps provides functionality to connect with Microsoft's Bing Maps imagery service.

    ImprovementLuciadFusion

    TLcdEarthTileRepository: now also supports retrieving the undecoded tile data by using a format with byte[] as its class and the name of the coverage native format.

    ImprovementLuciadFusion

    The tile set in a fusion raster model now also supports retrieving the undecoded tile data by using a format with byte[] as its class and the name of the coverage native format.

    ImprovementLuciadFusion

    The classes and interfaces of the com.luciad.format.object3d package were moved from the 3D Additional Component to LuciadMap. The package can now be accessed without any dependency on the 3D Additional Component.

    ImprovementLuciadFusion

    A new class for tiling SHP data has been added, TLcdSHPTiler. It allows tiling of both geometry and accompanying DBF files into smaller, tiled data. This class can be used to deal with very large SHP files, which do not fit into memory at once.

    ImprovementLuciadFusion

    A new interface for point lists was introduced, ILcdPointList2. It provides methods for accessing the individual X, Y and Z point coordinate data. The interface allows for low-memory implementations of point lists. Coordinates are stored as primitive arrays instead of point instances. At the same time, high-performance access to the coordinate data is maintained, without creating point instances for each coordinate access. ALcd2DEditablePolypoint and its extensions now implement the new interface. TLcdGXYPointListPainter has been updated to take advantage of this new interface.

    ImprovementLuciadFusion

    The SLD label painters now support more advanced labeling functionality that was introduced in LuciadMap 10.1. The TLcdSLDLabelingAlgorithm should be used to enable this. The basic SLD sample illustrates this.

    ImprovementLuciadFusion

    LMAP-1806
    TLcdGXYLabelPainter: reduced the number of calls to the #retrieveLabels method.

    ImprovementLuciadFusion

    A street labeling sample was added. This sample shows how a streets application can be built using a few techniques :
    • Level of detail painting
    • Level of detail labels
    • Dynamic model filtering
    • Dynamic label priorities

    ImprovementLuciadFusion

    TLcdContrastIcon has been added. This wrapper makes it possible to modify the contrast and brightness of the delegate icon.

    ImprovementLuciadFusion

    An extension of ILcdModelDecoder has been added, ILcdDataSourceModelDecoder. This interface allows you to decode a model based on an instance of ILcdDataSource, instead of a String. An ILcdDataSource is a generic marker interface that describes the origin of model data. For models decoded based on an ILcdDataSource, an extension of ILcdModelDescriptor is available. ILcdDataSourceModelDescriptor offers a method to return the ILcdDataSource the model is based on.

    ImprovementLuciadFusion

    TLcdEarthGXYRasterPainter: an oversampling factor can now be configured to improve the quality when the tile set needs to be transformed

    ImprovementLuciadFusion

    TLcdGXYOnPathLabelingAlgorithm now has an extra option to enable/disable label rotation, see TLcdGXYOnPathLabelingAlgorithm#setAllowRotation().

    ImprovementLuciadFusion

    The TLcdStrokeLineStyle class was added. This ILcdGXYPainterStyle implementation is based on the java.awt.Stroke class, and makes it possible to easily paint more complex lines, like dashed or dotted lines. TLcdStrokeLineStyleBuilder was added as well. This class makes it possible to easily create a set of pre-defined stroke based line styles.

    ImprovementLuciadFusion

    The Earth painters now also expose the number of tile requests that are still pending in their tile context. This can for example be used to show data loading progress to the user.

    ImprovementLuciadFusion

    LMAP-5362
    TLcdLockUtil now uses a fair ordering policy when using Java 1.6 and higher. This can be configured by calling TLcdLockUtil#setFairPolicy. Due to Oracle bug #6305337, it is strongly recommended to disable fair ordering when using Java 1.5.

    ImprovementLuciadFusion

    LMAP-5423
    The memory use of decoded SHP models has been reduced significantly. Both the memory use of coordinate data as well as attribute data has been reduced. It is no longer possible to downcast point instances returned by ILcdPointList.getPoint(int) in SHP models to ILcd2DEditablePoint; note that, although technically possible, this was neither allowed in previous versions. Points in these point lists should always be edited via the ILcd2DEditablePointList interface of their point list.

    ImprovementLuciadFusion

    LMAP-5422
    Performance of the SHP model decoder has been increased significantly.

    ImprovementLuciadFusion

    The DWITHIN spatial filter evaluation has been improved for queries on non-point objects. It is now sufficient for a part of the geometry to be within the specified distance.

    ImprovementLuciadFusion

    LMAP-4771
    The soft cache in the Earth 2D and 3D painters are disabled by default. This typically results in more stable painting performance.

    ImprovementLuciadFusion

    Exposed multi-valued data parameter and multi-valued raster coverage tile set on the API. This API is used by LuciadFusion for multi-valued data (GRIB).

    ImprovementLuciadFusion

    LMAP-3547
    TLcdEarthGLTerrainPainter: improved the level of detail choice algorithm. The new algorithm is enabled by default but the old algorithm can still be used by calling setClipLevelMode with value HEIGHT.

    ImprovementLuciadFusion

    The new packages com.luciad.format.gmlcommon.transformation, com.luciad.format.gml2.transformation, com.luciad.format.gml31.transformation and com.luciad.format.gml32.transformation introduce a new API that supports the transformation of a data model from and to GML. This API makes it possible to easily encode and decode a model as (from) GML. The sample samples.transformation.gml shows how this API works in practice.

    ImprovementLuciadFusion

    The new com.luciad.datamodel.transformation package introduces an API to support data transformations between different data models. Data transformations can be made invertible to support bidirectional conversions from source to target and back.

    ImprovementLuciadFusion

    The package com.luciad.format.sqlite.spatialite provides decoders and encoders to read and write SQLite SpatiaLite databases.

    ImprovementLuciadFusion

    LMAP-4561
    The performance of TLcdColorMap#retrieveColor has been improved when using many levels (for example 10000 levels and colors).

    ImprovementLuciadFusion

    TLcdUTM, ILcdCompositeProjection, ILcdZonalPoint and ILcd2DEditableZonalPoint were deprecated in favor of the new TLcdUTMGridSystem. This class makes it possible to easily create TLcdUTMGrid instances which can be used by the transformation framework. Similarly, a new TLcdUPSGridSystem class was added for UPS transformations.

    ImprovementLuciadFusion

    LMAP-5256
    The following methods were added to TLcdSphereRhumblineUtil :
    • rhumblineDistance()
    • rhumblineAzimuth2D()
    • rhumblinePointSFCT()

    ImprovementLuciadFusion

    LMAP-4058
    The TLcdAdvancedMapRulerController now offers undo and cancel functionality while creating a measured polyline, similar to the one in the TLcdGXYNewController2. Pressing backspace will remove last point of the polyline, and pressing escape cancels the creation entirely.

    ImprovementLuciadFusion

    TLcdGXYNewController2 now offers methods to undo, redo, cancel and commit operations.

    ImprovementLuciadFusion

    LMAP-5251
    A "visible" key has been added to ILcdAction. This key allows to create, for example, context-sensitive pop-up menus if the pop-up menu respects this key. By default, Swing does not respect this property. The ALcyActionBar extensions in Lucy do respect this property (see LUCY-2420 in the Lucy release notes).

    ImprovementLuciadFusion

    LMAP-5207
    TLcdDefaultModelXYZWorldTransformation did not always transform the z-coordinates correctly when using references with different datums. Also TLcdGeoReference2GeoReference now supports transforming from geocentric to geocentric.

    ImprovementLuciadFusion

    LMAP-4913
    A curved path labeling algorithm and label painter were added : TLcdGXYCurvedPathLabelingAlgorithm and TLcdGXYCurvedPathLabelPainter. Both classes depend on each other, and on the use of TLcdGXYCurvedPathLabelLocation to work correctly. The labels.placement sample demonstrates how to set up curved path labels.

    ImprovementLuciadFusion

    LMAP-3537
    TLcdGXYNewController2 now also updates the object under creation when dragging the mouse.

    ImprovementLuciadFusion

    LMAP-4882
    TLcdGXYArcBandPainter, TLcdGXYArcPainter, TLcdGXYCircleBy3PointsPainter, TLcdGXYCirclePainter, TLcdGXYCircularArcPainter and TLcdGXYEllipsePainter now use a different, customizable representation of the center point when it is not a handle.

    ImprovementLuciadFusion

    LMAP-3963
    TLcdGXYPointListPainter, TLcdGXYGeoBufferPainter, TLcdGXYBufferPainter and TLcdGXYLonLatHeightBufferPainter now allow snapping their own points to the last point.

    ImprovementLuciadFusion

    LMAP-5192
    TLcdCache now softly references cached values.

    ImprovementLuciadFusion

    LMAP-5190
    TLcdGXYGeoBufferPainter#getCursor now returns a more accurate cursor when resizing a buffer.

    ImprovementLuciadFusion

    LMAP-4981
    TLcdGXYOnPathLabelingAlgorithm now has the option to reuse previous label locations when calculating label positions. See TLcdGXYOnPathLabelingAlgorithm.setReusePreviousLocations() for more information.

    ImprovementLuciadFusion

    LMAP-5183
    TLcdGXYHaloLabelPainter now also implements ILcdGXYMultiLabelPainter.

    ImprovementLuciadFusion

    ALcdShapeList (and all classes extending from it) now implement ILcdCache.

    ImprovementLuciadFusion

    LMAP-3138
    TLcdGeodeticPen now uses the line type property when drawing arcs, making it possible to draw rhumb arcs. This is now used in the ruler controllers.

    ImprovementLuciadFusion

    LMAP-5161
    Improved the behavior of TLcdGeodeticPen#appendLineTo when the previous model position was not visible in the current world reference. This also improves the behavior of TLcdGXYPointListPainter for lines that are only partly visible in the world reference.

    ImprovementLuciadFusion

    LMAP-2671, LMAP-3554

    A new controller for interactive labels has been added: TLcdGXYInteractiveLabelsController. This new implementation replaces the existing interactive label functionality in the label painters. The new approach allows wrapping label painters, and can also be used for offset icons. The labels.interactive sample was adjusted to reflect these changes.

    Note : when switching to the new interactive labels implementation, it is important that every ALcdGXYInteractiveLabelProvider implementation fires the correct events. See ALcdGXYInteractiveLabelProvider.addLabelInteractionListener(), ALcdGXYInteractiveLabelProvider.fireInteractionStartedEvent() ALcdGXYInteractiveLabelProvider.fireInteractionStoppedEvent() and ALcdGXYInteractiveLabelProvider.fireInteractionCancelledEvent().

    ImprovementLuciadFusion

    LMAP-4425
    TLcdGXYLabelPainter, TLcdGXYPolygonLabelPainter, TLcdGXYPolylineLabelPainter: reduced the number of calls to the retrieveLabels method.

    ImprovementLuciadFusion

    LMAP-3183
    TLcdGXYStampLabelPainter#addComponentToGXYView now allows adding an the component to a non empty container.

    ImprovementLuciadFusion

    LMAP-5087, LMAP-3211, LMAP-4389, LMAP-4604
    TLcdEPSGReferenceParser now supports many more (unofficial) EPSG codes. These codes are collected by 'spatialreference.org'. Also a new reference parser was added that looks up the references online, see TLcdSpatialReferenceParser. Among the new supported references are a collection of HARN references. This enhancement also implements LMAP-3211, LMAP-4389 and LMAP-4604.

    ImprovementLuciadFusion

    LMAP-2554
    TLcdGeocentric2Geocentric was added. This ILcdModelXYZWorldTransformation can perform transformations between two ILcdGeocentricReferences. Also TLcdDefaultModelXYZWorldTransformation can now delegate to TLcdGeocentric2Geocentric.

    ImprovementLuciadFusion

    LMAP-3513
    TLcdEPSGReferenceFormatter and TLcdEPSGModelReferenceEncoder now support formatting/encoding an ILcdGridReference using a TLcdGeodetic projection that has the default parameters. This reference is formatted/encoded as an ILcdGeodeticReference.

    ImprovementLuciadFusion

    LMAP-5007
    TLcdGXYLabelPainter, TLcdGXYPolylineLabelPainter and TLcdGXYPolygonLabelPainter now allow changing the margin around the labels. Also, TLcdGXYPolylineLabelPainter and TLcdGXYPolygonLabelPainter now allow changing the text alignment.

    ImprovementLuciadFusion

    TLcdGXYStampLabelPainter, TLcdGXYPolygonStampLabelPainter and TLcdGXYPolylineStampLabelPainter now have a protected method pinPointSFCT to retrieve and customize the point where the pin attaches to the label.

    ImprovementLuciadFusion

    LMAP-4398
    TLcdGXYLabelPainter now draws pins for freely placed labels similarly to the pins of discrete label locations, attaching the pin to the middle of one of the label bounds' edges.

    ImprovementLuciadFusion

    LMAP-4386
    TLcdSphereUtil#closestDistanceToGeodesic() was added. This method makes it possible to calculate the closest distance between a point and either the complete geodetic or a geodetic line segment. This method works very similar to TLcdSphereUtil#closestPointOnGeodesic(), but it is more efficient because it does not need to calculate the closest point.

    ImprovementLuciadFusion

    LMAP-4410
    The TLcdWKTReferenceParser now also recognizes "D_MAPINFO" as a valid geodetic datum name, namely WGS_84.

    ImprovementLuciadFusion

    ILcdDisposable has been introduced, allowing to dispose of an object and letting it release any system resources that it is holding.

    ImprovementLuciadFusion

    LMAP-5035
    TLcdMgrsFormat was added. This Format implementation combines TLcdUtmMgrsUtil and TLcdUpsMgrsUtil.

    ImprovementLuciadFusion

    LMAP-5040
    TLcdUpsMgrsUtil can now have a separator character for UPS coordinate representations.

    ImprovementLuciadFusion

    LMAP-5038
    TLcdUpsMgrsUtil now also supports different ellipsoids.

    ImprovementLuciadFusion

    LMAP-3990
    TLcdUtmMgrsUtil now supports transforming UTM MGRS Strings directly to/from UTM coordinates, see TLcdUtmMgrsUtil#utmMgrs2UtmXY and TLcdUtmMgrsUtil#utmXY2UtmMgrs.

    ImprovementLuciadFusion

    LMAP-4856
    The gridSystems sample does not rely on TLcdGridReferenceUtil anymore. Instead it now uses the generic TLcdGeoReference2GeoReference transformation class.

    ImprovementLuciadFusion

    LMAP-5023
    Zip/tar decoding is now done with the help of commons-compress.jar instead of the custom tar.jar.

    ImprovementLuciadFusion

    LMAP-5078
    Added additional constructor to TLcdSHPModelDecoder, TLcdMIFModelDecoder and TLcdMAPModelDecoder that allows decoding different files with the same data model.

    ImprovementLuciadFusion

    Previously for updating an Earth tile you needed to have all data of this tile. However often you an implementation only needs some metadata (ex. a time stamp) to check if there is a new version available. For this purpose an ALcdEarthTile can now return a minimal version of itself. This allows implementing tile updating without keeping the tile data in memory. The existing implementation were updated to support this. In practice this means that the Earth painters require less memory.

    ImprovementLuciadFusion

    LMAP-4968
    TLcdGXYBoundsPainter, TLcdGXYArcPainter, TLcdGXYArcBandPainter, TLcdGXYCircleBy3PointsPainter and TLcdGXYEllipsePainter now also implement ILcdGXYPathPainter.

    ImprovementLuciadFusion

    LMAP-4569
    The clearImageCache() and clearImageCache(Object) methods were added to TLcdGXYHaloPainter. These methods make it possible to clear the cached images that are stored in the painter itself.

    ImprovementLuciadFusion

    The WFS server now supports additional GML output formats to export data using the GML simple features profile. This allows servers to either export as simple features by default, or otherwise to expose the additional output formats so they are available to clients.

    ImprovementLuciadFusion

    TLcdGXYLayer.paint() now uses ILcdGXYEditableLabelsLayer.applyOnInteract() and ILcdGXYEditableLabelsLayer.applyOnInteractLabels() internally. This makes it possible to customize the painting behavior by modifying the result of these methods.

    ImprovementLuciadFusion

    LMAP-4642
    ILcdGeoBuffer now supports points and (complex) polygons as base shape.

    ImprovementLuciadFusion

    The LuciadFusion HTTP transport needs to use the JVM HTTP proxy settings.

    ImprovementLuciadFusion

    LMAP-5427
    The TLcdWCSClient will now take the axis order of the used reference into account when encoding bounding box values in KVP requests.

    ImprovementLuciadFusion

    LMAP-5426
    The TLcdWCSClient will now try to detect GeoTiff encoded elevation data automatically. This allows elevation data to be properly used even if the server configuration fails to correctly describe the data.

    ImprovementLuciadFusion

    TLcdGXYPointListPainter now avoids painting lines that are completely outside the view. This improves the painting speed in some cases, for example when zoomed in on a map containing many polylines.

    ImprovementData Connectivity Manager

    LF-102
    On Windows, occasional failure to delete a temporary checkpoint file is expected due to file locking.

    ImprovementData Connectivity Manager

    LuciadFusion is extended with support for rasterizing vector data into raster coverages. The rasterization relies on a layer factory that should be available for the vector format.

    The Data Connectivity Manager provides built-in support for rasterizing any vector data format for which a layer factory is registered.

    ImprovementData Connectivity Manager

    LuciadFusion now adds support to fuse and and distribute raster data representing values other than image and elevation. For instance, meteorological raster data defining temperature or wind speed. To support this use case, a new 'multivalued' coverage type is introduced. Additionally, support for the GRIB weather data format (V1, V2, bulletins) is added, as a primary use case for the new coverage type.

    The Data Connectivity Manager is extended with support for the new coverage type and the GRIB data format.

    ImprovementData Connectivity Manager

    LuciadFusion is extended with support for vector data, enabling users to use very large vector data sets in applications. By applying tiling and the use of multiple levels of details, LuciadFusion allows to fuse vector data sources into a vector coverage, ready for high performance data streaming, visualization and analysis.

    To support the vector data use case, the Data Connectivity Manager offers the necessary GUI components to fuse and process vector data, and to manage a LuciadFusion Tile Store. Users can import vector data sources and fuse them into vector coverages. Through the user interface, fine-grained control is offered over the simplification approach applied by the Fusion Engine.

    ImprovementData Connectivity Manager

    Data Connectivity Manager now has functionality to visualize the extents of the assets and/or coverages in the tile store on a map.

    ImprovementData Connectivity Manager

    The drag and drop of a theme to a map (2D/3D view) now creates all the layers corresponding to the coverages contained in the theme; this feature replaces the previous extent layer creation, which was just representing the theme bounds.

    ImprovementData Connectivity Manager

    The Data Connectivity Manager now loads the proxy addon that allows the user to configure http proxy settings.

    ImprovementData Connectivity Manager

    Applying clipping shapes to assets is now more intuitive. Only selected objects (possibly from different layers) are used as a clipping shape. A new clipping shape overrides an existing one.

    ImprovementData Connectivity Manager

    The names of cloned resources are now more intuitive.

    ImprovementAdvanced GIS Engine

    The standard implementations of ILcd2DAdvancedBinaryTopology now also support ILcdBounds, ILcdArcBand, and ILcdGeoBuffer instances. Support for polylines, polygons and complex polygons with rhumbline properties has been added to TLcdEllipsoidalAdvancedBinaryTopology and TLcdSphericalAdvancedBinaryTopology.

    ImprovementDatabase Connectors

    The sample configurations now specify connection timeouts.

    ImprovementDatabase Connectors

    Models created by the TLcdOracleSpatialModelDecoder are now dataobject enabled. This means that all model elements implement ILcdDataObject and that the model's model descriptor implements ILcdDataModelDescriptor.

    ImprovementReal-time Engine

    LMAP-3082
    TLcdTrackModel : the method applyOnInteract2DBounds (for example used to paint) now works faster, especially when the number of rows and columns is high.

    ImprovementTerrain Analysis Engine

    Added the com.luciad.tea.viewshed package. This package contains functionality to calculate visibility and shadows for 3D scenes such as urban environments and terrain.

    ImprovementAviation Standards

    All SLD's used with AIXM 5.x should now be specified relative to the feature instead of the time slice. This makes it possible to define time based styles.

    ImprovementMaritime Standards

    S-57 features without geometry are now included in the S-57 model's elements() method.

    ImprovementMaritime Standards

    A new class, TLcdS52DisplaySettings is introduced. This class collects all S-52 rendering settings that were previously scattered over multiple S-52 components. All relevant S-52 components (symbologies, painter providers, ...) now take a TLcdS52DisplaySettings as a constructor argument. Components processing the same S-57 model or sharing the same rendering configuration should use the same TLcdS52DisplaySettings instance. It is advised to perform all S-52 rendering configuration on the central TLcdS52DisplaySettings instance, rather than using the existing methods on the individual components.

    ImprovementMaritime Standards

    LMAP-2019
    Two new classes were introduced for easier setup of an ECDIS environment: TLcdS57ProductConfiguration and TLcdS52ProductConfiguration. They allow to instantiate S-57 and S-52 components (decoders, painter providers, ...) with a single method call, hiding all the configuration details for the user of the API. These classes provide out-of-the-box support for the ENC and AML product types. Unless another S-57 product is used, users no longer need to perform S-57/S-52 component configuration manually.

    ImprovementMaritime Standards

    The properties of S-57 domain object can now be edited.

    ImprovementMaritime Standards

    Several performance improvements have been done in the S-52 rendering library. TLcdS52GXYCatalogueLayerList and TLcdS52GXYLevelLayerList have been deprecated, as they are more difficult to use and their performance is signficantly lower than that of TLcdS52GXYCatalogueLayer.

    ImprovementMaritime Standards

    A new class, TLcdS57Preprocessor, is available in the API. This class prepares S-57 models to be used with S-52: it precomputes a set of characteristics which are expensive to compute on-the-fly during painting, and stores them on the domain objects.

    ImprovementMaritime Standards

    The public API of S-57 has been extended to cover the full domain model. Nodes, edges and faces are now also available through the API. With the extended API, it is now possible to construct a fully functional S-57 model outside the S-57 decoders.

    ImprovementS-63

    TLcdS63ProductConfiguration is a new API class, allowing easy setup of an ECDIS/S-63 environment. It provides out-of-the-box support for the ENC and AML product types. Unless another S-57 product is used, users no longer need to perform S-57/S-52/S-63 component configuration manually (except for the S-63 permit data).

    Bug fixLuciadFusion

    LMAP-4977
    TLcdGXYPointListPainter now uses cached ILcdAWTPaths when calling appendAWTPath().

    Bug fixLuciadFusion

    ProgressUtilAWT and ProgressUtil now create their progress dialogs on the Event Dispatch Thread. This solves some rare deadlock problems when starting the samples.

    Bug fixLuciadFusion

    LMAP-5500
    TLcdLonLatGeoBuffer.contains2D() was several times slower than TLcdLonLatHeightBuffer.contains2D() in some cases. This has been fixed.

    Bug fixLuciadFusion

    TLcdGXYLonLatHeightBufferPainter relied on ILcdGXYContext#getGXYPen returning the same exact instance for multiple invocations. This has been fixed.

    Bug fixLuciadFusion

    LMAP-5498
    An IllegalArgumentException was thrown when computing the contour of a TLcdXYPolygon base shape containing 0 points. This has been fixed.

    Bug fixLuciadFusion

    LMAP-5482
    Some layers (TLcdUTMGridLayer, TLcdMapGeorefGridLayer) fired a PropertyChangeEvent with an incorrect property name :
    • ScaleRange instead of scaleRange
    • Visible instead of visible
    • Labeled instead of labeled
    • Label instead of label

    Bug fixLuciadFusion

    TLcdGeoTIFFModelEncoder now correctly exports rasters containing buffered tiles containing ARGB pixels.

    Bug fixLuciadFusion

    LMAP-5496
    TLcdDefaultModelXYZWorldTransformation swapped the model and world reference if they both were grid references.

    Bug fixLuciadFusion

    A bug in the rendering of halos,resulting in incorrect halos when printing maps with partly transparent images with halo, has been fixed.

    Bug fixLuciadFusion

    LMAP-5468
    The deprecated method ALcdWMSProxy#createImage now has a default implementation that delegates to ALcdWMSProxy#createImageInputStream, making it no longer required for extensions to provide an implementation.

    Bug fixLuciadFusion

    TLcdDatabaseModel now avoids soft-caching elements if maxCacheSize is 0.

    Bug fixLuciadFusion

    TLcdDatabaseModel#elements() no longer returns multiple copies of the same cached elements for large databases.

    Bug fixLuciadFusion

    LMAP-5460
    TLcdGeoTIFFModelDecoder now assigns a better default value to elevation rasters. This prevents a bug where using multiple elevation GeoTIFFs at the same time would result in invalid heights.

    Bug fixLuciadFusion

    Conversion of URLs to file names, which is required for some model decoders, has been corrected so that it also works on Windows Server 2008.

    Bug fixLuciadFusion

    LMAP-5512, LMAP-5523
    TLcdEarthGXYMultivaluedRasterPainter: sometimes icons near the edge disappeared when panning around and did not position its icons correctly.

    Bug fixLuciadFusion

    In some cases TLcdAWTPath produced ghost lines when using a small min and max ordinate value. This has been fixed.

    Bug fixLuciadFusion

    LF-96
    Stopping the fusion engine sometimes causes fatal errors (crashes).

    Bug fixLuciadFusion

    LF-95
    The WGS 84 bounds of a WMS layer corresponding to a LuciadFusion coverage was not correct in case the source coverage was defined a non-WGS84 reference.

    Bug fixLuciadFusion

    LF-94
    The fix for LF-89 had introduced a potential memory leak.

    Bug fixLuciadFusion

    LMAP-5375
    TLcdGXYPointListPainter#boundsSFCT() did not always return correct bounds.

    Bug fixLuciadFusion

    LMAP-2810
    TLcdGXYSelectControllerModel2 no longer tries to display the choose dialog for right clicks.

    Bug fixLuciadFusion

    LMAP-2518
    TLcdGXYMagnifierController: added a workaround for Sun bug #5070056, which caused the magnifier window to be displayed on top of dialog windows.

    Bug fixLuciadFusion

    LMAP-1981, LMAP-2024
    The cursor was often incorrect for interactive labels.

    Bug fixLuciadFusion

    LMAP-4775
    The TLcdGnomonic constructor that takes an ILcdPoint as argument switched the origin longitude and origin latitude.

    Bug fixLuciadFusion

    The short unit names of TLcdAngleUnit.DEGREE and TLcdAngleUnit.GRADIAN now correspond to the symbols defined in the international standard ISO 31-1.

    Bug fixLuciadFusion

    LMAP-1387
    TLcdGXYMagnifierController's keyboard shortcuts have been fixed.

    Bug fixData Connectivity Manager

    The Cancel Job button is added to the Tile Store Manager panel, and stop/cancel buttons behave consistent with the Job Manager panel.

    Bug fixData Connectivity Manager

    The metadata panel for assets uses the user distance unit for the pixel density, when using a grid reference coordinate system.

    Bug fixData Connectivity Manager

    The metadata panel did not update when refreshing a tile store.

    Bug fixAdvanced GIS Engine

    LMAP-5487
    The developer's guide now contains the Luciad support department contact information.

    Bug fixAdvanced GIS Engine

    LMAP-5360
    Topology query computations incorrectly assumed all points are ILcd2DEditablePoint. This has been resolved.

    Bug fixTerrain Analysis Engine

    Prevented TEA from generating duplicate warnings while creating point to point visibility for a large number of points.

    Bug fixDefense Symbology

    The tree node icons displayed in the echelon tree in the MIL-STD 2525b/APP-6A customizer were not correct for the echelons mobility wheeled and tracked, mobility towed combination and mobility amphibious.

    Bug fixDefense Symbology

    LMAP-5280
    The Static Depiction mine symbol in MIL-STD 2525b/c (2.X.3.1.6.1) is now rendered as a point symbol instead of an area, as defined by the specification.

    Bug fixRadar Connectors

    Fixed some wrong instance class specifications in the data model of ASDI.

    Bug fixRadar Connectors

    LMAP-5461
    The boundary crossing information is now available through the ILcdDataObject interface on the flight plans.

    Bug fixRadar Connectors

    LMAP-5241
    The ILcdDataObject implementation for collection properties is now correct: the values for collection properties are now always instances of the right collection class.

    Upgrade considerationLuciadFusion

    AssetPart has been renamed to RasterAssetPart for a better symmetry with VectorAssetPart. Constants in TLfnQuery have been renamed accordingly. References to TLfnQuery#ASSET_location and TLfnQuery#ASSET_boundingBox can be replaced with TLfnQuery#RASTER_ASSET_location and TLfnQuery#RASTER_ASSET_boundingBox respectively. Queries using the properties "lts:AssetPart/lts:Location/@link:href" and "lts:AssetPart/lts:BoundingBox" should be updated to "lts:RasterAssetPart/lts:Location/@link:href" and "lts:RasterAssetPart/lts:BoundingBox" respectively, matching a raster asset part specifically.

    Upgrade considerationLuciadFusion

    The Luciad Tile Service (LTS) protocol version has been incremented to1.0.1. Both client and server remain fully backwards compatible, there should be no impact on the client applications.

    Upgrade considerationLuciadFusion

    The Luciad Tile Service (LTS) protocol supported by the LuciadFusion Data Server has been changed compared to LuciadFusion V10.0. The old protocol will no longer be supported, requiring applications that use LuciadMap Fusion Client V11.0 to update the LuciadFusion Data Server to V11.0 accordingly.

    Upgrade considerationLuciadFusion

    The methods TLfnCompositeFormat.canCreateGXYLayer() and TLfnCompositeFormat.canCreateHeightProvider() have been removed. Instead, use ALfnAssetMetadata.getSupportedCoverageTypes(), and check if the result contains ELfnDataType.IMAGE or ELfnDataType.ELEVATION.

    Upgrade considerationLuciadFusion

    The signature of the constructor in TLfnTileStoreModelDescriptor has been slightly changed: the URI parameter has been replaced by an ALfnTileStore parameter. A TLfnTileStoreModelDescriptor instance is normally constructed automatically in TLfnTileStoreModelDecoder. Implementations that manually instantiated this class should now supply the ALfnTileStore parameter, which can be retrieved through a TLfnLTSClient (in the case of LuciadFusion Data Server connection) or through a TLfnFileSystemTileStore (in the case of a local file system Tile Store).

    Upgrade considerationLuciadFusion

    The class TLfnWMSRequestDispatcherFactory previously available in com.luciad.fusion.server has been moved to a newly introduced package com.luciad.fusion.server.wms, which groups classes specific to the support of the OGC Web Map Service protocol. Implementations that relied on this class can simply use the new import location.

    Upgrade considerationLuciadFusion

    The interfaces and classes ILfnTransport, TLfnRequest and TLfnResponse in com.luciad.fusion.client.transport and the class TLfnHttpAccessPoint in com.luciad.fusion.common.TLfnHttpAccessPoint have been moved to com.luciad.io.transport and renamed to respectively ILcdTransport, TLcdTransportRequest, TLcdTransportResponse and TLcdTransportAccessPoint. Implementations that relied on these interfaces or classes can simply use the new name and import location.

    Upgrade considerationLuciadFusion

    The TLfnRasterAssetMetadata has been changed to support more complex assets. Concretely the pixel density property has been moved to the RasterAssetParts. This change allows modeling file formats that can contain data at multiple locations and multiple levels of detail (ex. CADRG TOC file and ECDIS catalog file) as a single asset. Modeling these with a single asset is desired because an asset should conceptually be a logical group of data. The method TLfnRasterAssetMetadata#getPixelDensity still exists, but now takes the maximum of the pixel densities of the underlying RasterAssetParts.

    Upgrade considerationLuciadFusion

    TLfnEngineFactory: the engine factory now uses builder classes instead of builder methods for creating engine sessions. This allows for introducing additional parameters without breaking existing code and is also more convenient for optional parameters in general.

    Upgrade considerationLuciadFusion

    TLcdLonLatGridPainter can now make use of any ILcdLonLatFormatter instead of a TLcdLonLatFormatter. Users of the getLonLatFormatter method may have to add an extra instanceof operation and cast to make their projects compile again. Code overriding the setLonLatFormatter method will also have to change the argument type.

    Upgrade considerationLuciadFusion

    A new icon set is now being used in all of LuciadMap, Lucy, and all Industry Specific and Additional Components. The icons can easily be reverted to the old icons by adding lib/legacy/legacy_icons.jar to the classpath, before luciadmap.jar. Because the icons use a more advanced format now (PNG), and because all icons have now been consolidated in the LuciadMap.jar file, the file paths have been changed. If you are using TLcdGUIIcon or TLcdShapeIcon, you will automatically use the new icons. If you use the old icon filenames in your own code, it will be necessary to change them to the new file names. To make this easier, the file lib/legacy/legacy_icons.jar contains a mapping (icon_mapping.csv) from the old icon names to the newly used icon names.

    Upgrade considerationLuciadFusion

    The constant TLfnClientFactory#TRANSPORT_TYPE_APACHE_HTTP_CLIENT_401 has been renamed to TRANSPORT_TYPE_DEFAULT, to avoid explicit versions of third-party libraries in the API. Implementations that used this constant can simply replace it with the new name.

    Upgrade considerationLuciadFusion

    The lcd_wxs_common.jar is no longer part of the release. The necessary classes have been included in the luciadmap.jar

    Upgrade considerationLuciadFusion

    The lcd_wxs_common.jar is no longer part of the release. The necessary classes have been included in the luciadmap.jar.

    Upgrade considerationLuciadFusion

    LMAP-3087
    ILcdGXYContext now has a properties object that can be used to store context information across multiple invocations of a method with an ILcdGXYContext object. TLcdGXYNewController2 will keep its properties for as long as the same object is being edited.
    If you are affected by this change, consider extending from TLcdGXYContext or ALcdGXYContextWrapper. Note that implementing ILcdGXYContext from scratch is strongly discouraged.

    Upgrade considerationLuciadFusion

    A new method was added to the ILcdDataModelDisplayNameProvider interface, allowing to query the display name for a value within a type's domain. This may for example be used to translate coded enumeration values into human-readable names. Existing implementations of this interface may implement the new method by returning aValue.toString(), to keep their current behavior.

    Upgrade considerationLuciadFusion

    LMAP-5409
    An ILcdOWSRequest can now encode lists of values in a KVP request using a Java List. This allows the transport to correctly encode these lists using a "," as a separator between values.

    Upgrade considerationData Connectivity Manager

    The Data Connectivity Manager add-on infrastructure has been refactored to offer an API to the user, giving the possibility to create extensions and make customizations. The existing add-ons TLfnTileStoreAddOn and TLfnTileStoreOpenGLAddOn have been replaced by several new add-ons available in com.luciad.fusion.manager.addons:
    • com.luciad.fusion.manager.addons.engine.TLfnFusionEngineAddOn
    • com.luciad.fusion.manager.addons.tilestore.TLfnTileStoreAddOn
    • com.luciad.fusion.manager.addons.job.TLfnJobAddOn
    • com.luciad.fusion.manager.addons.jobconfiguration.TLfnJobConfigurationAddOn
    • com.luciad.fusion.manager.addons.metadataeditor.TLfnMetadataEditorAddOn
    • com.luciad.fusion.manager.addons.dataimporter.TLfnDataImporterAddOn
    This means that any addons.xml file that used to contain TLfnTileStoreAddOn and TLfnTileStoreOpenGLAddOn have to be replaced by the new add-on configuration.

    Existing workspaces will need to be created again to store the Fusion-specific items (Tile Store connections, layers, jobs, ...) according to the new add-on configuration.

    Upgrade considerationMaritime Standards

    The model structure created by TLcdS52ModelListBuilder has been changed slightly, to improve overall performance. The hierarchy has become: level - ENC cell - display priority - geometry type (instead of level - display priority - geometry type - ENC cell). The returned models now contain ILcdModelContainer instances rather than TLcdModelList instances.

    Upgrade considerationRadar Connectors

    LMAP-5241, LMAP-5247

    In order to fix the issues in the datamodel implementation, the datamodel itself has been changed for all data object properties that were collections.

    This change will not result in compile time errors, only runtime behavior has changed.

    You are only affected if you access following collection properties through the ILcdDataObject interface:

    • Category 1, Plot UAP:
      • RadarPlotCharacteristics
      • WarningErrorConditions
    • Category 1, Track UAP:
      • RadarPlotCharacteristics
      • TrackQuality
      • WarningErrorConditions
    • Category 244:
      • ADSBProjectedProfile
    • Category 30:
      • ReservedExpansionField
      • AllocatedSSRCodes
      • ARTASTrackNumber
    • Category 48:
      • ModeSMBData
      • WarningErrorConditions
      • RawDopplerSpeed
    • Category 62:
      • TrajectoryIntentData
      • ModeSMBData
      • ComposedTrackNumber
      • TimeOfDepartureArrival

    10.1

    10.1.29

    ImprovementAdvanced Raster Services

    TLcdSwissDHMMatrixModelDecoder now supports sampling strategies for determining the values for raster pixels (one of the cell corners, the minimum, the maximum, the average, or continuous bilinear interpolation).

    ImprovementAdvanced Raster Services

    TLcdSwissDHMMatrixModelDecoder now supports a slightly more accurate geoid vertical datum, in addition to the default ellipsoidal vertical datum.

    Bug fixMaritime Standards

    A bug in the detection of update files, introduced in the previous patch release, has been fixed.

    Bug fixMaritime Standards

    LMAP-5437
    TLcdS57CatalogueModelDecoder did not consider the locations of S-57 update files as specified in the catalogue. This meant that updates to cells in a catalogue would only be applied if the update files (.001, .002, ...) were in the same directory as the base file (.000). This has been fixed.

    10.1.28

    ImprovementTerrain Analysis Engine

    LMAP-5438
    Built in fail-safe for special extreme values of vertical angles to prevent overflow of calculation data on calculations beyond the limit of doubles in LOS computations.

    10.1.27

    ImprovementLuciadFusion

    LMAP-3084
    TLcdGXYLayer now allows setting an interact margin to better support model elements of which the visual representation is larger than their model bounds.

    10.1.26

    Bug fixLuciadFusion

    TLcdEarthLevelFallbackTileSet: did not fallback correctly in its synchronous produceTile method and its updateTile methods.

    Bug fixLuciadFusion

    The Earth painters now emit property change events in all their setters.

    Bug fixLuciadFusion

    LMAP-5403
    The TLcdPOLModelDecoder would fail if the first line of the pol file was '% Gtool', instead of '%Gtool'. This has been fixed.

    Bug fixAdvanced GIS Engine

    LMAP-5328
    A bug in the method setFallBackOnBoundsWithBounds of ALcd2DBasicBinaryTopologyMultiShape has been resolved.

    Bug fixAviation Standards

    LMAP-5290
    TLcdGXYOutlinePolylineLabelPainter's halo functionality was broken.

    Bug fixDefense Symbology

    LMAP-5419
    Circle-based symbol were not accurately drawn when a radius smaller than 1000 meters was used.

    Bug fixDefense Symbology

    LMAP-5384
    It is now possible to configure the color of each tactical symbol in APP-6A (symbol group 2.X) through ILcdAPP6AStyle#setColor. This was previously not possible for a few tactical symbols, such as the Point Of Interest symbol.

    10.1.25

    Bug fixLuciadFusion

    LMAP-3968
    Fixed gap/discontinuity on edges of geometry data when using a non-geodetic reference.

    10.1.24

    ImprovementLuciadFusion

    LMAP-5290
    Introduced a new protected method calculateLabelSegment in TLcdGXYPolylineStampLabelPainter to allow customizing the segment on which a label is placed.

    Bug fixLuciadFusion

    LMAP-5374
    TLcdGXYCompositeCurvePainter and TLcdGXYCompositeRingPainter now keep the composite curve or ring connected during editing when it contains composite curves.

    Bug fixLuciadFusion

    LMAP-3435
    TLcdRangeSlider: the slider labels did not reflect the disabled state of the component.

    Bug fixLuciadFusion

    LMAP-3556
    TLcdGXYBoundsPainter would catch and log TLcdOutOfBoundsExceptions when it should be passing them on. This has been fixed.

    Bug fixLuciadFusion

    LMAP-5205
    TLcdGXYTextPainter: fixed a problem with the 3-click creation mode.

    Bug fixLuciadFusion

    LMAP-3688
    In some cases, TLcdVVJPanel could throw an ArrayIndexOutOfBoundsException while painting.

    10.1.23

    ImprovementDefense Standards

    The performance of the face construction algorithm, which was reduced after a previous bug fix (LMAP-5058), has been improved again. This issue only affects area feature classes.

    Bug fixLuciadFusion

    LMAP-5356
    The warping raster painters no longer throw a StackOverflowError when the property oversamplingRate is set (bug introduced in version 10.0).

    Bug fixLuciadFusion

    LMAP-2414
    The WMS GIF encoder, TLcdGXYViewGIFEncoder, now properly supports images that have more than 256 colors in combination with transparency, regardless of the JDK version.

    Bug fixLuciadFusion

    LMAP-5361
    TLcdLabelConflictChecker was too strict when bounds touched each other, marking them as overlapping. This has now been fixed.

    10.1.22

    ImprovementLuciadFusion

    LMAP-5373
    Improved the performance of the functionality added in LMAP-5314.

    Bug fixLuciadFusion

    LMAP-5340
    The class TLcdWMSProxyGXYPainter did not accurately transform the view/world bounds in case of a TLcdGeodetic projection.

    Bug fixInfrastructure Standards

    LMAP-5371
    The DGN decoder now discards empty cells, as they cause the model bounds to be incorrect.

    Bug fixInfrastructure Standards

    LMAP-5365
    The DGN decoder sometimes didn't properly convert 3D arc start angles using the defined rotation matrix, causing the arcs to start at the wrong position.

    10.1.20

    ImprovementLuciadFusion

    LMAP-5341
    The new Java system property "luciadmap.ibutton" can be set to "usb" or to "serial" to only look for a hardware key on the corresponding port.

    Bug fixLuciadFusion

    LMAP-3741
    The GeoTIFF encoder used in the WCS now properly encodes elevation raster data as signed 16-bit GeoTIFF rasters.

    Bug fixLuciadFusion

    LMAP-4364
    TLcdGeoTIFFModelEncoder again takes into account a user-set output stream factory, even if the output is written to a file. Note that setting an output stream factory generally reduces the performance of the encoder, because it then creates a temporary file when encoding a GeoTIFF.

    Bug fixLuciadFusion

    LMAP-5353
    TLcdGXYCompositeRingPainter did not respect the edit (#setEditMode) and selection (#setSelectionMode) modes.

    10.1.19

    ImprovementDefense Symbology

    LMAP-1238
    The unit movement direction arrow can now be enabled/disabled through the method setLabelEnabled(String, boolean) in ILcdAPP6AStyle and ILcdMS2525bStyle. When disabled, the movement direction arrow will not be rendered, regardless of the value of the sMovementDirection modifier in ILcdAPP6ACoded and ILcdMS2525bCoded.

    Bug fixLuciadFusion

    LMAP-5350
    TLcdEarthGXYRasterPainter: the painted tiles in the tile context were sometimes not correct.

    Bug fixMaritime Standards

    A bug in the DEPARE conditional symbology procedure - edges of depth areas which might have been marked as unsafe incorrectly - has been fixed.

    10.1.18

    ImprovementLuciadFusion

    LMAP-5318
    Bounds information (either by implementing ILcdBounds or ILcdBounded) is now correctly exported to GML by the GML encoder.

    ImprovementLuciadFusion

    LMAP-5338
    TLcdGXYEllipsePainter now tries harder to maintain an optimized quality for axis-aligned ellipses (which is especially visible in printouts).

    Bug fixLuciadFusion

    LMAP-5339
    Polymorph links are now correctly exported to GML by the GML encoder.

    Bug fixLuciadFusion

    LMAP-5339
    Fixed a bug in TLcdXMLSchemaBasedEncoder that resulted in exceptions being thrown in case polymorph links are marshalled where the instance classes of the different types used in these links are the same.

    Bug fixDefense Symbology

    The rendering of the 'Movement Direction' property by the MIL-STD 2525b and APP-6A unit (icon) painters was not correct in case of a HQ (Headquarter) symbol and has been fixed. Additionally, the value Double.NaN is now ignored for this property; the movement direction arrow is only painted when a value that can be interpreted as degrees is used.

    Bug fixInfrastructure Standards

    LMAP-4716
    The DGN decoder is now also available for Solaris 64-bit platforms, both Intel and Sparc. For this the DGN decoder was updated to use version 3.4.1 of the ODA library for all platforms. The new ODA library version does not change any functionality.

    Bug fixMaritime Standards

    A potential threading issue in the S-52 rendering engine has been fixed.

    10.1.17

    ImprovementLuciadFusion

    LMAP-5331
    TLcdSLDSymbolizerPainterFactory now has a method to enable or disable the use of geometry caching by the painters that it creates. This allows for more memory-efficient painting of data through SLD.

    ImprovementDefense Symbology

    LMAP-5325
    The location of labels for area symbols in case of a centered label position (ILcdMS2525bStyle#CENTER, ILcdAPP6AStyle#CENTER) did not take into account the label bounds to fully center the label.

    Bug fixLuciadFusion

    LMAP-5322
    TLcdMAPModelDecoder and TLcdMIFModelDecoder now output region objects as complex polygons instead of as individual polygons. Previously, .mif or .map files that contained polygons with holes would be visualized incorrectly.

    Bug fixAdvanced GIS Engine

    LMAP-5321
    TLcdCartesianAdvancedBinaryTopology threw a nullpointerexception when using geodesic geometry. This has been resolved.

    10.1.16

    ImprovementLuciadFusion

    TLcdGXYGeoBufferPainter now also supports painting and editing buffers based on ILcdComplexPolygon shapes.

    ImprovementLuciadFusion

    LMAP-5314
    Improved the memory efficiency of the functionality added in LMAP-3779.

    ImprovementDatabase Connectors

    TLcdDB2SpatialModelDecoder has been made more robust in its parsing of model references.

    Bug fixLuciadFusion

    When transforming an ILcdCircularArcByCenterPoint to GML, the uom of the angle is now correctly set to degrees.

    Bug fixLuciadFusion

    LMAP-5313
    Data objects containing property values that are instances of LinkedList are now properly cloned.

    Bug fixInfrastructure Standards

    LMAP-5316
    Styling priorities were inconsistent with MicroStation in some cases: the "Overrides" symbology was used even if the "view level symbology" flag was off.

    Bug fixInfrastructure Standards

    LMAP-5317
    Methods TLcdDGNModelDecoder.setLevelSelection(long) and TLcdDGNModelDecoder.getLevelSection() have been deprecated.

    10.1.15

    Bug fixDatabase Connectors

    LMAP-5311
    TLcdOracleGeoRasterModelDescriptor#isElevation() was broken with the introduction of delayed loading of meta-data. It again returns true for elevation rasters.

    10.1.14

    ImprovementLuciadFusion

    TLcdEarthGXYRasterPainter: added a quality setting to allow trading quality for performance. By default the quality is only reduced for elevation data as this does not have any noticeable visual impact.

    ImprovementLuciadFusion

    Evaluating a filter condition is now more robust and does no longer throw exceptions when comparing a string value with a numeric value.

    ImprovementAviation Standards

    The 2D boundary computation for aggregated airspaces now only applies subtractions that cover the full vertical extent of the other parts. This ensures that the 2D visualization will always cover the full outline of the airspace.

    ImprovementMaritime Standards

    S-57 attributes with an enumerated type now have a refined data model type; for each attribute, there now is a separate enumerated type with all its possible values.

    ImprovementMaritime Standards

    Exceptions thrown by the TLcdS57ModelDecoder now include the offset in the input stream at which the decoding failed in their error message.

    Bug fixLuciadFusion

    There were some illegal dependencies from sample code on internal XML code.

    Bug fixLuciadFusion

    LMAP-5304
    TLcdAdvancedMapRulerController's default azimuth format no longer displays the UTF FFFD symbol for unknown azimuths.

    Bug fixLuciadFusion

    LMAP-5301
    TLcdGXYCircularArcPainter did not respect the arc's orientation when editing the arc end point.

    Bug fixLuciadFusion

    LMAP-5300
    It was possible that a ConcurrentModificationException is thrown during asynchronous painting in rare cases.

    Bug fixLuciadFusion

    LMAP-5298
    TLcdWMSProxyGXYLayer did not fire a property change event when a label, icon or painter provider was set.

    Bug fixLuciadFusion

    LMAP-5295
    Using TLcdGXYAsynchronousLabelPlacer caused the view to allocate memory more often than necessary. This occasionally resulted in small hitches due to garbage collecting.

    Bug fixLuciadFusion

    LMAP-5293
    TLcdSHPModelDecoder could throw NegativeArraySizeExceptions when decoding files that contain empty records. This has now been fixed.

    Bug fixLuciadFusion

    TLcdEarthGLTerrainPainter: changing the altitude exaggeration factor did not work correctly.

    Bug fixAdvanced GIS Engine

    LMAP-5223
    TLcdEllipsoidalBasicBinaryTopology used incorrect tolerances for some combinations of shapes. This has been resolved.

    Bug fixDatabase Connectors

    LMAP-5176
    Upgraded PostgreSQL JDBC driver to version 9.0 801, to ensure compatibility with PostgreSQL 9.0.

    Bug fixDefense Standards

    A bug in the method getUserFeatureAttributeIndex(String) of TLcdVPFFeatureClass was fixed; the method no longer throws an IndexOutOfBoundsException when an invalid argument is passed.

    Bug fixDefense Symbology

    LMAP-5285
    The supporting lines to assist with the creation of a Trip Wire symbol in APP-6A (2.X.2.2.1.12) and MIL-STD 2525b (2.X.3.1.10) were not correctly rendered.

    Bug fixMaritime Standards

    An issue with the decoding of polygons, causing polygons with inner holes to be closed incorrectly, has been fixed.

    10.1.13

    ImprovementLuciadFusion

    LMAP-5276
    ALcdWMSProxy now implements the ILcdCache interface so all caching can be controlled through that interface.

    ImprovementLuciadFusion

    LMAP-5274
    TLcdGXYMagnifierController now allows setting a filter to control what layers are included in the magnified window.

    ImprovementLuciadFusion

    TLcdSHPModelDecoder has been made more robust in its handling of records of which the actual length (as written in the record headers in the file) does not match the length defined by the specification of the shape type in question. For instance, a PointZ shape consists of 4 doubles (X, Y, Z, M) according to the specification, but some SHP files do not include the M value. Previously, the SHP decoder would read past the end of the record in such cases, resulting in failures to read subsequent records.

    ImprovementLuciadFusion

    LMAP-5201
    TLcdOrthographic now uses the ellipsoid for its calculations.

    ImprovementLuciadFusion

    LMAP-5282
    TLcdGeoReference2GeoReference and TLcdDefaultModelXYZWorldTransformation can now transform between any of the following references :
    • ILcdGeodeticReference
    • ILcdGeocentricReference
    • ILcdGridReference
    • ILcdTopocentricReference
    • ILcdGeoidReference
    Also a few issues were fixed where the z-component of a point or bounds was not transformed correctly when using references with non-equal datums. Furthermore TLcdDefaultModelModelTransformation was added. This implementation of ILcdModelModelTransformation can also transform between any of the 5 mentioned references.

    ImprovementDefense Symbology

    LMAP-5283
    The symbol hierarchy filter that can be set on a TLcdMS2525bObjectCustomizer and TLcdAPP6AObjectCustomizer now supports filtering out any node in the symbol tree without the need to specify the higher-up nodes.

    Bug fixLuciadFusion

    LMAP-5185
    TLcdTransformedHeightProvider incorrectly transformed the height in cases where a different horizontal datum was used. Also in some cases the transformation produced incorrect heights when only one of both references used a geoid.

    Bug fixLuciadFusion

    Improved the GML export for data types whose instance class extends ILcdShape but whose instances implement more concrete shape interfaces.

    Bug fixLuciadFusion

    LMAP-5281
    TLcdGeodeticDatum now correctly implements clone(). Before it was possible that the cloned TLcdGeodeticDatum returned different heights than the original one. Also TLcdGeodeticDatum now implements ILcdCloneable.

    Bug fixLuciadFusion

    LMAP-5273
    TLcdMAPModelDecoder and TLcdMIFModelDecoder now properly escape the names of types and properties when creating a TLcdDataModel. Previously, file or property names with spaces (or other characters that are invalid according to TLcdDataType) would result in an exception when decoding the file.

    Bug fixLuciadFusion

    LMAP-5267
    Fixed a bug in the Metadata encoder and decoder that resulted in incorrectly encoded and decoded code list values.

    Bug fixLuciadFusion

    LMAP-5269
    Fixed a bug in TLcdXMLSchemaBasedEncoder and TLcdXMLSchemaBasedDecoder that could result (under certain circumstances) in attributes getting incorrect values in case of restriction types inheriting attributes from multiple types in its inheritance hierarchy.

    Bug fixLuciadFusion

    LMAP-5269
    TLcdXMLSchemaBasedEncoder now always marshals attributes that are required and have a fixed value, even if they didn't receive a value in the domain object.

    Bug fixLuciadFusion

    LMAP-4827
    GML line string, linear ring and line string segment now apply linear interpolation also in geodetic models (this used to be geodesic interpolation). This is in accordance with the GML specification.

    Bug fixLuciadFusion

    Inserting a point in a GML LineString or LineStringSegment that contains an empty list as posGroup no longer throws an IndexOutOfBoundsException.

    Bug fixLuciadFusion

    TLcdEarthGLTerrainPainter: fixed a minor memory leak in the painter and improved the overall memory usage.

    Bug fixDefense Symbology

    LMAP-5272
    The rendering for a set of MIL-STD 2525b symbols in the Warfighting / Ground Track / Equipment category did not use the correct symbol frame in case of affiliation FRIEND; a rectangle was used instead of a circle.

    10.1.12

    ImprovementLuciadFusion

    LMAP-5264
    TLcdGeodeticPen#setLineType now also accepts TLcdLineType.CARTESIAN, allowing visualizing lines that are linearly interpolated in the model.

    Bug fixLuciadFusion

    LMAP-5268
    TLcdBNGUtil round-trips sometimes produced different strings. This is now fixed.

    Bug fixTerrain Analysis Engine

    LMAP-5050
    TLcdVVTerrainProfileModel sometimes updated itself too late after receiving a model change event. This could lead to exceptions when drawing the model in a vertical view.

    10.1.11

    ImprovementLuciadFusion

    LMAP-5260
    Improved documentation regarding the orientation of polygons that were retrieved using the TLcdContourFinder class.

    ImprovementLuciadFusion

    LMAP-5254
    TLcdLabelLocations: the performance of the setPainted method when the given label was already marked as painted has been improved.

    ImprovementDefense Symbology

    LMAP-5171
    The Emplacement symbol in APP-6A (2.X.2.2.3.4) and MIL-STD 2525b (2.X.3.3.4) can now be rendered with an echelon indication (automatically) and a label based on the Unique Designation modifier (automatically, if labels are enabled).

    Bug fixLuciadFusion

    LMAP-5255
    Calculating the anchor point using TLcdGXYPointListPainter.INSIDE_POLYGON did not account for the wrap-around of polygons.

    Bug fixDefense Symbology

    The methods hasValue(String) and hasValue(TLcdDataProperty) in TLcdEditableAPP6AObject and TLcdEditableMS2525bObject did not always return a correct result and have been fixed.

    10.1.10

    ImprovementLuciadFusion

    LMAP-5191
    The path labeling algorithms (TLcdGXYOnPathLabelingAlgorithm and TLcdGXYInPathLabelingAlgorithm) now avoid unneeded labeling for labels with a dimension of (0, 0).

    ImprovementLuciadFusion

    LMAP-5230
    TLcdGeoTIFFModelDecoder now reduces memory usage for unsigned 16-bits GeoTIFFs, by sharing grayscale color models.

    ImprovementLuciadFusion

    Exporting a shape that implements both ILcdCompositeCurve and ILcdRing now results in a GML Polygon (iso a GML Curve).

    ImprovementAviation Standards

    LMAP-5232
    Improved decoding support for procedures in the latest DAFIFT releases.

    Bug fixLuciadFusion

    LMAP-5244
    TLcdEllipsoid.geoc2llhSFCT() produced an incorrect result when transforming (0, 0, 0).

    Bug fixLuciadFusion

    LMAP-5248
    TLcdUpsMgrsUtil could produce incorrect MGRS strings for one specific grid square on the southern hemisphere. Also converting strings from this grid square to a lon lat point could produce incorrect results.

    Bug fixLuciadFusion

    LMAP-5249
    TLcdUpsMgrsUtil could produce points outside the Ups MGRS range. Also for points near the borders MGRS conversion round-trips did not always produce consistent results.

    Bug fixLuciadFusion

    TLcdEarthGXYViewTileSet: the scale of the off-screen view is now also correct scale when the tileset has a geodetic reference.

    Bug fixLuciadFusion

    LF-89
    The Fusion Client's support for GZip content encoding was broken.

    Bug fixLuciadFusion

    LMAP-5160
    TLcdGXYGeoBufferPainter: when creating a grid type polyline geobuffer an exception was thrown. This has been fixed.

    Bug fixLuciadFusion

    LMAP-5223
    The correct tolerances are used for intersection computations for any combination of shapes.

    Bug fixLuciadFusion

    LMAP-2453
    TLcdGXYArcBandPainter#paintEditingLabels now paints the label in a more suitable location when translating multiple arc bands.

    Bug fixLuciadFusion

    LMAP-5231
    The raster painters now invalidate their caches if the contrast is changed.

    Bug fixLuciadFusion

    LMAP-5228
    TLcdLayer now clears the selection when a new model is set.

    Bug fixLuciadFusion

    LMAP-5213
    Fixed NPE in the Earth 3D painters when they released their resources.

    Bug fixReal-time Engine

    LMAP-5239
    TLcdSimulator now always correctly restores the autoUpdate property of the associated views.

    Bug fixReal-time Engine

    TLcdSimulator : when the simulator model is initialized with a begin date in the past, the simulator will now reset to the start date of the simulator model instead of the end date.

    Bug fixAviation Standards

    LMAP-5227
    The TLcdAIXM51ModelEncoder and TLcdAIXM5ModelEncoder now respect the format constraints for extensions of xsd:decimal types imposed by the different patterns in the type definition in the AIXM schema. Before this fix, values of such types (ValPCNBaseType, ValFrictionBaseType and CodeRNPBaseType (for AIXM51), CodeRNPType, NoNumberType, NoSequenceType, ValPCNType and ValFrictionType (for AIXM5)) were just formatted as doubles. Depending on the value, this could result in schema-invalid documents being generated by the encoder.

    Bug fixAviation Standards

    LMAP-5233
    The canDecodeSource method of the ARINC decoder now only reads a fixed number of bytes from the file. This avoids reading too many bytes when files without new lines are tested with this method.

    Bug fixAviation Standards

    An exception could occur when painting detailed labels for navaids or airspaces. This has been fixed.

    10.1.09

    ImprovementMaritime Standards

    LMAP-5099
    TLcdS52SymbologyDecoder now provides a flag to configure whether the decoded symbology should use anti-aliasing for its icons or not. Enabling anti-aliasing will result in better-looking icons, but might have a small impact on rendering performance. It is disabled by default.

    Bug fixLuciadFusion

    LMAP-5215
    TLcdDatabaseModel#dispose() no longer throws a ClassCastException if its model descriptor implements ILcdDatabaseModelDescriptor without extending TLcdDatabaseModelDescriptor.

    Bug fixLuciadFusion

    LMAP-5212
    TLcdBufferedTile now also properly sets the default signedness for 16-bits rasters if the metadata are loaded lazily.

    Bug fixLuciadFusion

    LMAP-3693
    TLcdGXYTextLabelPainter: fixed a problem where handles were still visible while the text was not.

    Bug fixLuciadFusion

    LMAP-5202
    TLcdGXYRoundedPointListPainter#isTouched did not respect the context sensitivity for the line.

    Bug fixLuciadFusion

    LMAP-5200
    TLcdGXYCirclePainter, TLcdGXYEllipsePainter, TLcdGXYArcBandPainter, TLcdGXYArcPainter, TLcdGXYCircularArcPainter, and TLcdGXYCircleBy3PointsPainter now display the center point in the same circumstances.

    Bug fixMaritime Standards

    TLcdS57ModelDecoder does no longer fail on reading invalid issue dates in ENC cells. Invalid issue dates are ignored now.

    10.1.08

    ImprovementAviation Standards

    LMAP-5162
    The computation of the geometry of aggregated airspaces has been made more robust for surfaces that use circular arcs.

    Bug fixLuciadFusion

    LMAP-5199
    TLcdJPEG2000ModelDecoder and other model decoders that rely on native libraries now properly handle files on the class path (which was failing on Windows and if the names contained spaces).

    Bug fixLuciadFusion

    LMAP-5197
    TLcdCircularArcByCenterPointConnector did not calculate the correct arc angles

    Bug fixLuciadFusion

    LMAP-5195
    TLcdGXYAsynchronousLayerWrapper#getBounds() now properly delegates runtime exceptions thrown by the wrapped layer's getBounds() method.

    Bug fixLuciadFusion

    LMAP-4302
    ALcdGXYPen#cartesianModelDistance did not consider the scale of the references.

    Bug fixLuciadFusion

    LMAP-4999
    TLcdGXYGeoBufferPainter: it was impossible to remove a point from a polyline geobuffer with 3 points.

    Bug fixLuciadFusion

    LMAP-5170
    It was possible to get into an infinite loop when transforming bounds from a geodetic reference to a grid reference using a TLcdPolyconic projection.

    Bug fixLuciadFusion

    LMAP-5164
    TLcdGXYHaloLabelPainter2 did not correctly cache images when used with multiple labels and/or sub-labels.

    10.1.07

    Bug fixLuciadFusion

    LMAP-5159
    TLcdGXYArcPainter could display stray lines when used with degenerate arcs.

    Bug fixLuciadFusion

    LF-87
    Modifications to the Tile Store were not always correctly protected against system crashes and power outages.

    Bug fixLuciadFusion

    LMAP-5166
    Fixed issue with certain temporary files created by the KML module that were not deleted correctly.

    Bug fixLuciadFusion

    Certain filter objects containing XPath expressions were encoded incorrectly such that the namespaceURI and the namespace prefix was swapped. This only occurred when encoding using the Xerces XMLOutputFactory.

    Bug fixLuciadFusion

    LMAP-2028
    TLcdFeatureIndexedAnd2DBoundsIndexedModel: when a model listener removed itself as a listener from the model the next listener was skipped.

    Bug fixLuciadFusion

    LMAP-4899
    Fixed the model descriptor of MTM models such that it returns correct data models and model element types depending on the default level and cumulative property.

    Bug fixLuciadFusion

    LMAP-5158
    TLcdGXYPointListPainter: snapping was not immediately visualized (regression due to LMAP-4994).

    Bug fixLuciadFusion

    LMAP-5152
    TLcdGXYViewPlanarImage, TLcdGXYViewBufferedImage, TLcdGXYViewCanvas and TLcdGXYViewPanel did not throw a property change event when changing the background.

    Bug fixLuciadFusion

    LMAP-5151
    When calling setSelectable(false) on an asynchronous layer wrapper, the existing selection was not automatically cleared.

    Bug fixLuciadFusion

    TLcdGXYPointListPainter could throw exceptions when used with point lists that were not entirely visible in the projection.

    Bug fixLuciadFusion

    LMAP-5147
    TLcdGeoReference2GeoReference could produce incorrect transformed bounds when transforming from a TLcdGeodeticReference to an other TLcdGeodeticReference.

    Bug fixLuciadFusion

    ALcdGXYPen: in some cases, long straight lines were not painted.

    Bug fixInfrastructure Standards

    LMAP-5165
    TLcdDGNLevelSymbology now also exposes the level number next to the level ID and level name. It is accessible through getLevelNumber().

    Bug fixInfrastructure Standards

    LMAP-5157
    Filtering levels larger than 65 on a V8 file worked on level IDs instead of level numbers.

    Bug fixInfrastructure Standards

    LMAP-5156
    Filtering mslink attributes on database linkage type (user attribute types) was wrong in some cases.

    10.1.06

    ImprovementAviation Standards

    LMAP-5145
    The DAFIFT decoder will no longer log a warning when a model has no bounds. Only when errors occurred during decoding of that model, a warning will be logged. Models can have no bounds if you for instance decode NDB navaids for a region that has no NDB navaids.

    ImprovementDefense Symbology

    LMAP-5141
    The label bounds for the aviation line symbol Standard-Use Army Aircraft Flight Route (SAAFR) in APP-6A (2.X.2.1.2.2.3) and MIL-STD 2525b (2.X.2.2.2.3) is now calculated more accurate, to optimally support label decluttering.

    ImprovementDefense Symbology

    LMAP-5140
    The character limit for the altitude/depth text modifier has been increased from 6 to 12 characters, to allow configuring both a minimum and maximum altitude/depth value - this is for example used for symbols such as the Standard-Use Army Aircraft Flight Route (SAAFR) symbol.

    ImprovementDefense Symbology

    The Date/Time field in the APP-6A and MIL-STD 2525b customizer no longer shows the preview value, to avoid confusion about the actual object's properties.

    Bug fixLuciadFusion

    LMAP-5143
    The license servers on Linux and Solaris now ignore spurious ^M characters in license files, caused by some unzipping tools.

    Bug fixLuciadFusion

    LMAP-5135
    ILcdGXYPen's append*LineTo implementations did not append the first point of the line when applied to a path with a polygon break. This caused TLcdGXYRoundedPointListPainter to incorrectly render complex polygons.

    Bug fixLuciadFusion

    LMAP-5122
    TLcdSphereRhumblineUtil.intersectionGeodesicRhumblineSFCT() did not always produce an intersection point when the geodesic line segment is completely located on a pole, reducing it to a point.

    Bug fixAdvanced Raster Services

    LMAP-5120
    TLcdDIMAPModelDecoder no longer prints out some debug messages to System.out.

    Bug fixDefense Symbology

    LMAP-5146
    The plus-minus sign, used to represent the Reinforced/Reduced value for the Reinforcement text modifier, was not correctly encoded, resulting in an invalid character in the corresponding label.

    Bug fixDefense Symbology

    LMAP-5139
    The APP-6A and MIL-STD 2525b customizer did not properly show the content of the Reinforcement and Evaluation Rating combo boxes when in disabled state.

    Bug fixInfrastructure Standards

    LMAP-5133
    Sometimes only one attribute of a tagset was loaded, even if the tagset contained more than one.

    Bug fixMaritime Standards

    A memory leak in TLcdS52GXYCatalogueLayer has been fixed.

    Bug fixMaritime Standards

    LMAP-5136
    As of 10.1, the textual information of lights objects was no longer rendered when labeling was enabled. This has been fixed.

    10.1.05

    ImprovementLuciadFusion

    LMAP-5119
    TLcdGXYOnPathLabelingAlgorithm: improved label positioning on path corners, and path start and end points.

    ImprovementLuciadFusion

    LMAP-5117
    TLcdGXYLocationListLabelingAlgorithm, TLcdGXYOnPathLabelingAlgorithm and TLcdGXYInPathLabelingAlgorithm now log a warning message when they are used in combination with a label painter that does not implement ILcdGXYLabelPainter2.

    ImprovementLuciadFusion

    LMAP-5118
    TLcdGXYOnPathLabelingAlgorithm now has an ABOVE and BELOW AlignmentMode.

    ImprovementLuciadFusion

    The performance of computations with geoid vertical datums has been improved significantly.

    ImprovementLuciadFusion

    LMAP-5113
    TLcdDMEDModelDecoder provides a new property includeDMEDLevel to specify whether the DMED thumbnail rasters should be included in the decoded multilevel rasters. The decoder now also removes blank DMED rasters if checkTilesImmediately is set.

    ImprovementLuciadFusion

    LMAP-5083
    TLcdGXYPointListPainter.setAnchorPointLocation() can now be called with the 'INSIDE_POLYGON' constant. When using this option, the painter will try to find an anchor point location inside the polygon. The same option was added to TLcdGXYSurfacePainter. TLcdGXYSurfacePainter.setAnchorPointLocation() can now be called with 'INSIDE_SURFACE' constant.

    ImprovementLuciadFusion

    LMAP-5107
    TLcdSLDGXYPainterFactory and TLcdSLDSymbolizerPainterFactory are now cloneable.

    ImprovementLuciadFusion

    Constructive geometry operations preserve the shape of the inputs better.

    ImprovementLuciadFusion

    LMAP-5098
    Improved the javadoc for property accessors (getters and setters) on the domain model objects.

    ImprovementLuciadFusion

    LMAP-5079
    The geodesicArea() and orientation2D() calculations in TLcdSphereUtil, TLcdEllipsoidUtil and TLcdEllipsoid are now numerically more stable. Calculating the area or orientation for small polygons (smaller than 100m²) gives better and consistent results now.

    ImprovementTerrain Analysis Engine

    LMAP-5060
    Added warnings in TLcdLOSCoverageFactory for the case when results are wanted in altitude mode ABOVE_GEOID, where the target geo reference does not include information about the geoid itself.

    ImprovementAviation Standards

    LMAP-5098
    Improved the javadoc for property accessors (getters and setters) on the domain model objects.

    Bug fixLuciadFusion

    LMAP-5125
    TLcdGXYInPathLabelingAlgorithm would sometimes place a label at (0, 0) if no valid location could be found, instead of omitting the label.

    Bug fixLuciadFusion

    LMAP-5121
    Since LuciadMap 10.1, TLcdEPSGReferenceParser did not create TLcdUTMGrid instances anymore, but the equivalent TLcdGridReference instances. This is now fixed.

    Bug fixLuciadFusion

    LMAP-5116
    ALcd2DEditableBounds#setTo2DIntersection no longer shrinks the bounds to size 0x0 if the input bounds only overlap at their edges.

    Bug fixLuciadFusion

    LMAP-5114
    TLcdGXYInPathLabelingAlgorithm sometimes did not place a label when zoomed out a lot.

    Bug fixLuciadFusion

    LMAP-4994
    TLcdGXYPointListPainter: translating complex polygons could sometimes trigger an exception. The fix also improves the performance when translating complex polygons with many sub-polygons.

    Bug fixLuciadFusion

    LMAP-5110
    TLcdSphereUtil.closestPointOnGeodesic() could return points that do not lie on the geodesic.

    Bug fixLuciadFusion

    LMAP-5057
    GML models created by a TLcdGMLModelDecoder (including the version specific model decoders) are thread-safe for concurrent reading.

    Bug fixLuciadFusion

    LMAP-4005, LMAP-5034, LMAP-4778
    Fixed a number of issues when creating an TLcdImageIcon using an Image.

    Bug fixLuciadFusion

    LMAP-5101
    When using TLcdSphereRhumblineUtil.intersectionGeodesicRhumblineSFCT(), the intersection of a geodesic with polar end and a parallel could yield an intersection interval instead of an intersection point.

    Bug fixLuciadFusion

    LMAP-5100
    TLcdEllipsoidUtil.intersection2DLineSegments() now gives more correct results when the line segments touch each other in one of the poles.

    Bug fixLuciadFusion

    LMAP-5095
    TLcdSphereUtil.intersection2DLineSegments() is now more consistent when the intersection point lies very close to one of the points of one of the geodetic line segments. In that case the intersection point is snapped to that point.

    Bug fixLuciadFusion

    LMAP-5096
    Warping raster painters no longer temporarily change the default value of some types of rasters they paint, to avoid problems with the rasters in different threads.

    Bug fixLuciadFusion

    LMAP-5091
    The definitions for the Bessel 1841 ellipsoid in TLcdJPLEllipsoidFactory and TLcdDMA1987bEllipsoidFactory were not consistent.

    Bug fixLuciadFusion

    LMAP-5090
    Licenses based on MAC addresses should now also work on Windows if the network is disconnected.

    Bug fixLuciadFusion

    LMAP-5042
    Fixed the interpretation of start and end angle for ArcByCenterPoint in case of inverse lon-lat coordinate systems.

    Bug fixAviation Standards

    Fixes the exceptions that were thrown by the TLcdAIXM51MarkingBuoyTimeSlice#designator, TLcdAIXM51FASDataBlock#codeICAO, TLcdAIXM51FASDataBlock#referencePathIdentifier and TLcdAIXM51FASDataBlock#routeIndicator, TLcdAIXM5Association#remoteSchema properties accessors.

    Bug fixDefense Standards

    LMAP-5103
    TLcdUSRPModelDecoder now accepts the 01.GER extension of the optional georeference file (which always specifies the WGS84 geodetic datum).

    Upgrade considerationLuciadFusion

    LMAP-5094
    The getters for properties of type gco:Date_PropertyType were incorrectly defined to have return type String. This has been changed to java.xml.datatype.XMLGregorianCalendar. For the same reason, the type of the value parameter of the according setters was corrected to java.xml.datatype.XMLGregorianCalendar (also used to be String). The affected properties are TLcdISO19115Citation.editionDate, TLcdISO19115Date.date, TLcdISO19115MaintenanceInformation.dateOfNextUpdate and TLcdISO19115Metadata.dateStamp.

    10.1.04

    ImprovementLuciadFusion

    TLcdEllipsoidUtil.geodesicArea() and TLcdEllipsoidUtil.orientation2D() were added.

    ImprovementAviation Standards

    The AIXM 5.0 and 5.1 XPath label painters now correctly use the default time slice provider to retrieve a time slice from the feature. This time slice is now used as the object on which the expressions are evaluated. This is consistent with all other painters.

    ImprovementDefense Standards

    The library name has been removed from the VPF data model name, as it is not relevant for the identification of the data model (different libraries might share the same data model). The VPF product type is now always included in the data model name using uppercase style, to ensure that databases using different case will still share the same data model.

    Bug fixLuciadFusion

    LMAP-5066
    TLcdEllipsoidUtil#orientation2D() did not always produce correct results for polygons spanning a large latitude range in some rare cases.

    Bug fixLuciadFusion

    LMAP-5077
    When using TLcdGXYLabelPainter, multi-line labels were painted on an incorrect location during editing when the label was placed at the EAST or WEST location.

    Bug fixLuciadFusion

    LMAP-5075
    The orientation of polygons could be incorrect in cases where the polygon contains the same point more than once.

    Bug fixLuciadFusion

    TLcdEarthGLLabelPainter invoked its delegate label painter with an ILcdGLContext which incorrectly suggested that labeling was disabled. This has been corrected.

    Bug fixLuciadFusion

    LMAP-5081
    TLcdGXYBufferPainter did not correctly paint buffers when the OUTLINED_OPEN or the OUTLINED_FILLED_OPEN modes were used.

    Bug fixLuciadFusion

    LMAP-5051, LMAP-5109
    TLcdSphereUtil.intersects2DLineSegments() and tLcdSphereUtil.intersection2DLSSFCT() produced incorrect results in some cases. This is now fixed. This fix also improves the performance of these methods.

    Bug fixLuciadFusion

    LMAP-5071
    The intersection of geodesic and rhumbline could sometimes yield incorrect results when using TLcdSphereRhumblineUtil.

    10.1.03

    ImprovementLuciadFusion

    LMAP-5061
    TLcdSphereUtil.geodesicArea() and TLcdSphereUtil.orientation2D() can now also handle degenerate polygons, for example self-intersecting polygons.

    ImprovementLuciadFusion

    LMAP-5049
    Improved painting speed of MultiGeometry elements in 3D. The speed improvement depends on the data, but generally the more geometries were contained inside the MultiGeometry, the greater the performance boost.

    ImprovementLuciadFusion

    LMAP-4867
    TLcdUTMUtil was added. This utility class can be used to format and parse lon lat points to/from a UTM String.

    ImprovementLuciadFusion

    LMAP-5026
    The performance of TLcdUtmMgrsUtil has been improved for most input Strings.

    ImprovementGraph and Routing Engine

    TLcdGDFModelEncoder and TLcdGDFMultiLevelTiledModelEncoder now allow configuring an ILcdOutputStreamFactory.

    ImprovementDefense Standards

    LMAP-3821
    com.luciad.format.vpf.TLcdVPFModelDecoder now offers a flag setUseNullValues, which allows to configure the behavior of ILcdFeatured in the case of null values. If the flag is set, null values will be represented by a null object, otherwise, they will be represented by the special value assigned to them by the VPF specification. It is turned off by default, for backwards compatibility.

    ImprovementMaritime Standards

    LMAP-4825
    Changes of the S-52 C-S Maintenance document Number 7, October 2009, have been applied on the S-52 symbology implementation.

    ImprovementMaritime Standards

    TLcdS52GXYCatalogueLayer no longer depends on the JTS library. Only the deprecate TLcdS52GXYCatalogueLayerList still uses the JTS library.

    Bug fixLuciadFusion

    TLcdEarthModelDescriptor: fixed NPE when the source name is null.

    Bug fixLuciadFusion

    LMAP-5052
    When using TLcdSphereRhumblineUtil.intersectionGeodesicRhumblineSFCT(), the intersection of a parallel and a geodesic touching this parallel sometimes returned empty results.

    Bug fixLuciadFusion

    LMAP-5055
    TLcdGXYMagnifierController did not show the correct magnified region for one repaint after enabling the controller.

    Bug fixLuciadFusion

    LMAP-5037
    The height of the bounds of a TLcdLonLatHeightPolyline were sometimes twice too large.

    Bug fixLuciadFusion

    LMAP-5032
    TLcdUtmMgrsUtil.utmMgrs2LonLat() could throw a ParseException when passing Strings without a numerical location, for example "4QFJ". This is now solved.

    Bug fixLuciadFusion

    LMAP-5012
    TLcdGXYRasterPainter and TLcdMultilevelRasterPainter: image caching in the rasters was broken for warped rasters because of the fix for LMAP-3561.

    Bug fixLuciadFusion

    Fixed potential memory leak in document and image providers that would occur for partially loaded files that are removed from the view.

    Bug fixAviation Standards

    LMAP-5063
    The ARINC procedure decoder no longer applied the proper filtering to the procedure trajectories. This regression was introduced in LuciadMap 10.1. The previous behaviour has now been restored.

    Bug fixAviation Standards

    LMAP-5062
    Extensions of ARINC handlers such as TLcdARINCEnrouteAirwayHandler caused compilation issues about a missing implementation for a package visible abstract method. These issues should no longer occur.

    Bug fixDefense Standards

    LMAP-5059
    Area features no longer contain empty polygons (polygons with zero points), which were an artifact from 'floating edge' inner rings.

    Bug fixDefense Standards

    LMAP-5058
    The VPF model decoder now automatically detects inner rings which are defined as part of an outer ring. These rings are now properly decoded as separate polygons, and the auxiliary edges for jumping from outer to inner rings are no longer present in the model.

    Bug fixDefense Standards

    LMAP-3821
    VPF special attribute values which should be interpreted as being null, are now represented in the ILcdDataObject view by a null value, instead of the special value (e.g. for Strings, 'N/A' will now become null, for short integers, -32768 will now become null, ...).

    Bug fixDefense Symbology

    LMAP-4710
    The displayed location of headquarter units is now based upon the free end of the headquarters line as specified in the APP-6A and MIL-STD 2525b specification, instead of on the center of the unit.

    Bug fixMaritime Standards

    LMAP-4869
    The S-52 rendering engine now paints each S-57 edge only once, as required by the S-52 specification. If an edge occurs in multiple objects, it is only painted once, using the linestyle of the object with the highest display priority. This feature requires the use of either a TLcdS52GXYCatalogueLayer (for ENCE catalogues), or a TLcdS52GXYLayer (for individual ENC cells).

    Bug fixMaritime Standards

    LMAP-5001
    The ECDIS domain objects now take wrap-around effects into account. This solves rendering issues (disappearing data) that may arise with some projections.

    10.1.02

    Bug fixLuciadFusion

    LMAP-5029
    An empty OGC literal is now decoded as an empty string (was an empty list).

    Bug fixLuciadFusion

    LMAP-5004
    TLcdUtmMgrsUtil round-trip sometimes produces different strings. This is now improved. Also UTM zones are now defined slightly different. They now always include their left border and exclude their right border.

    Bug fixLuciadFusion

    Properties of type java.sql.Date and java.sql.Time are now exported to GML as proper xsd:date and xsd:time values. Before this fix, they were exported with a time and date component yielding schema-invalid documents.

    Bug fixLuciadFusion

    LMAP-5015
    TLcdModelReferenceEncoder#save() could throw an IllegalArgumentException when the meta data of the model reference contains a null authority code.

    Bug fixAdvanced Raster Services

    LMAP-5027
    The model decoder again accepts "file:" URLs (for instance, coming from drag&drop in Linux).

    Bug fixAdvanced Raster Services

    LMAP-5027
    The model decoder again accepts "file:" URLs (for instance, coming from drag&drop in Linux).

    Bug fixDefense Standards

    LMAP-4992
    Date attributes (represented by java Data objects) are now linked to the com.luciad.datamodel.TLcdCoreDataTypes.DATE data type instead of the com.luciad.datamodel.TLcdCoreDataTypes.CALENDAR data type.

    Bug fixDefense Symbology

    LMAP-4996
    The representation of the following MIL-STD 2525b symbols was not correct and has been fixed:
    • Short Range Transporter Launcher and Radar (TLAR), S*G*EWMASR*****, 1.X.3.2.1.1.1.1.1
    • Short Range Transporter Erector Launcher and Radar (ETLAR), S*G*EWMASE*****, 1.X.3.2.1.1.1.1.2
    • Intermediate Range Transporter Launcher and Radar (TLAR), S*G*EWMAIR*****, 1.X.3.2.1.1.1.2.1
    • Intermediate Range Transporter Erector Launcher and Radar (ETLAR), S*G*EWMAIE*****, 1.X.3.2.1.1.1.2.2
    • Long Range Transporter Launcher and Radar (TLAR), S*G*EWMALR*****, 1.X.3.2.1.1.1.3.1
    • Long Range Transporter Erector Launcher and Radar (ETLAR), S*G*EWMALE*****, 1.X.3.2.1.1.1.3.2
    • Theater Transporter Launcher and Radar (TLAR), S*G*EWMATR*****, 1.X.3.2.1.1.1.4.1
    • Theater Transporter Erector Launcher and Radar (ETLAR), S*G*EWMATE*****, 1.X.3.2.1.1.1.4.2
    • Armored Dozer, S*G*EVEDA-*****, 1.X.3.2.2.3.6.1
    • Armored Assault, S*G*EVES--*****, 1.X.3.2.2.3.7
    • Armored Engineer Recon Vehicle (AERV), S*G*EVER--*****, 1.X.3.2.2.3.8
    • Backhoe, S*G*EVEH--*****, 1.X.3.2.2.3.9
    • Ferry Transporter, S*G*EVEF--*****, 1.X.3.2.2.3.10
    • Landing Ship Medium, S*S*CALSM-*****, 1.X.4.1.2.2.1
    • Landing Ship Tank, S*S*CALST-*****, 1.X.4.1.2.2.2

    Bug fixMaritime Standards

    LMAP-4792
    Accessing the source and display name of S-57 models on the model descriptor no longer triggers the loading of the full ENC cell data.

    10.1.01

    ImprovementLuciadFusion

    TLcdGXYAsynchronousLabelPlacer: improved the consistency of labeling results while panning and zooming the view.

    ImprovementLuciadFusion

    LMAP-4633
    The bounds calculations of TLcdLonLatPolyline and TLcdLonLatPolygon have been improved considerably to at least a 1-meter accuracy.

    ImprovementLuciadFusion

    LMAP-4642
    The ILcdGeoBuffer implementations now also support ILcdPoint, ILcdPolygon, and ILcdComplexPolygon as base shape. The geobuffer painter/editor has also been updated to support buffers based on ILcdPoint and ILcdPolygon shapes.

    ImprovementLuciadFusion

    LMAP-4958
    TLcdGXYOnPathLabelingAlgorithm and TLcdGXYInPathLabelingAlgorithm now give precedence to (clipped) paths with the largest length.

    ImprovementLuciadFusion

    LMAP-4701
    The versions of the WCS specification that are supported by a deployed service can now be configured in the web.xml configuration file. This allows you to avoid unwanted support for older or newer versions of the specification.

    Add a parameter with the name wcs.supportedVersions to your web.xml file to enable this feature. You can use comma separated lists of versions such as "1.0.0,1.1.0" as values, or you can use wild cards such as "1.0.*".

    ImprovementLuciadFusion

    LMAP-4701
    The versions of the WMS specification that are supported by a deployed service can now be configured in the web.xml configuration file. This allows you to avoid unwanted support for older or newer versions of the specification.

    Add a parameter with the name wms.supportedVersions to your web.xml file to enable this feature. You can use comma separated lists of versions such as "1.3.0,1.1.0" as values, or you can use wild cards such as "1.1.*".

    ImprovementLuciadFusion

    LMAP-4701
    The versions of the WFS specification that are supported by a deployed service can now be configured in the web.xml configuration file. This allows you to avoid unwanted support for older or newer versions of the specification.

    Add a parameter with the name wfs.supportedVersions to your web.xml file to enable this feature. You can use comma separated lists of versions such as "1.0.0,1.1.0" as values, or you can use wild cards such as "1.*".

    ImprovementLuciadFusion

    The ALcdCompassNavigationControl now allows specifying separate tooltips for the upper arrow and the rotation ring. Also the TLcdGXYNavigationControlsFactory has a new factory method allowing you to specify the tooltips to be used by its subcomponents.

    ImprovementLuciadFusion

    LMAP-4821
    TLcdOverlayLayout now clamps all components to be within the available space of the parent, instead of always using the preferred size of the children.

    ImprovementLuciadFusion

    LMAP-4808
    TLcdEarthGLShapeTileSet:
    • The outline and fill coverages of the tile set no also support ILcdCurve, ILcdRing and ILcdSurface objects.
    • The tile set now also supports point objects through a new coverage.
    • The documentation on the supported object types was improved.

    ImprovementLuciadFusion

    LMAP-4863
    samples.gxy.decoder.mtm now also the new labeling algorithms: TLcdGXYOnPathLabelingAlgorithm to label polylines and TLcdGXYInPathLabelingAlgorithm to label polygons.

    ImprovementLuciadFusion

    LMAP-4813
    The ALcdCompassNavigationControl has some additional functionality. Pressing the control key while dragging the outer ring will limit the rotation to multiples of 15 degrees. This makes it easier to rotate the linked view to certain special angles like 45 or 90 degrees.

    ImprovementLuciadFusion

    LMAP-4857
    TLcdGXYBusyLayerTreeNodeCellRenderer now also considers the ILcdGXYAsynchronousLayerWrapper#isAsynchronous value when rendering the colors of the asynchronous layers. Layers which return false for isAsynchronous will now be colored like a synchronous layer.

    ImprovementLuciadFusion

    LMAP-4612
    All projection classes can be serialized correctly now.

    ImprovementWeather & Environment Standards

    The GRIB model decoders now have better detection of rasters that wrap around the globe.

    ImprovementAviation Standards

    LMAP-4965
    Decoding of ILS-DME navaids is now also supported by the TLcdARINCDMEHandler. Decoded objects will have the navaid class set to a new class: ILS_DME.

    Bug fixLuciadFusion

    LMAP-4990
    TLcdGXYRasterPainter and TLcdMultilevelRasterPainter: the cached entries of these painters contained a reference to the layer. This made the model objects strongly refer to the layer.

    Bug fixLuciadFusion

    LMAP-4578
    The implementation of the Google reference system (EPSG codes 900913, 3785, 3857) was incorrect. It now uses the newly added TLcdPseudoMercator projection, a variation on the TLcdMercator projection, which performs all calculations on a spherical ellipsoid.

    Bug fixLuciadFusion

    LMAP-4985
    The version negotiation of TLcdWCSClient could fail when using older Java versions in combination with the xerces XML parser.

    Bug fixLuciadFusion

    LMAP-4954, LMAP-4980, LMAP-4986, LMAP-4987
    TLcdGXYEditController2#setStickyLabelsLayerFilter() did not work very well in combination with parent labels.

    Bug fixLuciadFusion

    Two new applyOnInteract methods were accidentally added to TLcdGXYAsynchronousLayerWrapper. They have been moved to TLcdGXYAsynchronousEditableLabelsLayerWrapper.

    Bug fixLuciadFusion

    LMAP-4979, LMAP-4978
    TLcdGXYPolylineStampLabelPainter: the set location index was not taken into account when determining the location where the pin attaches to the object, which resulted in unwanted pin lines when a view or layer label painter was used. Also, a more logical point is now used when using free placement.

    Bug fixLuciadFusion

    TLcdGXYAsynchronousPaintQueue#setBorderFactor is now also ignored for label painting when a ILcdGXYViewLabelPlacer is used. The previous behavior could cause labels to be painted at the wrong location.

    Bug fixLuciadFusion

    LMAP-4976
    A potential deadlock issue occurring during the rendering of KML layers has been fixed.

    Bug fixLuciadFusion

    TLcdDTEDModelDecoder now correctly decodes the swapped longitude/latitude interval values specified by the superseded MIL-D-89020 standard.

    Bug fixLuciadFusion

    LMAP-4969
    TLcdVVJPanel: in some cases, the panel would try to paint a selected point that was no longer visible, resulting in an exception. This has been fixed.

    Bug fixLuciadFusion

    LMAP-4971
    TLcdEllipsoid#geodesicDistance() is now more consistent when using poles as input. When two different polar points that represent the same pole are used, for example (0, 90) and (45, 90), their distance is now always exactly 0. Also the distances from any other point to these two pole points are now always exactly equal.

    Bug fixLuciadFusion

    LMAP-4760
    TLcdSphereUtil#orientation2D sometimes returned incorrect results on or near the poles. This fix also fixes TLcdLonLatFloatPolygon#getOrientation(), TLcdLonLatPolygon#getOrientation() and TLcdLonLatHeightPolygon#getOrientation() in these cases.

    Bug fixLuciadFusion

    LMAP-4860
    TLcdLonLatGridPainter: improved meridian labeling for projections including the south pole. Improved labeling at edges. Now avoids labeling the anti-meridian twice (once for -180 degrees and once for 180 degrees) at the same location.

    Bug fixLuciadFusion

    LMAP-4118
    TLcdGXYTextPainter#edit no longer allows making the shape so small that it becomes impossible to make it larger again.

    Bug fixLuciadFusion

    LMAP-4962
    TLcdGXYLayer#applyOnInteractLabels called ILcdGXYLabelPainter#setObject after retrieving a label painter from its label painter provider. This could break label painter providers that initialize their label painter with an object that differs from the passed domain object.

    Bug fixLuciadFusion

    LMAP-4957
    TLcdGeoTIFFModelEncoder now avoids averaging artifacts when creating lower levels of detail of elevation rasters containing unknown elevations.

    Bug fixLuciadFusion

    LMAP-4886
    Calling ILcdGXYAsynchronousLayerWrapper#invokeAndWaitOnGXYLayer() could potentially cause concurrency issues when calling it from a background thread. This method is now always executed on the Event Dispatch thread, avoiding these issues.

    Bug fixLuciadFusion

    LMAP-4933
    TLcdComplexPolygon#hashCode() always returned the same value, making it inefficient for use in hashmaps etc. It now returns a decent value based on the parts contained by the complex polygon.

    Bug fixLuciadFusion

    LMAP-1991
    TLcdGXYContinuousPanController now draws selected objects in selection mode.

    Bug fixLuciadFusion

    LMAP-4897
    When exporting a model to GML, the TLcdGML32ModelEncoder, TLcdGML31ModelEncoder and TLcdGML2ModelEncoder now properly encodes abstract types as abstract XML schema types.

    Bug fixLuciadFusion

    LMAP-4761
    TLcdLonLatHeightPolygon#getOrientation used a Cartesian algorithm. It now uses the same spherical algorithm used by TLcdLonLatPolygon.

    Bug fixLuciadFusion

    LMAP-4873
    Fixed OpenGL lighting settings synchronization issue between draping painter and shader.

    Bug fixLuciadFusion

    LMAP-4564
    TLcdCassini and TLcdMollweide had incorrect implementations of inWorldBoundsOnSphere and world2DEditableBoundsOnSphereSFCT.

    Bug fixLuciadFusion

    LMAP-4563
    An exception could be thrown in samples.gxy.vertical when clicking next to a polyline. This exception was solved by fixing LMAP-4562.

    Bug fixLuciadFusion

    LMAP-4562
    In some cases TLcdEllipsoidUtil#contains2D could fail for points generated by TLcdEllipsoidUtil#closestPointOnGeodesic.

    Bug fixLuciadFusion

    LMAP-4810, LMAP-4948, LMAP-4963, LMAP-5005
    The intersection of geodesic and rhumbline could sometimes yield incorrect results when using TLcdSphereRhumblineUtil. Also a rare case was solved where the code could enter an infinite loop.

    Bug fixLuciadFusion

    LMAP-4809
    TLcdSphereRhumblineUtil is now thread-safe.

    Bug fixLuciadFusion

    LMAP-4385
    TLcdSphereUtil#closestPointOnGeodetic could sometimes yield an incorrect result when the closest point does not lie on the line segment.

    Bug fixLuciadFusion

    LMAP-4868
    Some labeling algorithms could throw a NullPointerException when a layer can not return an ILcdGXYPainter for a domain object.

    Bug fixLuciadFusion

    LMAP-1607
    TLcdUpsMgrsUtil could sometimes throw a StringIndexOutOfBoundsException instead of the expected ParseException. Now it always throws a ParseException.

    Bug fixLuciadFusion

    LMAP-4866, LMAP-4959
    TLcdSphereUtil#closestPointOnGeodesic could sometimes yield an incorrect result when the point from which distance has to be calculated lies (almost) on the geodesic.

    Bug fixLuciadFusion

    LMAP-4864
    samples.gxy.decoder did not use the correct labeling algorithms for some labels.

    Bug fixLuciadFusion

    LMAP-4846
    TLcdColorMapCustomizer: the linear scale toggle action used to malfunction when not used in combination with a JToggleButton. This was only possible if the createPanel method was overridden.

    Bug fixLuciadFusion

    LMAP-4858
    TLcdGXYLayer.applyOnInteractLabels() did not apply the function on any label when passing a mode that consists of ILcdGXYLayer.HANDLES, and not of ILcdGXYLayer.LABELS.

    Bug fixLuciadFusion

    LMAP-4780
    TLcdBufferedTile#createImage has been fixed to be thread-safe, even if its tile decoder is not thread-safe.

    Bug fixLuciadFusion

    LMAP-4845
    TLcdColorMapCustomizer gradient toggle button malfunctions when not used in combination with JToggleButton.

    Bug fixLuciadFusion

    LMAP-4844
    Programmatically changing a TLcdColorMap that was set to a TLcdColorMapCustomizer could result in an IndexArrayOutOfBoundsException.

    Bug fixLuciadFusion

    LMAP-4698
    TLcdGXYPolylineStampLabelPainter and TLcdGXYPolygonStampLabelPainter did not always calculate the correct bounds when using free placement label locations that are defined relative.

    Bug fixLuciadFusion

    LMAP-4879
    TestSphereRhumblineUtil#polygonContains2D() could sometimes fail for points that lie on the polygon contour.

    Bug fixLuciadFusion

    LMAP-4728
    TLcdGeodeticReference#writePropertiesSFCT() did not write the reference name. Also TLcdGeodeticReference#loadProperties() did not read back the reference name. This is now fixed.

    Bug fixLuciadFusion

    LMAP-4571
    TLcdGeoidGeodeticDatumFactory now has a better cache implementation. Before, each factory instance had its own cache. Now the geodetic datums are read and cached statically.

    Bug fixAdvanced GIS Engine

    LMAP-3883
    Topology checks between ILcdPolypoint and ILcdCircle could result in infinite loop. This has been resolved.

    Bug fixAdvanced GIS Engine

    LMAP-4655
    Topology relations between polygons and arcs sometimes gave incorrect results in spherical case. This has been resolved.

    Bug fixAdvanced GIS Engine

    LMAP-3902
    Topology relations between ellipses sometimes gave incorrect results. This has been resolved.

    Bug fixReal-time Engine

    LMAP-4862
    A disabled TLcdSimulatorTimeSlider no longer gets enabled by simply dragging on it with the mouse.

    Bug fixInfrastructure Standards

    LMAP-4960
    TLcdDGNModelDecoder#reset() methods behaved differently than before. They now indicate all attributes or tags should be selected, instead of none.

    Bug fixRadar Connectors

    LMAP-4872
    The decoder.asterix.live and decoder.asterix.file samples could throw an exception when setting an other layer labeled.

    Bug fixRadar Connectors

    LMAP-4870
    The decoder.asdi.live and decoder.asdi.file samples could throw an exception when setting an other layer labeled.

    10.1

    ImprovementLuciadFusion

    LMAP-4427
    Support was added for EPSG code 3857. This code is an (unofficial) alias for EPSG:3785.

    ImprovementLuciadFusion

    TLcdGXYAsynchronousLayerWrapper#invokeLaterOnGXYLayer now also protects the passed runnable from model changes on the Event Dispatch Thread.

    ImprovementLuciadFusion

    LMAP-2589
    Improved LuciadMap Developer's Guide by documenting setMinimumObjectSizeForPainting that allows to disable the painting of small objects.

    ImprovementLuciadFusion

    LMAP-4589
    The performance of the haloing algorithm has been improved for objects which are larger than the view bounds, when haloing caching is enabled.

    ImprovementLuciadFusion

    LMAP-2706
    TLcdColorMapCustomizer: when adding a new altitude level, the new color is now an interpolation of the adjacent colors.

    ImprovementLuciadFusion

    LMAP-4443
    ILcdLayerHeightProviderFactory has been introduced. The TLcdViewHeightProvider has been adjusted to work with this new interface as well.

    ImprovementLuciadFusion

    LMAP-4172
    TLcdWFSProxyModel now no longer returns null when the server returns an exception that is handled by the exception handler. An empty enumeration is returned instead.

    ImprovementLuciadFusion

    TLcdRasterModelDecoder now also supports decoding rasters containing TLcdRenderedImageTile instances (based on Java Advanced Imaging), as an alternative to the default TLcdBufferedTile instances (based on ILcdTileDecoder and ILcdBuffer).

    ImprovementLuciadFusion

    TLcdRasterModelDecoder and TLcdJAIModelDescriptor now support an isElevation flag. The optional flag is read from the input properties and set on the decoded model descriptor, to specify that the raster data can be interpreted as elevation data.

    ImprovementLuciadFusion

    LMAP-4740
    TLcdAngleUnit now supports angular mils.

    ImprovementLuciadFusion

    LMAP-4443
    A new interface for the creation of a layer-based ILcdHeightProvider has been added: ILcdLayerHeightProviderFactory. This interface is similar to the exiting model-based factory: ILcdModelHeightProviderFactory. The difference is that the new interface creates a height provider from a layer and view instead of a model. A layer-based height provider returns heights that are in sync with the layer and view, with the correct level-of-detail for example. Using it often it is likely that the necessary data is cached.

    ImprovementLuciadFusion

    The TLcdEarthImageTileDataCodec and TLcdEarthSeparateAlphaImageTileDataCodec now allow configuring the compression quality. Setting a lower compression quality results in smaller data sets at the cost of image quality.

    ImprovementLuciadFusion

    LMAP-2648
    Support has been added to automatically create and assign the paint queues of asynchronously painted layers. ALcdGXYAsynchronousPaintQueueManager allows implementing a completely custom paint queue management strategy. In addition, TLcdGXYAsynchronousPaintQueueManager creates and assign paint queues based on layer painting requirements described in paint hints. Please refer to the developer's guide and asynchronous paint sample for more information on how to use the new paint queue managers.

    ImprovementLuciadFusion

    LMAP-4684
    TLcdBufferedTile now has a property to specify whether its pixel values are signed or not, so the method retrieveValue can return them correctly as integers.

    ImprovementLuciadFusion

    LMAP-4443
    Added a new layer-based height provider factory. Opposed to the existing model-based height provider factory (e.g. TLcdEarthHeightProviderFactory), the new TLcdEarthGXYLayerHeightProviderFactory and TLcdEarthGLLayerHeightProviderFactory always return heights that are in sync with the data being painted in a view. THey also provides better performance as all required tile data is already cached in memory. The earth.opengl.aboveterrain sample demonstrates this new functionality.

    ImprovementLuciadFusion

    LMAP-4693, LMAP-2704
    TLcdColorMapCustomizer: now also has a non-linear scale, so that all levels can clearly be distinguished. The desired scale can be toggled by the user. An optional button is available to revert to given default settings. Both the customizer and TLcdColorMap now have a master transparency setting, to adjust the transparency of all colors at once.

    ImprovementLuciadFusion

    The TLcdGXYEditController2 contains support to make the labels of specified layers sticky when the mouse hovers above them. To enable this behavior use the method setStickyLabelsLayerFilter. The sticky labels behavior will be enabled for all layers that pass this filter. When no filter is set, no labels will be made sticky. The TLcdGXYEditController2 and the TLcdGXYTouchSelectEditController will make labels sticky while they are being instant edited. This is for instance useful when editing continuously decluttered labels for realtime layers.

    ImprovementLuciadFusion

    There is a new transformation sample that shows how to transform a point and a bounding box between view, world and model coordinates.

    ImprovementLuciadFusion

    The earth.preprocessor sample now uses image tiles of 256x256 pixels and elevation tiles of 64x64 pixels, similar to the LuciadFusion default settings.

    ImprovementLuciadFusion

    The TLcdEarthGLTerrainPainter was updated to support the draping feature, introduced in the LuciadMap 10.1 3D module. This feature allows to paint any GL layer on top of an Earth terrain, without rendering artifacts such as flickering due to z-fighting. The earth.opengl.draping sample demonstrates draping some vector data on top of an Earth terrain. Refer to the Earth and 3D Developer's Guides for more information.

    ImprovementLuciadFusion

    TLcdGXYLabelPainterAdapter was added. This class adapts an ILcdGXYPainter into an ILcdGXYLabelPainter2. It uses a set of fixed label positions to position the label, and also offers the possibility to place a pin. This class also implement ILcdGXYLabelEditor, and can be used to edit labels if an ILcdGXYEditor was specified next to an ILcdGXYPainter. This class can for example be used to paint icons as labels.

    ImprovementLuciadFusion

    A composite ILcdGXYLabelPainter implementation was added : TLcdGXYCompositeLabelPainter. This class can be used combine multiple label painters into one. This class specifies two ways to remap the label and sub-label index.
    • Shift label index : Only the label index is shifted.
    • Shift sub-label index : All indices of labels and sub-labels from the first label painter stay exactly the same. For all other labels, the sub-label index is shifted.

    ImprovementLuciadFusion

    All LuciadMap implementations of ILcdGXYLabelPainter now provide support for parent labels. This means that when a label location specifies an other anchor point, its coordinates are specified relative to this anchor point, see TLcdLabelLocation#getAnchorPoint(). When this method returns false, the anchor point is created like it was before. In order to make sure that TLcdLabelLocation#getAnchorPoint() returns the correct anchor point, code that alters the label locations should set the parent bounds by using TLcdLabelLocation#setParentBounds().

    ImprovementLuciadFusion

    A sample was added to demonstrate the creation and usage of labeling algorithms and labeling algorithm wrappers : labels.createalgorithm. It demonstrates how to create a simple labeling algorithm, how to create a wrapper that rotates the labels, how to create a wrapper that tries more possible placements, and a wrapper that tries to adjust the font size to find a suitable label location.

    ImprovementLuciadFusion

    TLcdLabelLocation now has a few extra methods :
    • getAnchorPoint() : When this method returns true, the location of this label is defined relative to this anchor point. When this method returns false, the user of the label location should compute an anchor point.
    • getParentLabel() : When this method returns a non-null object, the label location depends on the returned label. This means that the location of this label is defined with respect to the parent label. When creating or editing a label, one should always make sure that this dependency is respected, and that the location is defined relative to the parent label (getAnchorPoint()). For this it is also necessary to set the bounds of the parent label (setParentBounds()).
    • getParentBoundsRectangle(), getParentBoundsRotation(), setParentBounds() : When a TLcdLabelLocation has a parent label, the parent bounds should be set before using it.
    • isBodyLabel() : When this method returns true, it means that this label is used as a representation of its domain object.

    TLcdLabelLocations now has a new constructor which takes an ILcdLabelDependencyProvider as argument. When this constructor is used, a parent label is set on the TLcdLabelLocation when calling TLcdLabelLocations#getLabelLocationSFCT(). So the parent dependencies of a label can be specified using the label dependency provider.

    This functionality is demonstrated in the labels.offset sample.

    ImprovementLuciadFusion

    TLcdUTMGrid and TLcdUPSGrid objects now provide a correct TLcdModelReferenceMetaData.

    ImprovementLuciadFusion

    The performance of the convolution halo algorithm has been improved for objects with large view bounds.

    ImprovementLuciadFusion

    LMAP-3214, LMAP-1813, LMAP-2241, LMAP-838, LMAP-2995, LMAP-2970, LMAP-3240, LMAP-3101, LMAP-3348
    New API has been added for advanced label placement, based on an ILcdGXYLabelingAlgorithm. Algorithms can be combined and wrapped. TLcdGXYLabelPlacer and TLcdGXYAsynchronousLabelPlacer provide the necessary boiler plate code to place a labeling algorithm's labels synchronously and asynchronously, respectively. For more information, see the com.luciad.view.gxy.labeling package, the developer's guide, and the label samples.

    ImprovementLuciadFusion

    Extensive support was added throughout LuciadMap for ILcdDataObject. In particular, the following enhancements were made:
    • The models of all vector formats (SHP, GML, ISO metadata, database format, MAP, MIF, SVG, POL, Magnetic North, MTM) are now data object enabled. This means that the model elements are ILcdDataObject instances and the model's descriptor is aILcdDataModelDescriptor. Most of these formats also allow direct access to their data model through a public TLcd<format>DataTypes class, for example TLcdSHPDataTypes orTLcdSVGDataTypes. Encoders that can export models from other formats to their own format have been enhanced such that they also accept data object enabled models. Since the model descriptors of these formats now implement ILcdDataModelDescriptor, all elements in these models are required to implement ILcdDataObject. Custom domain objects wrapping any of these model elements will need to implement ILcdDataObject as well, if they are contained in a model with a model descriptor of any of these formats.
    • TLcdGXYDataObjectLabelPainter, TLcdGXYDataObjectPolylineLabelPainter and TLcdGXYDataObjectPolygonLabelPainter support painting of labels for data object enabled models. These label painters can be easily configured using a data object expression language (more information on this can be found in the javadoc of ALcdDataObjectExpressionLanguage)).
    • The class TLcdDataObjectShapeList is introduced as an implementation of both ILcdShapeList and ILcdDataObject.
    • A number of new annotations are added to describe additional properties of the data model. The TLcdPrimaryKeyAnnotation can be added to a type (typically in the context of a database) to indicate what its primary key property is. TheTLcdHasAShapeAnnotation, TLcdShapeAnnotation and TLcdShapeListAnnotation can be used to better describe the geometry that is contained within a type.
    • Various smaller changes are implemented to ensure that a model that is data object enabled is supported at least as much as a model that relies on ILcdFeatured.
    Also, all sample code has been updated to use ILcdDataObject (in stead of ILcdFeatured). More information about ILcdDataObject can be found in the LuciadMap Developer's Guide.

    ImprovementLuciadFusion

    LMAP-3863
    The GML model decoder now uses the information contained in TLcdModelReferenceMetaData to determine the dimension (2D vs 3D) and coordinate order (lat-lon vs lon-lat) of a model reference.

    ImprovementLuciadFusion

    LMAP-3756
    TLcdGXYPointListPainter can now also edit ILcdEditableComplexPolygon instances.

    ImprovementLuciadFusion

    TLcdShapeList now implements the ILcdEditableShapeList interface.

    ImprovementLuciadFusion

    The new interface ILcdEditableComplexPolygon is added. TLcdComplexPolygon now implements this interface.

    ImprovementLuciadFusion

    LMAP-4168, LMAP-4057, LMAP-2223
    Two new contour finders are added, TLcdPolylineContourFinder and TLcdComplexPolygonContourFinder. The original TLcdContourFinder could find closed contours. TLcdPolylineContourFinder can find both open and closed isolines. TLcdComplexPolygonContourFinder can find areas of height ranges on the terrain as complex polygons, supporting holes and translucent rendering. The new contour finders use ILcdContourBuilder to create shapes from the contour data, with implementations TLcdLonLatPolylineContourBuilder, TLcdXYPolylineContourBuilder, TLcdLonLatComplexPolygonContourBuilder and TLcdXYComplexPolygonContourBuilder. These implementations return the shape as TLcdValuedContour and TLcdIntervalContour instances.

    ImprovementLuciadFusion

    LMAP-4325
    The default custom entity resolver on TLcdXMLSchemaBasedMapping is now allowed to return null for schema's that it can't resolve. The default implementation can now handle such cases. This makes it much easier to set a custom entity resolver because it only needs to handle the schema's that it knows about. TLcdXMLSchemaBasedMapping is now also ILcdInputStreamCapable for this reason. The TLcdXMLDataObjectSchemaHandler now also uses the default entity resolver of the decoder's mapping to resolve extension schema's.

    ImprovementLuciadFusion

    TLcdXMLSchemaBasedUnmarshallerProvider now allows registration of unmarshallers for a given schema element id and java class. Similar functionality is also added to TLcdXMLSchemaBasedMarshallerProvider.

    ImprovementLuciadFusion

    The name space URI that is passed as parameter to the TLcdXMLDataModelBuilder when creating a data model from a schema is no longer mandatory. This makes it easier to create a data model for a schema for which only the system id is known (and not the name space URI).

    ImprovementLuciadFusion

    LMAP-3863
    The GML model decoder now uses the information contained in TLcdModelReferenceMetaData to determine the dimension (2D vs 3D) and coordinate order (lat-lon vs lon-lat) of a model reference.

    ImprovementLuciadFusion

    The GML abstract feacture class now implements ILcdInvalidateable.

    ImprovementLuciadFusion

    TLcdAdvancedMapRulerController and TLcdMapTouchRulerController now create polyline objects that also implements ILcdDataObject (next to the existing ILcdFeatured).

    ImprovementLuciadFusion

    TLcdCompassGridPainter has been extended such that it can also be used with objects that implement ILcdDataObject.

    ImprovementLuciadFusion

    LMAP-3913
    A new interface, ILcdInvalidateable, has been added to the API. It provides a generic mechanism for invalidating a composite object when one or more of its compositing values has changed. Classes that have added this new interface include ALcdShapeList, TLcdGML3*AbstractFeature and other composite shape implementations.

    ImprovementLuciadFusion

    TLcdXMLSchemaBasedEncoder and TLcdXMLSchemaBasedDecoder now also provide API to encode and decode given Result or Source objects as input parameter. The same enhancement was also done on ALcdXMLModelEncoder and ALcdXMLModelDecoder.

    ImprovementLuciadFusion

    LMAP-4166
    TLcdWFSProxyModelFactory and TLcdWFSProxyDecoderDecorator now have a method to set a custom reference parser. This can be used to support servers that use custom reference names.

    ImprovementLuciadFusion

    The TLcdCGMModelDescriptor now implements ILcdDataModelDescriptor. The data types for the model can be found in the TLcdCGMDataTypes class.

    ImprovementLuciadFusion

    Created a sample to demonstrate the usage of balloons. It can be found in the samples.gxy.balloon package.

    ImprovementLuciadFusion

    Upgraded to the latest version (4.0.9) of the WoodStox StAX library.

    ImprovementLuciadFusion

    TLcdGXYPolygonLabelPainter and TLcdGXYPolylineLabelPainter now support rotations different from 0 when using free placement.

    ImprovementLuciadFusion

    Added an extra constructor in TLcdAWTPath which makes it possible to explicitly set the min and max ordinate values.

    ImprovementLuciadFusion

    The GML model encoder can now also export models based on the data model that is present in the model descriptor.

    ImprovementLuciadFusion

    LMAP-2233
    TLcdGXYMultiPointEditControllerModel#editingCandidates and TLcdGXYEditControllerModel2#editingCandidates now only return a single object when an object's handles has been touched. This makes sure that, when translating an object handle of a multiple selection, the untouched objects are not edited as well.

    ImprovementLuciadFusion

    Performance monitoring now also supports TLcdGXYViewJPanelLightWeight and TLcdMapJPanelLightWeight.

    ImprovementLuciadFusion

    Updated MapInfo Interchange File (MIF) in the com.luciad.format.mif package to support the new ILcdDataObject interface. A new class (TLcdMIFDataTypes) can be used to generate data models for this file format. The model elements remain backwards compatible with the ILcdFeatured interface, but it is recommended to use the ILcdDataObject interface for future projects.

    ImprovementLuciadFusion

    TLcdGeodeticReference, TLcdGeocentricReference, TLcdTopocentricReference and TLcdGridReference, (and implicitly TLcdDHDNGermanGridReference, TLcdLambert1972BelgiumGridReference and TLcdRD1918DutchGridReference) now implement ILcdExtendedModelReference.

    ImprovementLuciadFusion

    LMAP-4019
    The interfaces ILcdInputStreamFactoryCapable and ILcdOutputStreamFactoryCapable have been added, introducing a general way to indicate the capability of respectively configuring an ILcdInputStreamFactory and ILcdOutputStreamFactory. These interfaces are now implemented by all existing classes in LuciadMap that provide this capability, including all implementations of ILcdModelDecoder/ILcdModelEncoder and ILcdGXYLayerDecoder/ILcdGXYLayerEncoder.

    ImprovementLuciadFusion

    LMAP-3864
    The TLcdWKTReferenceParser now takes into account the AXIS tags, which can be used in determining the type and order of the coordinate systems' axes. This information is provided by a new interface called ILcdExtendedModelReference that extends ILcdModelReference and gives access to an object of type TLcdModelReferenceMetaData.

    ImprovementLuciadFusion

    The interfaces ILcdSphere and ILcdDome have been introduced to represent 3D spheres and half-spheres, respectively. The already existing classes TLcdLonLatHeightSphere and TLcdLonLatHeightDome now implement these interfaces. Furthermore, ILcd3DEditableSphere and ILcd3DEditableDome represent modifiable versions of these two shapes.

    ImprovementLuciadFusion

    LMAP-3220
    The following shapes now implement the ILcdRing or ILcdCurve interfaces:
    • TLcdLonLatLine and TLcdXYLine
    • TLcdLonLatEllipse and TLcdXYEllipse
    • TLcdLonLatFloatPolyline and TLcdXYFloatPolyline
    • TLcdLonLatFloatPolygon and TLcdXYFloatPolygon

    ImprovementLuciadFusion

    LMAP-4027
    TLcdGXYCompositeCurvePainter now has a configurable line style.

    ImprovementAdvanced GIS Engine

    The standard implementations of ILcd2DAdvancedBinaryTopology now also support arcs, circles, and ellipses.

    ImprovementAdvanced GIS Engine

    A new framework for constructive geometry and convex hull operations was added to the geometry package. The interface ILcdConstructiveGeometry was added, with implementations TLcdCartesianConstructiveGeometry, TLcdSphericalConstructiveGeometry and TLcdEllipsoidalConstructiveGeometry.

    ImprovementDatabase Connectors

    The encoder now supports automatically deleting old tables when new ones are created, with the configuration property dropBeforeCreatingTable.

    ImprovementDatabase Connectors

    The encoder now supports automatically deleting old tables when new ones are created, with the configuration property dropBeforeCreatingTable.

    ImprovementDatabase Connectors

    The encoder now supports automatically deleting old tables when new ones are created, with the configuration property dropBeforeCreatingTable.

    ImprovementDatabase Connectors

    The encoder now supports automatically deleting old tables when new ones are created, with the configuration property dropBeforeCreatingTable.

    ImprovementDatabase Connectors

    LMAP-4447
    The decoder and encoder now support primary keys that are automatically generated by the database, with the configuration property primaryFeatureAutoGenerated.

    ImprovementDatabase Connectors

    LMAP-4447
    The decoder and encoder now support primary keys that are automatically generated by the database, with the configuration property primaryFeatureAutoGenerated.

    ImprovementDatabase Connectors

    Models created by the TLcdDB2SpatialModelDecoder are now data object enabled. This means that all model elements implement ILcdDataObject and that the model descriptor implements ILcdDataModelDescriptor.

    ImprovementDatabase Connectors

    LMAP-4447
    The decoder and encoder now support primary keys that are automatically generated by the database, with the configuration property primaryFeatureAutoGenerated.

    ImprovementDatabase Connectors

    LMAP-4447
    The decoder and encoder now support primary keys that are automatically generated by the database, with the configuration property primaryFeatureAutoGenerated.

    ImprovementDatabase Connectors

    LMAP-4447
    The decoder and encoder now support primary keys that are automatically generated by the database, with the configuration property primaryFeatureAutoGenerated.

    ImprovementDatabase Connectors

    Models created by the TLcdInformixGeodeticModelDecoder are now data object enabled. This means that all model elements implement ILcdDataObject and that the model descriptor implements ILcdDataModelDescriptor.

    ImprovementDatabase Connectors

    The TLcdOracleGeorasterModelDecoder now delays the loading of non-essential raster meta-data. As a result, the initial delay when loading a large number of rasters has been reduced significantly.

    ImprovementDatabase Connectors

    Models created by the TLcdPostGISModelDecoder are now data object enabled. This means that all model elements implement ILcdDataObject and that the model descriptor implements ILcdDataModelDescriptor.

    ImprovementDatabase Connectors

    Models created by the TLcdOracleSpatialModelDecoder are now data object enabled. This means that all model elements implement ILcdDataObject and that the model descriptor implements ILcdDataModelDescriptor.

    ImprovementDatabase Connectors

    When the SQL filter matched several rasters that had different geographical references, the TLcdOracleGeorastermodelDecoder was only decoding a subset of the matching rasters, all having identical references. In the new implementation the decoder creates an ILcdModelTreeNode composed of several submodels, one for each independent geographical reference.

    ImprovementDatabase Connectors

    LMAP-3061
    The TLcdOracleGeorasterModelDecoder now supports the NODATA database field. The corresponding raster pixels are set to full transparency.

    ImprovementTerrain Analysis Engine

    TLcdLOSCoverageFactory has a new createLOSCoverageContours method, which takes two arrays of doubles instead of one. This allows giving a separate array of level values and special values, so that it can treat contours around height values and special values differently. The resulting contours are disjoint complex polygons instead of regular polygons. This allows painting them with translucency because the complex polygons don't overlap.

    ImprovementWeather & Environment Standards

    TLcdGRIBModelDecoder now supports GRIB version 2.

    ImprovementAviation Standards

    A new concept has been introduced to make it easier to retrieve a useful time slice from an AIXM feature. Quite often, application developers are confronted with the problem of having to determine a suitable time slice for the visualization of features or properties of features. The new ILcdTimeSliceProvider interface can be used to encapsulate such a strategy that can be used throughout the application.

    To make the provider accessible at places where it is needed, two options are provided:

    • A default time slice provider can be set on an AIXM 5.0 or 5.1 feature. This provider can be requested from the feature whenever it is needed.
    • A time slice provider can be passed onto the objects that need it; for instance, all AIXM painters and XPath factories can now be configured with a time slice provider. When set, these time slice providers have precedence over the default time slice providers on the features.

    Two implementations are available that implement the currently most common strategies. The first one returns one of the time slices in the list of time slices in the feature - normally this will be a baseline time slice, assuming that it is available. The second one can be configured with a date, and will return a snapshot time slice valid for that date, or no time slice if the feature does not have valid time slices for that date.

    ImprovementAviation Standards

    It is now possible to configure the styling of AIXM 5.0 and 5.1 features on the painter providers TLcdAIXM5PainterEditorProvider and TLcdAIXM51PainterEditorProvider. The styling has to be defined as an OGC SLD feature type style. SLD is a very powerful rule-based styling mechanism developed by the OGC, and is defined as an XML format. LuciadMap already provided extensive support for OGC SLD, but it is now also fully integrated with AIXM to style features.

    The AIXM painters not only allow setting a style but also allow access to predefined styles. This makes it easier for application developers to allow style customization, as they can allow their users to customize an existing style instead of having to write one from scratch.

    ImprovementAviation Standards

    Data types for the DAFIF and DAFIFT domain model objects are now available in the TLcdDAFIFDataTypes and TLcdDAFIFTDataTypes classes. For each DAFIF/DAFIFT type, a specific class that contains all properties has also been added (e.g., TLcdDAFIFAirspaceDataProperties). DAFIF model decoders with a default configuration will now return objects that implement ILcdDataObject and that have a DAFIF data type.

    Existing users of the DAFIF/DAFIFT decoders that depend on specific properties of the ILcdFeatured-based implementation can ensure backwards compatibility by setting a custom implementation of the now deprecated ALcdAISObjectFactory on the handlers. An example would be to set a very basic extension of the TLcdAISLonLatHeightObjectFactory on all decoders. This will result in objects with an unknown data type that should only be accessed through the ILcdFeatured interface.

    This backwards compatible mode is not recommended for general use, but might be necessary for users of certain functionality. The most important example is the use of certain methods on the DAFIF/DAFIFT decoders that allow setting the features to be decoded, such as the method setAerodromeFeaturesToBeDecoded. These methods are still available, but in the new decoder configuration the decoded features will always have the same number of features. Also, the ordering of the features will no longer depend on the ordering of the feature names that are passed to this method. These features will be fixed and determined by the data type. This behavior is not changed if you use the backwards compatible mode described above.

    ImprovementAviation Standards

    Data types for the ARINC domain model objects are now available in the TLcdARINCDataTypes class. For each ARINC type, a specific class that contains all properties has also been added (e.g., TLcdARINCAirspaceDataProperties). ARINC model decoders with a default configuration will now return objects that implement ILcdDataObject and that have a ARINC data type.

    Existing users of the ARINC decoders that depend on specific properties of the ILcdFeatured-based implementation can ensure backwards compatibility by setting a custom implementation of the now deprecated ALcdAISObjectFactory on the handlers. An example would be to set a very basic extension of the TLcdAISLonLatHeightObjectFactory on all decoders. This will result in objects with an unknown data type that should only be accessed through the ILcdFeatured interface.

    This backwards compatible mode is not recommended for general use, but might be necessary for users of certain functionality. The most important example is the use of certain methods on the ARINC handlers that allow setting the features to be decoded such as setAerodromeFeatureNamesToBeDecoded. These methods are still available, but in the default decoder configuration the decoded features will always have the same number of features. Also, the ordering of the features will no longer depend on the ordering of the feature names that are passed into this method. These attributes will be fixed and determined by the data type. This behavior is not changed if you use the backwards compatible mode described above.

    ImprovementAviation Standards

    Data types for the AIXM domain model objects are now available in the TLcdAIXMDataTypes class. For each AIXM type, a specific class that contains all properties has also been added (e.g. TLcdAIXMAirspaceDataProperties). AIXM model decoders with a default configuration will now return objects that implement ILcdDataObject and that have an AIXM data type.

    Existing users of the AIXM decoders that depend on specific properties of the ILcdFeatured-based implementation can ensure backwards compatibility by setting a custom implementation of the now deprecated ALcdAISObjectFactory on the handlers. An example would be to set a very basic extension of the TLcdAISLonLatHeightObjectFactory on all decoders. This will result in objects with an unknown data type that should only be accessed through the ILcdFeatured interface.

    This backwards compatible mode is not recommended for general use, but might be necessary for users of certain functionality. The most important example is the use of certain methods on the AIXM handlers that allow setting the features to be decoded such as setAerodromeFeatureNamesToBeDecoded. These methods are still available, but in the default decoder configuration the decoded features will always have the same number of features. Also, the ordering of the features will no longer depend on the ordering of the feature names that are passed into this method. These attributes will be fixed and determined by the data type. This behavior is not changed if you use the backwards compatible mode described above.

    ImprovementAviation Standards

    LMAP-2927
    The AIS domain model now implements ILcdDataObject, the new interface in LuciadMap to provide generic access to an object's properties. Corresponding data types for the AIS domain model are now available in the TLcdAISDataTypes class.

    New classes TLcdAISDataObjectFactory and ALcdAISGeometryFactory that fully support ILcdDataObject have been introduced to create and initialize AIS domain objects. The existing class ALcdAISObjectFactory and its implementations have been deprecated in favor of TLcdAISDataObjectFactory and ALcdAISGeometryFactory.

    ImprovementAviation Standards

    TLcdAIXM5AbstractAIXMTimeSlice and TLcdAIXM51AbstractAIXMTimeSlice now implement the ILcdTimeBounded interface.

    ImprovementAviation Standards

    The TLcdAIXM5ModelDecoder and TLcdAIXM51ModelDecoder now automatically merge features and sort timeslices when decoding a message. This prevents some possible issues related to XLinks, and also properly prepares the message for the most common use cases when working with AIXM 5.x models. This behavior can be manually controlled with the new setAutoSortTimeslices(boolean) and setAutoMergeFeatures(boolean) methods available on the model decoders.

    ImprovementAviation Standards

    TLcdAIXM5MessageUtil and TLcdAIXM51MessageUtil now only generate new messages and features in the sortMessage and mergeFeatures methods if this is absolutely required.

    ImprovementDefense Standards

    LMAP-3123
    Improved sample code by adding support for multi-databases. Sample 2 allows you to set a directory as VPF root node that contains other VPF root nodes indirectly. This way, multiple databases can be loaded at once. Their results can be shown separately or merged together, both for the tree and the layer controls of the sample.

    ImprovementDefense Standards

    TLcdNITFModelDecoder now has a setting allowing it to create multi-level rasters instead of single-level ones.

    ImprovementDefense Symbology

    Added support in both MS2525b/c and APP-6A/B for the new unified ILcdDataObject interface. The data model, data types and data properties can be found in the TLcdMS2525bDataTypes and TLcdAPP6ADataTypes The data model, data types and data properties can be found in the TLcdMS2525bDataTypes and TLcdAPP6ADataTypes classes respectively. Additionally, both the TLcdMS2525bModelDescriptor and the TLcdAPP6AModelDescriptor now implement the ILcdDataModelDescriptor interface.

    Since the MIL-STD 2525b/c and APP-6A/B model descriptors now implement ILcdDataModelDescriptor, all elements in such models are required to implement ILcdDataObject. Custom domain objects wrapping the existing MIL-STD 2525b/c and APP-6A/B domain objects will therefore need to implement ILcdDataObject as well, if they are contained in a model with a MIL-STD 2525b/c or APP-6A/B model descriptor.

    ImprovementInfrastructure Standards

    The TLcdDGNModelDecoder now supports DGN V8 files.

    ImprovementInfrastructure Standards

    The TLcdDWGModelDecoder now supports DXF as well as DWG files. The decoder can load files up to versions R2010 (including R13C3, R14, R2000, R2004, R2007 and R2010).

    ImprovementMaritime Standards

    Thread-safety of the S-52 rendering engine has been improved. An S-52 symbology instance can now be shared among different conditional symbologies / painter providers on different threads. Conditional symbologies and S-52 painter providers should still be created per thread.

    ImprovementMaritime Standards

    The performance of the S-52 visualization engine has been improved. Especially the rendering speed of ECDIS data during dragging has been increased significantly. To take fully advantage of these optimizations, applications should replaced existing ECDIS layer list hierarchies (TLcdS52GXYCatalogueLayerList, TLcdS52GXYLevelLayerList) by the new TLcdS52GXYCatalogueLayer class. This class provides similar configuration options as the TLcdS52GXYCatalogueLayerList, with the main difference that it is not a layer list. The EcdisLayerFactory provided with the samples illustrates the usage of this class.

    ImprovementMaritime Standards

    The S-57 data model now supports the unified generic model; all domain classes now implement the ILcdDataObject interface, the S-57 model descriptor now implements ILcdDataModelDescriptor. Since the S-57 model descriptor now implements ILcdDataModelDescriptor, all elements in S-57 models are required to implement ILcdDataObject. Custom domain objects wrapping S-57 model elements will need to implement ILcdDataObject as well, if they are contained in a model with an S-57 model descriptor.

    ImprovementRadar Connectors

    Updated ASDI classes to support ILcdDataObject interface. While ILcdFeatured is still supported, it is recommended to use the ILcdDataObject interface instead. For more information, refer to the developer's guide as well as the API reference of the new classes: TLcdASDIMessageDataTypes, TLcdASDIDataTypes, TLcdASDIFlightPlanDataTypes, TLcdASDITrackTODataTypes and TLcdASDITrackTZDataTypes.

    ImprovementRadar Connectors

    Adjusted domain objects (tracks and trajectories) to support the unified ILcdDataObject interface. The ILcdDataObject interface is an improvement over the ILcdFeatured interface. ILcdFeatured is still supported for reasons of backwards compatibility. On top of that, the ASTERIX Industry Specific Component now features a new class that can statically retrieve a data model for a given user application profile. The data model can also be retrieved through the ALcdASTERIXModelDescriptor, which now implements ILcdDataModelDescriptor.

    Bug fixLuciadFusion

    LMAP-4815
    ALcdGXYPen's hot points could permanently change the stroke of the graphics instance. This has been fixed.

    Bug fixLuciadFusion

    LMAP-4738
    Fixed issue in certain Linux distributions of Java that would cause the cursor icon to get stuck on the default icon after closing a balloon.

    Bug fixLuciadFusion

    LMAP-4733
    TLcdLonLatHeightPoint.interacts2D() now takes longitude wrapping into account. It now behaves identical to TLcdLonLatPoint.interacts2D().

    Bug fixLuciadFusion

    LMAP-4720
    TLcdLonLatPoint.interact2D() had an issue when one point was at longitude -180 and the other at 180. The reverse already worked.

    Bug fixLuciadFusion

    LMAP-4749
    The luciadmap.jar no longer contains classes from the specialized raster packages, so obfuscation no longer reports any warnings.

    Bug fixLuciadFusion

    LMAP-4781

    TLcdTarModelListDecoder, TLcdZipModelListDecoder, and TLcdUSRPModelDecoder returned an ILcdModelTreeNode with a null model reference, which could lead to NullPointerExceptions. These decoders have been adjusted.

    The default model of the TLcdGXYLayerTreeNode had a null model reference. This has been adjusted as well.

    Bug fixLuciadFusion

    LMAP-4736
    When decoding a GML document that contains feature collections as children of the root feature, the display name of the model descriptor the child feature collections are now derived from the type name of the root feature collection. In older V10 releases, all these feature collections (the root and all its children) used the source name of the decoded document.

    Bug fixLuciadFusion

    LMAP-4768
    The filled part of the FILLED_TRIANGLE and OUTLINED_AREA TLcdSymbols did not stay within the outline.

    Bug fixLuciadFusion

    LMAP-4754
    Exporting a model to GML now properly uses the model reference formatter set on the encoder.

    Bug fixLuciadFusion

    LMAP-2132
    The tool tip sample now uses ILcdGXYPainter.isTouched instead of ILcdShape.contains2D to find out which object needs a tool tip. This makes it also work for points.

    Bug fixLuciadFusion

    Exporting a model to GML now properly takes the model reference into account when deciding on dimension (2D vs 3D) and coordinate order (lat-lon vs lon-lat).

    Bug fixLuciadFusion

    LMAP-4169
    TLcdContourFinder could not find some contours around certain configurations of values in the grid. This has been fixed.

    Bug fixLuciadFusion

    LMAP-4331
    The GML model encoder can now export data object enabled models (that is models whose elements implement ILcdDataObject and whose model descriptor implements ILcdDataModelDescriptor).

    Bug fixLuciadFusion

    LMAP-4599
    Correct the interpretation of angles (bearing) for arcs in a model reference where the first coordinate axis is north (in such a reference, coordinates are expressed as lat-lon).

    Bug fixLuciadFusion

    LMAP-4596
    TLcdGXYLayer now better respects the layer, painter, and label painter paint modes. Among others, the following issues are fixed:
    • painters never got the ILcdGXYPainter.DEFAULT flag
    • label painters never got the ILcdGXYLabelPainter.DEFAULT flag
    • several inconsistencies regarding the ILcdGXYLayer.HANDLES flag

    Bug fixLuciadFusion

    LMAP-4103
    TLcdXMLSchemaBasedEncoder and TLcdXMLSchemaBasedDecoder now only close OutputStream and Inputstream instances that they create themselves. They used to close also streams that were passed as input parameters.

    Bug fixLuciadFusion

    When using asynchronous painting and adding a new view (with an ILcdGXYEditableLabelsLayer), it was possible that the ALcdLabelLocations of the wrapped layer were not synchronized correctly initially.

    Bug fixLuciadFusion

    LMAP-4395
    A minor bug was fixed in TLcdGXYLabelPainter's discrete placements. Among others, the halo thickness was not taken into account.

    Bug fixLuciadFusion

    The intersection2DLSSFCT methods of TLcdEllipsoid compute the intersection point of two geodetic lines accurately on the ellipsoid instead of using a spherical approximation.

    Bug fixLuciadFusion

    LMAP-4156

    Bug fixTerrain Analysis Engine

    LMAP-4622
    Fixed height line of sight could give a numerical problem when maximum vertical angle was a value near 180 degrees.

    Bug fixTerrain Analysis Engine

    LMAP-4170
    TLcdRasterMatrix: a numerical problem was fixed that caused row and column indices at certain edges to be treated as being outside the matrix.

    Bug fixWeather & Environment Standards

    LMAP-4616
    Lucy GRIB painter used to be inaccurate in some regions. This has been resolved.

    Bug fixWeather & Environment Standards

    LMAP-4614
    GRIB Bulletin model decoder can now decode GRIB1 files with alternative header structure.

    Bug fixWeather & Environment Standards

    LMAP-4605
    GRIB bulletin model descriptor now contains model descriptors of all contained models in ModelTreeNode mode.

    Bug fixWeather & Environment Standards

    LMAP-4684
    Decoded GRIB rasters now properly return unsigned integers for the internal values (ILcdRaster#retrieveValue and ILcdTile#retrieveValue).

    Bug fixWeather & Environment Standards

    LMAP-4697
    Decoded GRIB rasters that wrap around the globe no longer leave a narrow vertical gap (typically right next to the meridian).

    Bug fixDefense Symbology

    LMAP-4816
    The representation of the APP-6A decoy symbol (S*A*WD----*****, 2.X.2.2.2) was not correct and has been fixed.

    Bug fixInfrastructure Standards

    LMAP-3896
    For some arcs, the sweep angle were reserved. The angles are now correct.

    Bug fixInfrastructure Standards

    LMAP-3888
    TLcdDWGModelDecoder had an error in its decompression routine that caused some R2004 files to fail.

    Bug fixInfrastructure Standards

    LMAP-3592
    TLcdDGNModelDecoder can now handle files with certain ellipse shapes that previously failed.

    Bug fixMaritime Standards

    LMAP-4767
    The orientation of edges in a S-57 line or area was not always taken into account. Linestyles which are asymmetric w.r.t. the line axis might therefore have been rendered incorrectly. This has been fixed now.

    Upgrade considerationLuciadFusion

    ELcdGML32NilReasonEnumeration and ELcdGML32TimeUnit have been renamed to use a TLcd prefix and are now also regular classes instead of enumerations. These new classes correspond better with the types that are defined in the GML schema, and the API that uses these types is now also clearer.

    Existing users of these classes can simply use the new ones: TLcdGML32NilReasonEnumeration and TLcdGML32TimeUnit. A method is also available that allows retrieving a constant based on a String and allows iterating over all known values. The change also applies to the corresponding classes in GML 3.1.

    In most cases, this change results in a compilation error. However, this is not the case when the NilReasonEnumeration type is used as part of another union and/or choice. An example of this are for instance the nilReason and envelopeOrNull properties on TLcdGML32BoundedShape. The type of these properties is Object.class because they are a union/choice between TLcdGML32NilReasonEnumeration and another class (URI/Envelope). As such, no compilation errors are generated when a String value would be assigned to these properties. However, exceptions may occur at run-time because the property should not contain a String object.

    Upgrade considerationLuciadFusion

    The classes TLcdSHPPointM, TLcdSHPPointZ, TLcdSHPPolygonZ and TLcdSHPPolylineZ no longer implement ILcdDataObject. The interface was removed as geometry information for the SHP format is no longer exposed through the ILcdDataObject API. In case applications require access to the values contained in these geometries, the API exposed by the 4 before mentioned classes should be used.

    Upgrade considerationLuciadFusion

    In XML, a number of providers (TLcdXMLSchemaBasedMarshallerProvider, TLcdXMLSchemaBasedUnmarshallerProvider, TLcdXMLTypeMarshallerProvider, TLcdXMLTypeUnmarshallerProvider, TLcdXMLTypeObjectFactoryProvider, TLcdXMLMarshallerProvider and TLcdXMLUnmarshallerProvider) have a type unsafe API. These providers have public methods that return an object with a type parameter that is only used in the return value. As a result, the Java compiler's type inference allows callers to specify the type. This is incorrect and can lead to type unsafe code (this is code that compiles correctly but yields ClassCastExceptions at run-time). This unsafe API has been changed to use a wild-card type parameter as return type. This change may result in compilation errors. For type-safe code, these compilation errors can be easily fixed by using appropriate type parameters.

    Take the example ofILcdXMLUnmarshaller. This class has a method public <U, T extends U> ILcdXMLUnmarshaller<T> getUnmarshaller( QName aName, Class<U> aJavaClass ). This signature of this method is changed to public <U> ILcdXMLUnmarshaller<? extends U> getUnmarshaller( QName aName, Class<U> aJavaClass ). Because of this change, the following code no longer compiles, ILcdXMLUnmarshaller<X> m = provider.getUnmarshaller( ..., X.class ); and should be replaced by ILcdXMLUnmarshaller<? extends X> m = provider.getUnmarshaller( ..., X.class );

    Upgrade considerationLuciadFusion

    The magnetic north model decoders TLcdWMMModelDecoder and TLcdGRFModelDecoder now create TLcdValuedContour instances that contain ILcdPolyline shapes, instead of ILcdValuedPolygon instances that contain ILcdPolygon shapes. The old behavior can still be reproduced by calling the setCreateValuedPolygons() method (found in both model decoders) with parameter true. The default behavior will have this value set to false.

    Upgrade considerationLuciadFusion

    The behavior of the default model reference in TLcdDatabaseModelDecoder has been changed. Before, the default model reference was always used when set. Now, the default model reference will only be used when the method createModelReference of the ILcdDatabaseFactory associated with the TLcdDatabaseModelDecoder returns null. The old behavior can be accomplished easily by wrapping the TLcdDatabaseModelDecoder and manually replacing the reference of the decoded model with your model reference of choice (cast to ALcdModel and use setModelReference).

    Upgrade considerationLuciadFusion

    ILcdPOLGeometry now implements ILcdDataObject. Any custom implementations of this interface will have to implement this interface, using the POL data model found in TLcdPOLDataTypes.

    Upgrade considerationLuciadFusion

    ILcdDatabaseModelDescriptor now extends ILcdDataModelDescriptor. This change is a part of the upgrade of all vector formats supported by LuciadMap to support ILcdDataObject.

    Upgrade considerationLuciadFusion

    ILcdGXYEditableLabelsLayer now defines two new applyOnInteract() methods which take a paint mode as argument. One of these methods can be used to query domain objects, the other method can be used to query labels. These methods encapsulate the logic used to decide which objects and labels are painted by the layer. Hence, they take into account the labeled, scaleRange and labelScaleRange properties. For TLcdGXYLayer, the methods also use the selectionLabeled and filter properties for example. So these methods remove the need to do these checks externally, improving the encapsulation of the paint/applyOnInteract behavior of the layer.

    To see how these methods can be used to adjust the label painting behavior, see the labels.offset sample. In this sample, a distinction is made between labels representing bodies, and text labels. 'Body labels' are painted together with the bodies, and 'text labels' are painted on top later.

    This incompatible change impacts all user implementations of ILcdGXYEditableLabelsLayer. In that case a compile error is triggered. This compile error can be solved by implementing the two methods. For wrappers, the methods can be implemented by delegating to the wrapped ILcdGXYEditableLabelsLayer. For other implementations, ILcdGXYLayer#applyOnInteract() can be reused. However the implementation should take into account all settings that could modify the painting behavior.

    Upgrade considerationLuciadFusion

    The public constant UNKNOWN_TYPE was moved from TLcdCoreDataTypes to TLcdUnknownDataTypes. The type is now defined also in TLcdUnknownDataTypes.getDataModel() and no longer inTLcdCoreDataTypes.getDataModel().

    Upgrade considerationLuciadFusion

    TLcdComplexPolygon no longer extends TLcdShapeList or implements ILcdShapeList, since this extension was semantically not sound. Although it was occasionally convenient, it was often causing unexpected behavior, for instance when performing a series of instanceof tests. For backward compatibility, the typical TLcdShapeList methods are still available in TLcdComplexPolygon, but code that used to treat TLcdComplexPolygon as an ILcdShapeList will no longer function properly. Notably:
    • Assigning a TLcdComplexPolygon to an ILcdShapeList (local variable, argument, or field) will fail at compile-time.
    • Casting a TLcdComplexPolygon to an ILcdShapeList will fail at run-time (with a ClassCastException).
    • Performing an instanceof test of a TLcdComplexPolygon with ILcdShapeList will now return false at run-time.

    A possible symptom may be that complex polygons are not appearing in a view, because shape list painters and editors no longer work. The simple solution is to use complex polygon painters (like TLcdGXYPointListPainter) instead, which paints polygons correctly (taking into account any holes, unlike the shape list painters).

    Another symptom may be that complex polygons are not being encoded in a custom encoder, because they are no longer recognized. The encoder should then be adapted to iterate over the contained polygons instead of over the contained shapes.

    Upgrade considerationLuciadFusion

    Two new methods were added to the ILcdDataObject interface:
          boolean hasValue( TLcdDataProperty aProperty );
    
          boolean hasValue( String aPropertyName );
        
    These methods return true if a value is set for the specified property, false otherwise. They allow to test whether a multivalued property has a value, without triggering the creation of the Collection instance holding the values of that property (in case the collection would be empty and getValue() would lazily the collection). Classes that implement ILcdDataObject and do not inherit their ILcdDataObject implementation from a LuciadMap API class will no longer compile and need to be updated. The following code snippet provides a default implementation for these methods that is sufficient for most applications:
          public boolean hasValue(TLcdDataProperty aProperty ) {
          Object value = getValue( aProperty );
          if ( value != null ) {
          TLcdDataProperty.CollectionType collectionType = aProperty.getCollectionType();
          if ( collectionType != null ) {
          switch ( collectionType ) {
          case LIST:
          case SET:
          return ( ( Collection ) value ).size() > 0;
          case MAP:
          return ( ( Map ) value ).size() > 0;
          }
          }
          // Single-valued.
          return true;
          }
          // No value set.
          return false;
          }
    
          public boolean hasValue( String aPropertyName ) {
          return hasValue(getDataType().getProperty( aPropertyName ));
          }
        
    Only in cases where the data objects contain a large number of multivalued properties of which many are empty, a more optimized implementation that does not delegate to getValue() should be considered.

    Upgrade considerationLuciadFusion

    ILcdGXYEditableLabelsLayer now defines a new paint mode, PLACED_LABELS, which is used to signal that already placed labels should be painted. This mode is only passed to the layer when an ILcdGXYViewLabelPlacer is set on the view. When not using TLcdGXYLayer or an extension of it and when using an ILcdGXYViewLabelPlacer, the implementation of ILcdGXYLayer#paint() should be adjusted to support the ILcdGXYEditableLabelsLayer#PLACED_LABELS paint mode.

    Upgrade considerationLuciadFusion

    The return type of the following methods has been changed:
    • TLcdKML22DocumentProvider.updateDocument: changed from boolean to TLcdKML22Kml
    • TLcdKML22ImageProvider.updateImage: changed from boolean to Image
    A true return value now corresponds to an object being returned, a false return value now corresponds to null being returned.

    Upgrade considerationLuciadFusion

    The ILcdSVGModelDescriptor interface now implements ILcdDataModelDescriptor. If you have a custom implementation of this interface, you can delegate the work of the new interface methods to the TLcdSVGModelDescriptor class as a workaround. Another option would be to extend from TLcdSVGModelDescriptor directly, which is the recommended alternative.

    Upgrade considerationLuciadFusion

    LMAP-4574
    The ALcdBalloonManager no longer wraps the content generated by its ILcdBalloonContentProvider in a scrollpane. This allows for more flexibility while generating content. If you have any custom balloon content providers and would like to keep the scrollbar functionality, just wrap the content in a JScrollPane before returning it to theALcdBalloonManager:
          public JComponent getContent( ALcdBalloonDescriptor aBalloonDescriptor ) {
          //generate content as before
          JComponent contentPanel = generateContentPanel(aBalloonDescriptor);
          //wrap the result in a scrollpane
          JScrollPane scrollPane = new JScrollPane( contentPanel,
          JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
          JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED );
          return scrollPane;
          }
        

    Upgrade considerationLuciadFusion

    LMAP-4584

    The property names of the property change events (PropertyChangeEvent#getPropertyName()) fired when calling various setters of TLcdGXYLabelPainter now comply to the specification. As such, the property names can easily be derived from the method names, avoiding any confusion in the future.

    Search your code for the below strings in the context of PropertyChangeListener's, and rename them like this:

    • TLcdGXYLabelPainter#setForeground: "foreGroundColor" -> "foreground"
    • TLcdGXYLabelPainter#setBackground: "backGroundColor" -> "background"
    • TLcdGXYLabelPainter#setFrame: "framed" -> "frame"

    Upgrade considerationLuciadFusion

    TLcdGXYEditableLabelPainter has been deprecated in favor of ILcdGXYLabelEditor. The latter interface has a cleaner separation of concerns, and is independent of the ILcdGXYPainter used for the domain object.

    Upgrade considerationLuciadFusion

    ILcdMIFShape now extends the ILcdDataObject interface. The interface still extends the ILcdFeatured interface for backwards compatibility, but any custom implementations will have to implement the new interface as well.

    Upgrade considerationLuciadFusion

    LMAP-4378
    TLcdDataTypeBuilder now constrains the names that can be used for properties. Names of properties can only consist of letters, digits and the '_' character. More elaborate property names can be stored in the display name of the property.

    Upgrade considerationLuciadFusion

    ALcdLabelLocations has been modified to provide better support for the tracking of changes in the painted status of TLcdLabelLocation objects. Two methods were adjusted to have an extra argument denoting a fire event mode : setPainted() and clearAllPainted(). Classes extending ALcdLabelLocations should be adjusted to implement these abstract methods. The implementations of these methods can be facilitated by using TLcdLabelLocationEventSupport.

    Three extra abstract methods were added : fireCollectedLabelPaintedChanges(), addLabelPaintedListener() and removeLabelPaintedListener(). TLcdLabelLocationEventSupport can also be used to implement these methods.

    When setPainted() of clearAllPainted() is called by user code, a compile error will be shown. The fix is to add one of the following three modes as extra argument : ILcdFireEventMode.FIRE_NOW, ILcdFireEventMode.FIRE_LATER. Also note that when ILcdFireEventMode.FIRE_LATER is passed to these methods, fireCollectedPaintedChanges() should be called later.

    Upgrade considerationDatabase Connectors

    The behavior of the default model reference in TLcdPostGISModelDecoder has been changed. Before, the default model reference was always used when set. Now, the default model reference will only be used when no model reference can be created based on the properties file or database table. The old behaviour can be accomplished easily by wrapping the TLcdPostGISModelDecoder and manually replacing the reference of decoded models with your model reference of choice (cast to ALcdModel and use setModelReference).

    Upgrade considerationDatabase Connectors

    The behavior of the default model reference in TLcdInformixSpatialModelDecoder has been changed. Before, the default model reference was always used when set. Now, the default model reference will only be used when no model reference can be created based on information from the properties file or database. The old behavior can be accomplished easily by wrapping the TLcdInformixSpatialModelDecoder and manually replacing the reference of decoded models with your model reference of choice (cast to ALcdModel and use setModelReference).

    Upgrade considerationDatabase Connectors

    The behavior of the default model reference in TLcdInformixGeodeticModelDecoder has been changed. Before, the default model reference was always used when set. Now, the default model reference will only when an unsupported SRID is specified in the properties file or in the database. The old behavior can be accomplished easily by wrapping the TLcdInformixGeodeticModelDecoder and manually replacing the reference of decoded models with your model reference of choice (cast to ALcdModel and use setModelReference).

    Upgrade considerationDatabase Connectors

    The behavior of the default model reference in TLcdOracleSpatialModelDecoder has been changed. Before, the default model reference was always used when set. Now, the default model reference will only when an unsupported SRID is specified in the properties file or in the database. The old behavior can be accomplished easily by wrapping the TLcdOracleSpatialModelDecoder and manually replacing the reference of decoded models with your model reference of choice (cast to ALcdModel and use setModelReference).

    Upgrade considerationDatabase Connectors

    The behavior of the default model reference in TLcdDB2SpatialModelDecoder has been changed. Before, the default model reference was always used when set. Now, the default model reference will only be used when no model reference can be created based on information from the properties file or database. The old behavior can be accomplished easily by wrapping the TLcdDB2SpatialModelDecoder and manually replacing the reference of decoded models with your model reference of choice (cast to ALcdModel and use setModelReference).

    Upgrade considerationDatabase Connectors

    If all the database rasters matching the ogr file or Properties object have the same geographic reference, then the TLcdOracleGeorasterModelDecoder returns an ILcd2DBoundsIndexedModel, as before. However, if the rasters matching the ogr file or Properties object have different geographic references, then the model decoder returns an ILcdModelTreeNode. The ILcdModelTreeNode contains several ILcd2DBoundsIndexedModel sub-models, one for each encountered geographic reference. Previously, the rasters that had a different reference than the first one retrieved were discarded and a warning message was logged.

    Upgrade considerationGraph and Routing Engine

    The GDF data model now supports the unified generic model; all domain classes now implement the ILcdDataObject interface, the GDF model descriptors now implement ILcdDataModelDescriptor. To support the unified generic model, the ILcdGDFFeature interface has been modified to extend the ILcdDataObject interface. Classes implementing ILcdGDFFeature should be modified to implement the methods of ILcdDataObject. Wrappers around GDF domain classes can simply delegate these methods to the corresponding methods in the wrapped class. Since the GDF model descriptor now implements ILcdDataModelDescriptor, all elements in GDF models are required to implement ILcdDataObject. Custom domain objects wrapping GDF model elements will need to implement ILcdDataObject as well, if they are contained in a model with an GDF model descriptor.

    Upgrade considerationAviation Standards

    All AIXM 5.1 methods that represent a value with a unit of measure, such as TLcdAIXM51ValDepth, now have better accessors for the nilReason and the uom attributes. Both of these attributes can no longer be set as a String but require an instance of a specific class. This makes the api more usable.

    Existing users of these accessors that use String instances can simply use the constructors that are available on the new types (TLcdGML32NilReasonEnumeration and TLcdAIXM51Uom*) to create an instance that corresponds to the String. The new types also have predefined constants that correspond to well known values.

    Upgrade considerationAviation Standards

    Getters and setters for the 'nilReason' attribute that occurs on various types have been adapted to be compatible with the classes of the actual values of this attribute. Getters and setters that used to work with a String now use a TLcdGML32NilReasonAnnotation or an Object. In case of an Object, the methods support both instances of URI and TLcdGML32NilReasonAnnotation.

    Existing uses of these methods that worked with a String should convert the String to either a URI or a TLcdGML32NilReasonEnumeration when using the setter. For the getter, both of these types can easily be converted to a String if required.

    Upgrade considerationAviation Standards

    The methods getDataObjectFactory() and setDataObjectFactory(TLcdAISDataObjectFactory) have been added to ILcdDAFIFDecoder. These methods allow the decoder to create domain objects that properly implement ILcdDataObject.

    Upgrade considerationAviation Standards

    The names of the AIXM 5.1 enumeration model classes representing units of measure have the 'Type' suffix in their names dropped, and they now have a TLcd prefix. For instance, the ELcdAIXM51UomDepthType class has been renamed as such to TLcdAIXM51UomDepth. This is more consistent with their names in AIXM 5.0.

    These classes have also been changed from enumerations to regular classes. This results in a better correspondence with the AIXM 5.1 schema, and makes other API that uses these classes more usable. A method is available to retrieve all known values for a given type.

    This change will result in compile time errors for code that uses one of classes listed below. These errors can be easily solved by also removing the 'Type' suffix. All uses of the following class names should be replaced with the new names:
    • ELcdAIXM51UomTemperatureType
    • ELcdAIXM51UomDepthType
    • ELcdAIXM51UomDistanceType
    • ELcdAIXM51UomDistanceVerticalType
    • ELcdAIXM51UomDurationType
    • ELcdAIXM51UomFLType
    • ELcdAIXM51UomFrequencyType
    • ELcdAIXM51UomLightIntensityType
    • ELcdAIXM51UomPressureType
    • ELcdAIXM51UomSpeedType
    • ELcdAIXM51UomWeightType

    Upgrade considerationAviation Standards

    The method TLcdARINCEnrouteCommunicationHandler#getKeyFeatureNames() has been removed. Applications that need this information can always retrieve it using the TLcdAISKeyPropertiesAnnotation on the EnrouteCommunication type in ARINC, TLcdARINCDataTypes#EnrouteCommunication.

    Upgrade considerationAviation Standards

    The 'name' and 'description' properties of time slices in the AIXM 5.0 and 5.1 domain model now use a prefix that no longer contains 'TimeSlice', to make them more readable and convenient to use. This means that both property constants and getters and setters for these properties now have a slightly different name.

    Resulting compilation problems can be fixed easily by removing 'TimeSlice' from the affected methods or property names. For instance, TLcdAIXM51AirportHeliportTimeSlice#getAirportHeliportTimeSliceName() will need to be changed to getAirportHeliportName(). Also the corresponding constant AIRPORT_HELIPORT_TIMESLICE_NAME_PROPERTY will need to be changed to AIRPORT_HELIPORT_NAME_PROPERTY.

    This improvement will improve the readability of your code because these method names are now a bit shorter, and it will avoid possible confusion as the previous naming might have suggested that it was the name or description of the time slice instead of the name or description of the actual feature itself.

    Upgrade considerationAviation Standards

    New time slice classes have been added to the AIXM 5.0 and 5.1 domain model, making it easier to access properties that are common between related time slice types (e.g., a runway marking and a taxiway marking). The new classes correspond to abstract feature types (e.g., a marking) that do not have a corresponding time slice type in the AIXM schemas (e.g., a marking).

    This is the list of added classes for AIXM 5.0; corresponding classes for 5.1 are also added:
    • TLcdAIXM5AbstractMarkingTimeSlice
    • TLcdAIXM5AbstractSegmentLegTimeSlice
    • TLcdAIXM5AbstractServiceTimeSlice
    • TLcdAIXM5AbstractTrafficSeparationServiceTimeSlice
    • TLcdAIXM5AbstractAirportGroundServiceTimeSlice
    • TLcdAIXM5AbstractAirportHeliportProtectionAreaTimeSlice
    • TLcdAIXM5AbstractApproachLegTimeSlice
    • TLcdAIXM5AbstractGroundLightSystemTimeSlice
    • TLcdAIXM5AbstractNavaidEquipmentTimeSlice
    • TLcdAIXM5AbstractNavigationSystemCheckpointTimeSlice
    • TLcdAIXM5AbstractProcedureTimeSlice
    • TLcdAIXM5AbstractRadarEquipmentTimeSlice
    • TLcdAIXM5AbstractSurveillanceRadarTimeSlice

    These classes are now also used in various getters and setters in the domain model. Existing code that uses these methods might experience compilation problems that can easily be fixed by using the correct type.

    Some of these classes also declare a 'name' and/or a 'description' property that used to be declared on the subclasses with a class specific prefix. Due to the introduction of these super classes, the prefix has changed. Resulting compilation problems can be fixed easily by simply changing the used method or constant. For instance, a call to TLcdAIXM51InformationService#getInformationServiceTimeSliceName() will need to be changed to getServiceName(). Also the corresponding constant TLcdAIXM51InformationService#INFORMATION_SERVICE_TIMESLICE_NAME_PROPERTY will need to be changed to SERVICE_NAME_PROPERTY.

    Upgrade considerationAviation Standards

    Two methods have been added to ILcdAIXMHandler to get and set the handler's data object factory. Handler implementations should use this data object factory to create domain objects. The AIXM model decoder has been changed to use these methods to properly configure its registered handlers.

    Upgrade considerationAviation Standards

    Two methods have been added to ILcdARINCHandler to get and set the handler's data object factory. Handler implementations should use this data object factory to create domain objects. The ARINC model decoder has been changed to use these methods to properly configure its registered handlers.

    Upgrade considerationAviation Standards

    All interfaces in the AIS domain model now implement the ILcdDataObject interface. Existing implementations can either choose to fully support this interface by using the new AIS data types, or they can simply fall back to an implementation that returns TLcdUnknownDataTypes.UNKNOWN_TYPE for all data objects.

    Upgrade considerationAviation Standards

    Accessors on AIXM 5.0 and AIXM 5.1 model classes for properties that map on choices in the AIXM 5.0 and 5.1 XML schema are now uniform with other accessors for association class properties. This means that they hide the association class and directly expose the object the association points to.

    The following methods are affected in AIXM 5.0. In AIXM 5.1, the same methods are affected, but note that small (name) differences can occur because of changes in the schema.
    • ALcdAIXM5VerticalStructurePart#getHorizontalProjection()
    • TLcdAIXM5ArrestingGearTimeSlice#getExtent()
    • TLcdAIXM5MarkingElement#getExtent()
    • TLcdAIXM5Obstruction#getObstruction()
    • TLcdAIXM5RadioFrequencyArea#getEquipment()
    • TLcdAIXM5AerialRefuelingPoint#getPointChoice()
    • TLcdAIXM5TerminalSegmentPoint#getPointChoice()
    • TLcdAIXM5EnRouteSegmentPoint#getPointChoice()
    • TLcdAIXM5AngleIndicationTimeSlice#getPointChoice()
    • TLcdAIXM5DistanceIndicationTimeSlice#getPointChoice()
    • TLcdAIXM5SignificantPointInAirspaceTimeSlice#getLocation()
    • TLcdAIXM5ObstacleAreaTimeSlice#getReference()
    • TLcdAIXM5TerminalArrivalAreaTimeSlice#getIF()
    • TLcdAIXM5TerminalArrivalAreaTimeSlice#getIAF()
    • TLcdAIXM5NavigationAreaTimeSlice#getCentrePoint()
    • TLcdAIXM5InstrumentApproachProcedureTimeSlice#getGuidanceFacility()
    • TLcdAIXM5StandardInstrumentDepartureTimeSlice#getGuidanceFacility()
    • TLcdAIXM5StandardInstrumentArrivalTimeSlice#getGuidanceFacility()
    • TLcdAIXM5FinalLegTimeSlice#getFinalPathAlignmentPoint()
    • TLcdAIXM5SafeAltitudeAreaTimeSlice#getCentrePoint()
    • TLcdAIXM5HoldingPatterTimeSlice#getOutboundLegSpan()
    • TLcdAIXM5DirectFlightSegment#getEnd()
    • TLcdAIXM5DirectFlightSegment#getStart()
    • TLcdAIXM5FlightRoutingElement#getPointElement()
    • TLcdAIXM5FlightConditionElement#getSignificantPointCondition()
    • TLcdAIXM5RoutePortion#getStart()
    • TLcdAIXM5RoutePortion#getIntermediatePoint()
    • TLcdAIXM5RoutePortion#getEnd()
    • TLcdAIXM5ChangeOverPointTimeSlice#getLocation()
    These methods now return the actual object instead of the XML choice object; their return type is also adjusted to the most specific type (previously ILcdDataObjecT).

    Upgrade considerationDefense Standards

    The VPF domain model now supports the unified generic model; all domain classes now implement the ILcdDataObject interface, the VPF model descriptor now implements ILcdDataModelDescriptor. To support the unified generic model, the ILcdVPFFeature interface has been modified to extend the ILcdDataObject interface. Classes implementing ILcdVPFFeature should be modified to implement the methods of ILcdDataObject. Wrappers around VPF domain classes can simply delegate these methods to the corresponding methods in the wrapped class. Since the VPF model descriptor now implements ILcdDataModelDescriptor, all elements in VPF models are required to implement ILcdDataObject. Custom domain objects wrapping VPF model elements will need to implement ILcdDataObject as well, if they are contained in a model with an VPF model descriptor.

    Upgrade considerationInfrastructure Standards

    The TLcdDGNModelDecoder now uses the ODA Teigha native library to perform the actual decoding. The old decoder is still available and can be activated using the system property dgn.decoder.legacy=true.

    Upgrade considerationInfrastructure Standards

    DGN tags are now available through the Data Model API. Therefore, ILcdDGNShape now extends ILcdDataObject and TLcdDGNModelDescriptor implements ILcdDataModelDescriptor.

    Upgrade considerationInfrastructure Standards

    DWG extented entities are now available through the Data Model API. Therefore, ILcdDWGShape now extends ILcdDataObject and TLcdDWGModelDescriptor implements ILcdDataModelDescriptor.

    Upgrade considerationRadar Connectors

    The ILcdASDIMessageFilter has been changed to accommodate the new ILcdDataObject interface. The accept method now accepts a single ILcdDataObject instance instead of an ILcdFeatured and an ILcdFeaturedDescriptor. The properties for this ILcdDataObject can be found in the TLcdASDIMessageDataTypes class. The filter still offers equivalent functionality, while being easier to use in an IDE with auto-completion. The TLcdASDIMessageInputStream.readMessage() method now returns an ILcdDataObject representation of a message instead of an ILcdFeatured representation. The properties for this ILcdDataObject match the one given in ILcdASDIMessageFilter. For more information, refer to the API reference of TLcdASDIMessageDataTypes class.

    10.0

    10.0.19

    ImprovementLuciadFusion

    LMAP-4734
    Support use of urn:ogc:def:uom:EPSG codes for units of measure in GML.

    ImprovementLuciadFusion

    LMAP-4735
    Default values for URI's are now shared; this reduces memory usage for large GML models that contain for instance time geometric primitives.

    ImprovementDefense Standards

    LMAP-4579
    The GeoSym provider now recognizes the VMAP2i product type; the symbology that is used for visualizing the product is that of VMAP Level 2.

    ImprovementMaritime Standards

    TLcdS52GXYLevelLayerList can now handle model list structures that have one or more empty model lists.

    ImprovementMaritime Standards

    LuciadMap releases only contain resource files for the latest version of the S-52 presentation library. The deprecated color schemes DAY_BLACK_BACK and DAY_WHITE_BACK which are no longer supported by the latest version of the S-52 library can now be enabled again in LuciadMap by including the old DAYBLACKBACK.DAT and DAYWHITEBACK.DAT files in the classpath.

    ImprovementS-63

    S-63 cell name look up is no longer case sensitive; this resolves a potential issue - unfound cell permits - in places where the case of the file names would have changed during distribution of the data.

    Bug fixLuciadFusion

    LMAP-4765
    TLcdEarthGLShapeTileSet: no longer logs an error for some exceptions that are actually valid scenarios.

    Bug fixLuciadFusion

    LMAP-4665
    TLcdOGCFilterEvaluator now properly evaluates comparison operators with operands that implement Comparable.

    Bug fixLuciadFusion

    LMAP-4745
    The custom JAI cache implementation (mostly used by TLcdGeoTIFFModelDecoder) suffered from memory leaks, which have been corrected now.

    Bug fixLuciadFusion

    LMAP-3984
    TLcdEarthElevationDataSplitter: fixed interpolation bug.

    Bug fixLuciadFusion

    Fix the IndexOutOfBoundsException that could occur when exporting certain complex polygons to GML.

    Bug fixLuciadFusion

    LMAP-4732
    Creating TLcdJULFileHandler programmatically threw an IllegalArgumentException.

    Bug fixLuciadFusion

    LMAP-4731
    TLcdGXYCircleBy3PointsPainter and TLcdGXYSurfacePainter threw a NullPointerException when painting with a null fill style.

    Bug fixLuciadFusion

    LMAP-4721
    TLcdEllipsoidUtil.intersection2DLineSegments now detects all border cases.

    Bug fixAviation Standards

    LMAP-4737
    The width feature of ILS localizers is now correctly decoded as a double instead of a float. This makes the data consistent with the information in the feature descriptors.

    Bug fixAviation Standards

    ILcdAIXMAirspaceFeature: The name of the 'Airspace activity' feature that is common to most AIXM airspace types was incorrectly spelled. The name of the feature has been corrected from 'Airspace acitivity' to 'Airspace activity'.

    Bug fixMaritime Standards

    LMAP-4766
    A bug in the internal intersection computation algorithm of S-57 has been fixed. This issue may have resulted into an incorrect minimum or maximum depth computation of S-57 points and in rare cases an incorrect visualization of the affected point. The issue only affects a very small amount of points (typically less than 0.01 per cent of the computed depths).

    10.0.18

    Bug fixLuciadFusion

    LMAP-4719
    TLcdSHPModelDecoder.setWithLazyFeaturing() was broken in LuciadMap 10.0. The decoder always loaded the full contents of the .DBF file regardless of the setting of the 'lazy featuring' property. The intended behavior has been restored, i.e. if lazy featuring is on then object attributes are only read from the .DBF file when they are first accessed by the application.

    Bug fixLuciadFusion

    LMAP-4724
    The TLcdGML32ArcByBulge and TLcdGML31ArcByBule did not always compute a correct bulge when using their LuciadMap interface.

    Bug fixLuciadFusion

    LMAP-4722
    The array-based list implementations for native types (TLcdIntArray, TLcdDoubleArray, etc.) now ensure their capacity (ensureCapacity) similar to java.util.ArrayList. This greatly improves their performance when large lists need to grow.

    Bug fixLuciadFusion

    LF-4
    Some georeferences caused an error when fusing.

    10.0.17

    ImprovementLuciadFusion

    LMAP-4718
    Improved the behavior of TLcdGXYNavigateControllerModel with rotation disabled.

    Bug fixLuciadFusion

    LMAP-4663
    The bounds of a TLcdLonLatFloatPolygon around the poles were not correct.

    Bug fixLuciadFusion

    LMAP-4703
    TLcdSingleTileRaster now correctly handles rounding problems near its border, which sometimes duplicated the first row and column of pixels.

    Bug fixLuciadFusion

    LMAP-4702
    TLcdRPCProjection now correctly handles a non-zero image height that is set. This corrects the model reference that is decoded for NITF files with RPC00B extensions, for instance.

    Bug fixLuciadFusion

    LMAP-4691
    Fixed gap/discontinuity on edges of elevation data assets.

    Bug fixLuciadFusion

    The TLcdEarthGLShapeTileSet did not properly select elements from a bounds indexed model. As a result more data could be loaded than necessary during tile production.

    Bug fixLuciadFusion

    When instant editing, switching from translating to reshaping in the middle of a mouse drag caused the editing to stop. This has been fixed.

    Bug fixLuciadFusion

    LMAP-4495
    Fixed a bug in the TLcdGXYOffsetIconPainter when using instant editing.

    Bug fixLuciadFusion

    LMAP-4686
    ALcdGXYPen's hot points are no longer affected by the painter style.

    Bug fixLuciadFusion

    LMAP-4666
    TLcdSHPModelEncoder no longer throws ClassCastExceptions when the input model contains shape lists with elements that the SHP format cannot support (such as arcs). Instead, such elements are skipped by the encoding process.

    Bug fixLuciadFusion

    LMAP-2718
    ToolTipController sample sometimes did not display the intended tool tip from the first time.

    10.0.16

    ImprovementLuciadFusion

    LMAP-4583
    TLcdGML32ArcByCenterPoint and TLcdGML31ArcByCenterPoint now support the connect() method that can correct arcs which are not properly connected in a composite curve. This method corrects the arc such that its begin and end point coincide with the next point in the composite curve.

    ImprovementAviation Standards

    LMAP-4583
    The AIXM 5.0 and AIXM 5.1 model decoders now automatically correct arc-by-center-points of which the start/end point do not coincide with the end/start point of the previous/next curve in the composite curve. Note that this correction does not change the original data as stored in the model. See the TLcdGML32ArcByCenterPoint#connect method in the API reference for more information.

    Bug fixLuciadFusion

    LMAP-4681
    TLcdViewHeightProvider now also listens to model changes to update itself.

    Bug fixLuciadFusion

    LMAP-4429
    The accuracy of bounds transformations in the standard implementations of ILcdModelXYWorldTransformation has been further improved.

    Bug fixLuciadFusion

    TLcdInterpolatedRaster no longer interpolates with the default (unknown) value, thus avoiding artifacts in elevation rasters and weather rasters.

    Bug fixAviation Standards

    Improved error handling for procedure legs that flyby a navaid onto an arc. This removes certain erroneous geometries from the result.

    10.0.15

    Bug fixLuciadFusion

    LMAP-4675
    Solved a NPE when using TLcdXMLEncoder (the xml encoder that doesn't rely on XML schema) to encode objects that do not implement ILcdXMLElementInfo.

    Bug fixLuciadFusion

    LMAP-4672
    TLcdMBeanPerformanceLogHandler now escapes its ObjectName values, allowing layers and models with special characters in their name.

    Bug fixLuciadFusion

    The TLcdEarthTileRepositoryPreprocessor sometimes failed to start if the Oracle XML parser is on the classpath.

    Bug fixLuciadFusion

    LMAP-4657
    TLcdColorMapCustomizer: could fire a change event while the TLcdColorMap was still in an inconsistent state. This could break listeners that relied on that.

    Bug fixLuciadFusion

    LMAP-4655
    In the geometry package topology calculations, if an arc was inside a polygon, the topology check "interacts" returned false. This has been fixed.

    Bug fixLuciadFusion

    LMAP-4627
    TLcdFeatureIndexedVectorModel#retrieveByUniqueIndex() was incorrectly returning null in some cases.

    Bug fixLuciadFusion

    The warping raster painters now correctly paint interpolated rasters again (bug introduced with optimizations in version 10.0).

    Bug fixLuciadFusion

    LMAP-4141
    Exporting a model without bounds with the GML encoder now properly adds the srsName attribute to all exported features.

    Bug fixAviation Standards

    Improved support for procedure legs of type 'RF' in the procedure calculator.

    Bug fixAviation Standards

    LMAP-4673
    Improved support for AIXM 5.0 and 5.1 features that contain no geometry and have a boundedBy property that is explicitly set to 'Null'.

    Bug fixRadar Connectors

    The featured descriptor of trajectory models now correctly indicate that the "ID" feature returns an Integer instead of a String.

    10.0.14

    ImprovementLuciadFusion

    LMAP-4611
    TLcdLambertConformal can now be serialized.

    ImprovementLuciadFusion

    LMAP-4600
    The TLcdWKTModelReferenceParser recognizes "D_ETRS_1989" as a valid geodetic datum name.

    ImprovementLuciadFusion

    LMAP-4577
    TLcdWCSClient has improved support to detect service exception reports sent by the server.

    ImprovementLuciadFusion

    LMAP-4577
    TLcdWFSClient has improved support to detect service exception reports sent by the server.

    ImprovementLuciadFusion

    LMAP-4577
    TLcdWMSClient has improved support to detect service exception reports sent by the server.

    ImprovementAviation Standards

    TLcdDAFIFTParachuteJumpAreaDecoder: the decoder no longer fails for parachute jump areas that contain arc segments specified by two bearings and two distances.

    ImprovementAviation Standards

    The geometry calculation for procedure legs of type 'CR' now better handles erroneous legs, resulting in an improved visualization of those legs.

    ImprovementAviation Standards

    TLcdDAFIFTNavaidDecoder: improved the decoding of collocated navaids such as VORTAC. As a result of this improvement more navaids will be available in the decoded model.

    Bug fixLuciadFusion

    Fixed a problem in TLcdGXYAsynchronousPaintQueue that could prevent state changes from being propagated to the inner layer if asynchronous painting was ongoing.

    Bug fixLuciadFusion

    LMAP-4625
    TLcdGeodetic2Geodetic bounds transformations were incorrect for bounds wider than 180 degrees.

    Bug fixLuciadFusion

    LMAP-4618
    Selecting polylines or editing segments of polylines was broken when using the TLcdGXYRoundedPointListPainter. This has been fixed.

    Bug fixLuciadFusion

    TLcdDatabaseGXYPainterProvider now also supports ILcd3DEditablePolygon instances when used as an editor provider.

    Bug fixLuciadFusion

    LMAP-3620
    TLcdHaloIcon now paints the delegate icon properly centered. In practice, this only affected large halo sizes.

    Bug fixLuciadFusion

    LMAP-4606
    Initializing the (A,B) or (A,1/F) coefficients of an TLcdEllipsoid was not resetting the default ellipsoid name ("WGS_1984").

    Bug fixLuciadFusion

    LF-68
    The models returned by the fusion model decoders did not fire correct model events.

    Bug fixLuciadFusion

    Added fallback zip decoding mechanism which was needed for some zip variants. This issue prevented a few KMZ files from being decoded.

    Bug fixLuciadFusion

    LMAP-4624
    Improved performance of xlink resolution.

    Bug fixLuciadFusion

    LMAP-4601
    Fix decoding of global elements of a primitive type with a default value.

    Bug fixLuciadFusion

    LMAP-4520
    When working with multiple tiles on a very small world area, the WCS proxy object TLcdWCSProxy did not always correctly positioned the tiles in the resulting raster upon server response.

    Bug fixDatabase Connectors

    LMAP-4626
    TLcdDB2SpatialModelEncoder did not accept short-form database connection URLs (jdbc:db2:DATABASE).

    Bug fixTerrain Analysis Engine

    LMAP-4634
    The result of line of sight with TLcdLOSRadarPropagationFunction could be wrong behind the radar if vertical radar tilt was used. This has been fixed.

    Bug fixTerrain Analysis Engine

    LMAP-4567
    The progress counter status events of TLcdLOSCoverageFatory#createLOSCoverageRaster didn't go correctly from 0% to 100% when the nearest neighbour method was used. This has been fixed.

    Bug fixAviation Standards

    TLcdDAFIFTProcedureDecoder: improved decoding of the recommended navaid which results in a more accurate visualization for certain procedures.

    Bug fixAviation Standards

    TLcdDAFIFTProcedureDecoder: improved the decoding to include more procedures in the resulting model.

    10.0.13

    ImprovementLuciadFusion

    TLcdGXYClippingPainterWrapper: does not use straight-line approximations by default. This approximation can still be enabled by using the setClipPen method.

    ImprovementAviation Standards

    The AIXM 5.0 and AIXM 5.1 model decoders now use the application schema cache by default. This property can be controlled through the method setUseApplicationSchemaCache(boolean) in TLcdAIXM5ModelDecoder and TLcdAIXM51ModelDecoder. Using the application schema cache improves decoding performance when multiple files are decoded using the same decoder.

    ImprovementAviation Standards

    The AIXM 5.0 and 5.1 painters now also support surfaces that use an arc-by-center-point in their exterior or interior ring.

    Bug fixLuciadFusion

    The implementations of ILcdProjection have been corrected to take into account their central meridian when returning their boundary longitudes.

    Bug fixLuciadFusion

    LMAP-4429
    The accuracy of bounds transformations in the standard implementations of ILcdModelXYWorldTransformation has been improved, notably for bounds crossing the edges of the model/world projections.

    Bug fixLuciadFusion

    LMAP-4504
    TLcdGXYViewJPanelLightWeight sometimes did not update its labels correctly.

    Bug fixLuciadFusion

    Fixed bug that would add null to the end of an image url when it could not be parsed the first time.

    Bug fixLuciadFusion

    Fixed an issue that could cause a NullPointerException in case of XPath resolution.

    Bug fixLuciadFusion

    TLcdDatabaseModel now more efficiently commits elements that have been changed and subsequently deleted.

    Bug fixLuciadFusion

    LMAP-4585
    TLcdGXYIconPainter#anchorPointSFCT() did not account for ILcdGXYContext#getDeltaX/Y() while editing.

    Bug fixLuciadFusion

    TLcdGXYPolygonLabelPainter and TLcdGXYPolylineLabelPainter did not fire property change events for all setters.

    Bug fixLuciadFusion

    LMAP-4572
    TLcdGeoTIFFModelEncoder no longer throws a RasterFormatException when trying to encode a raster model with buffered tiles, with short pixel values that do not represent elevations.

    Bug fixLuciadFusion

    LMAP-4570
    TLcdDTEDModelDecoder and TLcdDTEDDirectoryModelDecoder no longer incorrectly return a geoid datum when when the flags applyGeoidDatums and supportGeoidDatums are both set.

    Bug fixLuciadFusion

    LMAP-4560
    TLcdVVJPanel: in some cases, an exception could be thrown when using the vertical view's controllers.

    Bug fixAviation Standards

    Fixed the use of custom functions in the TLcdAIXM5XPathFactory.

    Bug fixAviation Standards

    LMAP-4223
    The TLcdAIXM51Link constructor that takes a data object as parameter no longer throws an exception when invoked with a data object for which a proper link type can be deduced.

    Bug fixAviation Standards

    Improved the javadoc for a number of property constants defined on the AIXM 5.0 and AIXM 5.1 domain objects.

    Bug fixAviation Standards

    Fixed an issue in the setters for various AIXM 5.0 and 5.1 domain objects, causing an incorrect domain model. The issue resulted in exceptions when trying to encode the domain model afterwards.

    Bug fixAviation Standards

    Snapshot generation no longer removes properties with schedules that do not have an associated schedule from the snapshot timeslice.

    10.0.09

    ImprovementLuciadFusion

    ALcdProjection (and consequently all projection classes) now implement the Cloneable interface.

    ImprovementLuciadFusion

    The TLcdEPSGReferenceFormatter and TLcdEPSGReferenceParser are now consistent with each other, in the sense that formatting a reference produced by the parser results in the same EPSG code as the original. Related to this, when the EPSG code is present in a WKT reference or when at least the axes of coordinates are specified, the TLcdWKTReferenceParser will produce references that give the correct EPSG code when parsed by TLcdEPSGReferenceParser.

    ImprovementLuciadFusion

    The clone methods of TLcdGeoidReference, TLcdGeoidReference, TLcdXYModelReference, TLcdTopocentricReference, TLcdOrthorectifiedProjection, TLcdPerspectiveProjection, TLcdPolyconic, now call super.clone().

    ImprovementLuciadFusion

    TLcdGridReference.clone() also copies the reference name.

    ImprovementLuciadFusion

    The TLcdEarthGXYViewTileSet now propagates exceptions that occur during painting of its layers. This was not possible before the ILcdPaintExceptionHandler interface was introduced.

    ImprovementLuciadFusion

    You can now specify a texture matrix for a TLcdEarthTexturedVertexArray. This can for example be used to only map a part of the texture on the vertex array data.

    ImprovementLuciadFusion

    TLcdFeaturedSingleShapeList and TLcdFeaturedMultiShapeList have been added to the package com.luciad.format.database. They are useful for representing shape lists that are identified by one of their features (typically a primary key from a database).

    ImprovementLuciadFusion

    The TLcdXMLSchemaBasedEncoder now also supports the weblogic.xml.stax.XMLStreamOutputFactory xml output factory implementation.

    ImprovementLuciadFusion

    Introduced TLcdPair as an immutable, generified key-value pair.

    ImprovementLuciadFusion

    The evaluation of bounding box operators against shapes that implement the ILcdShapeList interface is now more accurate. LuciadMap now evaluates each shape of the shape list against the bounding box instead of evaluating the bounds of the shape list against the bounding box.

    ImprovementLuciadFusion

    The TLcdEarthMetadataTerrainTileSet and TLcdEarthAssetTerrainElevationTileSet now also support TLcdEarthClippedRasterAssets with ELEVATION as the coverage type.

    ImprovementLuciadFusion

    The 2D and 3D painters where updated to:
    • Support updating tiles that are older than a certain age (enabled, with a 1 minute age, by default)
    • Support using outdated tiles when retrieving an updated version fails (enabled by default)
    The 3D painter was updated to:
    • Simplify customizing the default tile set wrappers such as the asynchronous tile set
    • Support soft caching of the tiles
    • Support updating tiles on demand
    The 3D terrain painter was also updated to:
    • Automatically add the necessary tile set wrappers for combining image and elevation tiles into terrain tiles. As a result it is now advised to no longer add these yourself. You should for example use TLcdEarthRepositoryModelDecoder instead of the TLcdEarthTerrainRepositoryModelDecoder.
    • Support image and elevation tile sets with a different set of tiles (e.g. you no longer need both an image and an elevation tile together). If a tile is missing, a tile at a lower level will be used instead.

    ImprovementLuciadFusion

    A large number of tile set implementations have been updated to support asynchronous tile operation. For example the TLcdEarthTexturedTerrainTileSet produces the elevation and images tiles, needed for a terrain tile, asynchronously. As a result more requests can be executed concurrently. This is especially important if a tile request involves network communication, which can have a high latency. The threads in the TLcdEarthAsynchronousTileSet now also support producing the delegate tiles asynchronously.

    ImprovementLuciadFusion

    LuciadFusion is a new software platform for the management, fusion, and storage of large spatial data sets in networked environments. The Fusion Client is the native LuciadMap connection to LuciadFusion for the retrieval of fused data from a central Data Server.

    ImprovementS-63

    LMAP-4391
    TLcdS63ModelDecoder can now always be instantiated, even if the license file does not contain the S-63 optional module. The canDecodeSource() method of this class can now be used to check whether the S-63 optional module is present.

    Bug fixLuciadFusion

    Fixed an issue that could cause a stack-overflow exception in case a datamodel with a cyclic dependency was configured on a xml encoder or decoder.

    Bug fixLuciadFusion

    LMAP-4536
    Pin halo image cache was not validated often enough, sometimes causing label pins to be painted in the wrong location.

    Bug fixLuciadFusion

    LMAP-4494
    TLcdGeoTIFFModelDecoder now again correctly decodes GeoTIFFs with transparency bitmasks.

    Bug fixLuciadFusion

    LMAP-4529
    TLcdColorMapCustomizer: Enhancement LMAP-4452 could cause the gradient toggle to throw an ArrayIndexOutOfBoundsException.

    Bug fixLuciadFusion

    LMAP-4534
    TLcdGXYIconPainter#anchorPointSFCT() could produce a NullPointerException. This is fixed now.

    Bug fixLuciadFusion

    Fix an issue that caused incorrect decision on whether or not to expand a choice that contains other choices. This might cause exceptions during encoding and decoding.

    Bug fixLuciadFusion

    LMAP-4493
    TLcdGXYPointListPainter: when paint cache was used and changing the projection a NPE could occur while editing a polygon, and when adding a point to a polygon it could sometimes appear at the wrong edge. This has been fixed.

    Bug fixLuciadFusion

    LMAP-4183
    The samples now also build the GUI on the Event Dispatch thread when started as an applet.

    Bug fixAdvanced GIS Engine

    LMAP-4444
    TLcdSphericalBasicBinaryTopology gave an exception that it didn't support certain shape combinations even though they were supported according to the documentation. This is fixed to correctly support those shapes.

    Bug fixTerrain Analysis Engine

    LMAP-4533
    Fixed a contradiction in the Javadoc of ALcdTerrainElevationProvider.

    Bug fixTerrain Analysis Engine

    LMAP-4062
    The Javadoc of TLcdProfileViewJPanel and ILcdProfileView is slightly updated.

    Bug fixDefense Symbology

    The APP-6A object customizer did not allow to configure the wind direction and speed for a Wind Barb symbol (3.X.4).

    Bug fixRadar Connectors

    LMAP-4549
    TLcdASTERIXCategory48 : the featured descriptor of the tracks now labels the 'Mission Code' as such instead of as 'Pin Code'.

    Upgrade considerationLuciadFusion

    The ILcdEarthModelDecoderFactory interface was changed to allow configuration of the created model decoders. More specifically an extra java.util.Map parameter was added to its createModelDecoder method.

    Previously it was not possible to configure the created model decoder. As a result you could not use a single factory, but instead had to create one for each specific use case. Another drawback was that the creator had to know what configuration was optimal for each use case. By adding an extra configuration parameter, the user of the model decoder can specify what configuration is optimal in his use case. This is similar as the ILcdModelHeightProviderFactory.

    As a result of this change you may get some compile errors. In most cases you can fix these by using null or an empty map as the value for the new parameter.

    10.0.08

    ImprovementLuciadFusion

    LMAP-4461
    The WFS proxy sample now illustrates how an exception handler can be configured on the TLcdWFSProxyModel to deal with servers that behave erroneously.

    ImprovementLuciadFusion

    LMAP-4452
    TLcdColorMapCustomizer now has API that allows to change its layout, or to modify or remove the actions in the tool bar.

    ImprovementLuciadFusion

    LMAP-4440
    The TLcdXMLSchemaBasedEncoder now allows document-specific schema locations and prefixes to be used (see TLcdXMLSchemaBasedEncoder#getSchemaLocations( ILcdXMLDocumentContext ) and TLcdXMLSchemaBasedEncoder#getNamespacePrefixes( ILcdXMLDocumentContext ) ).

    ImprovementLuciadFusion

    The (unofficial) EPSG code 900913 used by Google Earth is now supported.

    Bug fixLuciadFusion

    LMAP-4517
    Fixed the documentation of ILcdBalloonContentProvider.

    Bug fixLuciadFusion

    Overlays that have an icon with view refresh parameter "onRegion", but no Region element, will now be refreshed once upon activation of the link.

    Bug fixLuciadFusion

    Implemented workaround for files that have a date using the year 0. This is not allowed according to the XML Schema 1.0 specification, but we have made an exception because it was requested.

    Bug fixLuciadFusion

    LMAP-4502
    TLcdColorMapCustomizer: Enhancement LMAP-4452 caused NullPointerExceptions on Java 1.4. It also caused the gradient toggle button to misbehave.

    Bug fixLuciadFusion

    TLcdEarthTileRepository: fixed exception when opening/creating a repository in read-only mode with JDK1.4 on Linux.

    Bug fixLuciadFusion

    LMAP-4506
    A memory leak in TLcdModelElementBalloonDescriptor was fixed.

    Bug fixLuciadFusion

    ISO measures and units of measures are now properly converted to GML32 when using WFS-T.

    Bug fixLuciadFusion

    The getModelElementTypes implementations of the GML model descriptors have been improved to leave out feature collection types.

    Bug fixLuciadFusion

    LMAP-4453
    Fixed bug in the iterator of the set returned by TLcdDataModel#getTypes().

    Bug fixLuciadFusion

    LMAP-4413
    Improved thread-safety for concurrent XML encoding, decoding and XPath resolution.

    Bug fixLuciadFusion

    Files with recursive MultiGeometry elements are now correctly visualized.

    Bug fixAviation Standards

    Fixed an issue with the addElements method of TLcdAIXM5AbstractAIXMMessage and TLcdAIXM51AbstractAIXMMessage. Features that were added with this method could not be found in the XML structure.

    Bug fixAviation Standards

    LMAP-4435
    ALcdAIXM51Code now ensures that the well known codes for all code classes are always properly initialized.

    Bug fixAviation Standards

    LMAP-4449
    TLcdDAFIFTHelipadDecoder: the decoding has been improved for certain types of helipads. This results in more helipads being successfully decoded.

    Bug fixRadar Connectors

    Fixed exception that would occur when retrieving the orientation of a non-active TLcdASTERIXTrack. The method now returns Double.NaN instead.

    10.0.07

    ImprovementLuciadFusion

    LMAP-4422
    TLcdMapLonLatGridLayer now allows changing its pen.

    ImprovementLuciadFusion

    LMAP-4236
    Made point Placemark painting in 2D consistent with 3D. When you zoom out and reach a certain threshold, icons become smaller to prevent cluttering of large icon sets.

    ImprovementLuciadFusion

    Model change events because of asynchronous NetworkLink updates are now scheduled on the AWT-EventQueue.

    ImprovementLuciadFusion

    Creating paintables for 3D painters now happens asynchronously in a background thread, to prevent the AWT-EventQueue from being blocked.

    ImprovementLuciadFusion

    The asynchronous retrieve methods can now be supplied with null as a callback function. In this case, no resource listener will be notified of the update, but the resource will be loaded in the background. To

    ImprovementLuciadFusion

    Added functionality for asynchronous updates in document and image providers. The new asynchronous update methods work analogously to the asynchronous retrieve methods, except that they force an update, even when the resource is cached. The existing update methods have been deprecated; their return argument will change in V10.1 from boolean to the updated value.

    ImprovementLuciadFusion

    Improved efficiency of various resource providers.

    ImprovementLuciadFusion

    Improved model content tree. Added new icons, including animated icons to show that a NetworkLink is loading. Also enhanced the tree model to prevent the tree from collapsing when a NetworkLink refreshes.

    ImprovementDatabase Connectors

    Properly represent all standard sql types such as java.sql.Timestamp, java.sql.Date and java.sql.Time in the data model returned by the TLcdInformixSpatialModelDecoder.

    Bug fixLuciadFusion

    Fixed problem with scaling of non-square icons. Their aspect ratio is now properly respected.

    Bug fixLuciadFusion

    LMAP-4439
    Fixed an issue that could cause decoding of transaction requests to fail when the request contains a schemalocation for a type defined by the WFS. We now ignore these schemalocations and use the schemas that are linked to the data.

    Bug fixLuciadFusion

    Fixed returned preferred reference in TLcdEarthTerrainElevationProvider when no elevation has been retrieved yet.

    Bug fixLuciadFusion

    LMAP-4433
    The TLcdFeaturedShapeList.canSetFeature() method was always returning true. Now it either returns true - when the default constructor is used, or delegates to the aFeaturesObject specified in the other constructors.

    Bug fixLuciadFusion

    LMAP-4428
    TLcdAdvancedMapRulerController did not respect the LabelFontBorder and LabelBackground properties.

    Bug fixDatabase Connectors

    LMAP-4445
    Solved ClassCastException which occurred when updating informix data in the presence of data base connection pooling.

    10.0.06

    ImprovementLuciadFusion

    LMAP-4430
    The GML2 model export (which is used by WFS-T) now also supports transformations from and to ILcdShapeList. Note that for GML31 and GML32 this was already supported.

    ImprovementLuciadFusion

    LMAP-4424
    The (unofficial) EPSG code 900913 used by Google Earth is now supported.

    Bug fixLuciadFusion

    LF-79
    The parameter to specify the levels to produce in TLfnEngineFactory#createRasterSession were not correctly interpreted.

    Upgrade considerationLuciadFusion

    The class TLcdXLinkConstants was removed from the API as there is hardly any use for it.

    10.0.05

    ImprovementLuciadFusion

    LMAP-4285
    The common GML model decoder now supports an additional constructor that takes a data model as parameter. This allows custom data models to be used just as the version-specific GML model decoders allow.

    ImprovementLuciadFusion

    TLcdJPEG2000ModelDecoder now provides a few additional settings for positioning rasters based on tie points.

    ImprovementLuciadFusion

    The GML model export (which is used by WFS-T) now also supports transformations from and to ILcdPolygon and ILcdShapeList.

    ImprovementLuciadFusion

    TLcdFeaturedSingleShapeList and TLcdFeaturedMultiShapeList now implement ILcdEditableShapeList.

    ImprovementAdvanced Raster Services

    LMAP-4382
    TLcdDIMAPModelDecoder now also supports rasters in the JPEG-2000 format.

    ImprovementDatabase Connectors

    LMAP-4377
    Models created by the TLcdInformixSpatialModelDecoder are now data object enabled. This means that all model elements implement ILcdDataObject and that the model descriptor implements ILcdDataModelDescriptor. This allows the Informix model decoder to be used in WFS-T, for instance.

    ImprovementAviation Standards

    LMAP-4397
    It is now possible to set the fill mode on the TLcdICAORunwayPainter. This allows you to paint a runway with a fill even if no surface type is available. You can also disable the fill if desired.

    ImprovementAviation Standards

    LMAP-4397
    It is now possible to set the fill mode of runways on the TLcdARINCLayerConfiguration. This allows you to paint a runway with a fill even if no surface type is available. The fill can also be disabled if desired.

    ImprovementAviation Standards

    LMAP-3040
    TLcdICAONavaidLabelPainter: added class Javadoc to explain how to support custom navaids.

    Bug fixLuciadFusion

    There was an illegal dependency from sample code on internal code.

    Bug fixLuciadFusion

    LF-89
    The Server's support for GZip content encoding was broken for at least the Jetty servlet container (and possibly others).

    Bug fixLuciadFusion

    LMAP-4380
    TLcdGeoTIFFModelDecoder again correctly interprets binary transparency masks, avoiding a ClassCastException from JAI (bug introduced in 10.0).

    Bug fixLuciadFusion

    LMAP-4392
    TLcdInterpolatingRasterHeightProvider did not account for horizontal wrap-around of the raster.

    Bug fixAdvanced Raster Services

    LMAP-4381
    TLcdDIMAPModelDecoder now correctly handles relative path names in all metadata files.

    Bug fixDatabase Connectors

    The encoder now handles geodesic arcs and compound shapes more robustly.

    Bug fixReal-time Engine

    LMAP-4355
    TLcdTrackModel.contains always returned false.

    Bug fixAviation Standards

    LMAP-4363
    TLcdAIXM51GXYPainterEditorProvider: Corrected the xpath expressions that are used to lookup labels. This ensures that labels works again for all AIXM 5.1 types if the referenced property is available in the data.

    Bug fixAviation Standards

    LMAP-4404
    ILcdARINCATSRouteSegmentFeature: Corrected the feature name constants MINIMUM_ALTITUDE_1, MINIMUM_ALTITUDE_UNIT_1, MINIMUM_ALTITUDE_2 and MINIMUM_ALTITUDE_UNIT_2. These names were set to the same string for 1 and 2, this was fixed by appending the index. For example 'Minimum Altitude' has been changed to 'Minimum Altitude 1'.

    Bug fixAviation Standards

    LMAP-4400
    ILcdDAFIFDMEFeature: corrected the feature name constant ILS_DME_BIAS_UNIT. This was set to 'ILS/DME Bias', and has now been changed to 'ILS/DME Bias Unit'. This resolves a name collision with ILS_DME_BIAS.

    Bug fixAviation Standards

    LMAP-4379
    ILcdDAFIFMilitaryTrainingRoutePointFeature: corrected the feature name constant ENROUTE_ALTITUDE_1_UNIT. This was set to 'Cross Altitude Two Unit', and has now been changed to 'Enroute Altitude One Unit'.

    Bug fixAviation Standards

    LMAP-4405
    The featured descriptor for ARINC Aerodrome types now returns the correct class for the 'SPEED_LIMIT_ALTITUDE_VALUE' feature. Previously the descriptor returned Float, this has now been changed into Double.

    Bug fixAviation Standards

    LMAP-4399
    The featured descriptor for DAFIF GlidePath and Marker types now returns the correct class for the 'COMPONENT_TYPE' feature. Previously the descriptor returned String, this has now been changed into Character.

    Bug fixAviation Standards

    LMAP-4396
    TLcdICAORunwayPainter: Changing the selection color now also works for runways without a surface type.

    Upgrade considerationLuciadFusion

    LMAP-4352
    TLcdGML31MultiLineString and TLcdGML31MultiPolygon no longer implement ILcd2DEditableShape or ILcd3DEditableShape. These interfaces are fairly generic and have no useful meaning on this level of the GML domain model.

    10.0.04

    ImprovementLuciadFusion

    LMAP-4306
    TLcdSHPModelEncoder now encodes the model reference in WKT format as a ".prj" file, instead of a ".ref" (Java properties) file. This allows the SHP models encoded by LuciadMap to be directly opened in ArcGIS.

    ImprovementLuciadFusion

    The string "Ok" has been replaced with the more commonly used "OK".

    ImprovementLuciadFusion

    LMAP-4280
    TLcdDataPropertyBuilder now supports a getName() and a getDeclaringTypeBuilder() method that returns respectively the name and the declaring type builder of the property that is being built.

    ImprovementLuciadFusion

    LMAP-4225
    TLcdGeoTIFFModelEncoder now supports encoding rasters with transparency using JPEG compression, by ignoring the transparency (JPEG compression only supports grayscale or RGB images without transparency).

    ImprovementLuciadFusion

    TLcdGeoTIFFModelEncoder is now more efficient when encoding rasters with multiple rendered image tiles, for instance when encoding a regular grid of GeoTIFFs into a single GeoTIFF.

    ImprovementLuciadFusion

    The standard implementations of bounds now compute intersections and unions slightly more efficiently. Since these are fundamental operations, this also improves the efficiency of other operations, like transformations of bounds and construction of spatial models.

    ImprovementLuciadFusion

    TLcdDTEDModelDecoder now also decodes DTED files that do not have the standard 1 degree by 1 degree size.

    Bug fixLuciadFusion

    LF-86
    Decoding of models during Fusion would fail when the temporary folder was full, without a clear message. Fusion can now handle a situation where the temporary folder is full.

    Bug fixLuciadFusion

    LMAP-4383
    TLcdDataTypeBuilder#primitive(aBoolean) now only makes the type primitive if the argument is true. A type set to primitive will also get TLcdCoreDataTypes#OBJECT_TYPE as super type unless another super type was already set before.

    Bug fixLuciadFusion

    TLcdDataPropertyBuilder#annotate(aBoolean) incorrectly annotated the first property of the type instead of the property being built by the property builder. This has been fixed.

    Bug fixLuciadFusion

    LMAP-4358
    TLcdGXYPointListPainter and TLcdGXYSurfacePainter could draw erroneous line segments when drawing an ILcdComplexPolygon or multiple surfaces containing a point list, respectively, if the paint cache was enabled. This has been fixed.

    Bug fixLuciadFusion

    LMAP-3822
    TLcdGeoTIFFModelDecoder now correctly interprets the SampleFormat tag for identifying elevation data (bug introduced in 8.3.13).

    Bug fixLuciadFusion

    LMAP-4351
    All stamp label painters cleared the image caches on a property change, even when the property remains the same.

    Bug fixLuciadFusion

    LMAP-4347
    TLcdGXYArcBandPainter was incorrectly using the "creationOrientation" property during editing operations. As a consequence, arcbands created programmatically were sometimes swapped around the first time they were edited with the edit controller.

    Bug fixLuciadFusion

    LMAP-4346
    TLcdLonLatHeightPolygon computed its bounds using spherical computations instead of ellipsoidal, which was inconsistent with TLcdLonLatPolygon and other geodetic shapes. An ellipsoid can now be specified (by default WGS_84).

    Upgrade considerationLuciadFusion

    LMAP-4337
    ILcdDataObject.getValue(String) and TLcdDataType.getProperty(String) should use the property defined in the most specialized type in case more than one property with the given name exists in the type's hierarchy.

    10.0.03

    ImprovementLuciadFusion

    LMAP-4326
    Improved the TLcdXMLSchemaBased(Un)MarshallerProvider such that it can also return (un)marshallers for elements of simple types.

    ImprovementLuciadFusion

    Improved performance of parsing XML schema's, in particular for large schema's.

    ImprovementLuciadFusion

    LMAP-4350
    Increased model decoder flexibility for incorrectly formatted dates. The model decoder now accepts any separator between numbers, and allows any amount of numbers in the dates themselves.

    ImprovementLuciadFusion

    The WFS client sample TransactionHandler class was slightly improved to allow easier customization of the TLcdWFSProxyModelFactory and to always return the transaction response which allows users to evaluate the result of a transaction.

    ImprovementLuciadFusion

    By default support special versions of EPSG codes and some specific srs names like CRS84.

    ImprovementLuciadFusion

    LMAP-4312
    Improved handling of certain bad filters, this will now result in a WFS service exception.

    ImprovementLuciadFusion

    Added support for the deprecated Url element of a NetworkLink or AbstractOverlay.

    ImprovementLuciadFusion

    The KML decoder now correctly decodes files containing address nodes with child elements (note that according to the KML schema, such nodes should only contain plain text).

    ImprovementData Connectivity Manager

    The new TLfnTileStoreOpenGLAddOn allows 3D visualization of data from a tile store.

    ImprovementAviation Standards

    Improved performance for handling AIXM5 and AIXM5.1 extension schemas (reduced creation time for the extension datamodels, reduced configuration time for the decoder and reduced static initialization time of the AIXM data model).

    ImprovementAviation Standards

    LMAP-4164
    Added logging to snapshot generation to inform users that a BASELINE timeslice does not contain a start time which probably indicates bad data. All timeslices without start times are ignored during snapshot generation.

    ImprovementAviation Standards

    TLcdAIXM51AbstractPropertiesWithSchedule: Javadoc was added to this class.

    ImprovementAviation Standards

    LMAP-4190
    The decoder now also supports decoding features that do not contain timeslices. This only affects data that is incomplete.

    ImprovementAviation Standards

    LMAP-4191
    Improved the robustness when calculating aggregated airspaces that have no sequence numbers. This only affects data that is incomplete.

    Bug fixLuciadFusion

    LMAP-4384
    Fixed TLcdXMLSchemaBasedEncoder such that it always encodes using UTF-8. Before this fix, the context would use the default encoding. This works fine using the wstx XML parser. But when using Xerces (included in Java6), this produced incorrect XML documents when non ASCII characters are present in string content.

    Bug fixLuciadFusion

    The TLcdKML22DynamicModel#applyOnInteract2DBounds method now correctly returns an integer that represents the amount of elements the given function has been applied on, keeping in mind the elements that were filtered out due to a custom filter, such as the time bounds.

    Bug fixLuciadFusion

    The TLcdEarthSeparateAlphaImageTileDataCodec now handles images with pre-multiplied alpha correctly.

    Bug fixLuciadFusion

    The OGC filter encoder now encodes java.util.Date literals using ISO8601 date format. This is compatible with the behaviour of the old deprecated filter encoder.

    Bug fixLuciadFusion

    TLcdXMLDataObjectMappingLibrary now correctly registers element information for elements defined in global model groups that are referred to by other model groups.

    Bug fixLuciadFusion

    LMAP-4338
    Several GML32, GML31 and GML Model classes that implement ILcdShapelist (for instance the model classes that represent MultiGeometry, MultiCurve, Surface and MultiPoint) now properly update there bounds when one of their elements changes.

    Bug fixLuciadFusion

    Fixed exception that occurred for certain rotated ScreenOverlay elements in the TLcdKML22GXYPainterProvider.

    Bug fixLuciadFusion

    TLcdXMLDataModelBuilder now properly allows the creation of datamodels for cases where an XML schema is split over multiple documents (each with the same namespace) and no single schema document exists that imports all other documents.

    Bug fixLuciadFusion

    Improved the flexibility of the model decoder to allow KMZ files with deflated entries.

    Bug fixLuciadFusion

    LMAP-4344
    The TLcdEarthGXYRasterPainter did not log a warning when the cache size is too small and did not automatically increase its cache size, if this feature is enabled.

    Bug fixLuciadFusion

    AbstractOverlay elements inside an updating NetworkLink will now force a new query to the server to support updating images.

    Bug fixLuciadFusion

    Fixed issue with draw orders for ScreenOverlay elements in 2D layers.

    Bug fixLuciadFusion

    LMAP-4286
    Adding or removing one or more elements from a GML model now properly throws model change events.

    Bug fixLuciadFusion

    Fixed the exception that would arise when a NetworkLink didn't contain its mandatory Link element.

    Bug fixLuciadFusion

    LMAP-4309
    The dateStamp property of TLcdISO19115MetaData can now be properly set (used to throw a NullPointException) using the property setter. This also fixes the same issue for the setters for a number of similar properties on metadata domain objects.

    Bug fixAdvanced GIS Engine

    LMAP-4311
    In some cases a ClassCastException was thrown when checking a topological relation between an ILcdCompositeCurve and an ILcdShape instance.

    Bug fixDatabase Connectors

    LMAP-4307
    TLcdDB2SpatialModelDecoder was creating Cartesian shapes even when the model had a geodetic reference.

    Bug fixDatabase Connectors

    LMAP-4202
    TLcdDB2SpatialModelDecoder was throwing a NullPointerException when using the ESRI shape representation.

    Bug fixTerrain Analysis Engine

    LMAP-4200
    Line of sight: in rare cases a numerical precision problem caused the last angle of a LoS coverage matrix to be not calculated. This has been fixed.

    Bug fixTerrain Analysis Engine

    LMAP-4056
    Line of sight fixed height: when the maximum vertical angle was set to 180, an erroneous half circle of cone of silence values was produced.

    Bug fixAviation Standards

    LMAP-4176
    TLcdICAORunwayPainter: fixed painting artifacts that occurred when panning runways that are painted with a pattern.

    Bug fixAviation Standards

    TLcdAIXM51AbstractPropertiesWithSchedule: Improved support for custom extensions of this class.

    Bug fixAviation Standards

    LMAP-3807
    The DAFIF data preparator sample now uses a TLcdLonLatBounds instead of a TLcdXYBounds to avoid invalid bounding box coordinate values.

    Bug fixAviation Standards

    LMAP-4054
    TLcdDAFIFVFRRouteDecoder: the optional aerodrome submodel is now split up in one 'airport' model and one 'heliport' model. This fixes an inconsistency between the model descriptor and the actual data in the model that could cause issues.

    Bug fixDefense Symbology

    LMAP-4091
    The representation of a set of tactical symbols in APP-6A/B and MIL-STD 2525b/c have been corrected, following the latest version of the standards.

    The following set of symbols have an updated number of points and/or point order:
    • Relief In Place (APP-6A/B 2.X.1.1.18, MIL-STD 2525b/c 2.X.1.18) uses 4 points to define the polyline, instead of 3.
    • Support By Fire Position (APP-6A/B 2.X.2.1.5.3.4, MIL-STD 2525b/c 2.X.2.5.3.4) uses point 1 and 2 to define the straight line, and point 3 and 4 to define the tips of the arrowheads.
    • Gap (MIL-STD 2525b/c 2.X.3.1.6.3) uses 4 points to define the gap, with an updated order.
    • Assault Crossing Area (APP-6A/B 2.X.2.2.2.2.1, MIL-STD 2525b/c 2.X.3.2.2.1) uses 4 points to define the area, with an updated order.
    • Bridge Or Gap (APP-6A/B 2.X.2.2.2.2.2, MIL-STD 2525b/c 2.X.3.2.2.2) uses 4 points to define the bridge/gap, with an updated order.

    The following set of arrow symbols now use point 1 to define the tip of the arrowhead position and point 2 to define the rear, instead of reversed:
    • Fix (APP-6A/B 2.X.1.1.11, MIL-STD 2525b/c 2.X.1.11)
    • Follow And Assume (APP-6A/B 2.X.1.1.12, MIL-STD 2525b/c 2.X.1.12)
    • Follow And Support (APP-6A/B 2.X.1.1.12.1, MIL-STD 2525b/c 2.X.1.12.1)
    • Direction Of Attack For Feint (APP-6A/B 2.X.2.1.3.3, MIL-STD 2525b/c 2.X.2.3.3)
    • Aviation (APP-6A/B 2.X.2.1.5.2.2.1/2/3/4, MIL-STD 2525b/c 2.X.2.5.2.2.1)
    • Main Attack (APP-6A/B 2.X.2.1.5.2.2.8, MIL-STD 2525b/c 2.X.2.5.2.2.2.1)
    • Supporting Attack (APP-6A/B 2.X.2.1.5.2.2.7, MIL-STD 2525b/c 2.X.2.5.2.2.2.2)
    • Moving Convoy (APP-6A/B 2.X.2.4.2.1.1, MIL-STD 2525b/c 2.X.5.2.1.1)
    • Halted Convoy (APP-6A/B 2.X.2.4.2.1.2, MIL-STD 2525b/c 2.X.5.2.1.2)

    The following set of arrowhead symbols now use point 1 to define the vertex of the symbol, and point 2 and 3 to define the endpoints:
    • Screen (APP-6A/B 2.X.1.1.21.1, MIL-STD 2525b/c 2.X.1.22.1)
    • Guard (APP-6A/B 2.X.1.1.21.2, MIL-STD 2525b/c 2.X.1.22.2)
    • Cover (APP-6A/B 2.X.1.1.21.3, MIL-STD 2525b/c 2.X.1.22.3)
    • Search Area/Reconnaissance Area (APP-6A/B 2.X.2.1.1.3.2.5, MIL-STD 2525b/c 2.X.2.1.3.9)
    • Dummy (Deception/Decoy) (APP-6A/B 2.X.2.1.3.1, MIL-STD 2525b/c 2.X.2.3.1)
    • Principal Direction Of Fire (PDF) (APP-6A/B 2.X.2.1.4.2.2, MIL-STD 2525b/c 2.X.2.4.2.2)
    • Attack By Fire Position (APP-6A/B 2.X.2.1.5.3.3, MIL-STD 2525b/c 2.X.2.5.3.3)
    • Ambush (APP-6A/B 2.X.2.1.6.1.2, MIL-STD 2525b/c 2.X.2.6.1.1)

    Upgrade considerationLuciadFusion

    LMAP-4353
    TLcdKML22MultiGeometry no longer implements ILcd3DEditableShape as this interface should never have been there.

    10.0.02

    ImprovementLuciadFusion

    LMAP-4317
    The TLcdWKTModelReferenceDecoder now recognizes the "ETRF_1989" datum name.

    ImprovementLuciadFusion

    The constructor of the TLcdDatabaseModelDescriptor now sets the source name to the JDBC connection URL.

    ImprovementLuciadFusion

    LMAP-4186
    The convolution halo algorithm now supports translucent halo colors.

    ImprovementDatabase Connectors

    LMAP-4313
    The TLcdOracleSpatialModelDecoder now includes a workaround for Oracle bug 4745776 (Incomplete results for spatial query).

    ImprovementMaritime Standards

    The S-52 presentation library has been upgraded to version 3.4.

    ImprovementMaritime Standards

    The S-57 object and attribute catalogues have been upgraded to include the latest changes.

    Bug fixLuciadFusion

    LMAP-4314
    In certain cases TLcdGeocentric2Grid.modelBounds2worldSFCT() did not throw an TLcdNoBoundsException when it should.

    Bug fixLuciadFusion

    LMAP-4307
    The TLcdDataBaseModelDecoder was creating models with Cartesian bounds (TLcdXYBounds) even if the model reference was geodetic.

    Bug fixLuciadFusion

    LMAP-4184
    TLcdSelectionSupport#selectObjects fired a TLcdSelectionChangedEvent even if NO_EVENT was indicated.

    Bug fixLuciadFusion

    LMAP-4189
    The filled part of the FILLED_CIRCLE TLcdSymbol did not stay within the outline.

    Bug fixLuciadFusion

    LMAP-4185
    TLcdLayer could throw a NPE when calling fireCollectedSelectionChanges. This has been fixed.

    Bug fixLuciadFusion

    LMAP-2762
    Applying TLcdEPSGReferenceFormatter to an ILcdModelReference or an ILcdXYWorldReference that did not implement ILcdGeoReference resulted in a ClassCastException instead of IllegalArgumentException.

    Bug fixLuciadFusion

    LMAP-2194
    In some cases, TLcdGXYMagnifierController would display an empty window on systems running Windows.

    Bug fixLuciadFusion

    LMAP-4108
    TLcdGXYIconPainter sometimes returned incorrect bounds when using an ILcdAnchoredIcon combined with rotated icons.

    Bug fixLuciadFusion

    LMAP-4044
    Sometimes labels were painted too often using the TLcdGXYViewLabelPainter and TLcdGXYLayerLabelPainter.

    Bug fixDatabase Connectors

    When not set by the user, the "preferredBand" property of the decoder was being loaded from the first OGR file and kept as a valid setting for subsequent invocations of the decoder.

    Bug fixDatabase Connectors

    Rasters for which the database block size was larger than twice the raster's own size (width and height in pixels) were incorrectly decoded.

    Bug fixDatabase Connectors

    LMAP-4195
    The TLcdOracleGeorasterModelDecoder referred to a hard-coded column name.

    10.0.01

    Bug fixLuciadFusion

    The layer factories of the default ALfnFormat's did not support ILcdModelTreeNode's. As a result sub-models of such models were not fused by the engine.

    Bug fixLuciadFusion

    The ALcdEarthGLTiledClipmapLevel, used in all earth 3D painters, could throw an exception when updating for a tile set that does not cover the entire earth surface.

    Bug fixData Connectivity Manager

    LF-7
    The Drawing OpenGL add-on has been added to addons.xml, to fix the representation of Drawing shapes in 3D.

    Bug fixData Connectivity Manager

    LF-17
    The location of assets that were created from layers that were added using drag-and-drop was not correct.

    10.0

    ImprovementLuciadFusion

    The OGC filter model now implements ILcdDataObject and can as such be accessed in a generic way.

    ImprovementLuciadFusion

    For USB iButton hardware keys on Linux, the suggested udev configuration file 45-ds2490.rules has been renamed to ds2490.rules. This gives it precedence over the default configuration, which is required for some recent versions of Linux (for example Ubuntu 9.10).

    ImprovementLuciadFusion

    The internal EPSG database has been updated to version 7.5.

    ImprovementLuciadFusion

    The TLcdEarthTileRepositoryPreprocessor will now inform its progress listener more regularly and respond more quickly to cancellation.

    ImprovementLuciadFusion

    The new sample samples.decoder.raster.hgt decodes the SRTM HGT format using a custom raster model decoder.

    ImprovementLuciadFusion

    LMAP-4096
    An icons sample was added in samples.gxy.icons.basic. This sample demonstrates the use of icons and the TLcdGXYIconPainter. It shows the use of ILcdAnchoredIcon, rotated icons and icons scaling.

    ImprovementLuciadFusion

    LMAP-4052
    It is now possible to choose an interrupt mode when interrupt painting is enabled for asynchronous painting. The available modes are ALWAYS and NON_OVERLAPPING_PAINTS_ONLY. When using the second mode ongoing paint jobs are only stopped when a new paint job is scheduled and when its contents are completely outside the view. The modes can be set using TLcdGXYAsynchronousPaintQueue.setInterruptMode( InterruptMode aInterruptMode ).

    ImprovementLuciadFusion

    LMAP-3184
    The TLcdEarthGXYRasterPainter has been improved significantly. Some of the improvement and fixes are:
    • The painting is significantly faster when the raster data must be transformed to a different reference
    • The tiles at the center of the view are now requested first
    • The cached tiles can be updated to make changes in the tile set visible
    • The view no longer becomes blurry when panning
    • The painter no longer runs out-of-memory due to cached tiles that are outside the view

    ImprovementLuciadFusion

    Introduced the domain class TLcdXMLXPathString to represent an XPath expression as a string with a name space context.

    ImprovementLuciadFusion

    A number of new classes have been introduced to facilitate the use of xlink. See the com.luciad.format.xml.bind.xlink package and its sub packages.

    ImprovementLuciadFusion

    The com.luciad.format.xml.bind.schema.dataobject package is introduced. This package provides support to bind XML schema automatically to a Java domain model. The domain classes of such a model implement com.luciad.datamodel.ILcdDataObject. More information about this new API can be found in the LuciadMap developer's guide.

    ImprovementLuciadFusion

    Introduced ALcdXMLModelDecoder and ALcdXMLModelEncoder as common base class for model decoder and encoder implementations that are based on XML schema. TLcdXMLModelDecoderWrapper and TLcdXMLModelEncoderWrapper are concrete extensions of these abstract classes that implement their functionality through delegation. These classes are introduced to facilitate the creation of an ILcdModelEncoder and ILcdModelDecoder for model based on XML schema.

    ImprovementLuciadFusion

    Introduced TLcdXMLXPathFactory that supports the use of XPath expressions on data object enabled domain models that are derived from an XML schema.

    ImprovementLuciadFusion

    LMAP-1175
    The WFS server now correctly takes the 'srsName' attribute of incoming queries into account to convert bounding box operators to the coordinate system of the model that is being filtered.

    ImprovementLuciadFusion

    The WFS server now provides api to convert incoming XPath expressions to the native format that is provided to the WFS. A default implementation exists that relies on the ILcdDataObject interface to support this conversion automatically, assuming that the default WFS client model encoders are used to generate the GML schemas.

    ImprovementLuciadFusion

    LMAP-3146
    Many painters now have a getter and setter for a 'minimum edit delta' property. This property represents the minimum pixel distance the input device (a mouse, for example) must move before editing the shape. A larger value ensures that the object easily snaps back in place, a small value allows fine editing.

    ImprovementLuciadFusion

    LMAP-3038
    TLcdETOPOModelDecoder now also decodes the ETOPO1 product (an elevation raster covering the entire world at 1-minute resolution, distributed by the NOAA's National Geophysical Data Center).

    ImprovementLuciadFusion

    TLcdISO19103MeasureAnnotation is introduced. This allows data properties to be annotated with an ISO19103 unit of measure.

    ImprovementLuciadFusion

    The new com.luciad.datamodel package introduces support for the new unified approach taken in LuciadMap for the definition and interaction with domain objects. This approach provides a common API to access all domain objects, independent of their specific domain. In addition, this API makes information about the static structure of the domain objects available. This is the information that typically can be found in UML class diagrams.

    This package is designed to be a replacement forILcdFeatured. It is the preferred way to model domain objects as from LuciadMap V10. For backwards compatibility reasons, ILcdFeatured will remain supported. But no new features will be added to it.

    The main classes from this package are the following.
    • ILcdDataObject
    • TLcdDataModel, TLcdDataType and TLcdDataProperty
    • ILcdAnnotation
    The class com.luciad.model.ILcdDataModelDescriptor was added for models of which the elements implementILcdDataObject. More information about this new API can be found in the developer's guide.

    ImprovementLuciadFusion

    LMAP-3872
    The class TLcdGMLSrsRepository allows application developers to add additional model reference parsers and formatters to deal with custom srsNames that are not recognized by the default implementation.

    ImprovementLuciadFusion

    New classes are provided for rendering balloons on top of maps: ALcdBalloonManager, TLcdGXYBalloonManager, ILcdBalloonContentProvider. In addition, the 3D optional package provides an equivalent balloon manager implementation for integration with 3D views. Please refer to the developer's guide for more information on the use of balloons.

    ImprovementLuciadFusion

    LMAP-3925
    SLD now also supports 2D painting of extruded shapes. Painting of such shapes is done by painting their base shapes.

    ImprovementLuciadFusion

    A new package com.luciad.format.metadata has been added. This package is split up in two parts:
    • The com.luciad.format.metadata.model package and subpackages provide a Java class representation of the ISO Metadata domain model.
    • The com.luciad.format.metadata.xml package provide an ISO19139 compliant XML decoder, encoder and XML libraries.
    This new package now supports the final version of the ISO 19139 Metadata XML encoding standard. The domain model of the new package also supports the new unified domain access (all domain classes implement ILcdDataObject). An encoder for exporting metadata to ISO 19139 compliant XML is also provided. Both the decoder and encoder are now based on the XML Binding framework, allowing easy integration with other XML formats that use metadata.

    ImprovementLuciadFusion

    LMAP-4001
    An ILcdEarthTileSet can now have an uneven amount of rows and columns at level 0. (ex. 1 tile at level 0).

    ImprovementLuciadFusion

    The TLcdEarthGXYViewTileSet now also supports production of tiles with a different number of horizontal and vertical pixels.

    ImprovementLuciadFusion

    Support has been added to allow dispatching custom input events to GUI components and, in particular, LuciadMap views and controllers. See TLcdAWTEventDispatcher, TLcdAWTEvent and ILcdAWTEventSource, and/or the developer's guide for more information.

    In addition, a new TLcdTouchEvent type has been defined that enables multi-touch user input. Touch events are automatically generated for Windows 7 Touch compatible devices when using Sun's 1.5 and 1.6 JDK implementations, and you can also create and dispatch touch events yourself. The following new controllers work exclusively with touch-based user input:

    • TLcdGXYTouchEditSelectController
    • TLcdGXYTouchNewController
    • TLcdGXYTouchNavigateController
    • TLcdMapTouchRulerController

    Also, several new touch samples have been added to illustrate the use of this new functionality. Please refer to the developer's guide and the samples section for more information on this new functionality.

    ImprovementLuciadFusion

    LMAP-3737
    TLcdOGCXPath now also support the descendent-or-self (//) axis.

    ImprovementLuciadFusion

    TLcdGeoTIFFModelDecoder now decodes ARGB color models in such a way that they are optimized for rendering to the screen. If this introduces a platform-dependency that you want to avoid, you can set the Java system property optimize.raster.color.model tofalse.

    ImprovementLuciadFusion

    TLcdSHPModelDecoder logs a less severe message if it cannot find a .dbf file next to a .shp file.

    ImprovementLuciadFusion

    Added a new property retriever provider (see class TLcdDataModelPropertyRetrieverProvider) that supports models whose elements implement ILcdDataObject.

    ImprovementLuciadFusion

    The OGC filter model now implements ILcdDataObject. This enables generic access to the filter objects. The TLcdOGCFilterDataTypes class provides direct access to the filter data model and the types it declares.

    ImprovementLuciadFusion

    LMAP-3646
    The on map navigation controls introduced for Lucy in V9.1 are now available in LuciadMap. See the package "com.luciad.gui.swing.navigationcontrols".

    ImprovementLuciadFusion

    A new fill style was added that allows to fill surfaces with stripes: TLcdGXYStripedFillStyle.

    ImprovementLuciadFusion

    The new package com.luciad.format.kml22 introduces support for the KML (Keyhole Markup Language) format. The current supported version is 2.2 (OGC specification OGC 07-147r2). The package provides support for decoding KML data, as well as painters to visualize KML data on both 2D and 3D maps. The samples included in the release provide an implementation of a Swing-based model content tree, allowing tree-based browsing of KML files. Please refer to the developer guide for an introduction to this package.

    ImprovementLuciadFusion

    The default value of the elevation tiles produced by the TLcdEarthTerrainElevationTileSet and TLcdEarthTerrainHeightTileSet can now be configured.

    ImprovementLuciadFusion

    The asset based tile set (TLcdEarthMetadataTerrainTileSet, TLcdEarthAssetGXYViewTileSet and TLcdEarthAssetTerrainElevationTileSet) implementations can now use a model decoder factory to create the model decoders for the assets instead of using the (optional) model decoder associated with each asset.

    ImprovementLuciadFusion

    The WCS server sample is now delivered with a graphical front-end, based upon Java Server Pages (JSP) technology, giving access to the capabilities of the server. When starting the server sample through the startup script ogc.server.start, the front-end can be accessed through the URL http://localhost:8080/LuciadMapWCS.

    ImprovementLuciadFusion

    The WFS server sample is now delivered with a graphical front-end, based upon Java Server Pages (JSP) technology, It gives access to the capabilities of the server, and provides a convenient way to test HTTP POST requests. When starting the server sample through the startup script ogc.server.start, the front-end can be accessed through the URL http://localhost:8080/LuciadMapWFS.

    ImprovementLuciadFusion

    The WMS server sample is now delivered with a graphical front-end, based upon Java Server Pages (JSP) technology, giving access to the capabilities of the server. When starting the server sample through the startup script ogc.server.start, the front-end can be accessed through the URL http://localhost:8080/LuciadMapWMS.

    ImprovementLuciadFusion

    The WFS client API now supports creating and sending the following WFS-T requests:
    • Transaction
    • LockFeature
    • GetFeatureWithLock

    ImprovementLuciadFusion

    The support for locking and transactions has been improved, and is also WFS 1.1.0 and WFS 1.0.0 compliant. These features can be controlled through a parameter in the servlet configuration file. More information can be found in the developer guide.

    The transactional improvements rely on the new ILcdDataObject interface that is introduced in LuciadMap V10. Users should ensure that the elements of the models provided to the WFS server implement this interface.

    Additional api was added that allows you to customize how locking and transactions are handled. This makes it possible to support any kind of data backend.

    ImprovementLuciadFusion

    The WFS server implementation is now fully WFS 1.1.0 compliant. This results in some changes:
    • The result of a GetFeature request is now a wfs:FeatureCollection
    • The server now performs more strict input checking, invalid input will result in an exception report.
    • Improved filtering capabilities.

    ImprovementLuciadFusion

    The GML models now implement ILcdIntegerIndexedModel.

    ImprovementLuciadFusion

    The internal EPSG database has been updated to version 7.4.1.

    ImprovementLuciadFusion

    TLcdGeoTIFFModelDecoder new sets up a global optimized cache for the Java Advanced Imaging library. If you want to disable this optimization, you can set the Java system property optimize.jai.tile.cache to false.

    ImprovementLuciadFusion

    The performance of the raster painters has been improved for a number of common cases (rasters with rendered images, rasters with single tiles, rasters that cover a small part of the view).

    ImprovementLuciadFusion

    The performance of the view has been improved when firing PropertyChangeEvents and TLcdViewInvalidationEvents.

    ImprovementLuciadFusion

    LMAP-3748
    TLcdGXYContext has been extended to allow multiple input points.

    ImprovementLuciadFusion

    The TLcdEarthGLTerrainPainter now operates better with low JVM heap sizes.

    ImprovementLuciadFusion

    LMAP-3803, LMAP-3801
    The TLcdWKTReferenceFormatter is now able to encode ILcdGridReference objects having a non-zero rotation. This results in a FITTED_CS reference system with an affine mapping that defines a pure rotation. The TLcdWKTReferenceParser has also been updated to correctly reconstruct the original rotated grid reference from the WKT.

    ImprovementLuciadFusion

    The TLcdEarthGLAboveGroundTileSet tileset also supports putting objects at ground level (e.g. replacing their own altitude by the ground altitude).

    ImprovementLuciadFusion

    The TLcdGXYArcPainter, TLcdGXYArcBandPainter and TLcdGXYGeoBufferPainter now offer more alternatives for computing the anchor point:
    • TLcdGXYArcPainter: middle of the arc bounds, middle of the cord, middle of the arc.
    • TLcdGXYArcBandPainter: middle of the bounds, middle of the arc band.
    • TLcdGXYGeoBufferPainter: middle of the bounds, middle of the buffer.

    ImprovementLuciadFusion

    LMAP-3779
    The performance of TLcdGXYPointListPainter#isTouched is improved by caching original points in a smarter way.

    ImprovementLuciadFusion

    TLcd3DEditablePointList now implements ILcdCloneable.

    ImprovementLuciadFusion

    TLcdPerspectiveProjection now has a getter for the "right" vector of its projection plane (in addition to the "up" vector).

    ImprovementLuciadFusion

    LMAP-3665
    TLcdGeoTIFFModelEncoder and TLcdGeoTIFFModelDecoder now encode and decode a grid reference with a perspective projection using GeoTIFF's 4x4 homogeneous matrix in a geocentric reference.

    ImprovementLuciadFusion

    LMAP-1213
    TLcdGeoTIFFModelDecoder now no longer throws unexpected RuntimeExceptions.

    ImprovementLuciadFusion

    LMAP-3663
    TLcdGeoTIFFModelencoder and TLcdGeoTIFFModelDecoder now support the tag for orthorectification based on Rational Polynomial Coefficients (RPC).

    ImprovementLuciadFusion

    LMAP-2374
    TLcdNoWarpRasterPainter and TLcdNoWarpMultilevelRasterPainter (and TLcdRasterPainter and TLcdMultilevelRasterPainter) have been optimized to produce a lot less temporary arrays when painting rasters that are decoded and cached by Java Advanced Imaging (like GeoTIFFs). This eases the burden on garbage collection, resulting in markedly better performance for large rasters.

    ImprovementLuciadFusion

    LuciadFusion is a new software solution for the management, fusion, and storage of large spatial data sets in networked environments. The Data Server stores fused data and serves a large number of (remote) clients from a central location.

    ImprovementLuciadFusion

    LuciadFusion is a new software solution for the management, fusion, and storage of large spatial data sets in networked environments. The Fusion Engine efficiently processes and fuses data from various sources at any resolution.

    ImprovementLuciadFusion

    The GML domain model now has a public API defined in the packages com.luciad.format.gml2.model, com.luciad.format.gml31.model and com.luciad.gml32.model. This API defines domain classes for all types concerning geometry and features defined by the GML schema (version 2, 3.1 and 3.2). These domain classes implement com.luciad.datamodel.ILcdDataObject.

    ImprovementData Connectivity Manager

    LuciadFusion is a new software solution for the management, fusion, and storage of large spatial data sets in networked environments. The Data Connectivity Manager is a fully customizable user interface that allows easy access to all kinds of data sources, provides source data to the Fusion Engine, and stores fused data on a Data Server.

    ImprovementAdvanced GIS Engine

    LMAP-2910
    A developer's guide was added to the Geometry package.

    ImprovementAdvanced GIS Engine

    A new framework based on the dimensionally extended nine intersection matrix (DE9IM) model was added to the geometry package. This framework allows to test a large number of binary topological relationships and fine tune the particular relationship being tested. TLcdEllipsoidalAdvancedBinaryTopology, TLcdShpericalAdvancedBinaryTopology and TLcdCartesianAdvancedBinaryTopology provide an implementation of this framework in the ellipsoidal, spherical and cartesian case, respectively.

    ImprovementDatabase Connectors

    LMAP-3882
    The performance of TLcdDatabaseModel#applyOnInteract2DBounds has been improved for bounds that encompass the entire model, by omitting the unnecessary spatial filters in the corresponding database queries.

    ImprovementTerrain Analysis Engine

    The profile view is updated with the ability to draw a 2D representation of the line of sight around a point. The new line of sight behaviour can be enabled or disabled with setLineOfSightEnabled. The old line of sight behaviour, which was activated with a right mouse click, can be enabled or disabled with setSimpleLineOfSightEnabled. By default, the old behaviour is enabled and the new behaviour is disabled.

    ImprovementTerrain Analysis Engine

    LMAP-2390
    TLcdLOSCoverageFactory: the raster creation in nearest neighbor mode now uses the center point of the raster pixel instead of the lower left corner to find the raster value. To revert to the old behavior, use the system properties 'com.luciad.tea.TLcdLOSCoverageFactory.useLowerLeftCorner' and set it to 'true'.

    ImprovementTerrain Analysis Engine

    LMAP-3401
    The hypsometric sample has been extended to show how to access hypsometry values directly.

    ImprovementAviation Standards

    The existing package com.luciad.format.aixm5.model now provides an API for the complete domain model of AIXM 5.0. Classes are available to work directly with messages, features and timeslices, for all aeronautical types defined in AIXM 5.0. The package is subdivided into different subpackages that each represent a subset of the AIXM 5.0 format, corresponding to the AIXM 5.0 UML and XML Schema model.

    ImprovementAviation Standards

    An AIXM 5 and 5.1 model decoder can now be created for a custom data model that extends from the AIXM data model. This decoder is then automatically configured for that data model.

    ImprovementAviation Standards

    The AIXM 5 and 5.1 model encoder/decoder now have a model reference formatter/parser that can be used to format/parse custom model references into/from srs names.

    ImprovementAviation Standards

    The new package com.luciad.format.aixm51 introduces support for the aeronautical data format AIXM 5.1. The package provides support for decoding and encoding AIXM 5.1 data, as well as painters and other tools to visualize and use AIXM 5.1 data in an application. The API of the new AIXM 5.1 package is similar to the existing AIXM 5.0 API. Please refer to the developer guide for an introduction to this package.

    ImprovementAviation Standards

    LMAP-3089
    The AIXM5 model decoder now supports decoding of ISO 19115 Metadata which can be included in messages, features and timeslices.

    ImprovementAviation Standards

    The AIXM5 model decoder now provides a mechanism to support application-specific resolution of Xlinks.

    ImprovementDefense Standards

    TLcdNITFModelDecoder supports JPEG2000 compression, as specified by the MIL-STD-2500C standard.

    ImprovementDefense Symbology

    Support has been added for the military standard APP-6B. This standard can be used through the regular APP-6A API, by using the following Java VM property when starting an application: -Dcom.luciad.symbology.app6a.app6b=true. Afterwards, the APP-6B symbology becomes available in the hierarchy tree of the APP-6A customizer and the domain object TLcdEditableAPP6AObject accepts APP-6B symbol id codes.

    Bug fixLuciadFusion

    TLcdPolyconic did not return a deep clone, making the copy potentially unsafe.

    Bug fixLuciadFusion

    TLcdPolarStereographic did not return a deep clone, making the copy potentially unsafe.

    Bug fixLuciadFusion

    The clib_jiio_sse2.dll native library has been removed from the release, as it is known to cause stability problems.

    Bug fixLuciadFusion

    LMAP-3833
    The method ALcdGXYPen#getHotPointSize used to return the maximum of the width and height of an icon set as HotPointIcon. Now it returns the maximum divided by two. Since this property is used as a sensitivity to evaluate whether or not a the representation of an object is touched by a certain pixel, all handles used to have an sensitive region twice as big as the icon representing the handle. Now the region is exactly as big as the icon. For small icons/handles, this might make it more difficult to select or edit them. However it is now possible to increase the sensitivity for interaction directly by passing it in the ILcdGXYContext (see ILcdGXYContext#getSensitivity). This is for instance used by the select and edit controller models (See TLcdGXYEditControllerModel2#setSensitivity for example).

    Bug fixLuciadFusion

    LMAP-3988
    Asynchronous painting now remains working correctly after calling TLcdGXYLayer#setLabelLocations().

    Bug fixLuciadFusion

    LMAP-4051
    The following errors are prevented for a number of painters :
    • ClassCastException could be thrown if painter is changed at runtime.
    • Caching would not work if multiple painters of the same type were used on the same layer.

    Bug fixLuciadFusion

    LMAP-4002
    Fixed several issues in the 3D painters:
    • The painter will no longer request the same tile multiple times if the view does not change.
    • The painter will always paint the tiles at level 0 if they fit in the configured clip region size.

    Bug fixLuciadFusion

    LMAP-2610, LMAP-3398
    The Data files and the resource files used by the samples have all moved to the samples/resources directory. This simplifies modifying and running the samples from an IDE such as Eclipse or IntelliJ. How to set up an IDE project is now also better explained in the Getting Started page in these documentation pages.

    Bug fixLuciadFusion

    LMAP-3797
    When formatting a grid reference based on the equidistant cylindrical projection, the TLcdEPSGFormatter now returns the code 32663 instead of 32662 (which has been deprecated).

    Bug fixLuciadFusion

    TLcdGXYEditControllerModel2#paintEditing: calling this method with EDIT_WHAT_NO_CHANGE or EDIT_HOW_NO_CHANGE will do nothing, and no longer call the (label) painter. The new TLcdGXYMultiPointEditControllerModel class has the same behavior.

    Bug fixLuciadFusion

    TLcdGUIIcon: the icon for ID ROTATE_3D_16 now matches the documented one.

    Bug fixLuciadFusion

    LMAP-3875
    The OGC filter decoder now properly sets the shapeGeoReference property for spatial operators (before this fix, the shapeGeoReference property would not be set).

    Bug fixLuciadFusion

    The GL painter could not paint tilesets with more than 30 levels.

    Bug fixLuciadFusion

    LMAP-3784
    TLcdGXYLayer did not respect the label scale range for selected labels.

    Bug fixDatabase Connectors

    LMAP-4160
    The decoder no longer throws a NullPointerException after having decoded the last object of a query.

    Upgrade considerationLuciadFusion

    The TLcdGMLxxAbstractFeature classes for GML version 2, 3.1 and 3.2 no longer implement ILcd2DEditableShape or ILcd3DEditableShape. These interfaces are fairly generic and have no useful meaning on this level of the GML domain model.

    Upgrade considerationLuciadFusion

    TLcdOGCFilter now supports feature ids next to GML object ids. These feature ids are deprecated in the OGC Filter 1.1.0 standard but are required to pass the compliancy tests. The old implementation automatically converted feature ids into gml object ids.

    Upgrade considerationLuciadFusion

    The clib_jiio_sse2.dll native library has been removed from the release, as it is known to cause stability problems.

    Upgrade considerationLuciadFusion

    A new library lcd_wxs_server.jar has been added, sharing common code between the WMS, WFS and WCS server implementations. This might require an update to existing application build and obfuscation scripts, to incorporate the new library.

    Upgrade considerationLuciadFusion

    A new library lcd_wxs_server.jar has been added, sharing common code between the WMS, WFS and WCS server implementations. This might require an update to existing application build and obfuscation scripts, to incorporate the new library.

    Upgrade considerationLuciadFusion

    A new library lcd_wxs_server.jar has been added, sharing common code between the WMS, WFS and WCS server implementations. This might require an update to existing application build and obfuscation scripts, to incorporate the new library.

    Upgrade considerationLuciadFusion

    The metadata API that was available in com.luciad.metadata has been replaced with an improved implementation in com.luciad.format.metadata. Related to this change, the old metadata interfaces that were implemented by some OWS domain model classes have been removed from these classes.

    The change will have no or very little impact on existing implementations as the affected classes are mostly used internally. Methods that were available on these interfaces can still be found in the OWS domain model.

    Upgrade considerationLuciadFusion

    The ILcdWFSFeatureType interface has been extended with two methods to indicate that the type supports transactions and/or locking. Most existing implementations will want to return false for these methods, which is also the case for implementations that use the TLcdWFSFeatureType class.

    The getModelObjectFactory() method of ILcdWFSFeatureType has been removed. The ILcdDataObject interface is now used to create new instances for specific feature types. This means that servers that wish to support transactions are required to use ILcdDataObject enabled models. Existing transactional WFS implementations should take this into consideration before upgrading.

    Upgrade considerationLuciadFusion

    The classes TLcdGXYEditController, TLcdGXYSelectController, TLcdGXYSelectControllerModel and TLcdGXYSelectControllerModelSW have been deprecated. Their functionality will remain present as is. It is advised to use their more flexible and powerful alternatives : TLcdGXYEditController2, TLcdGXYSelectController2 and TLcdGXYSelectControllerModel2.

    Upgrade considerationLuciadFusion

    The ILcdGXYContext interface has been extended with support for multiple input points (to allow for instance touch based editing with more than one finger) and a built-in sensitivity, a tolerance used by painters and editors when interacting with objects. Because this interface might be further extended in the future, it is strongly discouraged to implement it from scratch. Extend TLcdGXYContext for custom implementations or extend ALcdGXYContextWrapper to create a wrapper for a ILcdGXYContext. These classed will always be kept consistent with the interface.

    Upgrade considerationLuciadFusion

    The getPaintExceptionHandler() method was added to ILcdGXYView to improve the painting exception handling. All our ILcdGXYView implementations now also contain a setPaintExceptionHandler() method. When a painter throws an exception during painting, and it is caught somewhere, it is up to the exception handler returned by the view to handle this exception. This makes it possible for example to log the exception, and continue painting, but it also makes it possible to add fail-fast behavior, i.e. to pass the exception to the outer application.

    The addition of the getPaintExceptionHandler() to ILcdGXYView affects all custom implementations of ILcdGXYView. It also affects classes that wrap an ILcdGXYView. In both cases a compile error is generated. In the former case the getPaintExceptionHandler() method needs to be implemented, see example code below, in the latter case the getPaintExceptionHandler() can delegate to the wrapped ILcdGXYView.

          public class CustomGXYView implements ILcdGXYView {
    
          // Create a default paint exception handler, getPaintExceptionHandler() should never return
          null.
          private ILcdPaintExceptionHandler fPaintExceptionHandler = new
          TLcdLoggingPaintExceptionHandler();
    
          public ILcdPaintExceptionHandler getPaintExceptionHandler() {
          return fPaintExceptionHandler;
          }
    
          public void setPaintExceptionHandler( ILcdPaintExceptionHandler aPaintExceptionHandler ) {
          fPaintExceptionHandler = aPaintExceptionHandler;
          }
    
          // ...
          }
        

    Upgrade considerationLuciadFusion

    The ILcdDataObject interface is now used throughout the WFS if it is available, but it is only required for servers that wish to support transactions. It is recommended to use data formats that support ILcdDataObject with the WFS. For backwards compatibility, ILcdFeature objects can also be supported, but this might disable some of the features that are available to ILcdDataObject based types.

    The WFS requires that each ILcdWFSFeatureType corresponds with at most one TLcdDataType. This means that if the elements of an ILcdModel returned by an ILcdOGCModelProvider implement ILcdDataObject, the TLcdDataType of these data objects should be the same for all elements.

    Upgrade considerationLuciadFusion

    The com.luciad.format.xml.bind.schema.featured package has been dropped. The functionality of this package is now provided by the com.luciad.format.xml.bind.schema.dataobject package. More information about this can be found in the LuciadMap developer's guide.

    Upgrade considerationLuciadFusion

    TLcdXMLSchemaTypeIdentifier and TLcdXMLSchemaElementIdentifier have been extended to properly support the use of global xsd model groups. Elements defined in such groups were previously treated just like local elements. As a result, multiple different type (element) identifiers could point to the same schema type (element).

    Upgrade considerationLuciadFusion

    The xml binding framework now maps xsd:union types like choices: a single property that can contain values of different types. In previous versions, union types were considered strings and any interpretation was left to the application. Note that TLcdXMLSchemaTypeIdentifier has been extended for this such that anonymous types within a union type can be properly identified.

    Upgrade considerationLuciadFusion

    The com.luciad.metadata package has been removed and replaced by a new package com.luciad.format.metadata. The domain classes of the new package have been made consistent with the LuciadMap conventions for mapping XML Schema based data onto Java classes. As a consequence, although both domain models describe the same data, the new API for accessing the data in the model differs from the old API: most classes of the old API still exist in the new API, but have been moved to another package and can have slightly different accessor methods. Users that would have used the metadata API in their projects will need to review and upgrade their code.

    Upgrade considerationLuciadFusion

    Three methods in ALcdGXYNewControllerModel2 (#shouldCommit, #shouldEdit, and #shouldUndo) explicitly relied on MouseEvent information and have been moved to equivalent methods in TLcdGXYNewController2, to allow reusing the model for other input types. Because #shouldCommit uses the previously protected #getCreationStatus, the latter has been made public.

    Upgrade considerationLuciadFusion

    Three methods in TLcdGXYSelectControllerModel2 (#selectHowMode, #selectByWhatMode, and #applySelection) explicitly relied on MouseEvent information and have been deprecated to allow reusing the model for other input types. #applySelection has been replaced by an equivalent but MouseEvent-independent alternative. The other methods have been moved to equivalent methods in TLcdGXYSelectController2.

    Upgrade considerationLuciadFusion

    Two methods in TLcdGXYEditControllerModel (#editWho and #editWhatMode) explicitly relied on MouseEvent information and have been deprecated to allow reusing the model for other input types. Instead, these methods have been moved to equivalent methods in TLcdGXYEditController2.

    Upgrade considerationLuciadFusion

    An extra exception parameter was added to the tileNotAvailable method in the ILcdEarthTileSetCallback interface.

    Previously this method only had a String parameter to indicate the reason why the tile is not available. As a result the call back could not easily distinguish the case where a tile was not available because it did not exist or because an error occurred. This also resulted in considerably more difficult debugging if an exception occurred during tile production as its stack trace was not readily available in the tile consumer.

    As a result of this change any implementations of the ILcdEarthTileSetCallback interface will need to be updated. In most cases this only requires a small effort:
    • Delegate to another call back: this is typically the case if the call back is part of an ILcdEarthTileSet implementation that delegates to another tile set such as an implementation of ALcdEarthTileSetWrapper.
    • Handle the exception: this is typically the case if the call back is part of a tile consumer such as a painter for ILcdEarthTileSets.

    Upgrade considerationLuciadFusion

    TLcdXMLTypeMarshallerProvider, TLcdXMLTypeUnmarshallerProvider and TLcdXMLTypeObjectFactoryProvider now expose all registered type identifiers for a certain class as a java.util.Set while before it was a java.util.List. In a similar vein, all registered classes for a certain type identifier are now also exposed as a Set while before it was a List. This change was made to improve performance.

    Upgrade considerationLuciadFusion

    LMAP-3779
    The method TLcdGXYPointListPainter#getTouchedSegment(ILcdGXYPen, int, int, boolean, ILcdModelXYWorldTransformation, ILcdGXYViewXYWorldTransformation) was deprecated in favor of TLcdGXYPointListPainter#getTouchedSegment( Graphics, int, ILcdGXYContext ). If you override the old getTouchedSegment method and want the new getTouchedSegment to use its behavior, then override the new getTouchedSegment as well and call the old method as follows:
          int x_origin = aGXYContext.getX() - aGXYContext.getDeltaX();
          int y_origin = aGXYContext.getY() - aGXYContext.getDeltaY();
          return getTouchedSegment( aGXYContext.getGXYPen(), x_origin, y_origin, false,
          aGXYContext.getModelXYWorldTransformation(), aGXYContext.getGXYViewXYWorldTransformation() );
        

    Upgrade considerationLuciadFusion

    LMAP-3740, LMAP-3109
    The ALcd2DEditableFloatPolypoint and ALcd3DEditableFloatPolypoint no longer use a shared pool of points and are now thread-safe for read-only access. To achieve this goal, the classes require the user to implement two abstract methods called createPoint() and createBounds(), which must create points/bounds of the appropriate type (geodetic or Cartesian).

    The change affects all classes extending ALcd2D/3DEditableFloatPolypoint: TLcdLonLatFloatPolypoint, TLcdLonLatFloatPolyline, TLcdLonLatFloatPolygon, TLcdXYFloatPolypoint, TLcdXYFloatPolyline, TLcdXYFloatPolygon, TLcdXYZFloatPolypoint, TLcdXYZFloatPolyline, TLcdXYZFloatPolygon.

    Upgrade considerationLuciadFusion

    The TLcdGML32Constants, TLcdGML31Constants and TLcdGML2Constants that defined public constants derived from the GML XML schema's have been removed from the API as they are no longer needed. The domain model has no longer a direct dependency on XML.

    Upgrade considerationLuciadFusion

    The signature of the constructor of the existing model classes that were already available in V9 (TLcdGMLxxAbstractFeature, TLcdGMLxxShapeFactory and TLcdGMLxxModelDescriptor) has changed to incorporate the implementation of ILcdDataObject.

    Upgrade considerationLuciadFusion

    The model classes for GML version 3.2 no longer implement ILcdFeatured. The model classes for GML version 2 and version 3.1 still implement ILcdFeatured. The generic view provided by ILcdFeatured of these model classes is largely the same as it was in version 9. Only properties that are the result from mapping an xsd:choice or a xsd:union are different. The section on the XML format in the LuciadMap developer's guide provides more details on this.

    Upgrade considerationAviation Standards

    All painters in the com.luciad.format.aixm5.view.gxy.painter package have been moved to the com.luciad.format.aixm5.view.gxy package. The TLcdAIXM5MessageUtil class has been moved from the com.luciad.format.aixm5.model to the com.luciad.format.aixm5.util package, all its methods have been made static and the class itself is no longer instantiatable. The classes TLcdAIXM5DecoderLibrary, TLcdAIXM5EncoderLibrary and TLcdAIXM5MappingLibrary from the com.luciad.format.aixm5.xml package have been removed, as they are no longer needed with the new implementation.

    Upgrade considerationAviation Standards

    The AIXM 5 domain model defined in the com.luciad.format.aixm5.model package has been upgraded and now provides an API for the complete domain model of AIXM 5.0. As a result, the existing model classes (TLcdAIXM5AbstractAIXMFeature, TLcdAIXM5AbstractAIXMMessage and TLcdAIXM5AbstractAIXMTimeSlice) changed incompatibly.
    • The domain classes now implement ILcdDataObject; ILcdFeatured is no longer implemented.
    • The domain classes are now much less dependent on XML. XML element names for instance no longer have to be filled in. As a result, the TLcdAIXM5Constants class is no longer need and has been removed from the API.
    • The model descriptor is no longer an ILcdFeaturedDescriptorProvider.
    Please refer to the developer guide for more information about the AIXM 5 domain model classes.

    Upgrade considerationMaritime Standards

    The ILcdS52Symbology interface now extends the Cloneable interface and has an additional clone() method. Cloning an existing symbology instead of decoding a new one allows to reuse the immutable part of the symbology's internal state (lookup tables, icon tables, color tables, ...), resulting in better performance and lower memory usage. A valid clone() method should be added to all custom implementations of this interface.

    9.1

    9.1.23

    ImprovementLuciadFusion

    TLcdCADRGModelDecoder.canDecode() now returns false for the WMM magnetic North files, since they are obviously not CADRG files.

    ImprovementAdvanced GIS Engine

    The precision of line with arc intersections in the ellipsoidal topology was increased.

    Bug fixLuciadFusion

    LMAP-4135
    TLcdGXYRoundedPointListPainter did not use the roundness to verify its cached paths. This caused the roundness of the painted point list to remain unchanged after calling TLcdGXYRoundedPointListPainter#setRoundness().

    Bug fixLuciadFusion

    LMAP-4140
    The TLcdLonLatHeightDome.contains3D() method could return incorrect results.

    Bug fixLuciadFusion

    LMAP-4137
    TLcdLayerTreeNodeCellRenderer now adapts to changes in the look and feel.

    Bug fixLuciadFusion

    LMAP-4136
    The TLcdMapModelDecoder was failing to detect that ".map" files shorter than 512 bytes are not actually MapInfo files. As a consequence, it was returning empty models.

    Bug fixLuciadFusion

    LMAP-4132
    TLcdDatabaseReadOnlyModel was not thread-safe (even if the underlying database was unmodified).

    Bug fixLuciadFusion

    LMAP-4105
    Fixed inaccurate fit of TLcdGXYViewFitAction when using unbounded models. Also fixed some other cases where no good fit could be found. Furthermore the performance is better in most cases.

    Bug fixInfrastructure Standards

    TLcdDWGModelDecoder now correctly swaps points of solids, when necessary.

    Bug fixInfrastructure Standards

    LMAP-3573
    Spline shapes are now decoded correctly.

    9.1.21

    ImprovementLuciadFusion

    LMAP-4115
    The construction time of TLcdTransverseMercator objects has been improved.

    ImprovementLuciadFusion

    LMAP-4113
    TLcdArrayList now implements java.util.RandomAccess, allowing the Java collections framework to choose the most suitable algorithms for sorting etc.

    Bug fixLuciadFusion

    LMAP-4063
    The TLcdLonLatCircle, TLcdLonLatHeightDome and TLcdLonLatHeightSphere were not thread-safe. This has been fixed.

    Bug fixLuciadFusion

    LMAP-3975
    TLcdGXYEditController2: since the fix for LMAP-3443, switching from reshaping to translating within a single edit (by no longer pressing CTRL) would always result in a reshaping operation.

    9.1.20

    ImprovementLuciadFusion

    LMAP-4089
    An ILcdAnchoredIcon interface was added, extending ILcdIcon with an anchor point. Also an implementation, TLcdAnchoredIcon, is provided. TLcdGXYIconPainter was adapted to make use of anchor points if an icon implements ILcdAnchoredIcon.

    ImprovementLuciadFusion

    LMAP-4080
    Empty shape lists return a default bounds at 0,0. As a result, a shape list that contains other shape lists of which some are empty always included 0,0 in its bounds. The bounds calculation code of ALcdShapelist has been improved to ignore empty sub-shape lists.

    ImprovementDatabase Connectors

    The model decoder now supports table names with aliases when decoding database properties.

    Bug fixLuciadFusion

    LMAP-3939
    TLcdGXYEditControllerModel2 would register undoable listeners without removing them when editing labels using EDIT_WHAT_FIRST_TOUCHED_LABEL in combination with label editors implementing ILcdUndoableSource.

    Bug fixLuciadFusion

    LMAP-3890
    Fixed a null pointer exception in TLcdGXYLabelPainter, TLcdGXYPolylineLabelPainter and TLcdGXYPolygonLabelPainter when using the halo functionality in combination with null labels.

    Bug fixLuciadFusion

    Inserting a 3D point in an existing direct position list no longer corrupts the position list. This scenario can occur for instance during editing of airspaces in AIXM5.

    Bug fixLuciadFusion

    LMAP-4074
    TLcdRenderedImage#dispose() now always properly releases the source file. GeoTIFF files would otherwise remain locked under Windows, until garbage collection.

    Bug fixLuciadFusion

    LMAP-4050
    Solved a possible memory leak when using TLcdGXYPolygonStampLabelPainter.

    9.1.19

    ImprovementLuciadFusion

    LMAP-4003
    The string "Powered by LuciadMap" has been replaced by "Powered by Luciad" throughout LuciadMap.

    ImprovementLuciadFusion

    LMAP-3904
    A few enhancements were made to the TLcdAdvancedMapRulerController :
    • TLcdAdvancedMapRulerController now allows multiple measures. This can be enabled using setAllowMultipleMeasurements(). It is possible to start a new measurement starting at a point of an old measurement by setting the edit controller to null, see setGXYEditController().
    • It is now possible to add the measurement layer to the view in order to keep painting measurements after terminating interaction. This can be enabled using setAddGXYLayerToGXYView().
    • To give control over the removal of measurements, the measurement layer is exposed using the getGXYLayer() method.
    • A factory method to create a new TLcdGXYLayer is exposed. This method can be overridden to provide the TLcdAdvancedMapRulerController with a custom TLcdGXYLayer.

    Bug fixLuciadFusion

    LMAP-4060
    The copy constructor and clone() method of TLcdGXYViewLabelPainter did not copy all properties.

    Bug fixLuciadFusion

    LMAP-3861
    If the width, height or depth set on an ILcdBounds object has a negative value, then the bounds location is shifted by that (negative) value and the input width/height/depth is considered to be positive. This change affects the main ILcdBounds implementations: TLcdLonLatBounds, TLcdLonLatheightBounds, TLcdLonLatFloatBounds, TLcdXYBounds, TLcdXYZBounds, TLcdXYFloatBounds, TLcdXYZFloatBounds.

    Bug fixLuciadFusion

    LMAP-4049
    Panning the view fired a view invalidation event before the world origin was actually adjusted. Now it fires the event after the changes to the view are made.

    Bug fixLuciadFusion

    LMAP-4047
    Some samples could throw a NullPointerException when trying to open a file.

    Bug fixLuciadFusion

    LMAP-4045
    Improved the legibility of the haloed text displayed by TLcdAdvancedMapRulerController.

    Bug fixLuciadFusion

    LMAP-3607
    ALcdGXYStampLabelPainter, TLcdGXYHaloPainter, TLcdGXYHaloLabelPainter, TLcdGXYIconPainter, TLcdLonLatGridPainter, TLcdHaloIcon: halo painting now takes into account rendering hints such as anti-aliasing.

    9.1.18

    Bug fixLuciadFusion

    LMAP-4029
    TLcdLonLatArc.getTangent2D() and TLcdXYArc.getTangent2D() were returning incorrect results.

    Bug fixLuciadFusion

    LMAP-4030
    Fixed issue with TLcdResizeableIcon throwing an exception for certain icons.

    Bug fixLuciadFusion

    LMAP-4028
    TLcdGXYCircularArcPainter's line style was called with the wrong object.

    Bug fixLuciadFusion

    LMAP-4012
    TLcdLonLatFloatPolygon.contains2D(double, double) returned incorrect results.

    Bug fixDatabase Connectors

    LMAP-4016
    The Oracle ULTCoordinates field was not correctly interpreted, which could have resulted in rasters being wrongly referenced on the map.

    Bug fixReal-time Engine

    LMAP-4007
    TLcdContinuousDeclutteringLabelPainter could throw a NoSuchElementException when using it as a layer label painter.

    9.1.17

    ImprovementAviation Standards

    LMAP-4017
    It is now possible to specify the preferred departure position for procedures decoded from an ARINC file. A new method 'setPreferredDeparturePosition' has been added to the TLcdARINCProcedureHandler class that takes one of the constants RUNWAY_START or RUNWAY_END as an argument. The default setting is RUNWAY_END which is compatible with the older behaviour.

    ImprovementDefense Symbology

    It is now possible in APP-6A to render the following symbols with more than two points:
    • Minimum Risk Route (MRR) (2.X.2.1.2.2.2
    • Unmanned Aerial Vehicle (UAV) Route (2.X.2.1.2.2.4)
    • Low Level Transit Route (LLTR) (2.X.2.1.2.2.5)

    Bug fixDefense Symbology

    The APP-6A symbol Final Protective Fire (FPF), 2.X.2.3.2.3.1, now uses two or more points to define the base polyline, instead of a fixed set of three points. This is more in line with the APP-6A specification.

    9.1.16

    ImprovementLuciadFusion

    The valid bounds of the TLcdCassini projection now cover the entire globe.

    ImprovementLuciadFusion

    LMAP-3778
    Added missing documentation of the height providers in the LuciadMap developer guide. Also a sample was added that demonstrates the use of height providers (samples.gxy.height).

    ImprovementLuciadFusion

    LMAP-3682
    TLcdGXYCircularArcPainter now has a method #setCreationOrientation to customize the orientation of created arcs.

    ImprovementMaritime Standards

    TLcdS57ModelDecoder now supports S-57 files containing features with geometric primitive type point, line or area, but without any geometry attached. These features will be decoded as TLcdS57FeatureObject instances.

    Bug fixLuciadFusion

    LMAP-3862
    The srsName is now properly set on each feature when encoding a document that contains multiple features but doesn't have a bounding box. Before this fix, the srsName name would be set only on the first feature.

    Bug fixLuciadFusion

    LMAP-4000
    The codes given to ALcdGXYSmartController#setZoomInCodes and #setZoomOutCodes were not registered.

    Bug fixLuciadFusion

    LMAP-3991
    The TLcdGXYPolylineLabelPainter copy constructor did not copy all fields ( VerticalGap, LabelOnPath and MaxNumberPossibilities ). This also caused TLcdGXYFeaturedPolygonLabelPainter#clone() to work incorrectly.

    Bug fixLuciadFusion

    LMAP-3856
    The bounds of TLcdLonLatGeoBuffer were not accurate.

    Bug fixLuciadFusion

    LMAP-3985
    TLcdEllipsoidUtil.computeBufferContour2D could throw IllegalArgumentException in certain cases.

    Bug fixLuciadFusion

    LMAP-3589
    TLcdEllipsoid.intersection2DLSSFCT() was throwing an IllegalArgumentException when the input points defined identical great circles.

    Bug fixLuciadFusion

    LMAP-3827
    The TLcdCassini.world2lonlatOnSphereSFCT returned incorrect results when the latitude of the origin point was not 0.

    Bug fixLuciadFusion

    LMAP-1775
    The bounds of a TLcdLonLatPolygon around the poles were not correct.

    Bug fixLuciadFusion

    LMAP-1795, LMAP-1796
    The bounds of TLcdLonLatArcBand were not correctly set when they contained the North or South pole.

    Bug fixLuciadFusion

    LMAP-3938
    Rotated text performance dropped considerably when using TLcdGXYLayer#paintFromOverlaps.

    Bug fixLuciadFusion

    LMAP-3690
    TLcdGXYCircularArcPainter did not allow snapping the center point when creating arcs.

    Bug fixLuciadFusion

    LMAP-3650
    TLcdIconImageUtil: the input stream of loaded images was not closed.

    Bug fixReal-time Engine

    LMAP-3983
    TLcdTrackModel no longer throws exceptions when it is serialized.

    9.1.15

    ImprovementLuciadFusion

    LMAP-3962
    TLcdLonLatGrid, TLcdLonLatGridPainter and TLcdLonLatBorderGridPainter now also support a grid origin.

    ImprovementLuciadFusion

    LuciadMap now provides USB iButton support for 64-bit Mac OS X.

    ImprovementLuciadFusion

    LMAP-3663
    TLcdGeoTIFFModelencoder and TLcdGeoTIFFModelDecoder now support the NODATA tag for specifying a transparent index in a color map.

    Bug fixLuciadFusion

    LMAP-3824
    The getBounds() method of TLcdLonLatHeightSphere and TLcdLonLatHeightDome were returning 2D bounds instead of 3D bounds. Also, the contains3D methods did not take the z axis into account.

    Bug fixLuciadFusion

    Properly decode GML documents with coordinates expressed in a mix of reference systems with both lon-lat and inverse lon-lat coordinate orders.

    Bug fixLuciadFusion

    LMAP-2670
    A bug in the rendering of rotated labels with halo's, causing the labels to be partly invisible, has been fixed.

    Bug fixLuciadFusion

    LMAP-3891
    The width of the bounds returned by TLcdGeodetic2Grid.worldBounds2ModelSFCT() was 360 degrees whenever the actual width was >180 (but smaller than 360) and both Poles were visible.

    Bug fixLuciadFusion

    TLcdEarthCompositeImageTileSet could still produce a tile if the ALL_IMAGES tile production mode was enabled (default) and one of the added tile sets did not have a tile. If this behavior is desired the ONE_OR_MORE_IMAGES tile production mode should be used instead.

    Bug fixLuciadFusion

    LMAP-3960
    The INTERSECT constant of the TLcdOGCSpatialFilterCapabilities evaluator had the incorrect value "Intersect" where it should have been "Intersects". As a result, encoding capabilities containing such a spatial filter capability resulted in an invalid xml document.

    Bug fixLuciadFusion

    LMAP-3969
    TLcdGeneralPerspective.world2lonlatOnEllipsoidSFCT() could return points having Double.NaN as the X coordinate.

    Bug fixLuciadFusion

    LMAP-3966
    TLcdLonLatGridPainter sometimes did not draw a meridian/parallel.

    Bug fixLuciadFusion

    LMAP-3965
    TLcdLonLatGridPainter painted incorrectly placed meridians in some cases.

    Bug fixLuciadFusion

    LMAP-3964
    TLcdLonLatGridPainter did not always label the borders correctly.

    Bug fixLuciadFusion

    LMAP-3716
    TLcdInputStreamFactory: added a workaround for a bug in Java which could cause a ZipException with message 'ZipFile closed'.

    Bug fixLuciadFusion

    Fixed altitude exaggeration in TLcdEarthGLTerrainPainter when the updateTiles feature was enabled.

    Bug fixDefense Symbology

    LMAP-3973
    The turn, airfield zone and decoy mined area symbols could not be visualized in APP-6A.

    Bug fixDefense Symbology

    LMAP-3934
    All calls to System.err and System.out have been replaced by the use of the LuciadMap logging mechanism, allowing the user to customize the logging behavior.

    Bug fixInfrastructure Standards

    LMAP-3573
    Issue LMAP-3573 (decoding of spline shapes) had been fix in previous LuciadMap versions but was incorrectly merged into version 9. The issue is now solved in version 9 as well.

    Bug fixInfrastructure Standards

    LMAP-3945
    TLcdDWGModelDecoder did not correctly handle block inserts containing other inserts.

    Bug fixMaritime Standards

    A bug in the rendering of traffic junctions has been fixed: traffic junctions are now rendered without a direction indication.

    Bug fixMaritime Standards

    A bug in the rendering of symbols (some embedded symbols were not rendered) has been fixed.

    9.1.14

    ImprovementLuciadFusion

    LMAP-3936
    The performance of the TLcdDefaultModelXYZWorldTransformation class has been improved.

    ImprovementReal-time Engine

    TLcdContinuousDeclutteringLabelPainter now has a forced painting priority threshold. When the priority of a label is higher than this threshold, it is always drawn., even when it should be dropped because of the max label coverage option.

    ImprovementReal-time Engine

    TLcdContinuousDeclutteringLabelPainter now can use a label priority provider that can make a distinction between labels with different label and sublabel indices. This is done by passing a ALcdGXYLabelPriorityProvider to TLcdContinuousDeclutteringLabelPainter#setLabelPriorityProvider().

    Bug fixLuciadFusion

    LMAP-3944
    TLcdGXYIconPainter: fixed snapping when creating icons.

    Bug fixLuciadFusion

    LMAP-3935
    TLcdGeoTIFFModelEncoder now correctly encodes RGB and ARGB colors of custom tiles.

    Bug fixLuciadFusion

    LMAP-3918
    Writing xml content of type xsd:QName with an empty namespace no longer generates an empty namespace declaration. This issue only occurred when not using the (default) woodstocks XML libraries.

    Bug fixLuciadFusion

    LMAP-3924
    Taking the intersection of two valid TLcdXYBounds, TLcdXYZBounds, TLcdLonLatBounds or TLcdLonLatHeightBounds objects could produce a result with negative width, height or depth.

    Bug fixLuciadFusion

    LMAP-3923
    TLcdCompositeModelXYZWorldTransformation.modelBounds2worldSFCT() could return world bounds with an incorrect Z coordinate. This also affected the TLcdDefaultModelXYZWorldTransformation class.

    Bug fixAviation Standards

    LMAP-3943
    TLcdDAFIFRegionChooser: fixed a NullPointerException when no ILcdStringTranslator was set.

    9.1.13

    ImprovementLuciadFusion

    LMAP-3867
    TLcdLonLatGridPainter now has more label styling options, such as drawing labels with a frame, and/or with a filled background.

    Bug fixLuciadFusion

    Features of type TLcdGML3Measure can now be properly retrieved using the ILcdFeatured#getFeature(int) method. Before this fix, null was always returned. This issue only occurred when using the old deprecated TLcdGML3ModelDecoder.

    Bug fixLuciadFusion

    LMAP-3920
    Offset icon painting was slow when lots of offset icons are drawn.

    Bug fixLuciadFusion

    3D points created with the GML shape factory now properly keep track of their Z coordinate.

    Bug fixLuciadFusion

    LMAP-3864
    During encoding, srsNames are now properly set on each feature in case no envelope is present.

    Bug fixLuciadFusion

    LMAP-3916
    The logging framework could not be configured to use a different logging framework in the context of a web application container.

    Bug fixLuciadFusion

    TLcdEarthGLVectorPainter no longer unconditionally enables texture mapping from its paintClipmap() method. If texture mapping is needed, it should be enabled by the TLcdEarthGLVectorPainter's delegate painter.

    Bug fixLuciadFusion

    LMAP-3914
    TLcdGeoTIFFModelDecoder now correctly encodes 16-bits rasters decoded by Java Advanced Imaging (for example GeoTIFF files).

    Bug fixLuciadFusion

    LMAP-3823
    TLcdGeoTIFFModelDecoder was sometimes setting an incorrect model reference when the coordinate system from the GeoTIFF file was user-defined.

    Bug fixLuciadFusion

    LMAP-3907
    TLcdGXYAsynchronousPaintQueue#setBorderFactor was not always ignored for labels, causing placement problems when labels have absolute coordinates or when labels are placed at the edge.

    Bug fixLuciadFusion

    LMAP-3900
    TLcdLonLatGridPainter did not respect the labelEdgeOffset property.

    Bug fixLuciadFusion

    LMAP-3887
    In some cases, TLcdLonLatGridPainter could try to paint the entire grid instead of only the visible part. This resulted in a performance problem.

    Bug fixLuciadFusion

    LMAP-3894
    ILcdEditableShapeList implementations are now notified by TLcdGXYShapeListPainter via the shapeChanged() method when one or more of their shapes has been edited. ALcdShapeList.invalidateBounds() is now also called whenever a shape in a shape list has been edited by TLcdGXYShapeListPainter.

    Bug fixLuciadFusion

    LMAP-3889
    A performance bug in the halo rendering algorithm has been fixed.

    Bug fixDefense Symbology

    LMAP-3901
    The nuclear, biological and chemical area symbols could not be visualized in APP-6A.

    Bug fixInfrastructure Standards

    LMAP-3909
    TLcdCellGXYPainter now also handles holes correctly when printing.

    9.1.12

    Bug fixLuciadFusion

    LMAP-3418
    TLcdGeoTIFFModelEncoder now again correctly writes out large index color models of elevation rasters that have single tiles.

    9.1.10

    ImprovementLuciadFusion

    The use of automatic mipmap generation in TLcdEarthGLTerrainPainter can now be disabled by setting the system property "com.luciad.view.opengl.extensions.GL_SGIS_generate_mipmap" to "false". This may be desirable on graphics cards or drivers where this feature is poorly implemented, resulting in instability. Intel integrated graphics chipsets are a notable example for which mipmap generation may need to be disabled.

    ImprovementDefense Symbology

    LMAP-3885
    The FEBA symbols in APP-6A that show the actual trace (2.X.2.1.4.2.1.1 and 2.X.2.1.4.2.1.2) now support more than two points.

    ImprovementDefense Symbology

    LMAP-3873
    All symbols in the minefield group in APP-6A (category 2.X.2.2.1.6) are now represented as areas. More specifically, the following symbols have received an updated representation:
    • AP minefield (G*C*BOAIL-*****, 2.X.2.2.1.6.3) is now an area instead of a line,
    • AP minefield with gap (G*C*BOAIG-*****, 2.X.2.2.1.6.4) is now an area instead of a line,
    • AP minefield reinforces with self-destruct DTG (G*C*BOAIH-*****, 2.X.2.2.1.6.7) is now an area instead of a point,
    • Scatterable minefield with self-destruct DTG (G*C*BOAID-*****, 2.X.2.2.1.6.8) is now an area instead of a point.

    Bug fixLuciadFusion

    LMAP-3886
    TLcdWKTReferenceParser did not support the Swiss Oblique Mercator projection.

    Bug fixLuciadFusion

    The TLcdEarthTexturedTerrainTileSet did not support updateTile for its geometry and image coverages.

    Bug fixLuciadFusion

    LMAP-3884
    Database models (for example DB2) no longer throw an ArrayIndexOutOfBoundsException when the maximum cache size is set to 0.

    Bug fixLuciadFusion

    LMAP-3881
    TLcdBILTileDecoder no longer ignores the number of band row bytes when reading tiles without sub-tiling.

    Bug fixLuciadFusion

    LMAP-3874
    TLcdGXYMultiFontLabelPainter could print out stack traces when the object to label was not visible.

    9.1.09

    Bug fixLuciadFusion

    LMAP-3879
    TLcdEarthRepositoryModelDecoder could not open repositories with PNG data. As a result it was for example not possible to open such repositories in Lucy, while this was supported in earlier versions.

    Bug fixLuciadFusion

    TLcdEarthAsynchronousTileSet did not clean up its resources when its dispose method was not called. This could for example result in a number of unused threads when using the TLcdEarthGLTerrainPainter.

    Bug fixLuciadFusion

    LMAP-3865
    TLcdGXYCirclePainter and TLcdGXYEllipsePainter's paint direction was inconsistent, causing problems when using advanced strokes.

    9.1.08

    ImprovementLuciadFusion

    LMAP-3835
    Previously TLcdModelXYWorldBoundsCalculation#worldBounds2modelLLH could return bounds starting at lon 180. Now the bounds start at -180 instead.

    ImprovementLuciadFusion

    When an unknown unit of measure is encountered, a warning message is logged to inform the user that the uom is unknown and that the default unit is used.

    ImprovementLuciadFusion

    TLcdEarthGLTerrainPainter uploaded more terrain texture tiles to the graphics card per repaint than strictly necessary. This has been addressed, which may result in smoother rendering especially on lower-end hardware.

    ImprovementDatabase Connectors

    The Oracle JDBC drivers have been updated to version 11.2.0.1.0.

    ImprovementAviation Standards

    Improved logging of errors which occur during the geometry calculation of association based airspaces. These errors indicate that the geometry of an association based airspace is invalid, or that some information is missing. Increase the logging level to get more information in case such an error occurs.

    ImprovementAviation Standards

    LMAP-3655
    The DAFIF decoders will now show a warning instead of a "severe" error in case a model has no bounds. The error message will now also refer to the specific DAFIF file which resulted in the empty model.

    ImprovementDefense Symbology

    LMAP-2202
    The width of the air corridor and flight route symbols in APP-6A (category 2.X.2.1.2.2) and MIL-STD 2525b/c (category 2.X.2.2.2.1) can now be adjusted.

    Bug fixLuciadFusion

    The bounds of TLcdXYArc, TLcdLonLatArc, TLcdXYArcBand no longer include the center point of these shapes (previous change has been reverted).

    Bug fixLuciadFusion

    LMAP-3860
    In the geometry package intersection calculations, in some rare cases it did not find all intersection points between two arcs.

    Bug fixLuciadFusion

    LMAP-3851
    The LuciadMap hardware key now also works on Windows if a different user has installed the .msi 1-Wire drivers.

    Bug fixLuciadFusion

    LMAP-3828
    TLcdGXYDragRectangleController: an invalid selection rectangle was painted if the map loses focus while dragging.

    Bug fixLuciadFusion

    Geodetic GML envelopes now correctly deal with situations where the longtitude of the lower corner is larger than the longtitude of the upper corner.

    Bug fixLuciadFusion

    LMAP-3832
    Issues with geometry topology calculations with points were fixed. Point interacting with polygon test could give incorrect results, points on points now return true for both inside and contains, and lines cannot intersect points anymore now.

    Bug fixLuciadFusion

    LMAP-3855
    The bounds of a geobuffer are now invalidated when the axis has been changed by the TLcdGXYGeoBufferPainter, or when an axis is set on the buffer.

    Bug fixLuciadFusion

    LMAP-3818
    The line intersection topology calculation with arc band shapes sometimes returned wrong points in the ellipsoidal case.

    Bug fixLuciadFusion

    LMAP-3825
    TLcdGXYContinuousPanController did not respect the view's clip bounds.

    Bug fixLuciadFusion

    LMAP-3826
    TLcdAWTUtil.resetGraphics no longer resets the Graphics object's transformation.

    Bug fixLuciadFusion

    LMAP-3802
    The TLcdWKTReferenceFormatter does not support rotated grid references (the rotation parameter was silently discarded). An exception is now thrown when attempting to format a rotated grid reference.

    9.1.07

    ImprovementLuciadFusion

    LMAP-3792
    GML32 and GML31 documents containing geometries with coordinates expressed using the deprecated gml:coordinates element can now also be decoded and visualized.

    ImprovementLuciadFusion

    LMAP-3845
    Srs names matching urn:ogc:def:crs:EPSG:*:4326 are now recognized as references which have their coordinates in inverse order (first lat, then lon).

    ImprovementLuciadFusion

    LMAP-3811
    TLcdDatabaseModel and TLcdDatabaseReadOnlyModel now throw an IllegalStateException from ILcdModel methods, if the operation requires access to the database and fails. Such failures are now consistently logged with the standard logging mechanism.

    ImprovementLuciadFusion

    TLcdEarthAsynchronousTileSet did not set the priority of the threads it created, resulting in potentially poor performance on single-core machines. Threads are now initialized with minimum priority to ensure that they do not interfere with the event dispatch thread.

    ImprovementAviation Standards

    TLcdProcedure3DGeometryCalculator: Improved the initial altitude setting for SID procedures. This results in a better discretization of certain leg types.

    ImprovementAviation Standards

    LMAP-3806
    TLcdDAFIFLoader: added a constructor with an ILcdStringTranslator to allow for translation of the label on the 'Update' button and the 'Types' list. TLcdDAFIFRegionChooser: added a constructor with an ILcdStringTranslator to allow for translation of the label on the 'ICAO Regions' list.

    Bug fixLuciadFusion

    XML schema type identifiers for locally defined attribute types are now correctly represented (i.e. with the attribute name filled in). They used to be presented similar to locally defined element types, (i.e. with the attribute name as an element name).

    Bug fixLuciadFusion

    LMAP-3834
    TLcdGXYPolylineStampLabelPainter#anchorPointSFCT: in some cases, an ArrayIndexOutOfBoundsException was thrown for polylines with zero-length segments.

    Bug fixLuciadFusion

    TLcdGeoTIFFModelEncoder now takes into account the index color model of the raster if it overrides the color model of the tile.

    Bug fixLuciadFusion

    LMAP-3822
    TLcdGeoTIFFModelDecoder now correctly interprets the SampleFormat tag for identifying elevation data (bug introduced in 9.1.01).

    Bug fixLuciadFusion

    LMAP-3817
    When loading TEA files from a workspace some paths could not be loaded because "null/" was added to the filename.

    Bug fixDatabase Connectors

    LMAP-3776
    TLcdOracleGeoRasterModelDecoder may consider that database rasters have different references, even though the references may be equivalent.

    Bug fixReal-time Engine

    LMAP-3846
    The realtime.offsetIcon sample no longer tries to declutter before the previous declutter operation is finished, preventing several exceptions.

    Bug fixMaritime Standards

    LMAP-3446
    Ecdis models and model decoder are now thread-safe.

    9.1.05

    Bug fixLuciadFusion

    LMAP-3700
    The TLcdResizeableIcon used to result in a infinite loop when the target width was greater than the width of the original icon while the target height was smaller than the height of the original icon or vice versa. This has been solved.

    Bug fixLuciadFusion

    LMAP-3769
    The NO_LAYOUT option for the TLcdOverlayLayout works as expected now.

    Bug fixLuciadFusion

    LMAP-3788
    TLcdDTEDTileDecoder no longer skews the image when used in a raster model (.rst file).

    Bug fixLuciadFusion

    LMAP-3800
    When formatting the TLcdLambert1972BelgiumGridReference as a well-known-text (WKT), the projection name is now "Lambert_Conformal_Conic_2SP_Belgium" instead of "Lambert_Conformal_Conic_2SP".

    Bug fixLuciadFusion

    LMAP-3371
    TLcdGXYZoomWheelController now zooms correctly when dragging.

    Bug fixLuciadFusion

    LMAP-3798
    TLcdBILTileDecoder (used by TLcdBILModelDecoder and TLcdETOPOModelDecoder) now avoids skipping past the end of its input stream, to avoid infinite loops for some input stream implementations.

    9.1.04

    ImprovementLuciadFusion

    Added support for capabilities files which have the MaxScaleDenominator element before the MinScaleDenominator. Although this is not valid according to the WMS specification, it sometimes occurs in practice.

    ImprovementLuciadFusion

    The bounds of TLcdXYArc, TLcdLonLatArc, TLcdXYArcBand and TLcdLonLatArcBand have been extended to include the center point of these shapes.

    ImprovementAviation Standards

    LMAP-3794
    TLcdAIXM5XPathExpressionFactory: added the possibility to register additional schemas and prefixes with the XPath expression factory.

    Bug fixLuciadFusion

    LMAP-3786
    The result of TLcdGXYRoundedPointListPainter#clone could throw a null point exception for subsequent method invocations.

    Bug fixLuciadFusion

    Rotation sample: RotationSupport now works correctly for grid references.

    Bug fixLuciadFusion

    LMAP-3536
    TLcdGXYPointListPainter#getCreationClickCount did not return -3 for filled polygons, making it possible to create polygons of 2 points.

    Bug fixAviation Standards

    LMAP-3790
    TLcdICAORunwayPainter: Fixed an issue which caused runways to be drawn with a doubled width.

    9.1.03

    ImprovementLuciadFusion

    LMAP-3102
    The hash code for the following shapes has been improved: ALcdBounds, ALcdPoint, TLcdLonLatArc, TLcdLonLatArcBand, TLcdLonLatBuffer, TLcdLonLatCircle, TLcdLonLatEllipse, TLcdXYArc, TLcdXYArcBand, TLcdXYCircle, TLcdXYEllipse, TLcdXYText, TLcdExtrudedShape, TLcdLonLatHeightBuffer, TLcdLonLatheightDome, TLcdLonLatheightSphere, ALcd2DEditableFloatPolypoint, ALcd3DEditableFloatPolypoint.

    ImprovementLuciadFusion

    LMAP-3487
    The performance of TLcdCompositeCurve.getLength2D() has been improved.

    ImprovementLuciadFusion

    LMAP-3661
    The TLcdXMLSchemaBasedDecoder now also uses the XMLResolver set on the XMLInputFactory during resolution of XML schemas.

    ImprovementLuciadFusion

    LMAP-3480
    The magnetic north data files for WMM and IGRF have been updated to cover the period 2010-2015. Also, TLcdWMMMagneticNorthMap and TLcdWMMModelDecoder have been adjusted to support multiple consecutive WMM data files.

    ImprovementAdvanced GIS Engine

    LMAP-1948, LMAP-3551
    TLcdEllipsoidalBasicBinaryTopology, TLcdSphericalBasicBinaryTopology and TLcdCartesianBasicBinaryTopology now provide support for ILcdComplexPolygon instances.

    ImprovementAviation Standards

    LMAP-3774
    The AIXM5 model decoder now has public accessors to get and set its entity resolver. This allows the application to determine how references to external schemas are resolved.

    ImprovementInfrastructure Standards

    TLcdCellGXYPainter now more robustly handles recursive invocations.

    Bug fixLuciadFusion

    The elevations retrieved from a (multilevel) raster could be incorrect if its reference is WGS84 and its bounds cross the 180 degrees meridian.

    Bug fixLuciadFusion

    The TLcdEarthTerrainRepositoryModelDecoder could not decode repositories with a non-geodetic model reference that contain elevation data.

    Bug fixLuciadFusion

    The TLcdEarthElevationDataTileDataCodec could not encode elevation data with NaN values.

    Bug fixLuciadFusion

    LMAP-2157
    The TLcdXYPolygon.contains2D() now returns true for its corner and edge points, which is consistent with the behavior of TLcdLonLatPolygon.

    Bug fixLuciadFusion

    LMAP-2067
    The TLcdXYArcBounds.getBounds() method was returning bounds that were too large.

    Bug fixLuciadFusion

    LMAP-2868
    Classes derived from ALcd2DEditablePolypoint and ALcd3DEditablePolypoint can not always create a deep clone if the internal point list is specified by the user. If a shallow clone is returned the implementation now issues a warning.

    Bug fixLuciadFusion

    LMAP-3759
    The TLcdRPCModelReferenceDecoder now tries automatically to derive the name of the file containing the RPC parameters by replacing the suffix of the input file with "_rpc.txt".

    Bug fixLuciadFusion

    LMAP-3497
    TLcdXYArc.getLength2D() was returning incorrect results.

    Bug fixLuciadFusion

    LMAP-3754
    The accuracy of TLcdLonLatArc.getBounds() has been improved, especially for arcs belonging to very elongated ellipses.

    Bug fixLuciadFusion

    LMAP-1784
    TLcdLonLatArc.updateForCornerPoint2D() was incorrect when called with ILcdArc.MINOR_RADIUS_OPPOSITE_CORNER as argument.

    Bug fixLuciadFusion

    LMAP-2123
    TLcdXYArc.getBounds() was not always returning correct results. This has been fixed.

    Bug fixLuciadFusion

    LMAP-1794, LMAP-3060
    TLcdXYArc.getBounds() now contains the start/end points of the arc in all cases.

    Bug fixDatabase Connectors

    TLcdOracleSpatialModelEncoder now correctly encodes polylines that are also polypoints (like TLcdXYPolyline, which extends TLcdXYPolypoint).

    Bug fixInfrastructure Standards

    LMAP-3649
    TLcdCellGXYPainter now handles holes that have outlines and that may not be filled.

    9.1.02

    ImprovementLuciadFusion

    LMAP-3768
    TLcdIndependentOrderTreeLayeredSupport now provides a hook to alter the index at which layers are added to the flat list representation.

    ImprovementLuciadFusion

    TLcdWCSGeoTiffCoverageTileDecoder now supports decoding of service exception reports.

    ImprovementLuciadFusion

    LMAP-3679
    TLcdWFSGetFeatureRequest no longer includes the XML declaration within an OGC Filter Encoding when encoding KVP requests, as it was not supported by some WFS servers.

    Bug fixLuciadFusion

    LMAP-3771
    TLcdGXYPolygonLabelPainter and TLcdGXYPolylineLabelPainter now respect the anti-aliasing rendering hints from the passed Graphics instance.

    Bug fixLuciadFusion

    TLcdLonlatCircularArcbyBulge.getBounds() was returning bounds in Cartesian coordinates (XY) instead of geodetic (lon/lat).

    Bug fixLuciadFusion

    The threads of the TLcdEarthAsynchronousTileSet could prevent its delegate tileset from being garbage collected after the TLcdEarthAsynchronousTileSet is garbage collected.

    Bug fixLuciadFusion

    LMAP-3544
    TLcdLonLatCircularArcBy3Points.getLineSegmentIntersectionCount() was returning incorrect results in some limit cases.

    Bug fixLuciadFusion

    The TLcdEarthAsynchronousTileSet did not report all exceptions that occur during its asynchronous operation.

    Bug fixLuciadFusion

    LMAP-3760
    WCS client data is now correctly shown in case the projection requires warping.

    Bug fixLuciadFusion

    LMAP-3676
    TLcdOWSHttpTransport#sendData did not close the OutputStream of the connection in case of POST requests.

    Bug fixAdvanced GIS Engine

    In some cases a ClassCastException was thrown when checking a topological relation between an ILcdPolygon and an ILcdPolyline instance.

    Bug fixTerrain Analysis Engine

    LMAP-1979
    The hypsometric painters now also use the unit of measure to compute the elevation scale. This scale is a rough estimate for computing the normals, based on the transformed bounds.

    9.1.01

    ImprovementLuciadFusion

    LMAP-3657
    To allow additional configuration on the layer and painter level of a WMS proxy model, two new classes have been introduced: TLcdWMSProxyGXYLayer and TLcdWMSProxyGXYPainter. The existing layer factory, TLcdWMSProxyGXYLayerFactory, now returns layers of type TLcdWMSProxyGXYLayer, configured with a TLcdWMSProxyGXYPainter instance as painter provider.

    ImprovementLuciadFusion

    LMAP-3755
    The TLcdWFSModelDecoderDecorator now supports a boolean flag to turn GML application schema caching on. This is typically used when many small documents need to be decoded from the same WFS server.

    ImprovementLuciadFusion

    LMAP-3755
    A new flag 'useApplicationSchemaCache' has been added to the TLcdGMLModelDecoder. Turning this flag on will ensure that the decoder cache all application schemas it encounters. This reduces memory usage in case many files have to be decoded for the same application scheme.

    ImprovementLuciadFusion

    TLcdRPCProjection now has getters and setters for its parameters.

    ImprovementLuciadFusion

    LMAP-3738
    TLcdDatabaseModelEncoder now supports automatic periodic commits when exporting a model to a database. This may be useful to avoid overflow of transaction logs.

    ImprovementLuciadFusion

    Updated the raster sample to use the repository model decoder introduced in 9.1.

    ImprovementLuciadFusion

    TLcdSHPModelDecoder allows the user to specify a model factory. This may be useful for example if the user wants to set a filter for adding elements to the output model.

    ImprovementLuciadFusion

    The elevation of the shapes in the above ground sample now updates when the terrain is changed (ex. they become flat if it is removed).

    ImprovementLuciadFusion

    LMAP-3678
    The TLcdEarthGLTrnTileSet, TLcdEarthAssetGXYViewTileSet and TLcdEarthAssetTerrainElevationTileSet are now thread-safe.

    ImprovementLuciadFusion

    LMAP-3695
    TLcdAdvancedMapRulerController, TLcdGRIBGXYController, TLcdGXYCenterRasterController, TLcdGXYMagnifierController and TLcdMagneticNorthGXYController now extend from ALcdGXYSmartController.

    ImprovementLuciadFusion

    LMAP-3514
    Layer control sample: the layer control of the samples now has an extra button, allowing to change the label of the layers.

    ImprovementLuciadFusion

    LMAP-3647
    The TLcdEarthGLTerrainClipmapLevel now uses older versions of some OpenGL methods (e.g. gl*ARB instead of gl*) for hardware compatibility reasons. The performance on hardware that was previously supported should not be affected.

    ImprovementDatabase Connectors

    LMAP-3738
    TLcdDB2ModelEncoder now supports automatic periodic commits when exporting a model to a database, with the new property autoCommitCount. This may be useful to avoid overflow of transaction logs.

    ImprovementDatabase Connectors

    LMAP-3738
    TLcdPostGISModelEncoder now supports automatic periodic commits when exporting a model to a database, with the new property autoCommitCount. This may be useful to avoid overflow of transaction logs.

    ImprovementDatabase Connectors

    LMAP-3738
    TLcdInformixGeodeticModelEncoder now supports automatic periodic commits when exporting a model to a database, with the new property autoCommitCount. This may be useful to avoid overflow of transaction logs.

    ImprovementDatabase Connectors

    LMAP-3738
    TLcdInformixSpatialModelEncoder now supports automatic periodic commits when exporting a model to a database, with the new property autoCommitCount. This may be useful to avoid overflow of transaction logs.

    ImprovementDatabase Connectors

    LMAP-3738
    TLcdOracleSpatialModelEncoder now supports automatic periodic commits when exporting a model to a database, with the new property autoCommitCount. This may be useful to avoid overflow of transaction logs.

    ImprovementTerrain Analysis Engine

    LMAP-3658
    TLcdProfileViewJPanel: the left altitude label of the profile view could overlap with the minimum or maximum label.

    ImprovementAviation Standards

    LMAP-3671
    The AIXM5 sample now automatically adds the ".xml" extension to the file name if it is not present. This ensures that saved files can always be found in the open file dialog which filters on this extension.

    Bug fixLuciadFusion

    LMAP-3751
    TLcdFeaturedShapeList.getFeature() now throws an IndexOutOfBoundsException instead of NullPointerException when the feature list has not been initialized.

    Bug fixLuciadFusion

    LMAP-3745
    The maxy attribute of the LatLonBoundingBox element of a WMS 1.1.1 layer was not decoded correctly, resulting in an incorrect value when the height of the bounding box was retrieved (ALcdWMSLayer#getWGS84LonLatBounds).

    Bug fixLuciadFusion

    LMAP-3744
    TLcdGeoTIFFModelDecoder now also sets the elevation flag on the model descriptors of decoded raster models if the elevation rasters have color maps.

    Bug fixLuciadFusion

    LMAP-3743
    TLcdGeoTIFFModelEncoder now also creates signed GeoTIFFs from elevation rasters if saveLargeColorMaps is set to true. As a result, it no longer fails with a type exception on elevation rasters that have single tiles.

    Bug fixLuciadFusion

    LMAP-3661
    Fixed TLcdXMLSchemaBasedDecoder such that it also works with the Xerces XML parser. This issue manifested it self by discarding during decoding all values for attributes defined without an xml namespace.

    Bug fixLuciadFusion

    LMAP-3540
    TLcdEllipsoid.geodesicPointSFCT was inaccurate for points very close to each other.

    Bug fixLuciadFusion

    LMAP-3736
    The OGC filter decoder and encoder now support OGC literals with child elements (as opposed to only supporting plain text literals).

    Bug fixLuciadFusion

    Fixed race condition in TLcdEarthTileRepository.addTileDataCodec.

    Bug fixLuciadFusion

    LMAP-3687
    TLcdRectifiedProjectiveProjection has been corrected, fixing a mathematical error that was introduced in LuciadMap 9.1.

    Bug fixLuciadFusion

    LMAP-3732
    TLcdGXYFeaturedLabelPainter: Fixed an issue which could cause the feature indices to be reset when using the clone method.

    Bug fixLuciadFusion

    LMAP-3694
    Fixed TLcdXMLDecoder such that it also works with other XML parsers then xerces. This issue manifested it self for instance when starting lucy by showing a dialog box asking for the xsd for XMLSchema when running with java 1.4 (which does not include xerces).

    Bug fixLuciadFusion

    The internal queue of the TLcdEarthAsynchronousTileSet does not overflow as quickly anymore. As a result the related warning message should only be logged if there might be a problem ( e.g. similar to the behaviour in LuciadMap 9.0 and older).

    Bug fixLuciadFusion

    The TLcdEarthMetadataTerrainTileSet now logs a warning if the asset model contains unsupported assets.

    Bug fixLuciadFusion

    LMAP-3697
    The TLcdSHPModelDecoder was not using the input stream factory for decoding the index file (.shx).

    Bug fixLuciadFusion

    LMAP-3696
    The classes TLcdEPSGReferenceParser and TLcdReferenceFormatter were not correctly synchronizing the access to the internal EPSG database, making them unsafe for multi-threading.

    Bug fixLuciadFusion

    LMAP-3597
    TLcdLayerTree: a workaround for Swing bug 4199956 has been implemented.

    Bug fixLuciadFusion

    LMAP-3674
    TLcdGeoReference2GeoReference is now always updated properly when resetting it with different source and destination references.

    Bug fixLuciadFusion

    LMAP-3672
    TLcdGXYMultiFontLabelPainter now takes the selection color into account.

    Bug fixLuciadFusion

    Fixed rare bug in TLcdEarthGLTrnTileSet which could cause an infinite wait.

    Bug fixLuciadFusion

    LMAP-3735
    TLcdGXYMultiFontLabelPainter could print out stack traces when the object to label was not visible.

    Bug fixGraph and Routing Engine

    A bug in the implementation of ILcdGDFLineFeature.getPoint(int) has been fixed.

    Bug fixTerrain Analysis Engine

    LMAP-3660
    TLcdDensityBasedRasterElevationProvider: the raster cache was not always updated when required.

    Bug fixAviation Standards

    Fixed a possible NullPointerException when painting airspace labels.

    Bug fixDefense Standards

    LMAP-3687
    Positioning of rasters with a projective transformation has been corrected, by fixing a mathematical error that was introduced in TLcdRectifiedProjectiveProjection in LuciadMap 9.1.

    Bug fixMaritime Standards

    S-57 lines and areas are now thread-safe for reading access.

    Upgrade considerationDefense Standards

    LMAP-3110
    The following methods were removed from TLcdVPFGeoSymProvider, since their signature contained obfuscated classes:
    • getPointLabel
    • getLineLabel
    • getAreaLabel
    • getStyleProvider
    The first three shouldn't be used because GeoSym labeling is not supported. If the last method should be used somewhere, it should be replaced by TLcdVPFGeoSymProvider.getInstance(String).

    Upgrade considerationMaritime Standards

    LMAP-3539
    Support for S-52 styles with multiple symbol rotations has been added. This improvement resolves the incorrect rendering of Deep Water symbols. In order to implement this improvement, the ILcdS52Style interface has been changed: the getIcon(), setIcon(), getIconRotation() and setIconRotation() methods have been replaced by respectively getIcons(), setIcons(), getIconRotations() and setIconRotations(), which work with arrays of icons/rotations, instead of a single icon/rotation. Users implementing or wrapping the ILcdS52Style interface should update their implementations accordingly.

    9.1

    ImprovementLuciadFusion

    LMAP-3578
    The asset model is now saved with the repository. This allows determining the contents of a repository without testing all its tiles.

    ImprovementLuciadFusion

    The OGC filter encoder (both the old and the new implementation) now correctly handle filters containing binary operators or binary logic operators with only a single operand. In such cases, only the operand of the binary (logic) operator is encoded resulting in a correct xsd-compliant document.

    ImprovementLuciadFusion

    LMAP-3612
    TLcdPolyconic has been added to the default list of projections of TLcdProjectionCustomEditor.

    ImprovementLuciadFusion

    TLcdLayer now invalidates itself for filter changes when the filter implements ILcdChangeSource.

    ImprovementLuciadFusion

    TLcdOverlayLayout has been introduced, which is a LayoutManager, specifically designed for Containers that contain a map (with a view) and other components that should hover above the map.

    ImprovementLuciadFusion

    The WFS client now has support for the 'RESULTTYPE' attribute in GetFeature requests, allowing clients to choose the desired result type.

    ImprovementLuciadFusion

    LMAP-3146
    TLcdGXYPointListPainter has a new property minimumEditDelta to control how much the mouse should move before an edit operation is initiated.

    ImprovementLuciadFusion

    TLcdCodecException and TLcdNoBoundsException now have additional constructors that allow to pass the cause of the exception. Exceptions thrown by LuciadMap now more consistently contain such causes, providing better feedback when debugging problems.

    ImprovementLuciadFusion

    LMAP-3578
    The asset model used to create a repository is now saved with the repository. These assets can for example be used to determine in which regions a repository has data. To open a repository with this data you can use the TLcdEarthRepositoryModelDecoder, to create one you can use the TLcdEarthTileRepositoryFactory. The preprocessor sample demonstrates its usage. The TLcdEarthTerrainRepositoryModelDecoder also loads the asset information if it is available and make it available through an ILcdEarthAssetBasedModelDescriptor.

    ImprovementLuciadFusion

    TLcdEllipsoidRhumblineUtil and TLcdSphereRhumblineUtil: their public default constructor has been removed as these classes only contain static methods.

    ImprovementLuciadFusion

    The TLcdGeoTIFFModelEncoder has a new method that allows the user to specify an external ILcdModelReferenceEncoder.

    ImprovementLuciadFusion

    The interfaces ILcdCollection and ILcdList have been added, introducing event-firing Collections and Lists.

    ImprovementLuciadFusion

    The JGenerator library used by TLcdGXYViewSWFEncoder to generate maps in the SWF (Flash) format has been upgraded from version 1.3.1 to version 2.2.

    ImprovementLuciadFusion

    LMAP-3584
    TLcdDIMAPModelDecoder now supports setting a custom raster referencer.

    ImprovementLuciadFusion

    The performance of TLcdGeoTIFFModelEncoder has been improved.

    ImprovementLuciadFusion

    The elevation data can now be stored instead of the geometry when preprocessing a terrain. This results in a significantly smaller repository at the cost of a small performance penalty when visualizing it in a 3D view. The new classes in the API related to this are: TLcdEarthElevationDataTileDataCodec and TLcdEarthElevationDataCombiner. The TLcdEarthTexturedTerrainTileSet, TLcdEarthTerrainRepositoryModelDecoder and preprocessor sample were also updated to support this improvement.

    ImprovementLuciadFusion

    LMAP-3568
    The warping raster painters can now also avoid opaque borders if the raster has a color map of which the transparent index is not the default raster value.

    ImprovementLuciadFusion

    LMAP-3477
    The TLcdEarthGLTrnTileSet now also contains an image (e.g. texture) and elevation coverage. This allows visualizing a .trn terrain in a 2D view by using an earth GXY painter.

    ImprovementLuciadFusion

    Updated the ogc.filter.xml sample to use the TLcdOGCFilterEncoder and TLcdOGCFilterDecoder in stead of the old deprecated encoder and decoder.

    ImprovementLuciadFusion

    LMAP-3491
    The TLcdEarthTerrainElevationProvider now also supports Earth models.

    ImprovementLuciadFusion

    LuciadMap now supports the Rapid Positioning Capability Extension (RPC00B) of the NITF format. The RPC parameters can be used to construct a model reference by using the TLcdRPCModelReferenceDecoder class. The projection used by this reference is called TLcdRPCProjection.

    ImprovementLuciadFusion

    The EPSG code 3395 is now supported by default.

    ImprovementLuciadFusion

    The TLcdEarthTerrainRepositoryModelDecoder can now also decode models from a sourcename that is relative to the classpath.

    ImprovementLuciadFusion

    LMAP-3304
    To ease the deployment of the WCS server sample, the release is now delivered with the Jetty web server, a Java-based HTTP server and servlet container. A startup script ogc.server.start in the directory samples starts a Jetty web server on port 8080, predeployed with the WCS server sample available in the directory LuciadMapWCS_X.Y.Z/distrib/.

    ImprovementLuciadFusion

    LMAP-3304
    To ease the deployment of the WFS server sample, the release is now delivered with the Jetty web server, a Java-based HTTP server and servlet container. A startup script ogc.server.start in the directory samples starts a Jetty web server on port 8080, predeployed with the WFS server sample available in the directory LuciadMapWFS_X.Y.Z/distrib/.

    ImprovementLuciadFusion

    LMAP-3304
    To ease the deployment of the WMS server sample, the release is now delivered with the Jetty web server, a Java-based HTTP server and servlet container. A startup script ogc.server.start in the directory samples starts a Jetty web server on port 8080, predeployed with the WMS server sample available in the directory LuciadMapWMS_X.Y.Z/distrib/.

    ImprovementLuciadFusion

    LMAP-2707
    The samples.encoder.gml3 sample now has a .bat and .sh file to easily run it.

    ImprovementLuciadFusion

    The GML model decoder now has public accessors to get and set its entity resolver. This allows the application to determine how references to external schemas are resolved.

    ImprovementLuciadFusion

    The TLcdEarthCompositeImageTileSet can now also abort or fall back if one of the tilesets does not have a specific image tile instead of ignoring this.

    ImprovementLuciadFusion

    Updated the documentation of ILcdEarthTileSet to explain the policy w.r.t. thread-safety. The existing implementations in Earth were also updated to implement this policy.

    ImprovementLuciadFusion

    Added ILcdEarthIterableTileSet interface to allow iteration over all tiles in a tileset.

    ImprovementLuciadFusion

    TLcdSingleTileRaster is a new specialized implementation of ILcdRaster that only contains a single tile. As a result, it has a smaller computational overhead than TLcdRaster for retrieving raster values. It is already used by standard raster model decoders when possible.

    ImprovementLuciadFusion

    TLcdWarpRasterPainter and TLcdWarpMultilevelRasterPainter now offer the possibility to supersample the painted rasters, in order to improve their visual quality.

    ImprovementLuciadFusion

    LuciadMap now supports parametric orthorectification - rectification based on information about the imaging sensor and the terrain elevation. Parametric orthorectification is implemented by the following new interfaces and classes:
    • TLcdPerspectiveProjection - describes the projection corresponding to a real imaging sensor. This class is an improvement over the existing TLcdGeneralPerspective - the point of perspective is no longer required to be outside the Earth ellipsoid. The origin of the projection plane and the set of input parameters are also different, being designed specifically for the convenient representation of a real imaging sensor.
    • TLcdOrthorectifiedProjection - adjusts an existing projection by taking terrain elevation into account.
    • ILcdHeightProvider - an interface for providing elevation information at a given point.
    • TLcdFixedHeightProvider - basic implementation of a height provider that returns the same height for any point.
    • TLcdRasterHeightProvider - returns elevation data from a raster.
    • TLcdTransformedHeightProvider - returns elevation data in a different geographical reference than the original provider.
    • TLcdCompositeHeightProvider - combines a list of other height providers.
    • TLcdViewHeightProvider - retrieves heights from elevation layers in a view.
    The new samples samples.gxy.orthorectification.parametric and samples.gxy.orthorectification.corrected illustrate these concepts, respectively without and with additional manual rectification.

    ImprovementLuciadFusion

    Added TLcdEarthSeparateAlphaImageTileDataCodec that encodes the alpha channel of images separately. This allows using JPEG compression for the color data when the tile images have transparency instead of format with a lower compression rate (ex. PNG).

    ImprovementLuciadFusion

    Added a tileset that caches tiles in memory (TLcdEarthMemoryCachingTileSet) and updated the TLcdEarthAsynchronousTileSet to use an ExecutorService.

    ImprovementLuciadFusion

    LMAP-3485
    TLcdInputStreamFactory now avoids unnecessarily opening file descriptors, by only checking the content type for HTTP URLs.

    ImprovementLuciadFusion

    TLcdLonLatCoord: improved performance of the normalizeLon method.

    ImprovementLuciadFusion

    LMAP-3322
    An option can now be specified in the WMS servlet configuration file (web.xml) to invert the bounding box coordinates in case the request version is 1.3.0 and the reference is EPSG:4326. If these conditions hold, and the option is set, the x coordinates will be interpreted as latitudes and the y coordinates as longitudes.

    For WMS version 1.1.1, the order is defined as x=lon, y=lat. In version 1.3.0 it was decided that the order should be consistent with the order defined in the EPSG:4326 reference which is lat/lon. Consequently, some WMS 1.3.0 servers have changed their interpretation of EPSG:4326 coordinates, while others sticked to the old (WMS 1.1.1) interpretation.

    Use the configuration option if you want to comply with the WMS 1.3.0 specification. Do note that the EPSG:4326 reference is officially deprecated, so the problem can be circumvented by not supporting this reference.

    Add the following to your WMS web.xml file to enable inversion:
          <init-param>
            <param-name>EPSG.4326.latlon</param-name>
            <param-value>true</param-value>
          </init-param>
        

    ImprovementLuciadFusion

    LMAP-3322
    ALcdWMSProxy: added a getter boolean isInvertXYForEPSG4326() and setter setInvertXYForEPSG4326( boolean aInvertXYForEPSG4326 ). This has to be used by implementations of this class to determine whether the bounding box coordinates for WMS version 1.3.0 and reference EPSG:4326 should be specified as x=lon and y=lat which is the default, or x=lat and y=lon which is inverted.

    For WMS version 1.1.1, the order is defined as x=lon, y=lat. In version 1.3.0 it was decided that the order should be consistent with the order defined in the EPSG:4326 reference which is lat/lon. Consequently, some WMS 1.3.0 servers have changed their interpretation of EPSG:4326 coordinates, while others sticked to the old (WMS 1.1.1) interpretation.

    ImprovementLuciadFusion

    TLcdEarthMetadataTerrainTileSet: now loads the assets lazily and offers better performance if a lot of assets are used by using the TLcdEarthAssetGXYViewTileSet and TLcdEarthAssetTerrainElevationTileSet.

    ImprovementLuciadFusion

    The sample samples.encoder.raster.geotiff can now compose a regular grid of input rasters into a single GeoTIFF file.

    ImprovementLuciadFusion

    LMAP-2437
    TLcdSelectionSupport: isSelected(Object) now works faster.

    ImprovementLuciadFusion

    LMAP-1619
    TLcdWMSProxyGXYLayerFactory: layers created with this layer factory now use a special painter which supports reprojection of WMS layers. If the world reference of the client is not supported by the WMS server, the painter will select an optimal reference, and reproject the resulting image to the current world reference.

    ImprovementLuciadFusion

    LMAP-3377
    TLcdGXYHaloPainter now offers the possibility to cache the halo images, making use of ILcdCache domain objects when available.

    ImprovementLuciadFusion

    LMAP-651
    TLcdMagneticNorthGXYController: now tries to rotate the ILcdGXYView using the ILcdRotationCapableGXYView interface if it is available, instead of by rotating the world reference.

    ImprovementLuciadFusion

    LMAP-2259
    TLcdModelContainerEvent, TLcdLabelLocationEvent and TLcdUndoableEvent now have human readable toString implementations, useful for debugging purposes.

    ImprovementLuciadFusion

    The DMED and DTED model decoders now support an additional sampling strategy that performs bilinear interpolation across decoded elevation rasters. The strategy is implemented with the help of new classes TLcdInterpolatedRaster and TLcdTruncatedTile, which provide basic support.

    ImprovementLuciadFusion

    LMAP-3309
    A new class TLcdBNGUtil supports formatting and parsing coordinates in the British National Grid notation (for example "HU 396 753")

    ImprovementLuciadFusion

    LMAP-1783
    Throughout LuciadMap, threads no longer inherit the priority of the creating thread but specify it explicitly.

    ImprovementLuciadFusion

    LMAP-3335
    TLcdLayer now filters the selection when a filter has been set to the layer. In addition, the selection is kept up to date if the filter in question implements ILcdChangeSource. This was already implemented for TLcdGXYLayers (see LMAP-2455) and has now been moved from TLcdGXYLayer to the super class TLcdLayer.

    ImprovementLuciadFusion

    LMAP-3324
    The database package now provides shape list implementations of which the identities are determined by their primary features. In concrete terms this means that "equals" and "hashCode" are now implemented based on the primary feature. The caching mechanism has been updated to ensure that it always provides the same object instance for any given database object, in order to minimize any possible confusion about its identity.

    ImprovementLuciadFusion

    The database package now offers improved caching for queries based on a query window (with TLcdDatabaseModel#applyOnInteract2DBounds). If all objects inside the query window are known to be cached from a previous query, access to the database can be avoided.

    ImprovementLuciadFusion

    The offset icon sample now allows enabling and disabling the labels of the offset icons.

    ImprovementLuciadFusion

    LMAP-3289
    The ALcdWMSNamedLayer class in the WMS client API has three new methods:
    boolean isNoSubsets()
    Returns the value of the noSubsets parameter.
    int getFixedWidth()
    Returns the value of the fixedWidth parameter.
    int getFixedHeight()
    Returns the value of the fixedHeight parameter.
    This allows users of the API to check whether these limitations are set on a layer.

    ImprovementLuciadFusion

    LMAP-3289
    The ALcdWMSLayer class in the WMS server API has three new methods:
    boolean isNoSubsets()
    Returns the value of the noSubsets parameter.
    int getFixedWidth()
    Returns the value of the fixedWidth parameter.
    int getFixedHeight()
    Returns the value of the fixedHeight parameter.
    The TLcdWMSLayer class that extends this abstract class also has corresponding setter methods for these parameters. If set, these parameters will also be encoded in the server capabilities, and the server will take them into account when validating an incoming GetMap request.

    These parameters can also be set in the capabilities configuration file of the WMS server sample.

    ImprovementLuciadFusion

    LMAP-3088
    The WFS client now has support for requesting a sorted list of features from a WFS server that supports the sortBy element. This can be done by setting a TLcdOGCSortBy on a TLcdWFSGetFeatureRequest.

    ImprovementLuciadFusion

    LMAP-3088
    The WFS server now supports the sortBy parameter in KVP and XML requests. The features returned by the server will be sorted in the requested order. In case a maximum number of features has been set, the sorting will be applied before applying the feature limit.

    ImprovementLuciadFusion

    LMAP-3286
    TLcdGXYIconPainter can now use ILcdOriented objects to rotate icons. In addition, the painter now supports fixed and dynamic icon scaling.

    ImprovementLuciadFusion

    LMAP-2072
    The WMS client API has been extended with new functionality to connect with a WMS service:
    • A new class TLcdWMSClient has been introduced that facilitates direct communication with a WMS service, by offering functionality to create and send custom requests, and interpreting their result.
    • Requests are modeled by the existing interface ILcdOWSRequest, of which default implementations exist to represent the existing WMS requests: TLcdWMSGetCapabilitiesRequest, TLcdWMSGetFeatureInfoRequest, TLcdWMSGetMapRequest, TLcdWMSDescribeLayerRequest and TLcdWMSGetLegendGraphicRequest.
    • The result of a GetCapabilities request is an ALcdOGCWMSCapabilities instance. The result of the other requests is modeled by a TLcdOWSInputStream. This existing class is an extension of InputStream with the addition of a content type property and some metadata.
    • To allow control over the communication platform used to connect with a service, the interface ILcdOWSTransport can be used. This interface is used by TLcdWMSClient for its communication. A default implementation TLcdOWSHttpTransport exists with support for the HTTP protocol.
    The existing API, consisting of a TLcdOGCWMSProxyModelDecoder to create an ALcdWMSProxy object for a given WMS URL, has been adapted to use the new TLcdWMSClient class.

    ImprovementLuciadFusion

    LMAP-1454
    The WMS client now fully supports SLD enabled servers:
    • GetMap requests can be initialized with an SLD and sent as a KVP or XML request.
    • Support for DescribeLayer and GetLegendGraphic requests with KVP encoding has been added.

    ImprovementAdvanced GIS Engine

    The topology and intersection calculation implementations TLcdEllipsoidalBasicBinaryTopology and TLcdSphericalBasicBinaryTopology now provide support for ILcdPolygon and ILcdPolyline instances with rhumbline properties. This functionality can be applied to custom ILcdPolygon and ILcdPolyline implementations if they also implement the ILcdCurve interface and return ILcdCurve.INTERPOLATION_RHUMB as interpolation method.

    ImprovementAdvanced Raster Services

    The MrSID MG3 format is now supported, on 32-bits and 64-bits Windows, on 32-bits and 64-bits Linux, and on 32-bits and 64-bits SPARC Solaris.

    ImprovementDatabase Connectors

    Exceptions that are thrown now consistently contain their root causes, if any.

    ImprovementDatabase Connectors

    Exceptions that are thrown now consistently contain their root causes, if any.

    ImprovementDatabase Connectors

    Exceptions that are thrown now consistently contain their root causes, if any.

    ImprovementDatabase Connectors

    Exceptions that are thrown now consistently contain their root causes, if any.

    ImprovementDatabase Connectors

    Exceptions that are thrown now consistently contain their root causes, if any.

    ImprovementDatabase Connectors

    Exceptions that are thrown now consistently contain their root causes, if any.

    ImprovementDatabase Connectors

    The bundled JDBC driver has been updated to the most recent patch release (8.1-414).

    ImprovementDatabase Connectors

    The caching for queries based on a query window (with TLcdDatabaseModel#applyOnInteract2DBounds) has been improved. If all objects inside the query window are known to be cached from a previous query, access to the database can be avoided.

    ImprovementDatabase Connectors

    The caching for queries based on a query window (with TLcdDatabaseModel#applyOnInteract2DBounds) has been improved. If all objects inside the query window are known to be cached from a previous query, access to the database can be avoided.

    ImprovementDatabase Connectors

    The caching for queries based on a query window (with TLcdDatabaseModel#applyOnInteract2DBounds) has been improved. If all objects inside the query window are known to be cached from a previous query, access to the database can be avoided.

    ImprovementDatabase Connectors

    The caching for queries based on a query window (with TLcdDatabaseModel#applyOnInteract2DBounds) has been improved. If all objects inside the query window are known to be cached from a previous query, access to the database can be avoided.

    ImprovementDatabase Connectors

    The caching for queries based on a query window (with TLcdDatabaseModel#applyOnInteract2DBounds) has been improved. If all objects inside the query window are known to be cached from a previous query, access to the database can be avoided.

    ImprovementGraph and Routing Engine

    LMAP-3526
    The implementation of ILcdGDFLineFeature has been adjusted to make its getPoint(int) and getPointCount() methods thread-safe.

    ImprovementGraph and Routing Engine

    TLcdClusteredPartitioningAlgorithm now provides additional API for configuring the algorithm in case the default settings do not result in a suitable partitioning schema.

    ImprovementGraph and Routing Engine

    Support was added for Cross-Country-Movement (CCM) calculations. CCM allows computing the shortest route, through the field, between any two points in a geographical area. The algorithm is available in the Network API via the TLcdCrossCountryShortestRouteAlgorithm class. A custom cost function can be implemented and plugged in in the algorithm via the com.luciad.network.function.ILcdCrossCountryDistanceFunction interface.

    ImprovementGraph and Routing Engine

    A new package, com.luciad.network.graph.numeric, has been added to the API. This packages provides functionality for working with numerical graphs. Numerical graphs provide better performance (graph queries, memory usage) than traditional graphs, and provide direct support for working with very large, partitioned graphs.

    ImprovementReal-time Engine

    TLcdSimulator: when the endDate changes to a later date, the date is no longer updated to the new endDate when it used to be at the old endDate. This applies for the beginDate as well.

    ImprovementReal-time Engine

    LMAP-3381
    TLcdContinuousDeclutteringLabelPainter: now has a new property setMaxLabelCoverage to allow dropping labels when they start to occupy too much of the view's surface.

    ImprovementTerrain Analysis Engine

    TLcdViewBasedTerrainElevationProvider has been introduced, which is exactly the same as TLcdGXYViewBasedTerrainElevationProvider but works with ILcdView's instead of ILcdGXYView's. As a consequence, TLcdGXYViewBasedTerrainElevationProvider no longer extends ALcdRasterTerrainElevationProvider directly but extends TLcdViewBasedTerrainElevationProvider.

    ImprovementWeather & Environment Standards

    Exceptions that are thrown now consistently contain their root causes, if any.

    ImprovementWeather & Environment Standards

    The GRIB model decoders now support different sampling strategies for retrieving GRIB values from decoded rasters. Notably, it is now possible to let decoded rasters perform bilinear interpolation between samples.

    ImprovementDefense Standards

    TLcdNITFModelDecoder now supports the RPC00B extension.

    ImprovementDefense Standards

    TLcdNITFModelDecoder now supports the SENSRB extension.

    ImprovementDefense Symbology

    The object customizers for MIL-STD 2525b and APP-6A now fire property change events with name TLcdMS2525bObjectCustomizer.PROPERTY_MS2525B_HIERARCHY_CHANGED and TLcdAPP6AObjectCustomizer.PROPERTY_APP6A_HIERARCHY_CHANGED, to indicate a hierarchy change when a new element in the symbol tree is selected.

    ImprovementDefense Symbology

    Support has been added for the military standard MIL-STD 2525c. This standard can be used through the regular MIL-STD 2525b API, by using the following Java VM property when starting an application: -Dcom.luciad.symbology.milstd2525b.ms2525c=true. Afterwards, the MIL-STD 2525c symbology becomes available in the hierarchy tree of the MIL-STD 2525b customizer and the domain object TLcdEditableMS2525bObject accepts MIL-STD 2525c symbol id codes.

    ImprovementDefense Symbology

    The MIL-STD 2525b implementation has received an upgrade to comply with MIL-STD 2525b Change 2 2007, the most recent specification.

    The most important changes in the Change 2 specification are:
    • New ground vehicle and subsurface symbols in the 'Warfighting' symbol category (1.X).
    • Improvements in the 'Tactical Graphics' symbol category (2.X).
    • New symbols in the 'MOOTW' symbol category (5.X).
    Next to this list, various other small improvements have been made to comply with Change 2.

    ImprovementInfrastructure Standards

    Exceptions that are thrown now consistently contain their root causes, if any.

    ImprovementInfrastructure Standards

    Exceptions that are thrown now consistently contain their root causes, if any.

    ImprovementMaritime Standards

    LMAP-3122
    A new model decoder, TLcdS57DirectoryModelDecoder, was added to the API. This decoder allows loading of sets of S-57 cells in cases where no catalogue (.031) file is available.

    ImprovementMaritime Standards

    Support for visualization of AML was added. The AML sample illustrates how to use the new AML symbology. The implementation is based on the UKHO's AML Symbology Guidance, version 1.0.

    Bug fixLuciadFusion

    The matchCase attribute of a binary comparison operator for an OGC filter is now properly encoded.

    Bug fixLuciadFusion

    LMAP-3620
    TLcdHaloIcon did not paint its delegate icon centered, which was mainly visible for larger values of halo thickness.

    Bug fixLuciadFusion

    LMAP-1851, LMAP-3565
    LuciadApplet: the applet LookAndFeel was not always correctly initialized.

    Bug fixLuciadFusion

    LMAP-3616
    The XML encoding of the requests created by the TLcdWFSClient now have valid schema locations for the WFS, OWS and OGC schemas.

    Bug fixLuciadFusion

    LMAP-3565
    LuciadMapApplet: the static initializer is removed from the sample code.

    Bug fixLuciadFusion

    LMAP-3585
    TLcdGeoTIFFModelDecoder no longer prints out a stack trace when decoding a GeoTIFF in a planar format.

    Bug fixLuciadFusion

    LMAP-3518
    TLcdGeoTIFFModelEncoder now correctly encodes the color model of the raster if its tiles do not have a color model.

    Bug fixLuciadFusion

    LMAP-3542
    The TLcdLonLatCompositeRing.contains2D test now returns correct results in limit cases.

    Bug fixLuciadFusion

    LMAP-1929
    TLcdPOLModelDecoder: the canDecode method could throw an OutOfMemoryError.

    Bug fixLuciadFusion

    LMAP-2855
    The JAI core library has been updated to fix the problems with TIFF files larger than 2 GB (up to the maximum of 4 GB specified by TIFF).

    Bug fixLuciadFusion

    ALcdEarthGLTiledClipmapLevel now correctly handles tile updates that indicate that the tile is no longer available.

    Bug fixLuciadFusion

    ALcdEarthGLTiledClipmapLevel instances that automatically update tiles upon each paint now ignore tile update callbacks that return the same tile.

    Bug fixDatabase Connectors

    In the db2 properties file, when the table name contained an alias, and the model bounds were not explicitly given, the model decoder was incrorectly creating very large model bounds. This has been fixed.

    Bug fixDatabase Connectors

    The identity of a database shape is now properly based on its primary key. To avoid any confusion over its identity, the caching mechanism ensures that the same object instance is returned for any given database object.

    Bug fixDatabase Connectors

    The identity of a database shape is now properly based on its primary key. To avoid any confusion over its identiry, the caching mechanism ensures that the same object instance is returned for any given database object.

    Bug fixDatabase Connectors

    The identity of a database shape is now properly based on its primary key. To avoid any confusion over its identiry, the caching mechanism ensures that the same object instance is returned for any given database object.

    Bug fixDatabase Connectors

    The identity of a database shape is now properly based on its primary key. To avoid any confusion over its identiry, the caching mechanism ensures that the same object instance is returned for any given database object.

    Bug fixDatabase Connectors

    The identity of a database shape is now properly based on its primary key. To avoid any confusion over its identiry, the caching mechanism ensures that the same object instance is returned for any given database object.

    Bug fixGraph and Routing Engine

    When a node or edge is removed from a graph, the actual node or edge that is contained in the graph is now passed to the graph listeners, instead of the object which was passed to the removeNode/removeEdge method.

    Bug fixReal-time Engine

    TLcdContinuousDeclutteringLabelPainter: no longer throws IndexOutOfBoundsExceptions when multiple obstacle providers are added.

    Bug fixTerrain Analysis Engine

    LMAP-3651
    The line-of-sight computation could produce a ArrayIndexOutOfBoundsException, due to a rounding error computing the number of angular steps.

    Bug fixAviation Standards

    LMAP-3466
    TLcdDAFIFAerodromeModelDescriptor, TLcdDAFIFHeliportModelDescriptor: these classes now correctly implement the getFeatureElementClass method from ILcdCollectionFeaturedDescriptor. This means they will return null in case the feature index does not correspond to a feature which is a collection.

    Bug fixAviation Standards

    LMAP-3466
    TLcdARINCControlledAirspaceModelDescriptor, TLcdARINCRestrictiveAirspaceModelDescriptor: these classes now correctly implement the getFeatureElementClass method from ILcdCollectionFeaturedDescriptor. This means they will return null in case the feature index does not correspond to a feature which is a collection.

    Bug fixDefense Symbology

    LMAP-3625
    The aviation line symbol Standard-Use Army Aircraft Flight Route (SAAFR) in APP-6A (2.X.2.1.2.2.3) and MIL-STD 2525b (2.X.2.2.2.3) did hot have the correct labeling.

    Upgrade considerationLuciadFusion

    LMAP-3506
    The TLcdEarthCompositeImageTileSet now disposes all the tilesets added to it when it is disposed. This behaviour is consistent with the TLcdEarthCompositeTileSet.

    Upgrade considerationLuciadFusion

    LMAP-3098, LMAP-3258
    The unit of measure of ILcdGridReference instances is now taken into account for the z-coordinate as well. Previously, transformations involving an ILcdGridReference assumed that the z-coordinate was expressed in meters. Note that the scale parameter of an ILcdGridReference instance is only applied to the (x,y) grid coordinates as before.

    Upgrade considerationLuciadFusion

    The model decoder attribute of ILcdEarthAssets is now optional. This allows using the assets to just describe the contents of an ILcdEarthTileSet. To get the old behaviour you can use the TLcdEarthRasterAssetCodec.setModelDecoderOptional method.

    Upgrade considerationLuciadFusion

    TLcdAWTUtil: now has convenient invoke* methods that first check if they are running on the Event Dispatch thread. The signature of invokeAndWait was changed to no longer throw checked exceptions. This should not cause any issues as the method was documented as "Internal LuciadMap util method". In the very unlikely event that you are affected, it will cause a compiler error. You can then simply replace any calls to TLcdAWTUtil.invokeAndWait with EventQueue.invokeAndWait.

    Upgrade considerationLuciadFusion

    The lcd_ogc_schema_resources.jar has been split in 3 separate jars: lcd_xml_resources.jar (containing the schemas for XML), lcd_gml3_resources.jar (gml schemas) and lcd_ogc_resources.jar (ogc schemas such as filter and sld). Applications should update their classpath accordingly.

    Upgrade considerationLuciadFusion

    The TLcdEarthTerrainElevationProvider now throws an exception if a a model that it does not support is added instead of ignoring the model. See TLcdEarthTerrainElevationProvider.isSupportedElevationModel for more details on which models this elevation provider supports.

    Upgrade considerationLuciadFusion

    ILcdLayerTreeNode: the methods addHierarchySelectionListener and removeHierarchySelectionListener have been added to the interface.

    The impact of this change should be minimal. Only nodes which directly implement this interface will result in compile errors. Notice that the support class to create such nodes (TLcdLayerTreeNodeSupport) has been adjusted. Implementations could delegate the call for these extra methods to the support class.

    Upgrade considerationLuciadFusion

    ILcdView: the autoUpdate property has been moved from ILcdGXYView and ILcdGLView to ILcdView, and methods are added to add or remove a PropertyChangeListener to the view.

    The behavior of the standard views has been slightly modified with respect to the autoUpdate property: when switching the property from false to true, a repaint of the view is triggered, which was not the case in earlier versions. Also, all our ILcdView implementations now fire a PropertyChangeEvent when altering the autoUpdate property.

    The impact of this change should be minimal. The added methods were actually moved from ILcdGXYView and ILcdGLView, so all existing views implementing these interfaces can remain unchanged. Views implementing ILcdView directly will cause a compile error.

    Upgrade considerationLuciadFusion

    LMAP-3379
    TLcdGXYHaloLabelPainter and TLcdGXYHaloLabelPainter2, and TLcdGXYHaloPainter now allow wrapping ILcdGXYLabelPainterProvider and ILcdGXYPainterProvider instances, respectively. This will cause compilation errors if you used these classes with an ILcdGXYPainter or ILcdGXYLabelPainter instance that also implements ILcdGXYPainterProvider or ILcdGXYLabelPainterProvider. Simply casting your argument to ILcdGXYPainter or ILcdGXYLabelPainter will solve these errors.

    Upgrade considerationDatabase Connectors

    The package com.luciad.format.db2.spatial.shp, containing specialized shapes for the DB2 module has been made non-public.

    Upgrade considerationGraph and Routing Engine

    The classes in the com.luciad.network.* packages have been generified. This mainly includes adding generic types for nodes and edges to all graph interfaces, implementations and helper classes.

    Upgrade considerationGraph and Routing Engine

    The signature of the following method of ILcdLimitedEditablePartitionedGraph and its implementations have been changed:
    • void removeBoundaryEdge( S aEdge, int aPartitionedGraphFireEventMode, int aGraphFireEventMode )
    • void removeBoundaryEdges( ILcdGraph aPartition, int aPartitionedGraphFireEventMode, int aGraphFireEventMode )
    These methods now return the edge(s) that has/have been removed, instead of void. Custom implementations of the ILcdLimitedEditablePartitionedGraph interface should be extended accordingly.

    Upgrade considerationGraph and Routing Engine

    The signature of the following methods of ILcdEditableGraph and its implementations have been changed:
    • void removeNode(Object, int)
    • void removeEdge(Object, int)
    These methods now return the object that has been removed, instead of void. Custom implementations of the ILcdEditableGraph interface should be extended accordingly.

    Upgrade considerationAviation Standards

    The following QName constants are no longer available in TLcdAIXM5Constants.AIXM5.Name: codeSpace_unqual, id_unqual, uuid_unqual and uuidref_unqual. These are names of attributes that are not included in the AIXM 5 namespace. The original inclusion was erroneous and could cause confusion. Uses of these QName constants should be replaced with local constants representing these names. They can simply be created for instance like 'new QName("codeSpace")'.

    Upgrade considerationAviation Standards

    The lcd_aixm_schema_resources.jar has been renamed to lcd_aixm_resources.jar. Applications that depend on this jar should update their classpath accordingly. In addition, the schemas inside that jar are now in a 5.0 folder (to prepare for the upcoming 5.1 version). Applications that rely on the location of these schemas in the classpath to get hold of the schema should update the path to these schemas (for instance replace someClass.getResource( "AIXM_features.xsd" ) by someClass.getResource( "5.0/AIXM_features.xsd" ) ).

    Upgrade considerationMaritime Standards

    The AML attribute and object class resource files have been moved from the com/luciad/format/s57 package to the com/luciad/format/aml package. The file names no longer contain the 'AML' infix. All paths to these AML resource files should be updated accordingly.

    9.0

    9.0.22

    ImprovementLuciadFusion

    TLcdJULFileHandler automatically creates the directory containing the log files, if it does not exist.

    Bug fixLuciadFusion

    LMAP-3607
    ALcdGXYStampLabelPainter, TLcdGXYHaloPainter, TLcdGXYHaloLabelPainter, TLcdGXYIconPainter, TLcdLonLatGridPainter, TLcdHaloIcon: halo painting now takes into account rendering hints such as anti-aliasing.

    Bug fixDefense Symbology

    LMAP-3623
    A set of MIL-STD 2525b tactical symbols have received a new unique code in the MIL-STD 2525b Change 1 2004 specification, but the old code was still used. More specifically, the following list of symbols has been corrected:
    1. G*F*PS----****X, 2.X.4.1.2.1, FIRE SUPPORT STATION is now identified by G*F*PCF---****X
    2. G*F*LS----****X, 2.X.4.2.1.1, LINEAR SMOKE TARGET is now identified by G*F*LTS---****X
    3. G*F*LF----****X, 2.X.4.2.2.1, FIRE SUPPORT COORDINATION LINE (FSCL) is now identified by G*F*LCF---****X
    4. G*F*LC----****X, 2.X.4.2.2.2, COORDINATED FIRE LINE (CFL) is now identified by G*F*LCC---****X
    5. G*F*LN----****X, 2.X.4.2.2.3, NO-FIRE LINE (NFL) is now identified by G*F*LCN---****X
    6. G*F*LR----****X, 2.X.4.2.2.4, RESTRICTIVE FIRE LINE (RFL) is now identified by G*F*LCR---****X
    The old codes can still be used in TLcdEditableMS2525bObject: when an old code is detected, it will be automatically converted to the correct MIL-STD 2525b Change 1 2004 code. Note that the method getMS2525Code() always returns the new code in that case.

    Bug fixRadar Connectors

    Changed the unit display name of angle features to 'Degrees' to be more consistent with the rest of LuciadMap.

    Upgrade considerationRadar Connectors

    TLcdASTERIXCategory62 was updated for changes between edition 1.3 and edition 1.9 of the category 62 specification.

    9.0.21

    ImprovementMaritime Standards

    Methods were added to TLcdS57AttributeClassMap and TLcdS57ObjectClassMap that allow to retrieve all attribute or object classes in the class map.

    Bug fixLuciadFusion

    LMAP-3600
    The TLcdSVGModelDecoder was not always correctly decoding paths. This has been fixed.

    Bug fixLuciadFusion

    LMAP-3599, LMAP-3581
    TLcdCADRGModelDecoder#canDecodeSource now only returns true for A.TOC files, not for all *.TOC files, in order to avoid confusion with other formats. The name A.TOC is available as a new constant TLcdCADRGModelDecoder#TOC_NAME.

    Bug fixLuciadFusion

    LMAP-3590
    TLcdDEMModelDecoder no longer throws an exception for DEM files containing Real4 fields in scientific notation ("123D+45").

    Bug fixLuciadFusion

    Fixed incorrect move2D for GML points with a grid reference.

    Bug fixLuciadFusion

    LMAP-3561
    In disagreement with the API documentation, the default value of the TLcdWarpRasterPainter#isReuseInternalBuffer property was true and did not depend on the paintCache property. Both issues have been fixed.

    Bug fixLuciadFusion

    Fixed race condition in TLcdEarthAsynchronousTileSet.

    Bug fixLuciadFusion

    LMAP-3586
    Clicking on an uninitialized TLcdVVJPanel could trigger a null pointer exception.

    Bug fixLuciadFusion

    LMAP-3582
    The pixeldensity of ILcdEarthRasterTileSetCoverage could overflow too soon.

    Bug fixLuciadFusion

    LMAP-3576
    TLcdLayerTreeNodeUtil: the isEmptyNode( ILcdLayer aLayer ) method now checks whether aLayer is an ILcdLayerTreeNode and has an empty model.

    9.0.20

    ImprovementLuciadFusion

    LMAP-3345
    The GML model encoders now longer claim that they can export raster formats.

    ImprovementAviation Standards

    LUCY-2164
    TLcdARINCDecoder: the canDecodeSource method has been improved to reduce the number of files that are falsily recognized as containing ARINC data.

    ImprovementAviation Standards

    LMAP-3105
    The performance of the ARINC decoder has been improved by up to 30%.

    ImprovementMaritime Standards

    Upgraded AML resource files to the latest official version as specified by UKHO.

    ImprovementMaritime Standards

    Linestyles can now have text as a centered symbol.

    ImprovementMaritime Standards

    LMAP-3499
    Areas can now be selected when their centered symbol is selected.

    Bug fixLuciadFusion

    LMAP-3541
    TLcdEllipsoid.intersects2DLS returns consistent results when three of the segment ends are colinear (the segments are now always considered to be intersecting).

    Bug fixLuciadFusion

    LMAP-3558
    TLcdTiled2DBoundsIndexedModel.applyOnInteract2DBounds was applying the given function to all the sub-models, even after the function returned false (indicating a stop condition). This has been fixed.

    Bug fixLuciadFusion

    LMAP-3097
    TLcdGeoTIFFModelEncoder no longer swaps colors when saving rasters with an INT_ARGB color model.

    Bug fixLuciadFusion

    LMAP-3549
    Fixed a performance problem with TLcdAdvancedMapRulerController.

    Bug fixLuciadFusion

    LMAP-3531
    create and edit with mouse sample: fixed a NullPointerException when trying to snap to the surface while creating a composite curve.

    Bug fixLuciadFusion

    The TLcdEarthTileSetElevationProvider now properly checks the input parameters of its setters.

    Bug fixLuciadFusion

    LMAP-3495
    The format name of TLcdEarthTileFormat is now case insensitive.

    Bug fixLuciadFusion

    LMAP-3511
    The GL painters now properly dispose the resources (ex. OpenGL buffers) they allocate.

    Bug fixLuciadFusion

    LMAP-3528
    The GL painters could sometimes not paint anything if the view was empty and the ADAPTIVE clipcenter mode was used.

    Bug fixLuciadFusion

    LMAP-3522
    The TLcdEarthTerrainElevationProvider and TLcdEarthTileSetElevationProvider could return an elevation of 0 instead of NaN when no data was available.

    Bug fixLuciadFusion

    Removed TLcdLineType#readResolve from API.

    Bug fixLuciadFusion

    LMAP-2993
    TLcdEarthTerrainRepositoryModelDecoder: the coverages that only contain fallback data are no longer available. This makes it possible to determine whether a repository had geometry or textures if the fallback option(s) are enabled.

    Bug fixLuciadFusion

    LMAP-3515
    samples.gxy.grid.multilevel.gars.CGRSCoordinateFormat did not correctly format cell columns.

    Bug fixMaritime Standards

    When selecting a complex linestyle, sometimes the selection visualization mismatched the non- selected visualisation. This problem has been fixed.

    Bug fixMaritime Standards

    Linestyles can now have a gap in between them when their pivot point is out of the bounding box region.

    Bug fixMaritime Standards

    Fixed support for text in lookup entries. Text can now be aligned horizontally and vertically. Text can also be made italic, bold and the font can be resized at command.

    9.0.19

    ImprovementLuciadFusion

    LMAP-3487
    The performance of the TLcdCompositeCurve.computePointSFCT() method has been improved.

    ImprovementTerrain Analysis Engine

    LMAP-3484
    TLcdExtremePointFinder: the performance of the extreme point computation has been improved.

    ImprovementMaritime Standards

    The TLcdS57ObjectClassMapDecoder now throws an exception when the ECDIS resource files are not consistent, that is, whenever an object class refers an attribute for which no description is available.

    Bug fixLuciadFusion

    The native reference of the elevation coverage in the TLcdEarthTextureTerrainTileSet is now the tileset reference.

    Bug fixLuciadFusion

    LMAP-3006
    TLcdEarthTileRepositoryPreprocessor: Elevation data was sometimes not preprocessed at their most detailed resolution. This would result in less detailed geometry data in the repository then the original source data. As a result of this fix the repository size may increase w.r.t. versions before this fix when preprocessing elevation data.

    Bug fixLuciadFusion

    LMAP-3490
    TLcdEarthTerrainElevationProvider: Fixed exception when adding models with no supported elevation data and will now log a warning if this occurs.

    Bug fixLuciadFusion

    LMAP-3478
    GARSCoordinateFormat did not correctly parse cell rows.

    Bug fixAviation Standards

    LMAP-3494
    The feature class for ILcdAIXMProcedureFeature.ROUTE_TYPE is now correctly set to TLcdProcedureRouteType in TLcdAIXMProcedureTrajectoryModelDescriptor.

    Bug fixAviation Standards

    LMAP-3481
    The ARINC decoder now correctly sets the recommended navaid on FD procedure legs; this results in a more correct visualization of procedures which contain FD legs.

    Bug fixAviation Standards

    LMAP-3483
    The ARINC decoder now successfully decodes more procedures due to an improved validity check.

    Bug fixAviation Standards

    LMAP-3482
    The geometry calculation for FD type procedure legs has been made more robust, which results in improved visualization for some procedures containing an FD leg.

    Bug fixDefense Symbology

    LMAP-3493
    The aviation line symbols in APP-6A and MIL-STD 2525b were not painted with a dashed linestyle when the symbol status was set to anticipated/planned.

    Bug fixMaritime Standards

    Some missing AML entries where added to the AML resource files.

    9.0.18

    Bug fixLuciadFusion

    TLcdGXYPolylineStampLabelPainter sometimes mistakenly used the location index when a label location was set, which could result in an ArrayIndexOutOfBoundsException.

    Bug fixLuciadFusion

    TLcdEarthCompositeImageTileSet: Added support for non-geodetic references.

    9.0.17

    ImprovementLuciadFusion

    LMAP-3113
    TLcdXMLDecoder no longer resolves external DTD's, as these were not used by the decoding process.

    ImprovementLuciadFusion

    Improved application schema generation for GML export (improved minOccurs and maxOccurs attributes for child elements). Improved resolution of featured descriptors during GML export. Support for export of TLcdISO19103Measure.

    ImprovementLuciadFusion

    LMAP-2702
    Multi format sample: the opened file is now selected by default.

    ImprovementLuciadFusion

    The shell scripts for the samples now also support 32-bits JRE's on 64-bit operating systems.

    ImprovementLuciadFusion

    The shell scripts for the samples now work properly on 64-bits Windows systems.

    ImprovementLuciadFusion

    LMAP-2040
    The class TLcdTopocentricCoordSysTransfo2 has been deprecated in favor of TLcdTopocentricCoordSysTransformation.

    ImprovementAviation Standards

    LMAP-3467
    TLcdProcedureTrajectory now has a valid implementation for getFocusPoint(), by returning the middle of the trajectory bounds instead of null.

    ImprovementMaritime Standards

    LMAP-3442
    The checksum verification is no longer performed by default by the TLcdS57CatalogueModelDecoder. An API flag is provided now on the decoder, to enable or disable it.

    ImprovementMaritime Standards

    LMAP-3273
    Additional AML resource files with object and attribute metadata and descriptions were added to the lcd_ecdis_resources.jar.

    Bug fixLuciadFusion

    LMAP-3469
    ALcdEarthGLTiledClipmapLevel: Fixed rare race condition when tile updating is enabled.

    Bug fixLuciadFusion

    TLcdEarthTileRepository: fixed isGeoReferenceSupported and related exceptions when the addTileSetCoverage method with overriding georeference parameter is used.

    Bug fixLuciadFusion

    ILcdLayerTreeNode: calling removeHierarchyPropertyChangeListener did not always remove the listener from the whole subtree. This is now resolved.

    Bug fixLuciadFusion

    TLcdEarthTileSetElevationProvider: improved performance and added some methods to manage the tile cache size.

    Bug fixLuciadFusion

    LMAP-3453
    Performance logging no longer throws an exception when the layer name contains a ':' character.

    Bug fixLuciadFusion

    TLcdEarthGLTerrainPainter: improved tile retrieval performance significantly.

    Bug fixLuciadFusion

    TLcdEarthCompositeTileSet: Fixed some composite operations (o.a. update and cancel) and added some extra API for mananging the composed tilesets.

    Bug fixLuciadFusion

    LMAP-3443
    TLcdGXYSelectControllerModel2/TLcdGXYEditControllerModel2: a workaround was applied for Sun bug 4421515. As a result, objects (and labels) can now be edited using the middle mouse button.

    Bug fixLuciadFusion

    ALcdEarthGLAltitudeExaggerationTileSet: Added altitude exaggeration support for synchronous tile production and synchronous/asynchronous tile updating.

    Bug fixLuciadFusion

    Fixed compilation error in xml sample that only occurs when compiling using eclipse, java5 under linux.

    Bug fixLuciadFusion

    LMAP-583
    TLcdSHPModelEncoder now supports features of type Long.

    Bug fixLuciadFusion

    LMAP-3399
    TLcdSHPModelEncoder was not correctly encoding 3D points if they were not TLcdSHPPointZ instances. This has been fixed.

    Bug fixLuciadFusion

    LMAP-2787
    TLcdMIFModelEncoder.canExport was returning true even though when it could not handle the reference of the model. This has been fixed.

    Bug fixLuciadFusion

    LMAP-2752
    The setExcludedSources method of the TLcdStatusInputStreamFactory class was not working when used in combination with the TLcdSHPModelDecoder. This has been fixed.

    Bug fixLuciadFusion

    LMAP-2555
    Some vertical grid lines were disappearing when zoomed out until the whole world was visible and the Mercator projection was used. This has been fixed.

    Bug fixLuciadFusion

    LMAP-2789
    The TLcdMIFModelEncoder was incorrectly accepting rotated ellipses, which are not supported by the MIF format. The encoder now returns false when the "canExport" method is called with a rotated ellipse.

    Bug fixLuciadFusion

    LMAP-2239
    The Swiss Oblique Mercator projection was incorrect at very small scales. This has been fixed.

    Bug fixMaritime Standards

    LMAP-3394
    TLcdS57CatalogueModelDecoder.canDecodeSource now returns true for catalogues in which one or more ENC cells are missing (but still referred to from within the catalogue file).

    9.0.16

    ImprovementLuciadFusion

    LMAP-3395
    Updated the javadoc of ILcdEarthTileSet and ILcdEarthRasterTileSetCoverage to solve some ambiguity w.r.t. the georeference in which the tileset bounds and raster coverage pixeldensity are expressed.

    ImprovementAviation Standards

    TLcdDAFIFLoader now has two new methods String[] getSelectedSubTypes( String aType ) and void setSelectedSubTypes( String aType, String[] aSubTypes ). This allows users to retrieve and set the state of the DAFIF sub types correctly.

    Bug fixLuciadFusion

    TLcdEarthTextureTerrainTileSet: The elevation coverage and isGeoReferenceSupported now properly support non-geodetic references.

    Bug fixLuciadFusion

    LMAP-3395
    TLcdEarthGXYViewTileSet: The copyright message is no longer disabled when using this tileset.

    Bug fixAviation Standards

    The result of the getSelectedTypes method no longer contains an entry with the name of the parent type for each selected sub type.

    9.0.15

    ImprovementLuciadFusion

    TLcdEarthGXYViewTileSet: Improved performance when using an oversampling factor of 1.

    ImprovementLuciadFusion

    TLcdEarthGLTerrainClipmapLevel: Improved performance when using textures in varying formats.

    ImprovementLuciadFusion

    LMAP-3389
    TLcdEarthTerrainElevationProvider: Added API to add/remove elevation models.

    ImprovementAviation Standards

    LMAP-3396
    The decoder logs returned by TLcdAIXMModelDecoder#getErrorMessage() after decoding a file have been improved. They now include more information about the affected aeronautical entities in the data.

    Bug fixLuciadFusion

    LMAP-3399
    TLcdSHPModelEncoder now correctly encodes the Z value of the points when the export3D property is enabled.

    Bug fixLuciadFusion

    LMAP-3391
    TLcdEarthTerrainElevationTileSet: Fixed null native georeference for terrain geometry coverage.

    Bug fixAviation Standards

    LMAP-3403
    The procedure calculator will no longer exceed the minimum or maximum altitudes of a leg when trying to reach the minimum or maximum altitude of the next leg. This means that when a leg is followed by a leg with a minimum altitude higher then the current maximum altitude, the trajectory will climb until the current maximum altitude is reached. The remainder of the climb will be done during the next leg. A robustness fix was also applied to prevent an exception when calculating procedure geometry.

    Bug fixAviation Standards

    LMAP-3397
    The distance unit FT was not decoded correctly when used for a runway length or width.

    9.0.14

    ImprovementLuciadFusion

    TLcdWFSProxyModel has become more robust. It can now also handle situations where the WFS server does not include a schema-import in the XML encoding of GetFeature results.

    ImprovementLuciadFusion

    LMAP-3378
    To improve the robustness, the WMS client now adds 'SERVICE=WMS' to all GetMap requests. This is not required by the WMS specification, but some servers do check for it.

    Bug fixLuciadFusion

    TLcdEarthGLTerrainClipmapLevel: Added support for textures in varying formats.

    Bug fixLuciadFusion

    TLcdEarthImageCombiner: Added support for combining images opaque and translucent images.

    Bug fixLuciadFusion

    ALcdEarthTileSetMultilevelRaster: Added support for non-geodetic tileset references.

    9.0.13

    ImprovementLuciadFusion

    LMAP-3212
    EPSG codes using the Polar Stereographic projection variants B and C are now supported.

    ImprovementAviation Standards

    LMAP-3375
    The decoder for routes and route segments, com.luciad.format.aixm.decoder.TLcdAIXMRouteHandler, now removes route segments with unresolved referred points from decoded routes. Any unresolved referred points are still logged by the decoder, as described in enhancement LMAP-3148.

    Bug fixLuciadFusion

    Fixed exceptions during painting of certain GML linear rings. Improved schema resolution for GML2 model decoder.

    Bug fixLuciadFusion

    LMAP-3374
    GARSCoordinateFormat now obeys super-class contract when parsing fails.

    Bug fixLuciadFusion

    LMAP-3382
    TLcdUtmMgrsUtil.lonlat2UtmMgrs was producing incorrect results for points very close to the boundaries of a southern latitude zone band. This has been fixed.

    Bug fixLuciadFusion

    LMAP-2510
    TLcdSymbol: now always paints inside its bounds, defined by icon width and height.

    Bug fixLuciadFusion

    LMAP-3361
    firstExample.pro now by default includes the Java library jce.jar.

    Bug fixLuciadFusion

    LMAP-2635
    TLcdCADRGModelDecoder no longer uses the length field in the location section.

    Bug fixLuciadFusion

    LMAP-3372
    In TLcdPolarStereographic setting a negative latitude of true scale (for the southern hemisphere) was producing incorrect results. This has been fixed.

    9.0.12

    Bug fixLuciadFusion

    LMAP-3370
    TLcdEarthTerrainRepositoryModelDecoder: The model decoder can now (optionally) fallback to default geometry or textures if the repository does not contain the proper data. This is disabled by default.

    Bug fixLuciadFusion

    LMAP-3368
    TLcdEarthTextureTerrainTileSet: Changed the name of the combined geometry/texture coverage to 'Texture terrain geometry' to avoid name conflicts.

    Bug fixLuciadFusion

    LMAP-3347
    TLcdGXYStampLabelPainter: the isLabelTouched method now works correctly if the mode contains the TRANSLATING bit.

    Bug fixAviation Standards

    LMAP-3353
    TLcdDAFIFTRefuelingTrackDecoder: added support for the assigned ATC and scheduling unit fields in the ARF/ARF_PAR.TXT file. This fixes a crash when loading newer DAFIFT data which contains these fields.

    Bug fixDefense Symbology

    LMAP-3352
    The arrow symbols in APP-6A and MIL-STD 2525b were erroneously translated if the world reference of the view was changed.

    9.0.11

    ImprovementLuciadFusion

    TLcdEarthAssetModelCodec: Improved error reporting.

    ImprovementLuciadFusion

    The EPSG codes database has been upgraded to version 7.1.

    ImprovementLuciadFusion

    The TLcdMIFModelEncoder now encodes the line style (pen) of TLcdMIFPLine and TLcdMIFRegion model elements.

    ImprovementLuciadFusion

    LMAP-3305
    The TLcdWKTReferenceParser is now able to decode projected systems that use the polyconic projection.

    Bug fixLuciadFusion

    LMAP-3342
    TLcdGUIIcon: a few icons were not present in the javadoc.

    Bug fixLuciadFusion

    TLcdEarthTileSetElevationProvider: Added support for non-geodetic tileset references.

    Bug fixLuciadFusion

    LMAP-3338
    TLcdGXYPolylineStampLabelPainter: fixed the label positioning for setRotationAllowed(false).

    Bug fixLuciadFusion

    LMAP-3235
    TLcdGXYPolylineStampLabelPainter: in some cases, an ArrayIndexOutOfBoundsException was thrown for degenerate point lists.

    Bug fixLuciadFusion

    LMAP-3334
    TLcdMapGeorefGridLayer: getLabel now returns the last value set by setLabel.

    Bug fixLuciadFusion

    LMAP-3328
    ALcdGXYPen allows to draw very long geodesics and rhumblines.

    Bug fixLuciadFusion

    LMAP-3331
    Added a workaround for JDK regression 6789982 that caused the ignoring of selection clicks after opening a popup menu when using Sun's JDK 1.6.0_10 and higher on Windows. This also fixes and replaces workaround LMAP-2871.

    Bug fixLuciadFusion

    TLcdEarthGXYRasterPainter: Fixed race condition when clearing the cache or changing the cache size.

    Upgrade considerationLuciadFusion

    The TLcdWKTReferenceFormatter now formats the TLcdLambertAzimuthalEqualArea as a spherical projection, which corresponds to the current implementation. The projection's parameters "latitude_of_center" and "longitude_of_center" are now saved as "latitude_of_origin" and "longitude_of_origin".

    9.0.10

    ImprovementAviation Standards

    LMAP-2206
    The class which calculates the height of a procedure leg, com.luciad.ais.model.procedure.TLcdProcedure3DGeometryCalculator, now uses a more efficient approximation in beginAngleArc to calculate the start and end height of the arc. This results in a performance improvement in case the radius of the arc is not very large.

    ImprovementAviation Standards

    LMAP-2206
    Due to a change in the geometry calculation of procedures, the performance of decoding files containing procedures has increased with up to 50%.

    Bug fixLuciadFusion

    LMAP-3294
    When using label decluttering, TLcdGXYOffsetIconPainter#setDisplayLabels(false) would cause the offset icons to disappear as well.

    Bug fixAviation Standards

    LMAP-3326
    TLcdProcedureGeometryCalculator's handling of CF (Course to Fix) legs has been improved. A new algorithm was introduced which is capable of finding routes where the previous algorithm failed, it also solves issues that were hard to fix with the previous algorithm.

    Bug fixAviation Standards

    The class com.luciad.format.aixm.decoder.TLcdAIXMProcedureHandler now sets the recommended navaid on the procedure legs if it is available.

    Bug fixAviation Standards

    The list of ICAO regions now includes YZ and KZ.

    9.0.09

    ImprovementDatabase Connectors

    The DB2 optional package provides decoding and encoding of DB2 Spatial and Geodetic data.

    9.0.07

    ImprovementLuciadFusion

    Two new utility classes TLcdSphereRhumblineUtil and TLcdEllipsoidRhumblineUtil have been added to the package com.luciad.geodesy to support topology calculations with rhumblines on a spherical and ellipsoidal model of the Earth, respectively.

    ImprovementDefense Symbology

    LMAP-3318
    It is now possible to partially fill the frame of icon symbols, e.g. to indicate the damage status of units. Through the method ILcdMS2525bStyle#setFillPercentage(double) in MIL-STD 2525b, the fill coverage can be specified through a percentage. Additionally, the color with which the uncovered part of the frame must be filled can also be configured, through the method ILcdMS2525bStyle#setAlternateFillColor(Color). Similar functionality has been introduced in APP-6A.

    Bug fixLuciadFusion

    Preprocessor sample: fixed bug when using a non-geodetic reference.

    Bug fixLuciadFusion

    LMAP-3319
    Fixed clone methods of TLcdGXYLabelPainter, TLcdGXYHaloLabelPainter, TLcdGXYStampLabelPainter and TLcdLonLatGridPainter.

    Bug fixLuciadFusion

    LMAP-3308
    Added halo enabled, halo color and halo thickness to the *LabelPainterBeanInfo classes. As a result, the TLcdBeanEditAction used on a corresponding label painter shows the halo properties.

    Bug fixLuciadFusion

    LMAP-3293
    TLcdGXYOffsetIconPainter no longer throws NullPointerExceptions when the delegate label painter does not implement ILcdGXYLabelPainter2, as is the case for the MS2525b/APP6a label painters.

    Bug fixLuciadFusion

    LMAP-3291
    The TLcdSphereUtil.polygonContains2D was sometimes returning the wrong results if one of the polygon edges was along the Equator. This has been fixed.

    Bug fixLuciadFusion

    LMAP-3292
    The license server now correctly handles failed UDP communication on Windows 2000.

    9.0.06

    ImprovementLuciadFusion

    TLcdPolyconic provides an implementation of the polyconic projection.

    ImprovementLuciadFusion

    Improved support for namespace prefixes during encoding. Prefixes set using TLcdXMLSchemaBasedEncoder.registerNamespaceURI now override the default prefixes. Also, the encoder libraries for many formats (GML, AIXM, XLink, ...) have been adapted to have a suitable default namespace prefix. The TLcdXMLFeaturedEncoderLibrary class now supports a new constructor with an additional namespace prefix argument.

    Bug fixLuciadFusion

    LMAP-3278
    Filter encoder and decoder libraries now register proper object factories for all their domain classes. This enables other XML schema based libraries to correctly refer to these classes.

    Bug fixLuciadFusion

    LMAP-3278
    SLD encoder and decoder libraries now register proper object factories for all their domain classes. This enables other XML schema based libraries to correctly refer to these classes.

    Bug fixAviation Standards

    LMAP-3091
    The geometry of association based airspaces containing arcs has been improved. A union of two geometries could contain holes where arcs overlapped.

    9.0.05

    ImprovementAviation Standards

    LMAP-3234
    TLcdICAORunwayPainter now also supports runway model with a grid reference.

    Bug fixLuciadFusion

    TLcdEarthTileRepositoryPreprocessor: fixed bug in preprocessor that would cause it to wait indefinitely in some cases.

    Bug fixAviation Standards

    LMAP-3284
    TLcdDAFIFProcedureDecoder: NullPointerException when decoding procedures while a decoding bounds is set.

    Bug fixAviation Standards

    LMAP-3227
    ALcdDAFIFAerodromeDecoder: handling incorrect DAFIF data could throw a NumberFormatException.

    9.0.04

    ImprovementLuciadFusion

    TLcdGXYShapeListPainter now more robustly handles recursive invocations.

    ImprovementLuciadFusion

    Added support for preprocessing in non-geodetic references to preprocessor sample.

    ImprovementLuciadFusion

    TLcdEarthCompressorTileDataCodec: Releasing some memory earlier.

    Bug fixLuciadFusion

    Fixed a bug which might cause an XMLStreamException in some StAX implementations, due to the http://www.w3.org/2001/XMLSchema-instance namespace being bound incorrectly.

    Bug fixLuciadFusion

    TLcdEarthGXYElevationRasterPainter: fixed the tile format used for the tile production request if a repository is used.

    Bug fixLuciadFusion

    TLcdEarthGLVectorPainter: fixed the tile format used for the tile production request if a repository is used.

    Bug fixLuciadFusion

    LMAP-3269
    TLcdRectifiedProjectiveProjection no longer produces mapping artifacts when the distortion is large.

    Bug fixLuciadFusion

    LMAP-3274
    TLcdDMEDTileDecoder now decodes spaces in DMED files as unknown elevations instead of 0 elevations.

    Bug fixDefense Standards

    LMAP-3272
    TLcdNITFModelDecoder now no longer incorrectly shifts images that have image locations in addition to geographic locations, which may occur in NITF files that have multiple unattached images.

    Bug fixDefense Standards

    LMAP-3259
    TLcdNITFModelDecoder now correctly decodes large uncompressed images.

    9.0.03

    ImprovementLuciadFusion

    TLcdDatabaseModelDescriptor now has the database URL as source name (instead of null).

    Bug fixLuciadFusion

    Fixed a NullPointerException when encoding nested binary operators.

    Bug fixDatabase Connectors

    LMAP-3277
    Polylines are no longer closed when they are encoded.

    9.0.02

    ImprovementLuciadFusion

    LMAP-3270
    Support has been added for SLD external graphics that use the unofficial MIME type image/jpg.

    ImprovementLuciadFusion

    The transient memory usage during XML decoding has been reduced. The memory footprint of an XML model has also been reduced.

    ImprovementLuciadFusion

    LMAP-1607
    The TLcdUPSMgrsUtil allows the transformation from MGRS UPS coordinates back to geodetic coordinates.

    ImprovementLuciadFusion

    LMAP-3048
    The XML encoding of a GetFeature request generated by TLcdWFSGetFeatureRequest#getXMLEncoding() did not take into account the 'MAXFEATURES' attribute. This is now supported, allowing to set a maximum amount of features when using WFS XML POST requests.

    ImprovementLuciadFusion

    TLcdWFSProxyModel now uses internally cached XML Schemas for well-known OGC schemas when parsing DescribeFeatureType request results, which results in a better performance.

    ImprovementAdvanced Raster Services

    The ECW format is now also supported on 64-bits Windows and on 64-bits SPARC Solaris.

    ImprovementDatabase Connectors

    The memory footprint of the models returned by TLcdOracleGeorasterModelDecoder has been reduced significantly.

    ImprovementDatabase Connectors

    TLcdOracleSpatialModelDecoder now supports a hints property, which can be specified to tune Oracle SQL queries.

    Bug fixLuciadFusion

    LMAP-3271
    The TLcdWarpRasterPainter could throw an ArrayIndexOutOfBoundsException under certain circumstances. This has been fixed.

    Bug fixLuciadFusion

    Incorrect schema locations for the GML 2 and GML 3.2 schemas were corrected.

    Bug fixLuciadFusion

    ILcdGXYView implementations: When a model listener or a layer selection listener removed itself as a listener from the ILcdGXYView the next listener is no longer skipped.

    Bug fixLuciadFusion

    A bug in the decoding of GML 3.2 document by the TLcdGMLModelDecoder was fixed.

    Bug fixLuciadFusion

    LMAP-3159
    The labels in the editable labels sample were not legible on some operating systems.

    Bug fixLuciadFusion

    LMAP-3251
    TLcdGXYHaloLabelPainter did not paint halo's for selected labels.

    Bug fixLuciadFusion

    LMAP-3257
    TLcdMAPModelDecoder now correctly decodes (lon,lat) coordinates that are specified with an internal offset that is swapped.

    Bug fixLuciadFusion

    LMAP-3253
    In some cases, after an interactive label was dismissed, the non-interactive label was not immediately rendered. This has been fixed.

    Bug fixLuciadFusion

    LMAP-3249
    TLcdGXYArcPainter and TLcdGXYArcBandPainter: arc(band) center points can now be snapped while editing.

    Bug fixLuciadFusion

    LMAP-3166
    TLcdGXYSelectController2: mouse drags performed immediately after displaying a mouse-pressed triggered popup menu started from the wrong coordinates.

    Bug fixLuciadFusion

    Fixed: TLcdGXYAsynchronousLayerWrapper needed a paint queue, even when asynchronous painting was deactivated.

    Bug fixLuciadFusion

    LMAP-286
    TLcdSphereUtil.orientation2D() was sometimes returning wrong results for polygons containing duplicate points. This has been fixed.

    Bug fixLuciadFusion

    LMAP-3232
    TLcdGXYOffsetIconPainter: specifying null as delegate label painter and mapping all labels to sub-labels no longer produces NullPointerExceptions.

    Bug fixLuciadFusion

    LMAP-3225
    The TLcdLayerTreeNodeCellRenderer now disables the tooltip when no source name is set on the model descriptor of the layer instead of setting an empty string as tooltip.

    Bug fixLuciadFusion

    LMAP-3231
    If a license is tied to a MAC address, all MAC addresses on the host are accepted, instead of only the first one (requires Java 1.6).

    Bug fixLuciadFusion

    LMAP-3196
    The XML encoding framework now ignores schema locations that are invalid but not used. Only a warning message is logged that an invalid location was encountered.

    Bug fixLuciadFusion

    LMAP-3226
    TLcdGXYViewLabelPainter and TLcdGXYLayerLabelPainter now allow for different possible location counts per sub-label.

    Bug fixLuciadFusion

    LMAP-2987
    Support for fixed label placement in TLcdGXYOffsetIconPainter now works correctly.

    Bug fixLuciadFusion

    LMAP-3188
    Geocentric to geodetic transformations performed by TLcdEllipsoid.geoc2llhSFCT() were producing incorrect height values for points located very close to the North/South Pole. This has been fixed.

    Bug fixLuciadFusion

    LMAP-3188
    Geocentric to geodetic transformations performed by TLcdEllipsoid.geoc2llhSFCT() were producing incorrect height values for points located very close to the North/South Pole. This has been fixed.

    Bug fixLuciadFusion

    LMAP-3168
    The TLcdPolarStereographic projection now writes and reads correctly the central meridian from the given properties.

    Bug fixReal-time Engine

    LMAP-2746, LMAP-2962
    TLcdSimulatorTimeSlider: the slider internally no longer uses the full Integer range as that was susceptible to integer overflows. The minimum and maximum of the slider are now only Integer.MAX_VALUE / 2 apart.

    Bug fixAviation Standards

    LMAP-3137
    TLcdProcedureGeometryCalculator's handling of CI (Course to Intercept) - AF (Arc to Fix) leg transitions has been improved.

    9.0.01

    ImprovementLuciadFusion

    LMAP-3223
    A default logging.properties file has been added to the WEB-INF/classes directory of the sample server, to setup java.util.logging on Apache Tomcat servers. This logs all messages from the server to a separate file in the logs folder of the Apache Tomcat distribution.

    ImprovementLuciadFusion

    TLcdXMLSchemaBasedEncoder (TLcdXMLSchemaBasedDecoder) now has a TLcdXMLSchemaBasedMarshallerProvider (TLcdXMLSchemaBasedUnmarshallerProvider). This provider is an extension to the TLcdXMLMarshallerProvider (TLcdXMLUnmarshallerProvider) that also provides (un)marshallers for a given schema element and Java class. This is typically used to retrieve child (un)marshallers for local elements.

    ImprovementLuciadFusion

    LMAP-3215
    TLcdOWSHttpTransport#configureConnection now sets a connect and read timeout of 30s to avoid having to wait infinitely on a non-responsive server.

    Bug fixLuciadFusion

    LMAP-3224
    When saving (or exporting) a GML model, the name of the generated application schema is now properly encoded. This allows for instance one or more spaces in the name of the model file or directory where the model is saved to.

    Bug fixLuciadFusion

    Optimized the loading of XML schemas by the XML encoder and decoder.

    Bug fixLuciadFusion

    Fixed painting of an arc-by-bulge with a bulge of 0.

    Bug fixAviation Standards

    TLcdDAFIFSpecialUseAirspaceDecoder did not disable subtype filtering by default, which was inconsistent with the other implementations of ILcdDAFIFSubTypeFilteringDecoder.

    Upgrade considerationLuciadFusion

    Introduction of the class TLcdXMLMapping for schema-less encoding and decoding. This makes the schema-less interface much more compatible with the schema-based interface. As a result, the method TLcdXMLDecoder#getJavaClassResolver() was removed. Applications that rely on this method should be adapted to use TLcdXMLDecoder#getMapping()#getJavaClassResolver().

    9.0

    ImprovementLuciadFusion

    A new interface, ILcdSelfDescribedFeatured, is added to the API. It is an extension of ILcdFeatured that provides direct access to its ILcdFeaturedDescriptor and its features via their name (instead of feature index).

    ImprovementLuciadFusion

    LMAP-825
    TLcdMultivaluedRasterPainter now rotates the multi-valued icon if it implements ILcdOriented.

    ImprovementLuciadFusion

    TLcdRotatingIcon has been introduced, which is an implementation of ILcdIcon that uses the decorator design pattern to rotate another given ILcdIcon.

    ImprovementLuciadFusion

    An extra property, with a getter and a setter for it, is added to several ILcdModelDecoders to switch between TLcdModelLists and ILcdModelTreeNodes. The default behavior is left unchanged: by default none of the decoders returns an ILcdModelTreeNode. The decoders with this extra property are:
    • TLcdTarModelListDecoder
    • TLcdZipModelListDecoder
    • TLcdGRIBBulletinModelDecoder
    • TLcdRaveGeoModelDecoder
    • TLcdUSRPModelDecoder

    ImprovementLuciadFusion

    Improved performance of TLcdEarthTileSetElevationMultilevelRaster.

    ImprovementLuciadFusion

    The XML binding framework has been extended with support for automatic binding of XML data to ILcdFeatured instances.
    The following new packages and classes provide functionality for this new feature:
    • com.luciad.format.xml.bind.schema.featured.*
    • com.luciad.format.xml.bind.schema.TLcdXMLBuiltInConstants
    • com.luciad.format.xml.bind.schema.TLcdXMLBuiltInDatatypeConverter
    • com.luciad.format.xml.bind.schema.TLcdXMLBuiltInDecoderLibrary
    • com.luciad.format.xml.bind.schema.TLcdXMLBuiltInEncoderLibrary
    • com.luciad.format.xml.bind.schema.TLcdXMLBuiltInMappingLibrary
    • com.luciad.format.xml.bind.schema.TLcdXMLFeatured
    • com.luciad.format.xml.bind.schema.TLcdXMLFeaturedDescriptor
    See the Javadoc package documentation of these packages and classes for more information about their usage.

    ImprovementLuciadFusion

    A new encoder (TLcdSLDFeatureTypeStyleEncoder) and decoder (TLcdSLDFeatureTypeStyleDecoder) for feature type styles has been added. They replace the existing encoder and decoder which have been made deprecated.

    ImprovementLuciadFusion

    A new encoder (TLcdOGCFilterEncoder) and decoder (TLcdOGCFilterDecoder) has been added. They integrate with the new XML format framework.

    ImprovementLuciadFusion

    A new encoder (TLcdSLDStyledLayerDescriptorEncoder) and decoder (TLcdSLDStyledLayerDescriptorDecoder) has been added. They replace the existing encoder and decoder which have become deprecated.

    ImprovementLuciadFusion

    LMAP-2833
    TLcdModelList now throws TLcdModelContainerEvents when models are added or removed by implementing ILcdModelContainer.

    ImprovementLuciadFusion

    ALcdGXYController now supports sending out status events.

    ImprovementLuciadFusion

    Improved performance of TLcdEarthGXYRasterPainter and TLcdEarthGXYElevationRasterPainter significantly.

    ImprovementLuciadFusion

    LMAP-2333
    LuciadMap now provides drivers and native libraries for 64-bits Vista, for licenses based on MAC addresses and on iButton hardware keys.

    ImprovementLuciadFusion

    ALcdGXYSmartController now has setters to configure if it should fire undoables for pan and/or zoom operations.

    ImprovementLuciadFusion

    TLcdHaloIcon: new class to allow adding halo around an ILcdIcon.

    ImprovementLuciadFusion

    LMAP-3133
    Support for the WMS GetFeatureInfo request through the class com.luciad.wms.client.model.ALcdWMSProxy did not correctly work for WMS versions prior to 1.3.0.

    ImprovementLuciadFusion

    TLcdEarthGLTerrainPainter is now able to handle texture tiles which are not all of the same resolution. It should be noted, however, that this may result in somewhat reduced rendering performance.

    ImprovementLuciadFusion

    LMAP-3125
    TLcdWMMModelDecoder, TLcdIGRFModelDecoder and ALcdMagneticNorthModelDescriptor: the property 'degreesBetweenLines' is now deprecated and replaced with 'step', which supports doubles instead of only ints. In TLcdMagneticNorthGXYPainter the property 'emphasizeDegrees' is now deprecated and replaced with 'emphasizedDegrees', which supports doubles instead of only ints.

    ImprovementLuciadFusion

    TLcdGXYArcPainter now allows manipulation of the handles without having to use CTRL.

    ImprovementLuciadFusion

    LMAP-2781
    ALcdGXYRasterPainter and implementations now support selection and snapping. To support selection, the ALcdGXYRasterPainter#isTouched implementation has been redefined. To support snapping, the ALcdGXYRasterPainter#snaptarget now returns one of the bounds points if they are touched.

    ImprovementLuciadFusion

    LMAP-3118
    TLcdGXYEllipsePainter now allows manipulation of the handles without having to use CTRL.

    ImprovementLuciadFusion

    LMAP-3117
    TLcdGXYIconPainter#getCursor now returns a translation cursor when appropriate.

    ImprovementLuciadFusion

    TLcdDTEDTileDecoder now supports the additional sampling strategies MINIMUM, MAXIMUM, and AVERAGE.

    ImprovementLuciadFusion

    ALcdEarthGLPainterBase has a new method setClipCenterMode(), which gives users some control over how the clip center is chosen. Options include the camera eye point and reference point, as well as a new "adaptive" mode in which the clip center is moves in between the eye and reference points in function of the pitch of the camera.

    ImprovementLuciadFusion

    LMAP-3072
    TLcdGeoTIFFModelDecoder and related decoders now support standard Projected Coordinate Systems with explicitly specified units of measure for their coordinates, as used in some non-standard data sets like the 15 cm aerial JPEG2000 images of NY state.

    ImprovementLuciadFusion

    TLcdGeoTIFFModelEncoder, TLcdGeoTIFFModelDecoder, and related decoders now support grid coordinate systems with more units of measure.

    ImprovementLuciadFusion

    LuciadMap now offers support for performance monitoring. The following operations can be measured:
    • Painting time of the 2D and 3D views
    • Painting time of the 2D and 3D layers
    • Decoding time of the following formats: SHP, CGM, Database, GML, IGRF, WMM, MIF, POL, BCI, BIL, CADRG Directory, CADRG, DEM, DIMAP, DMED, DTED Directory,DTED, ECW, ETOPO, GeoSPOT, GeoTIFF, JAIRaster, JPEG2000, MrSID, NITF, Raster, SwissDHMMatrix, TAB, TFW, USRP, SVG, DWG, DWG model list, DGN, DGN model list, Oracle GeoRaster, Oracle spatial, Informix Geodetic, PostgreSQL, GDF, GRIB, GRIB Bulletin.
    Details about the usage of performance monitoring can be found in the LuciadMap and 3D developer guides.

    ImprovementLuciadFusion

    LMAP-2525
    A new class called TLcdEPSGGeodeticDatumFactory allows to create a geodetic datum based on its WKT name. The datums supported by this class are a subset of the datums from the current EPSG database (v6.18.2).

    ImprovementLuciadFusion

    The logging class TLcdLog and the associated ILcdLogListener implementations TLcdSystemLog and TLcdOutputFrame have been deprecated. Users are now encouraged to use the TLcdLoggerFactory class and the ILcdLogger interface. Details about the new framework can be found in the "Logging and performance monitoring" appendix of the LuciadMap developer's guide.

    ImprovementLuciadFusion

    LMAP-2560
    TLcdGXYEditController(2): edit controller now only performs snapping when there is a single object to edit. This prevents multiple points to snap to the same location, giving the impression that some points disappeared.

    ImprovementLuciadFusion

    ILcdGXYView#addGXYLayer(ILcdGXYLayer): the documentation now allows implementations to add layers at indices other than the top most index.

    ImprovementLuciadFusion

    A new package, com.luciad.util.collections, was introduced. It provides support for collections of primitive types (boolean, byte, char, double, float, int, long, short). Both interfaces and array-based implementations are provided for each of these types.

    ImprovementLuciadFusion

    LMAP-2945
    TLcdGXYStampLabelPainter#setHaloPinColor can now be used to set the halo color for label pins, even when the label itself does not have a halo.

    ImprovementLuciadFusion

    The new class TLcdGeoidGeodeticDatumFactory can create geodetic datums of which the vertical datums are geoids, for example EGM96, EGM84, NAVD88, NGVD29, and so on.

    ImprovementLuciadFusion

    A set of new shape interfaces and implementations have been added to com.luciad.shape, to support open and/or closed shapes consisting of a connected combination of lines and arcs.

    For this purpose, a new interface ILcdCurve has been added to com.luciad.shape, providing a general representation of a continuous, one-dimensional shape. Examples of curves are lines, arcs, or any connected combination thereof. The following extensions and implementations of this interface are introduced:
    • ILcdRing: a closed curve (i.e., begin and end point are the same),
    • ILcdCompositeCurve, TLcdCompositeCurve: a connected sequence of curves,
    • TLcdLonLatCompositeRing, TLcdXYCompositeRing: a closed, connected sequence of curves,
    • TLcdLonLatRhumbPolyline: a polyline consisting of rhumbline segments (i.e., constant bearing),
    • TLcdLonLatRhumbPolygon: a polygon consisting of rhumbline segments (i.e., constant bearing),
    • ILcdCircularArcByBulge: a circular arc defined by a start point, end point, a bulge direction and a bulge factor,
    • ILcdCircularArcBy3Points: a circular arc defined by a start point, end point, and a third point on the arc,
    • ILcdCircularArcByCenterPoint: a circular arc defined by a center point, radius, start angle and arc angle,
    • ILcdCircleBy3Points: a circle defined by 3 points.

    To support the visualization and editing of newly introduced shape types, the following painter/editor implementations have been introduced:
    • TLcdGXYCompositeCurvePainter: paints and enables visual editing of ILcdCompositeCurve objects,
    • TLcdGXYCompositeRingPainter: paints and enables visual editing of ILcdCompositeCurve/ILcdRing objects,
    • TLcdGXYCircularArcPainter: paints and enables visual editing of ILcdCircularArcByBulge, ILcdCircularArcBy3Points and ILcdCircularArcByCenterPoint objects.
    • TLcdGXYCircleBy3PointsPainter: paints and enables visual editing of ILcdCircleBy3Points objects.
    Shapes of type TLcdLonLatRhumbPolyline or TLcdLonLatRhumbPolygon are supported by the existing TLcdGXYPointListPainter class.

    To ensure the connectivity between different curves in an ILcdCompositeCurve, the interface ILcdCurveConnector is introduced. By means of an ILcdCurveConnectorProvider, it is used by painter/editor implementations TLcdGXYCompositeCurvePainter and TLcdGXYCompositeRingPainter to ensure connectivity while editing.

    All new shapes are illustrated in the "create and edit with mouse" sample.

    ImprovementLuciadFusion

    LMAP-2639
    TLcdInputStreamFactory: now creates buffered input streams.

    ImprovementLuciadFusion

    LMAP-2521
    A new class TLcdGXYNewController2 offers more flexibility and functionality when creating new objects. Amongst others, the controller allows reverting initialization steps and customization of the entire creation process through the class ALcdGXYNewControllerModel2. The controller is used extensively in the "create and edit with mouse" sample.

    ImprovementLuciadFusion

    TLcdExtrudedShape now implements ILcdCache.

    ImprovementLuciadFusion

    The raster model decoders TLcdDMEDModelDecoder, TLcdDTEDModelDecoder, TLcdDTEDDirectoryModelDecoder, TLcdDEMModelDecoder, and TLcdGeoTIFFModelDecoder now support geodetic datums based on geoids. Depending on the new property supportGeoidDatums, they create geodetic datums based on ellipsoids (the default, for example WGS84) or based on geoids (if applicable, for example EGM96). The DMED/DTED model decoders also provide a new property applyGeodeticDatums, which lets the decoders automatically add the geoid heights to the elevation values of the rasters themselves.

    ImprovementLuciadFusion

    Using interactive labels has been simplified: the layout manager of the ILcdGXYView (for example TLcdMapJPanel) no longer needs to be set to null because this is the default now. The CellRendererPane is now added to the Swing tree inside the SwingGXYLabelStamp.

    ImprovementLuciadFusion

    com.luciad.earth.tileset.opengl.shape.TLcdEarthGLShapeTileSet now outputs tiles which contain TLcdEarthObjectMappedIndexedVertexArray. This new class, which extends TLcdEarthIndexedVertexArray, contains a mapping which associates segments of the vertex array with the domain objects that these segments represent. TLcdEarthGLVertexArrayPainter has been modified to take this information into account, making it possible to apply different styling to different domain objects within a TLcdEarthGLShapeTileSet or TLcdEarthGLAboveGroundTileSet.

    ImprovementLuciadFusion

    TLcdEarthAssetModelCodec now supports the use of an ILcdInputStreamFactory and ILcdOutputStreamFactory.

    ImprovementLuciadFusion

    TLcdStatusInputStreamFactory and TLcdStatusOutputStreamFactory now have a 'blockingHint' property to allow to set the blocking hint of the fired TLcdStatusEvents.

    ImprovementLuciadFusion

    LMAP-3008
    A new class TLcdDefaultModelXYWorldTransformation aggregates the existing ILcdModelXYWorldTransformation implementations, and is now used as default transformation class in TLcdGXYLayer. As a result, setting it manually (setModelXYWorldTransfoClass) is no longer required (except when not using the build-in model references).

    ImprovementLuciadFusion

    A new sample "Label stamp" shows how to create a simple textual label stamp and use it in TLcdGXYStampLabelPainter, TLcdGXYPolygonStampLabelPainter, and TLcdGXYPolylineStampLabelPainter.

    ImprovementLuciadFusion

    TLcdWKTReferenceParser can now be used to create a geodetic datum or an ellipsoid from a well-known-text (WKT).

    ImprovementLuciadFusion

    LMAP-2649
    The asynchronous paint sample now shows how to safely access the wrapped layers.

    ImprovementLuciadFusion

    LMAP-2591, LMAP-2229
    TLcdGXYPolygonLabelPainter and TLcdGXYPolylineLabelPainter now support freely placed, editable, and interactive labels. Also, these classes now extend TLcdGXYPolygonStampLabelPainter and TLcdGXYPolylineStampLabelPainter, respectively. These new stamp-based painters allow complete customization of the label rendering.

    ImprovementLuciadFusion

    LMAP-1425
    TLcdEPSGReferenceFormatter contains 2 new methods to format an ILcdEllipsoid or an ILcdGeodeticDatum as an EPSG code.

    ImprovementLuciadFusion

    LMAP-2265
    The retrieveLabels methods of TLcdGXYLabelPainter and TLcdGXYFeaturedLabelPainter now return null if the label is empty, so as to skip drawing it.

    ImprovementLuciadFusion

    LMAP-2985
    License error messages in the samples are now more specific.

    ImprovementLuciadFusion

    LMAP-2404, LMAP-2784
    TLcdGXYEditControllerModel2: now supports a new mode EDIT_WHAT_FIRST_TOUCHED_LABEL, that only edits one touched label. This is especially useful when objects can have multiple labels, that should be edited independently.

    ImprovementLuciadFusion

    LMAP-2618
    A new sample samples.gxy.rotation shows how to add rotation to an existing painter/editor.

    ImprovementLuciadFusion

    LMAP-2656
    ALcdAction#setDisplayName() was deprecated.

    ImprovementLuciadFusion

    LMAP-2777
    TLcdSpeedFormat, TLcdAltitudeFormat and TLcdDistanceFormat now use spaces between the number and the unit when formatting, as the 'International System of Units' (SI) specifies. The units of speed, altitude and distance were corrected for casing (for example km instead of Km).

    ImprovementLuciadFusion

    TLcdAdvancedMapRulerController: now has a method setHotPointIcon to change the icon of the handles.

    ImprovementLuciadFusion

    LMAP-2968
    TLcdGXYPanController has a new method setDragViewOnPan. If enabled, the entire view is repainted while dragging. This behavior is activated by default in the LuciadMap samples.

    ImprovementLuciadFusion

    LMAP-2928
    ToolBarSW#addGXYController now adds pan and zoom behavior for the middle mouse button and mouse wheel, respectively. It makes use of two new wrapper classes MouseButtonFilteringController and MouseButtonMappingController.

    ImprovementLuciadFusion

    LMAP-2786
    TLcdMIFModelDecoder was always decoding the features of the shapes as String objects. The types of the features is now more appropriate.

    ImprovementReal-time Engine

    LMAP-3046
    TLcdSimulator: the simulator no longer unnecessarily stops when the begin- or end-date of the associated ILcdSimulatorModel changes. If the current date is still within the timeframe of the changed begin- and endtime, the current date no longer changes.

    ImprovementTerrain Analysis Engine

    TLcdCoverageAltitudeMode: the altitude modes ABOVE_ELLIPSOID and ABOVE_GEOID have been added to represent heights relative to a reference ellipsoid or geoid.

    ImprovementTerrain Analysis Engine

    TLcdLOSPropagationFunctionFixedHeight: support is added for an ABOVE_GROUND fixed height.

    ImprovementAviation Standards

    LMAP-3148
    The decoder for routes and route segments, com.luciad.format.aixm.decoder.TLcdAIXMRouteHandler, now logs missing referred points within a route segment.

    ImprovementAviation Standards

    TLcdDAFIFLoader has been extended with the ability to filter airspaces and special use airspaces based on their subtype (e.g. CTA, CTR, ...). The interface ILcdDAFIFSubTypeFilteringDecoder defines this functionality at the decoder level, whereas TLcdDAFIFLoader itself has a constructor with a boolean parameter to switch this feature on or off.

    ImprovementAviation Standards

    The new package com.luciad.format.aixm5 introduces support for the aeronautical data format AIXM 5.0. The package provides support for decoding and encoding AIXM 5.0 data, as well as painters and other tools to visualize and use AIXM 5.0 data in an application. Please refer to the developer guide for an introduction to this package.

    ImprovementDefense Symbology

    The TLcdGXYNewController implementations for MIL-STD 2525b and APP-6A, TLcdMS2525bShapeGXYNewController and TLcdAPP6AShapeGXYNewController, have been made deprecated in favor of the new TLcdGXYNewController2 in LuciadMap and corresponding controller model implementations ALcdMS2525bGXYNewControllerModel and ALcdAPP6AGXYNewControllerModel. The samples illustrate how the new controller and controller model implementations are used to create MIL-STD 2525b and APP-6A symbols on a map.

    Bug fixLuciadFusion

    LMAP-3191
    The SHP model decoder was creating a 2D indexed model, even if the model had invalid bounds (for example, if it contained a single point the bounds had 0 width/height). In such a case the decoder now returns a non-indexed model.

    Bug fixLuciadFusion

    TLcdGXYViewLabelPainter and TLcdGXYLayerLabelPainter would sometimes use the same label location for different sublabels.

    Bug fixLuciadFusion

    LMAP-2987
    TLcdGXYOffsetIconPainter now supports fixed label placement, making it compatible with TLcdGXYLayerLabelPainter and TLcdGXYViewLabelPainter. Also, the offset icon sample is now decluttered by default.

    Bug fixLuciadFusion

    LMAP-2998
    TLcdGXYPointListPainter: north-south and east-west lines were difficult to select.

    Bug fixLuciadFusion

    LMAP-3097
    TLcdGeoTIFFModelEncoder no longer swaps colors when saving rasters with an INT_ARGB color model.

    Bug fixLuciadFusion

    Rhumbline lines were not always displayed correctly when dragged to one of the poles. This has been fixed.

    Bug fixLuciadFusion

    LMAP-3136
    TLcdGXYEditController2's undoable listeners are now also informed of the controller model's undoable events.

    Bug fixLuciadFusion

    TLcdLockUtil now uses the value of System.identityHashCode(Object) instead of Object#hashCode() as object identifier to keep track of an object's locks. This is more reliable, because Object#hashCode() might return different values while acquiring/releasing locks, if it depends on properties that can be changed.

    Bug fixLuciadFusion

    LMAP-3141
    TLcdSHPModelEncoder was truncating the DBF field names to 11 characters instead of 10, causing problems with some third-party SHP model decoders. This has been fixed.

    Bug fixLuciadFusion

    LMAP-3140
    Upgraded the packaged proguard jar to the latest version to prevent some obfuscation problems with certain versions of JDK 1.6

    Bug fixLuciadFusion

    LMAP-3135
    TLcdDMEDModelDecoder and TLcdDTEDDirectoryModelDecoder with checkTilesImmediately set to true now provide the correct raster pixel densities, even if some lower DTED levels are missing.

    Bug fixLuciadFusion

    LMAP-3131
    The GetFeature request handler TLcdWFSGetFeatureRequestHandler now supports multiple feature types that use different coordinate reference systems.

    Bug fixLuciadFusion

    TLcdGXYEditController2 would throw a NullPointerException when used after a null snappables object was set.

    Bug fixLuciadFusion

    LMAP-3107
    TLcdEarthGXYRasterPainter: Fixed null pointer exception when no tiles are available.

    Bug fixLuciadFusion

    LMAP-2417
    The references of some internal LuciadMap classes to the optional packages ECW and MrSID have been removed.

    Bug fixLuciadFusion

    TLcdGXYShapeListPainter now supports ILcdGXYPainterProvider objects that return null instead of a valid painter. A TLcdNoBoundsException is thrown in case boundsSFCT is called on an empty ILcdShapeList.

    Bug fixLuciadFusion

    TLcdGMLSchemaDecoder now finds schemas for GML files found using the class loader.

    Bug fixLuciadFusion

    LMAP-3026
    TLcdEarthGXYRasterPainter: add option to automatically enlarge the tile cache (enabled by default).

    Bug fixLuciadFusion

    LMAP-3025
    TLcdEarthGXYRasterPainter: improved behaviour so it no longer paints multiple levels of detail on to of each other. This solves the artifacts when the image tiles have transparent parts.

    Bug fixLuciadFusion

    TLcdGXYStampLabelPainter now automatically invalidates the halo cache when the stamp rotation changes.

    Bug fixLuciadFusion

    TLcdGXYLabelPainter, TLcdGXYStampLabelPainter, TLcdGXYPolygonLabelPainter, TLcdGXYPolylineLabelPainter now fire change events for all properties.

    Bug fixLuciadFusion

    TLcdGXYViewFitAction: now supports fitting on multiple layers.

    Bug fixLuciadFusion

    LMAP-2455
    TLcdGXYLayer now filters the selection when a filter has been set to the layer. In addition, the selection is kept up to date if the filter in question implements ILcdChangeSource.

    Bug fixLuciadFusion

    TLcdGXYPanController now also pans when the meta or alt keys are pressed.

    Bug fixLuciadFusion

    LMAP-2828
    TLcdTopocentricCoordSysTransfo2 has been deprecated in favour of TLcdTopocentricCoordSysTransformation.

    Bug fixLuciadFusion

    LMAP-2888
    TLcdTFWRasterModelDecoder falls back to ImageIO when decoding via JAI fails.

    Bug fixWeather & Environment Standards

    LMAP-825
    com.luciad.format.grib.gxy.TLcdGRIBRasterPainter now correctly rotates wind barbs and arrows if the map is rotated or warped.

    Bug fixRadar Connectors

    TLcdASTERIXCategory30: decoding the same file twice now produces the same results. Because of the bugfix for LMAP-2768, trajectories that were marked as terminated in the previous decoding run were immediately marked as terminated in the next decoding run.

    Bug fixRadar Connectors

    LMAP-2795, LMAP-2796
    TLcdASTERIXCategory1: trajectories of category one are no longer split up in parts of 512 seconds. This fixes a regression introduced by the fix for LMAP-2762.

    Upgrade considerationLuciadFusion

    The XML binding framework, introduced as beta API in LuciadMap 8.2, has undergone some changes to improve its usability and extensibility. This affects the following packages:
    • com.luciad.format.xml.bind
    • com.luciad.format.xml.bind.schema
    The following table lists all class renamings which have been done between 8.2 and 9.0:
    TLcdXMLUnmarshallerContext TLcdXMLDecoder
    TLcdXMLMarshallerContext TLcdXMLEncoder
    ILcdXMLUnmarshallerLibrary ILcdXMLDecoderLibrary
    ILcdXMLMarshallerLibrary ILcdXMLEncoderLibrary
    TLcdXMLSchemaUnmarshallerContext TLcdXMLSchemaBasedDecoder
    TLcdXMLSchemaMarshallerContext TLcdXMLSchemaBasedEncoder
    ILcdXMLSchemaUnmarshallerLibrary ILcdXMLSchemaBasedDecoderLibrary
    ILcdXMLSchemaMarshallerLibrary ILcdXMLSchemaBasedEncoderLibrary
    ILcdXMLSchemaTypeUnmarshaller ILcdXMLTypeUnmarshaller
    ILcdXMLSchemaTypeMarshaller ILcdXMLTypeMarshaller
    ILcdXMLSchemaDatatypeUnmarshaller ILcdXMLDatatypeUnmarshaller
    ILcdXMLSchemaDatatypeMarshaller ILcdXMLDatatypeMarshaller
    TLcdXMLSchemaTypeUnmarshallerProvider TLcdXMLTypeUnmarshallerProvider
    TLcdXMLSchemaTypeMarshallerProvider TLcdXMLTypeMarshallerProvider
    TLcdXMLSchemaInfo TLcdXMLSchemaSet
    The following additional API changes have been done:
    • The static newInstance() methods of all unmarshaller and marshaller context classes have been replaced with ordinary constructors in the new decoder and encoder classes.
    • The unmarshal() and marshal() methods of all unmarshaller and marshaller context classes have been renamed to decode() andencode().
    • The configureContext() methods of all (un)marshaller library interfaces have been to configureDecoder() andconfigureEncoder().
    • The Map argument of the (un)marshal and (un)marshalType methods of all (un)marshallers, type (un)marshallers and datatype (un)marshallers has been replaced with a ILcdXMLDocumentContext argument, which offers a richer API for storing and retrieving objects, based on their scope within the XML document.
    • TLcdXMLSchemaBindingDescriptor is no longer part of the API. Its functionality has been largely moved to the more general TLcdXMLSchemaMapping class.
    • The ILcdXMLObjectFactory and TLcdXMLTypeObjectFactoryProvider classes have been introduced in the API, in order to separate object instantiation and unmarshalling during theXML decoding process. This allows to plug in custom object factories without having to rewrite unmarshallers.
    • The ILcdXMLElementInfo interface has been added to the API to allow for XML-Java-XML roundtrips without loss of information. This purpose of this interface is similar to the one provided by JAXBElement: it models an XML element, and allows to store specific XML-related information about the element, which is typically not stored otherwise in the Java representation of the XML data.
    • All unmarshaller and marshaller interfaces, and their corresponding providers have been generified, with as type parameter the Java class they can unmarshal or marshal.

    Upgrade considerationLuciadFusion

    LMAP-2833
    TLcdModelList now implements ILcdModelContainer:
    • The addModel(ILcdModel) and addModel(ILcdModel, ILcdFilter) methods now return a boolean indicating whether the collection of models has changed. Classes overriding one of these methods will result in a compile error.
    • The removeModel(ILcdModel) method now returns a boolean indicating whether a model has been removed from the collection of models and no longer throws a NoSuchElementException when the model was not part of the model list. Classes overriding this method will result in a compile error. Usages of this method which relied on the NoSuchElementException will behave oddly at runtime, since no such error is thrown anymore. The returned boolean can now be used in order to determine whether a model was an element of the model list. It is also no longer necessary to check whether the model is part of the model list before calling the removeModel(ILcdModel) method.
    • The methods modelCount(), models(), addModelContainerListener(ILcdModelContainerListener) and removeModelContainerListener(ILcdModelContainerListener) have been added.

    Upgrade considerationLuciadFusion

    LMAP-3116
    The interface com.luciad.ogc.wfs.ILcdWFSFeatureType has been extended with a getter and setter to configure a qualified feature name through a javax.xml.namespace.QName object. This might require an update, if a custom implementation of ILcdWFSFeatureType is used.

    Upgrade considerationLuciadFusion

    All ILcdGXYPainter#isTouched implementations now check whether the paint mode includes ILcdGXYPainter.HANDLES or ILcdGXYPainter.BODY before checking if the handles or bodies are touched, respectively, allowing finer-grained isTouched checks. An example implementation of this behavior can be found in the hippodrome sample painter. If you call these methods, please make sure that the paint mode contains the necessary flags. In particular, please make sure the mode argument contains ILcdGXYPainter.BODY if you need to check if the body was touched.

    Upgrade considerationLuciadFusion

    The return type of TLcdEarthAssetModelCodec.getDefaultModelReference() has been generalized from TLcdGeodeticReference to ILcdModelReference.

    Upgrade considerationLuciadFusion

    ILcdGXYEditor's END_CREATION flag is now deprecated. The mode was misused to also include the behavior of ILcdGXYEditor.CREATING, which made it impossible to combine with, for example, double-click behavior. TLcdGXYNewController2 does not use this mode anymore. If necessary, perform the object's final initialization in the new controller model instead.

    Upgrade considerationLuciadFusion

    The interfaces ILcdTreeLayered, ILcdLayerTreeNode and ILcdModelTreeNode have been introduced, allowing to easily create hierarchical layer and model structures. In relation to that, these changes were made:
    1. A getter and setter for an ILcdIcon are added to the ILcdLayer interface. The impact is minimal as all sub-interfaces (ILcdGXYLayer and ILcdGLLayer) already had these methods. If you are affected by this change, it results in a compile error.
    2. ILcdGXYView now implements ILcdTreeLayered instead of ILcdLayered. This results in one new method (getRootNode). In the unlikely event of implementing an ILcdGXYView directly, please implement the extra method as well, probably by delegating the call to another ILcdGXYView. If you are affected by this change, it results in a compile error.
    3. The following methods in ILcdModelContainer have been renamed to avoid clashing with the methods of ILcdModel. As this interface was not used anywhere, the impact is expected to be minimal. If you are affected by this change, it results in a compile error.
      • elements()
        to
        models()
      • size()
        to
        modelCount()
      • elementAt(int)
        to
        getModel(int)
    4. The addModel method of ILcdModelContainer can now throw IllegalArgumentException for invalid objects.
    5. TLcdLayeredEvent now contains (optional) indices, indicating where the change took place. All LuciadMap code is adapted to provide those indices.
    As long as no ILcdLayerTreeNode s are used, nothing changes except the changes mentioned above. When layer nodes are used, extra care must be taken when
    • Moving a GXYLayer in the GXYView: ILcdGXYView now implements ILcdTreeLayered which affects the behavior of the move operation. The move operation has become a best effort approach. Details of the implications of this change can be found in the developer guide and in the javadoc of the TLcdTreeLayeredSupport#moveLayerAt.
    • Inserting a layer node in the GXYView: inserting a layer node in the view adds the layer node as a child of the root node, and adds the layer node and all of its children to the view (ILcdGXYView#layers()). Events are generated for every layer that was added to the view.
    • Requesting all the layers from the GXYView:

      calling ILcdGXYView#layers() returns all the layers and layer nodes in the view. When for example copying these layers to another view by looping over the result care must be taken (this is typically done when printing a view). Since the layer nodes are also returned, adding a layer node to the second view will also insert all the child layers to the second view. Those child layers were also returned when calling ILcdGXYView#layers(), hence they would be added twice.

      A correct approach for the use-case mentioned above is requesting all the child layers from the root node of the view, and add all those layer(node)s to the second view. Consult the developer guide for a more detailed explanation.

    • Layer order of the GXYview: the paint order of the layers in the view (ILcdGXYView#layers) is not necessarily related to the layer tree structure (ILcdGXYView#getRootNode). This means that all tasks that directly or indirectly rely on the paint order (for example select controller, ... ) should continue to use the 'flat list' (ILcdGXYView#layers()) and not the hierarchical structure (getRootNode) directly.
    • Adding a model to an ILcdView: adding a model to an ILcdView by calling ILcdView#addModel will use the layer factory which is set on the view. Depending on whether the layer factory creates ILcdLayerTreeNode 's for TLcdModelList's and/or ILcdModelTreeNode's, the behavior of the addModel method will be slightly different:
      1. When a model list is added to the view, and a layer node is created to represent this model list, the model list should not be set as the model of the layer tree node. Hence calling ILcdTreeLayered#layerOf(ILcdModel) with the model list will throw a NoSuchElementException. In case a layer list is created, the model list should be the model of the layer list and calling ILcdTreeLayered#layerOf(ILcdModel) will return the created layer list.
      2. When a model list is added to the view, and a layer node is created to represent this model list, the view will be aware of the layer node itself and all of its child layers. These child layers represent the sub-models of the model list. Calling ILcdTreeLayered#layerOf(ILcdModel) with one of the sub-models will return the correct child layer. In case a layer list is created, the view is not aware of the different sub layers. Calling ILcdTreeLayered#layerOf(ILcdModel) with one of the sub-models will throw a NoSuchElementException.
        Notice that the same remark is valid for adding an ILcdLayerTreeNode directly to the view. The view will be aware of the layer tree node and its child layers, which is not the case when a layer list is added to the view.

    The recommended way to replace existing ILcdGXYLayerList's to ILcdLayerTreeNode's is to create an empty ILcdLayerTreeNode and add all the layers as child layers to the created layer tree node instead of adding them to a new ILcdGXYLayerList.

    However, care must be taken since the behavior of the layer lists and layer nodes is slightly different on some points:

    • The model: the model of the ILcdGXYLayerList was an ILcdModelList, composed of all the models of the sub-layers. The ILcdLayerTreeNode is a layer itself, with child layers, without any relationship between the model of the node and the models of its children. So the model list should not be used as the model of the layer tree node, as that would cause objects to be painted twice.
    • All ILcdGXYLayer operations: the standard ILcdGXYLayerList implementation (TLcdGXYLayerList) delegated those operations to all of its sub-layers, where calling these methods on an ILcdLayerTreeNode will not pass the call to its children. So for example the
      applyOnInteract
      method will work on the node itself, and not on the child layers which was the case for the layer list. Another example is the
      getSelectionCount()
      method. For an TLcdGXYLayerList this returned the sum of the selection counts of all the sub-layers, where for an ILcdLayerTreeNode it just returns the selection count of the node itself. If one wants to retrieve the selection count of all the sub-layers, (s)he must loop over all sub-layers and ask the sub-layers for their selection count. Consult the javadoc of those methods for more detailed information about the differences.
      Similarly, listeners added to a node only receive changes about that node itself and not about the child nodes. Some addHierarchy*Listener methods are available that do listen on a node and all its descendants.
    • The view: with an ILcdGXYLayerList, the view was unaware of the sub-layers and treated the layer list and its sub layers as one big layer. This is no longer the case with an ILcdLayerTreeNode. When such a node is added to the view, all of its child layers are also added and the view knows about those child layers. This happens automatically. For example, it is not necessary to add both the node and all its child layers to the view individually. Adding the node is sufficient. Consult the developer's guide for more information (the section about ILcdTreeLayered).

    Upgrade considerationLuciadFusion

    The interface ILcdGeodeticDatum has received new methods getHeight, hasNonZeroHeights, equals2D, llh2geocSFCT and geoc2llhSFCT, to integrate the new vertical datum support in an efficient way. This allows using geoids for geodetic datums and ILcdGeoReference instances such as ILcdGridReference. The new vertical datum support is used by all LuciadMap implementations of ILcdModelXYWorldTransformation, ILcdModelXYZWorldTransformation, ILcdModelModelTransformation, and ILcdXYWorldXYWorldTransformation. Classes implementing the old vertical datum support (ILcdVerticalDatum, TLcdNullVerticalDatum, ILcdGeoidReference, TLcdGeoidReference, TLcdGeoid2Grid, and TLcdModelModelGeoid2Grid) have been deprecated.

    Upgrade considerationLuciadFusion

    LMAP-1047
    TLcdLayeredEvent#ALL_REMOVED has now been deprecated in favor of multiple REMOVED events, allowing the listener to be informed of each removed layer. All LuciadMap view implementations no longer use this event type.

    Upgrade considerationLuciadFusion

    LMAP-2591
    TLcdGXYPolygonLabelPainter#paintLabels(String[], ILcdPolygon, ...), TLcdGXYPolygonLabelPainter#labelBoundsSFCT(Graphics, String[], com.luciad.shape.ILcdPolygon, ... ), TLcdGXYPolylineLabelPainter#paintLabels(String[], ILcdPointList, ...) and TLcdGXYPolylineLabelPainter#labelBoundsSFCT(Graphics, String[], com.luciad.shape.ILcdPointList, ... ), have been deprecated. In addition, the paintLabels methods now perform the haloing themselves, being consistent with the paintLabel method. Instead of calling the deprecated methods, set the relevant object on the painter before calling the respective methods without the polygon or point list argument. To customize the labels, the method #retrieveLabels can be overridden.

    Upgrade considerationLuciadFusion

    LMAP-2892
    TLcdGXYNewController now respects the editor's #getCreationClickCount when creating new objects. This means that it is now impossible to create a polyline consisting of a single point, or a polygon consisting of less than 3 points. This behavior can be modified by overriding the #isContinueEdit method.

    Upgrade considerationLuciadFusion

    LMAP-1998
    ILcdGXYEditor: the semantics of #getCreationClickCount have been changed to also express a minimum click count when there is no limit on the number of creation clicks, allowing values lower than -1. The implementations in the following editors have been modified to follow this convention:
    • TLcdGXYBufferPainter, TLcdGXYGeoBufferPainter, and TLcdGXYLonLatHeightBufferPainter
    • TLcdGXYPointListPainter

    Upgrade considerationLuciadFusion

    LMAP-2882
    The deprecated library JimiProClasses.jar has been removed. The deprecated class TLcdTIFFImageDecoder, which was using it, is now an extension of TLcdGeoTIFFImageDecoder, which is better and compatible for all practical purposes.

    Upgrade considerationLuciadFusion

    The following new packages were added to improve support for GML:
    • com.luciad.format.gml2.model
    • com.luciad.format.gml2.xml
    • com.luciad.format.gml31.model
    • com.luciad.format.gml31.xml
    • com.luciad.format.gml32.model
    • com.luciad.format.gml32.xml
    • com.luciad.format.gmlcommon
    These packages provide domain models, decoders and encoders for the GML 2, 3.1 and GML 3.2 formats. Additionally, a generic GML decoder is also provided,
        com.luciad.format.gmlcommon.xml.TLcdGMLModelDecoder
    , which is capable of handling all GML formats. These packages are built upon the new XML framework (com.luciad.format.xml.bind). They replace all existing GML packages, which are now deprecated:
    • com.luciad.format.gml
    • com.luciad.format.gml3
    • com.luciad.format.gml3.adapter
    • com.luciad.format.gml3.factory
    • com.luciad.format.gml3.model.*
    • com.luciad.format.gml3.name
    • com.luciad.format.gml3.reader

    Upgrade considerationTerrain Analysis Engine

    ILcdLOSRadarPropagationFunction: support has been added for radars with a tilt angle.

    Upgrade considerationAviation Standards

    LMAP-2133
    The classes TLcdVectorIcon and TLcdVectorIconDecoder in the com.luciad.ais.gui package have been removed, as these classes are not intended to be used directly by the user. Furthermore, these classes are also available in the com.luciad.gui package in LuciadMap. If there would be any dependencies on the classes in AIS, the classes in LuciadMap can be used instead.

    8.3

    8.3.19

    Bug fixLuciadFusion

    LMAP-3961
    TLcdGXYOffsetIconPainter#getLabelCount and #getSubLabelCount would sometimes return incorrect values. This could cause exceptions when, for example, selecting offset icons.

    8.2

    8.2.26

    Bug fixTerrain Analysis Engine

    LMAP-3139
    TLcdGXYViewBasedTerrainElevationProvider: a NullPointerException exception could occur when the elevation provider is initialized with an ILcdGXYView and an ALcdTerrainElevationProvider.

    Bug fixInfrastructure Standards

    LMAP-1788
    The bounds of the decoded model were sometimes larger than necessary. This has been fixed.

    8.2.25

    Bug fixLuciadFusion

    A bug in the decoding of gml3:LineStringSegment elements containing gml3:DirectPositions was fixed.

    Bug fixLuciadFusion

    LMAP-3017
    TLcdEllipsoidUtil#computeBufferContour2D and TLcdCartesian#computeBufferContour2D did not correctly calculate the buffer contour at very small scales (+- 10m).

    8.2.24

    ImprovementLuciadFusion

    LMAP-3114
    Users can now explicitly specify the location of the license file with the java system property "luciadmap.license". For instance: java -Dluciadmap.license=/home/user/development_license.txt ...

    ImprovementLuciadFusion

    The TLcdWKTModelReferenceDecoder now accepts multi-line WKTs.

    Bug fixLuciadFusion

    TLcdGXYPen now correctly draws arcs that are defined in grid references with non-standard scales, rotations, or units of measure.

    Bug fixLuciadFusion

    LMAP-3053
    TLcdSHPModelDecoder and TLcdMIFModelDecoder now properly handle InterruptedIOExceptions.

    Bug fixLuciadFusion

    LMAP-3111
    Objects painted with a halo effect would sometimes be rendered incorrectly because of prematurely disposed Graphics instances.

    Bug fixRadar Connectors

    LMAP-3108
    The constructor of TLcdASTERIXTrajectoryModelDescriptor no longer refers to a package visible class which is not part of the API.

    Bug fixRadar Connectors

    Sample class 'TransformationProvider' now accept more degree formats, such as DDMMSS, in its locations.cfg file.

    8.2.22

    ImprovementLuciadFusion

    The license server now more efficiently handles simultaneous license requests.

    ImprovementLuciadFusion

    LMAP-2044
    The default level of the World MTM model has been changed to 4. This improves the fitting the view to small countries (e.g. Saint Kitts and Nevis).

    Bug fixLuciadFusion

    LMAP-2819
    TLcd2DBoundsIndexedModel now throws an IllegalArgumentException instead of StackOverflowException, when an element with bounds having a NaN value is added to a model.

    Bug fixLuciadFusion

    LMAP-3096
    TLcdGeoTIFFModelEncoder no longer throws an ArrayIndexOutOfBoundsException when encoding tiled rasters with Deflate compression and a different tile size.

    Bug fixLuciadFusion

    LMAP-3094
    TLcdEarthTerrainElevationProvider now works correctly with input models that contain more than one ILcdRaster or ILcdMultilevelRaster element.

    Bug fixLuciadFusion

    LMAP-612
    TLcdMIFModelEncoder was not correctly encoding shape lists. This has been fixed.

    Bug fixLuciadFusion

    LMAP-3070
    TLcdEllipsoid rhumbline azimuth computations were incorrect when one of the points was at the North or South Pole. In such a case, the azimuth is now returned as 0 or 180, depending on the case.

    Bug fixLuciadFusion

    LMAP-3068
    The method TLcdGrid2Geocentric.worldPoint2modelSFCT() was returning incorrect results under certain circumstances. This has been fixed.

    Bug fixLuciadFusion

    LMAP-2282
    The TLcdGrid2Geocentric.modelBounds2worldSFCT() was not always correct for models spanning more than 180 longitude degrees. This has been fixed.

    Bug fixLuciadFusion

    LMAP-1956
    If an exception was occurring during the encoding of a DBF file associated with an SHP model, a warning was being issued but the incomplete DBF file was not removed. Future attempts to decode the SHP model were failing because of the corrupted DBF. This has been corrected - if the DBF file can not be written, the SHP model encoder now throws an exception.

    Bug fixLuciadFusion

    LMAP-1325
    The contains2D test was not correct for geodetic polygons covering North Pole. This has been fixed.

    Bug fixLuciadFusion

    LMAP-3092
    TLcdGXYPolylineLabelPainter now clears the halo image cache when the label rotation changes.

    Bug fixLuciadFusion

    LMAP-1370
    GXYHippodromePainter could enter an inconsistent state when editing, preventing further creation of hippodromes.

    Bug fixAviation Standards

    LMAP-3099
    Some DAFIFT decoders (e.g. TLcdDAFIFTAirspaceDecoder) did not use the decoding bounds filter correctly.

    Bug fixAviation Standards

    LMAP-2999
    TLcdProcedureGeometryCalculator's handling of CF (Course to Fix) legs has been improved.

    Bug fixAviation Standards

    LMAP-3090
    Shapes including the poles were rendered incorrectly when using a geodetic pen. This has been fixed.

    Upgrade considerationLuciadFusion

    LMAP-2776
    Setting the TLcdGXYViewLabelPainter.setReusePreviousLocation() property to true was causing editable labels to disappear. The method has been deprecated - a layer implementing ILcdGXYEditableLabelsLayer should be used instead.

    8.2.21

    Bug fixLuciadFusion

    TLcdSoft2DBoundsIndexedModel decoded its underlying model twice when it needed to be restored after having been garbage collected.

    8.2.20

    ImprovementLuciadFusion

    Direct positions and direct position lists with srsName urn:x-ogc:def:crs:EPSG:4326 are now interpreted as (lat,lon) coordinates instead of (lon,lat).

    ImprovementLuciadFusion

    LMAP-3079
    TLcdGXYAsynchronousPaintQueue can now be configured to not interrupt ongoing asynchronous paints, when new paints are requested. This is useful when the view is continuously being repainted, and the paint queue would not otherwise get the opportunity to finish any paints.

    Bug fixLuciadFusion

    LMAP-3085
    TLcdWFSDescribeFeatureTypeRequest#getKVPEncoding() did not take into account the namespace of the configured feature type name(s).

    8.2.19

    ImprovementDefense Symbology

    LMAP-2628
    The 'Enemy Suspect or Templated' variant of the 'Forward Line Of Own Troops' (FLOT) symbol is now supported in MIL-STD 2525b and APP-6A. This is also known as the 'Forward Line of Enemy Troops' (FLET) symbol. It can be selected by choosing the FLOT symbol (APP-6A: 2.X.2.1.1.2.2, MIL-STD 2525b: 2.X.2.1.2.2) and setting the affiliation to 'Suspect'. Depending on the status - present or anticipated - the symbol is drawn with a plain or dash stroke, similar to other symbols.

    Bug fixLuciadFusion

    Using TLcdEarthGXYViewTileSet.setImageType() no longer causes the previous settings of the offscreen ILcdGXYView to be lost.

    Bug fixLuciadFusion

    LMAP-3077
    The select controllers no longer display selection popup menus that are larger than the screen height.

    Bug fixLuciadFusion

    LMAP-3073
    TLcdGXYPainterProvider: recently introduced caching was incorrect when painters were registered for interfaces and model objects implemented multiple interfaces.

    Bug fixLuciadFusion

    TLcdEllipsoid.rhumblineDistance was incorrect when crossing the dateline. This has been fixed.

    Bug fixLuciadFusion

    LMAP-3071
    In the internal database of EPSG codes the unit of measure was always "meter", even for EPSG codes that were using feet or other units. This has been fixed.

    Bug fixLuciadFusion

    TLcdGXYIconPainter#isTouched could cause a NullPointerException when #getIcon returned null.

    Bug fixLuciadFusion

    TLcdGXYStampLabelPainter: the interactive label system now uses the proper mode constants to retrieve label bounds and check whether a label is touched.

    Bug fixReal-time Engine

    LMAP-3075
    TLcdContinuousDeclutteringLabelPainter: after deleting all objects, it was still possible to re-select them. If at least one object wasn't deleted, this didn't occur.

    Bug fixAviation Standards

    LMAP-3074
    Enhancement LMAP-3052 introduced an issue in the clone behavior of TLcdDiscretizedLonLatGeoPath, which could lead to a NullPointerException when using a clone.

    8.2.17

    ImprovementLuciadFusion

    TLcdOWSHttpTransport#configureConnection now sets the connection request property 'Accept-Encoding' to 'gzip, deflate, compress', allowing OGC Web Services to send compressed data.

    ImprovementAviation Standards

    LMAP-3052
    The implementation of TLcdDiscretizedLonLatGeoPath has been made more memory-efficient, resulting in significant savings for airspace data (typically around 30%).

    8.2.16

    ImprovementReal-time Engine

    LMAP-3063
    TLcdSimulator now has an overridable method #currentTime, allowing you to synchronize the clock of the simulator to an external clock (such as, for example, an audio feed).

    Bug fixLuciadFusion

    LMAP-3065
    ALcdGXYPen#drawLineWithArrow did not draw the arrow anymore since enhancement 6690.

    Bug fixLuciadFusion

    LMAP-3064
    TLcdSHPModelDecoder used to trim both the leading and the trailing spaces from the string features. This has been corrected - only the trailing spaces are now trimmed.

    8.2.15

    ImprovementLuciadFusion

    LMAP-3047
    All implementations of ILcdISO19103UnitOfMeasure (for example TLcdDistanceUnit, TLcdSpeedUnit) now have public constructors that allow to create additional units, next to the predefined constants.

    ImprovementLuciadFusion

    The sample code method SelectControllerModelSW.applySelection is now compatible with modifications of selectHowMode that return SELECT_HOW_CHOOSE | SELECT_HOW_FIRST_TOUCHED.

    ImprovementAviation Standards

    LMAP-2982
    The list of supported geodetic datum codes from the ARINC-424 specification has been increased significantly. The full list of supported codes can be found in the ARINC Developer's Guide.

    ImprovementMaritime Standards

    LMAP-3051
    The TLcdS57ModelDecoder can now handle vector records in which the VRPT-SG2D field order has been switched.

    Bug fixLuciadFusion

    LMAP-3054
    TLcdGXYLayerLabelPainter and TLcdGXYViewLabelPainter now also perform decluttering when only a layer's selection is labeled.

    Bug fixLuciadFusion

    Calling TLcdGXYLayerLabelPainter#setQuality no longer resets other properties of the painter.

    Bug fixLuciadFusion

    LMAP-3045
    Under certain projections, GeoTIFF rasters covering the entire world (eg. ETOPO 1) were not displayed at all. This has been fixed.

    Bug fixMaritime Standards

    LMAP-3050
    The TLcdS57ModelDecoder has been adapted to be able to handle multiple FSPT records in one feature record.

    Upgrade considerationLuciadFusion

    LMAP-3055
    TLcdGXYLayer now always calls the layer label painter for the labels paint mode, even if the layer is not labeled, allowing consistent decluttering that also works for selections. If you implement ILcdGXYLayerLabelPainter, make sure you check your layer's isLabeled() property.

    8.2.14

    Bug fixLuciadFusion

    The ElseFilter did not work properly in all cases after the performance improvements of the SLD painter evaluation (see LMAP-2976).

    Bug fixDatabase Connectors

    LMAP-3043
    Geodetic rasters defining a non-zero rotation were resulting in incorrect raster bounds. This has been fixed.

    Bug fixReal-time Engine

    TLcdSimulator no longer keeps a reference to the previous track models when the simulator model is set to 'null'.

    Bug fixDefense Symbology

    LMAP-3041
    The predefined affiliation feature in TLcdEditableMS2525bObject, accessible through getFeature(1), did not support the new affiliations introduced by the Change 1 update. For these affiliations, null was returned.

    8.2.13

    ImprovementMaritime Standards

    Support for the AML object and attribute catalogue has been upgraded to v3.0.1.

    Bug fixLuciadFusion

    LMAP-3031
    TLcdGXYBoundsPainter: large bounds were painted incorrectly using a geodetic pen.

    Bug fixLuciadFusion

    LMAP-3032
    TLcdFeaturedShapeList: #hashCode no longer assumes that none of the feature values is null.

    Bug fixLuciadFusion

    LMAP-3011
    Some sample layers did not set a geodetic pen when using a geodetic model.

    Bug fixLuciadFusion

    LMAP-3009
    TLcdGXYLayer could cause a NullPointerException when #getBounds would indirectly call #paint.

    8.2.12

    ImprovementLuciadFusion

    Updated the TLcdEarthTileRepositoryPreprocessor to use multiple threads for improved preprocessing performance. There are also a few new utility TileSet's to support concurrency.

    ImprovementAviation Standards

    LMAP-3022
    The ARINC handlers have been enhanced to reduce memory when loading large ARINC datasets.

    Bug fixLuciadFusion

    LMAP-3029
    Fixed bad LOD choice in 3D painters when using FOV to zoom.

    Bug fixLuciadFusion

    LMAP-3024
    The class TLcdOWSHttpTransport, used in the OGC client API to communicate with an OGC server, did not support the HTTPS protocol.

    Bug fixLuciadFusion

    LMAP-3023
    Added missing getters for the properties of the TLcdEarthGXYRasterPainter.

    8.2.11

    ImprovementLuciadFusion

    LMAP-2924
    Added support for tiles containing images with an alpha channel

    Bug fixLuciadFusion

    Added support for terrains with non-geodetic model references

    8.2.09

    ImprovementLuciadFusion

    The EPSG codes 3785 and 4055 used by Google Earth and Microsoft Virtual Earth are now supported.

    8.2.08

    ImprovementLuciadFusion

    The list of supported EPSG codes has been updated. Most notably, it now includes codes 3785 and 4055 used by Google Earth and Microsoft Virtual Earth.

    ImprovementLuciadFusion

    LMAP-2976
    The performance of SLD rule painter evaluation, when configured with both an OGC filter and scale range, has been improved.

    Bug fixLuciadFusion

    TLcdInputStreamUtil: The skipAll method could cause an endless loop when trying to skip more than the available bytes.

    Bug fixLuciadFusion

    LMAP-2993
    TLcdEarthTerrainRepositoryModelDecoder now provides a friendlier error message if it cannot find usable terrain geometry or texture coverages in the repository that's being decoded.

    Bug fixLuciadFusion

    LMAP-1352
    The result of the ILcdPolygon.contains2D test was incorrect for polygons covering the North Pole. This has been fixed.

    Bug fixLuciadFusion

    LMAP-2994
    TLcdGXYTextPainter: the protected method "setupGraphicsForText" is now called just before drawing the text.

    Bug fixAviation Standards

    LMAP-3002
    TLcdARINCEnrouteAirwayHandler: the handler used to create duplicate and incorrect route segments.

    8.2.07

    ImprovementLuciadFusion

    LMAP-2992
    TLcdGeoTIFFModelDecoder now handles spurious tie point tags and transformation matrix tags in a more resilient way.

    ImprovementLuciadFusion

    LMAP-2992
    TLcdGeoTIFFModelDecoder now supports the GRS 1980 geodetic datum.

    Bug fixLuciadFusion

    LMAP-1264, LMAP-2989
    TLcdFeaturedPolygonGXYLayerCodec: did not render TLcdComplexPolygon's correctly.

    Bug fixLuciadFusion

    LMAP-2890
    TLcdGXYEllipsePainter: the ellipse center could not be snapped to other points anymore.

    Bug fixLuciadFusion

    LMAP-2311
    TLcdGXYOverviewController no longer logs a failure when a rectangle was dragged that fell outside of the world bounds.

    Bug fixLuciadFusion

    LMAP-2130
    TLcdGXYTextPainter now takes it set margin into account. The default margin is now 0, in order to maintain the same visual results as before.

    Bug fixLuciadFusion

    LMAP-2980
    TLcdEllipsoid.rhumblinePointSFCT now handles correctly an azimuth that is very close to 90 or 270 degrees.

    Bug fixLuciadFusion

    LMAP-2366
    The documentation of ILcdGXYPainter#isTouched has been clarified with respect to the SELECTION render mode.

    Bug fixAviation Standards

    LMAP-2991
    TLcdARINCEnrouteAirwayHandler did not correctly decode enroute airways with multiple segments.

    Bug fixAviation Standards

    TLcdARINCControlledAirspaceHandler did not always correctly determined the airspace classification.

    Bug fixAviation Standards

    LMAP-2986
    TLcdARINCControlledAirspaceHandler did not always correctly calculated the unique identifier for decoded airspaces, causing a misinterpretation in some cases. To fix this, the airspace classification ILcdARINCAirspaceFeature.CLASS is now taken into account for the unique identifier.

    8.2.06

    ImprovementLuciadFusion

    LMAP-2161
    The SHP model decoder now decodes features of large integer types (Long or BigInteger), as well as Boolean and Date. The SHP model encoder now encodes the following new feature types: Long, BigInteger, Boolean. Doubles are now encoded as binary. Feature types that are not supported by the DBF format are encoded as Strings.

    Bug fixLuciadFusion

    Bug fix LMAP-2559 caused ALcdGXYPen to print debugging messages.

    Bug fixAviation Standards

    TLcdProcedure3DGeometryCalculator would in some cases try to descend to altitude 0 during the last leg of a procedure, without taking into account the minimum and maximum altitudes set in the procedure leg. This has now been corrected.

    8.2.05

    ImprovementAviation Standards

    The procedure legs of SID/STAR/IAP procedures decoded by TLcdARINCProcedureHandler now contain the transition identifier (see ILcdProcedureLeg#getTransitionIdentifier).

    ImprovementAviation Standards

    The designator of SID/STAR/IAP procedures decoded by TLcdARINCProcedureHandler is now also available through ILcdProcedure#getDesignator instead of only via ILcdFeatured implementations of ILcdProcedure.

    Bug fixLuciadFusion

    LMAP-1660
    In some circumstances, snapping stopped working while creating polylines. This also affected the ruler controller.

    Bug fixLuciadFusion

    LMAP-2559
    The implementation of the clone methods of the pen classes has improved.

    Bug fixLuciadFusion

    LMAP-2904
    ToolBarSW: automatically generating disabled icons for its buttons now also works with a Swing Icon (only worked with ILcdIcon), this fixes a ClassCastException in APP6A and MS2525b samples.

    8.2.04

    Bug fixAviation Standards

    TLcdARINCFIRUIRHandler now supports FIR/UIR airspaces that have the same identifier, address and type, but two or more geographical areas. These are now decoded as separate airspace objects, one for each geographical area. In the past, they were represented as one airspace object with an incorrect geometric boundary.

    To distinguish airspaces with multiple geographical areas, a new identifier ILcdARINCAirspaceFeature.PART_IDENTIFIER has been added to the unique list of features maintained by TLcdARINCFIRUIRHandler.

    8.2.03

    Bug fixLuciadFusion

    LMAP-2966
    The GeoTIFF model decoder handles more robustly rasters that cross the 180 degrees meridian.

    Bug fixLuciadFusion

    TLcdEarthTileRepository left a file handle open.

    8.2.02

    ImprovementLuciadFusion

    LMAP-2886
    TLcdWFSClient now automatically detects service exception reports coming from an OGC web service, in case the content type is not defined.

    ImprovementLuciadFusion

    LMAP-2886
    TLcdWCSClient now automatically detects service exception reports coming from an OGC web service, in case the content type is not defined.

    ImprovementLuciadFusion

    LMAP-2413
    The SHP model decoder has improved support for decoding string features containing non-latin characters.

    ImprovementLuciadFusion

    TLcdGXYAsynchronousViewLabelPainterWrapper now avoids unnecessary view repaints while asynchronous layers are being painted.

    ImprovementLuciadFusion

    LMAP-2945
    A new method setHaloPinEnabled in TLcdGXYStampLabelPainter enables the halo effect for label pins.

    Bug fixLuciadFusion

    LMAP-2965
    The default input stream factories now open files in a more efficient way on Windows.

    Bug fixLuciadFusion

    LMAP-2943
    TLcdEarthRepository#dispose() now works correctly when the thread has been interrupted.

    Bug fixLuciadFusion

    LMAP-2961
    A bug in the halo rendering algorithm, causing the halo to become invisible when printed at a resolution higher than 72 DPI, was fixed.

    Bug fixLuciadFusion

    LMAP-2959
    The ILcdGXYView implementations used to fire a TLcdViewInvalidationEvent when a pan operation was ignored because of an empty pan delta.

    Bug fixLuciadFusion

    LMAP-1430
    TLcdUTMZonePainter: the labels of the main zones now follow the angles of the parallels, making them usable on a rotated map and on other projections.

    Bug fixLuciadFusion

    LMAP-2307, LMAP-822
    TLcdGXYViewFitAction's results for non-bounded models have been improved.

    Bug fixLuciadFusion

    LMAP-505
    In some cases, TLcdGXYFitGXYViewFromXYWorldBounds#fitGXYViewFromXYWorldBounds would set an infinite or zero scale on the view.

    Bug fixLuciadFusion

    LMAP-2871
    Added a workaround for JDK regression 6789982 that caused the wrong selection rectangle to appear when dragging on the map after opening a popup menu. The incomplete drag operation is now ignored.

    Bug fixLuciadFusion

    Some tileset implementations threw a null pointer exception when calling isFormatSupported with a format that had no class.

    Bug fixWeather & Environment Standards

    LMAP-2963
    com.luciad.format.grib.gxy.TLcdGRIBWindIcon now draws filled squares for wind speeds over 100 knots.

    Bug fixWeather & Environment Standards

    LMAP-2960
    com.luciad.format.grib.gxy.TLcdGRIBWindIcon now draws correctly oriented wind barbs for GRIB data with a direction/strength parameterization.

    Upgrade considerationLuciadFusion

    LMAP-2873
    The getBounds method of TLcdGXYLayer did not respect the mode argument. To obtain the same result as before, the passed argument should be ILcdGXYLayer.ALL | ILcdGXYLayer.BODIES.

    8.2.01

    ImprovementAviation Standards

    The class com.luciad.ais.shape.TLcdDiscretizedLonLatGeoPath has been made more robust to correctly handle airspace segments of type ARC that are very small.

    Bug fixLuciadFusion

    LMAP-2852
    TLcdListLayout now picks a better default value for its component height.

    Bug fixLuciadFusion

    LMAP-2929
    TLcdMultilevelGridCoordinateModel#elementChanged would sometimes throw an exception.

    Bug fixLuciadFusion

    LMAP-2921
    The implementation of the indexOf() method in the GML feature collection implementation now returns -1 instead of throwing an IndexOutOfBoundsException, as specified in ILcdIntegerIndexedModel.

    Bug fixLuciadFusion

    LMAP-2904
    ToolBarSW: now adds disabled icons for its buttons, for example used by the undo sample

    Bug fixLuciadFusion

    LMAP-2867
    LonLatHippodrome has a new constructor taking an ellipsoid as argument.

    Bug fixLuciadFusion

    LMAP-2891
    GXYHippodromePainter now correctly translates a hippodrome when moving multiple objects.

    Bug fixLuciadFusion

    LMAP-2898
    TLcdGXYAsynchronousLayerWrapper used to fire selection events before applying the actual selection changes.

    Bug fixAviation Standards

    LMAP-2897
    An issue has been fixed in the class com.luciad.ais.shape.TLcdDiscretizedLonLatGeoPath that sometimes resulted in an incorrect discretized geometry for airspace segments of type ARC_BY_EDGE.

    Bug fixDefense Symbology

    An issue has been fixed in the MIL-STD 2525b and APP-6A symbol customizers, TLcdMS2525bObjectCustomizer and TLcdAPP6AObjectCustomizer, that prevented to implement a custom layout by overriding the method insertCustomizers(int aID[], Customizer aCustomizer[]). Furthermore, the tabbed pane is now removed automatially from the customizer if one of the two tabs (Graphics or Text) is not available.

    Bug fixMaritime Standards

    LMAP-2920
    A problem with the reading of ISO 8211 input streams containing field terminator characters as content of string subfields was fixed.

    8.2

    ImprovementLuciadFusion

    ILcdGXYEditor capabilities were added. In case of ambiguity, the first available editor is chosen, which works well for simple SLD files where only one symbolizer is available for a given map scale.

    ImprovementLuciadFusion

    LMAP-2827
    ALcdGXYPen: the performance of adaptively drawing lines has been improved in case that the end points fall outside the projection domain.

    ImprovementLuciadFusion

    TLcdXMLName now has extra methods for conversion of a TLcdXMLName to a QName and vice versa.

    ImprovementLuciadFusion

    A new class TLcdWFSModelDecoderDecorator has been introduced, which serves as a default implementation of ILcdWFSModelDecoder. It can be used out-of-the-box to support GetFeature responses that use GML 2.1.2 and GML 3.1.1 , but it can also be extended to support other output formats.

    ImprovementLuciadFusion

    TLcdGXYClippingPainterWrapper is a new wrapper for ILcdGXYPainters which applies a clip to the Graphics prior to invoking the wrapped painter. This can be used to clip away unwanted parts of a model, for example from a raster model that contains some blank areas around its borders.

    ImprovementLuciadFusion

    TLcdGXYEditControllerModel2: the user-visible Strings created by this controller model can now be translated by setting an ILcdStringTranslator on the controller model.

    ImprovementLuciadFusion

    LMAP-2865
    TLcdGXYEditController and TLcdGXYEditController2: the undoables generated by the ILcdGXYEditors no longer need to fire the model change events. The edit controller now takes care of this. This allows for better composition of editors, as the ILcdGXYEditors no longer have to assume that the object they are editing is actually contained in the given model.

    ImprovementLuciadFusion

    TLcdAltitudeFormat, TLcdDistanceFormat, TLcdSpeedFormat: parsing now accepts values that are entered in another unit as the display unit. If for example the parser is set to km, it also accepts "500m", which is parsed to 0.5km.

    ImprovementLuciadFusion

    LMAP-2692
    The sample-specific controllers of the following samples now have mouse-wheel support:
    • create and edit with mouse
    • hippodrome painter
    • tooltips on the map
    • magnetic north sample
    • multigrid samples
    • projections sample

    ImprovementLuciadFusion

    The WFS client API has been extended with new functionality to connect with a WFS service:
    • A new class TLcdWFSClient has been introduced that facilitates direct communication with a WFS service, by offering functionality to create and send custom requests, and interpreting their result.
    • Requests are modeled by the new interface ILcdOWSRequest, of which three default implementations exist to represent the mandatory WFS requests: TLcdWFSGetCapabilitiesRequest, TLcdWFSDescribeFeatureTypeRequest and TLcdWFSGetFeatureRequest.
    • The result of a GetCapabilities request is modeled by a TLcdWFSCapabilities object, as before; the result of a DescribeFeatureType and GetFeature request is modeled by TLcdOWSInputStream. This new class is an extension of InputStream with the addition of a content type property and some metadata.
    • To allow control over the communication platform used to connect with a service, a new interface ILcdOWSTransport has been introduced. This interface is used by TLcdWFSClient for its communication. A default implementation TLcdOWSHttpTransport exists with support for the HTTP protocol.
    The existing API that defines the concept of a proxy model now makes use of the newly introduced TLcdWFSClient class: when creating a proxy model through TLcdWFSProxyModelFactory, a TLcdWFSClient can be set to fully configure the mechanism used to communicate with a WFS service.

    ImprovementLuciadFusion

    The WCS client API has been extended with new functionality to connect with a WCS service:
    • A new class TLcdWCSClient has been introduced that facilitates direct communication with a WCS service, by offering functionality to create and send custom requests, and interpreting their result.
    • Requests are modeled by the new interface ILcdOWSRequest, of which three default implementations exist to represent the mandatory WCS requests: TLcdWCSGetCapabilitiesRequest, TLcdWCSDescribeCoverageRequest and TLcdWCSGetCoverageRequest.
    • The result of a GetCapabilities request is modeled by a TLcdWCSCapabilities object, as before; the result of a DescribeCoverage request is modeled by a TLcdWCSCoverageDescription object and the GetCoverage request by a TLcdOWSInputStream. TLcdOWSInputStream is an extension of InputStream with the addition of a content type property and some metadata.
    • To allow control over the communication platform used to connect with a service, a new interface ILcdOWSTransport has been introduced. This interface is used by TLcdWCSClient for its communication. A default implementation TLcdOWSHttpTransport exists with support for the HTTP protocol.
    The existing API that defines the concept of a proxy model now makes use of the newly introduced TLcdWCSClient class: when creating a proxy model through TLcdWCSProxyModelFactory, a TLcdWCSClient can be set to fully configure the mechanism used to communicate with a WCS service.

    ImprovementLuciadFusion

    LMAP-2830
    A new factory method createModelProvider() has been introduced in ALcdOGCWFSCommandDispatcherFactory, which is used to create an ILcdOGCModelProvider. This allows to create custom ILcdOGCModelProvider implementations to load data at the server.

    ImprovementLuciadFusion

    TLcdMIFModelEncoder now also has a protected method (write2DText) for encoding text shapes.

    ImprovementLuciadFusion

    The performance of TLcdRenderedImageTile has been improved for warping scenario's. This tile is typically used when drawing GeoTIFF, TFW, JGW, and TAB files.

    ImprovementLuciadFusion

    The new package com.luciad.util.altitude contains an abstract mechanism for point-sampled access to altitude/elevation data. The main interface in this new package is ILcdAltitudeProvider. This functionality was previously only available in the TEA Industry Specific Component.

    ImprovementLuciadFusion

    The new Earth Additional Component (located in package com.luciad.earth) introduces support for global high-resolution 3D terrain. The Additional Component provides support for preprocessing raster and elevation data into a 3D terrain database, as well as painters and other tools to work with such terrain databases. Please refer to the developer guide for an introduction to this Additional Component.

    Bug fixLuciadFusion

    LMAP-2797
    TLcdGXYAsynchronousPaintQueue: a deadlock could occur when asynchronous painting tried to access the asynchronous view's getGraphics method.

    Bug fixLuciadFusion

    Some input streams were not closed when an exception occured during XML decoding. This has been fixed now.

    Bug fixLuciadFusion

    LMAP-2838
    TLcdWKTModelReferenceDecoder now supports the geodetic datum "D_North_American_1983".

    Bug fixLuciadFusion

    LMAP-2887
    The uom attribute of the GML MeasureType is now decoded/encoded as an unqualified attribute as specified in the GML standard, instead of a qualified attribute.

    Bug fixLuciadFusion

    LMAP-2879
    TLcdColorMapCustomizer: The set ILcdStringTranslator was not used for tool tips of the buttons.

    Bug fixLuciadFusion

    LMAP-2874
    A new protected method paintPin allows to customize TLcdGXYStampLabelPainter's label pin.

    Bug fixLuciadFusion

    LMAP-2872
    TLcdGXYDensityLayer now correctly handles 16-bits IndexColorModels.

    Bug fixLuciadFusion

    LMAP-2848
    The XML Schema reference in a response to a WFS 1.1.0 GetFeature request now refers to a WFS 1.1.0 DescribeFeatureType request instead of a request for version 1.0.0.

    Bug fixLuciadFusion

    LMAP-2845
    The XML Schema response to a WFS 1.1.0 DescribeFeatureType request now refers to the GML 3.1.1 XML schemas instead of to the GML 2.1.2 XML schemas.

    Bug fixLuciadFusion

    TLcdMIFModelEncoder and TLcdMIFModelDecoder now properly handle text spanning multiple lines.

    Bug fixDatabase Connectors

    Corrected the recently improved UPDATE statements.

    Bug fixDatabase Connectors

    Corrected the recently improved UPDATE statements.

    Bug fixTerrain Analysis Engine

    LMAP-2857
    TLcdLOSPropagationFunctionFixedHeight: the propagation now returns a correct result when both the minimum and maximum vertical angles are larger than 90 degrees.

    Bug fixAviation Standards

    A custom ALcdAISObjectFactory configured on the ARINC handler for Procedure records through TLcdARINCProcedureHandler#setDomainFactory was not used for all decoded procedures.

    Bug fixDefense Standards

    LMAP-2866
    A NullPointerException thrown by the TLcdVPFLibrary constructors is fixed now.

    Bug fixRadar Connectors

    LMAP-2880
    TLcdASDIFileReplayInputStream: no longer throws IOExceptions due to 'Pipe not connected' errors.

    Bug fixRadar Connectors

    LMAP-2881
    TLcdASTERIXFinalReplayInputStream: no longer throws IOExceptions due to 'Pipe not connected'

    Upgrade considerationLuciadFusion

    The use of com.luciad.format.xml.TLcdXMLName in the WFS client API has been removed in favor of javax.xml.namespace.QName, which is the Java equivalent of this class. This affects the following classes and methods:
    • TLcdWFSProxyModelFactory#createProxyModel()
    • TLcdWFSProxyModelDescriptor#getFeatureTypeName() and constructor
    • TLcdWFSProxyModel#setGeometryPropertyName() and getGeometryPropertyName()
    • TLcdWFSFeatureType#setName() and getName()
    The methods TLcdWFSFeatureType#setNameSpacePrefix() and getNameSpacePrefix() have been removed, because the prefix information is already contained in the QName object.

    Implementations can easily upgrade by replacing 'TLcdXMLName.getInstance("namespace", "localPart")' with 'new QName("namespace", "localPart")', or by invoking TLcdXMLName#asQName on an existing TLcdXMLName instance.

    Although QName is only available since JDK 1.5, a backport library ws-commons-java5-1.0.1.jar is provided with LuciadMap to have it also in JDK 1.4.

    Upgrade considerationLuciadFusion

    The WCS client API no longer enforces to represent GetCoverage responses as java.awt.image.RenderedImage objects; instead, they are now modeled as a generic tile (ILcdTile), to allow support for responses that can not be converted to an image. For this purpose, the interface ILcdWCSCoverageDecoder has been replaced with ILcdWCSCoverageTileDecoder. The class TLcdWCSProxyModelFactory has been updated accordingly, and now accepts ILcdWCSCoverageTileDecoder implementations to support other formats than the default format (GeoTIFF).

    Existing implementations of ILcdWCSCoverageDecoder need to converted to the new interface, which can be done by wrapping the RenderedImage in a TLcdRenderedImageTile. Consequently, this might require an update when TLcdWCSProxyModelFactory#createProxyModel is used.

    Upgrade considerationLuciadFusion

    The interface com.luciad.ogc.common.ILcdKVPRequest, used by the WFS and WCS server to represent a key-value pair request, has been extended with a new method getParameterNames(). It returns a list of all the parameters that are specified in the request. Although unlikely, this change requires an update if there are custom implementations of this interface.

    Upgrade considerationLuciadFusion

    LMAP-2723
    To allow a WFS Server implementation to serve data without geometry, the WFS Server API no longer enforces the use of ILcd2DBoundsIndexedModel when decoding models. The API is now compatible with regular ILcdModel implementations, so that implementations like TLcdVectorModel can be used that do not require objects to have a geometric extent.

    To be able to support this, the return type of the following methods is now ILcdModel instead of ILcd2DBoundsIndexedModel:
    • ILcdOGCModelProvider#getModel,
    • ILcdWFSFilteredModelFactory#createFilteredModel,
    • TLcdWFSFilteredModelFactory#createFilteredModel.
    This might require an update, if there are explicit dependencies on the previous return type.

    8.1

    8.1.14

    ImprovementLuciadFusion

    LMAP-2818
    The database package now has improved connection pooling when using pooling JDBC drivers like Proxool. Connections are now also pooled across models that access different tables and columns, whenever possible.

    Bug fixLuciadFusion

    LMAP-2661
    The database package no longer opens an unnecessary additional database connection per requested connection (bug present since version 8.1). This mainly affected connection pooling with JDBC drivers like Proxool.

    Bug fixDatabase Connectors

    LMAP-2859
    The database package no longer opens an unnecessary additional database connection per requested connection (bug present since version 8.1). This mainly affected connection pooling with JDBC drivers like Proxool.

    Bug fixDatabase Connectors

    LMAP-2859
    The database package no longer opens an unnecessary additional database connection per requested connection (bug present since version 8.1). This mainly affected connection pooling with JDBC drivers like Proxool.

    Bug fixDatabase Connectors

    LMAP-2859
    The database package no longer opens an unnecessary additional database connection per requested connection (bug present since version 8.1). This mainly affected connection pooling with JDBC drivers like Proxool.

    Bug fixDatabase Connectors

    LMAP-2859
    The database package no longer opens an unnecessary additional database connection per requested connection (bug present since version 8.1). This mainly affected connection pooling with JDBC drivers like Proxool.

    8.1.13

    ImprovementLuciadFusion

    LMAP-2846
    View label painter exceptions are now handled and logged in a similar way as paint exceptions.

    ImprovementInfrastructure Standards

    LMAP-2841
    com.luciad.format.dgn.TLcdDGNModelDecoder has been fixed to handle some types of multi-lines correctly.

    Bug fixLuciadFusion

    LMAP-2811
    If a model object was removed while being displayed on the select controller's popup menu, the object could temporarily reappear when selected.

    Bug fixLuciadFusion

    LMAP-2853
    TLcdGXYAsynchronousPaintQueue is now more resilient to painting exceptions.

    Bug fixLuciadFusion

    LMAP-2661
    TLcdDefaultVVGridRenderer#getOrdinateLabelWidth now also considers the label grid font.

    Bug fixLuciadFusion

    LMAP-2840
    TLcdGXYCirclePainter: used to thrown a NullPointerException when clone was called and its properties 'pointFormat' or 'distanceFormat' were null.

    Bug fixLuciadFusion

    LMAP-2839
    TLcdGXYLayer now fires property change events for the property labelsEditableSupported.

    Bug fixLuciadFusion

    LMAP-2839
    TLcdGXYLayer now fires property change events for the properties labeledSupported and editableSupported.

    Bug fixLuciadFusion

    LMAP-2734
    Clarified TLcdGXYFeaturedPolylineLabelPainter's javadoc, stating that the class also labels featured ILcdShapeLists containing a point list as the first element.

    Bug fixLuciadFusion

    LMAP-2834
    GXYHippodromePainter now uses the hippodrome itself to determine the latter's creation state.

    Bug fixLuciadFusion

    LMAP-2835
    LonLatHippodrome and XYHippodrome (samples.gxy.hippodromePainter) used to call clearCache too late

    Bug fixLuciadFusion

    LMAP-2804
    TLcdGXYLabelPainter and halo-using painters no longer hold strong references to model objects, solving possible memory leaks. Also, they now cache information using the model object's identity.

    Bug fixDatabase Connectors

    LMAP-2820
    Multipoints are now correctly encoded and decoded.

    Bug fixDefense Standards

    LMAP-2843
    TLcdNITFModelDecoder now correctly decodes multiple Tagged Record Extensions in image segments.

    Bug fixDefense Symbology

    LMAP-2856
    The MIL-STD 2525b and APP-6A symbol customizers, TLcdMS2525bObjectCustomizer and TLcdAPP6AObjectCustomizer, did not correctly reflect the credibility rating for the modifier 'Evaluation Rating': values 0 - 5 were used instead of 1 - 6.

    Bug fixDefense Symbology

    Invoking setObject on TLcdMS2525bObjectCustomizer or TLcdAPP6AObjectCustomizer immediately after a PropertyChangeEvent was received resulted in a StackOverException in some cases.

    8.1.12

    ImprovementLuciadFusion

    The EPSG resources are updated to EPSG database v6.17.

    ImprovementLuciadFusion

    TLcdDatabaseGXYPainterProvider.java now also provides a painter for point lists.

    Bug fixLuciadFusion

    LMAP-2837
    A bug in the resolving of XML schema substitution groups has been fixed. Classes using the substitution group mechanism (TLcdXMLTypedElementReaderProvider, TLcdXMLTypedElementAdapterProvider, ...) now resolve substitutions correctly.

    Bug fixLuciadFusion

    LMAP-2690
    If a model is changed in a non-awt thread, the associated asynchronous layer now repaints correctly.

    Bug fixDefense Standards

    LMAP-2735
    ILcdVPFFeature.getVPFFeatureClassEntry() always returned 0 for area features. This has been fixed.

    8.1.11

    ImprovementLuciadFusion

    The default implementation of ILcdWFSModelDecoder, which is used by TLcdWFSProxyModelFactory, has been made more robust: it can now interpret both WFS 1.0.0 and 1.1.0 service exception reports, regardless of the version being used by the initial request.

    Bug fixLuciadFusion

    LMAP-2829
    The OGC filter encoder classes provided by TLcdOGCFilterElementAdapterProvider10 (OGC filter 1.0) and TLcdOGCFilterElementAdapterProvider11 (OGC filter 1.1) now encode ILcdPoint shapes inside a TLcdOGCBinarySpatialOperator to GML Points instead of GML Envelopes.

    Bug fixLuciadFusion

    LMAP-2813
    SLD now also supports TLcdLonLatHeightBuffer objects, which used to throw a ClassCastException.

    Bug fixLuciadFusion

    A bug in TLcdXMLElement.getContentCount(TLcdXMLName) was fixed.

    Bug fixReal-time Engine

    LMAP-2825
    TLcdSimulatorModelList: did not set the date of newly added ILcdSimulatorModel's, leaving it in an inconsistent state: not all sub-models necessarily had the same date.

    8.1.10

    ImprovementLuciadFusion

    LMAP-2824
    TLcdNIMA8350GeodeticDatumFactory now supports the datum string NORTH_AMERICAN_1983 and derivatives.

    Bug fixLuciadFusion

    LMAP-2826
    TLcdFeaturedShapeList.equals() no longer throws a NullPointerException if one of the features in the shapelists to be compared is null.

    Bug fixLuciadFusion

    LMAP-2821
    The contains3D methods of TLcdXYZPolygon and TLcdLonLatHeightPolygon are improved; they used to return true if and only if a point was located on one of the edges of the polygon. They now also return true for points inside the polygon (using a contains2D test), given that the z value of the point lies within the z-range of the polygon's bounds.

    Bug fixLuciadFusion

    LMAP-2822
    TLcdLonLatHeightPolygon.getBounds() now computes its bounds assuming geodetic lines between its points, instead of cartesian lines.

    Bug fixLuciadFusion

    LMAP-2674
    Models produced by TLcdMultilevelTiledModelDecoder suffered from a race condition when the same MTM model was used in multiple layers. The issue has been fixed by synchronizing access to the model decoder in TLcdSoft2DBoundsIndexedModel.

    Bug fixLuciadFusion

    LMAP-2815
    TLcdSelectionSupport now avoids an endless loop when a selection listener calls fireCollectedSelectionChanges().

    Bug fixLuciadFusion

    TLcdGXYDragRectangleController: XOR-mode painting has been disabled by default, to avoid performance problems with Sun's recent graphics pipeline implementations.

    Bug fixLuciadFusion

    LMAP-2780
    TLcdGXYDragRectangleController: the method to deactivate the XOR mode paint functionality is no longer deprecated. Instead, a new alternative for the XOR mode has been added: halo painting.

    Bug fixDefense Standards

    LMAP-2800
    TLcdUSRPModelDecoder now accepts .IMG and .SOU extensions, instead of the more restrictive 01.IMG and 01.SOU.

    8.1.09

    ImprovementAviation Standards

    LMAP-2814
    The procedure trajectory class com.luciad.ais.model.procedure.TLcdProcedureTrajectory now uses a more efficient way to store the calculated geometry of a procedure. This results in a reduction of the memory needed to load a procedure. Furthermore, the geometrical representation is now stored using java.lang.ref.SoftReference objects, allowing the geometry to be garbage-collected when memory is running low. This avoids throwing OutOfMemoryErrors at runtime when loading large procedure datasets.

    Bug fixLuciadFusion

    LMAP-2823
    TLcdGXYViewJPanelLightWeight would send out view invalidation events on every repaint when in DISABLE_CACHING mode.

    Bug fixLuciadFusion

    LMAP-2683
    TLcdEllipsoid.rhumblinePoint now handles robustly the case when the start point is the South Pole.

    Bug fixLuciadFusion

    LMAP-2674
    Models produced by TLcdMultilevelTiledModelDecoder suffered from a race condition when the same MTM model was used in multiple layers. The issue has been fixed by synchronizing access to the model decoder in TLcdSoft2DBoundsIndexedModel.

    Bug fixAviation Standards

    LMAP-2817
    The ARINC handler for Enroute Airway records, TLcdARINCEnrouteAirwayHandler, now initializes the model descriptor TLcdARINCEnrouteAirwayModelDescriptor with the descriptors for the navaids DME, VOR, NDB and TACAN. Before, this was only done for the waypoint and route segment descriptors.

    8.1.08

    Bug fixLuciadFusion

    A bug in the encoding of some UCUM units has been fixed.

    8.1.07

    Bug fixLuciadFusion

    LMAP-2808
    TLcdGeoTIFFModelEncoder (as updated in LMAP-2772) now again properly closes the output streams that it creates.

    Upgrade considerationAviation Standards

    LMAP-2782
    The list of features to uniquely define an object (see ILcdARINCHandler#getKeyFeatureNames) has been updated for the following set of ARINC handlers:
    • TLcdARINCWayPointHandler: ILcdARINCWayPointFeature.IDENTIFIER, ILcdARINCWayPointFeature.ICAO_REGION, ILcdARINCWayPointFeature.REGION_CODE
    • TLcdARINCAerodromeHandler: ILcdARINCAerodromeFeature.IDENTIFICATION, ILcdARINCAerodromeFeature.ICAO_REGION
    • TLcdARINCDMEHandler: ILcdARINCDMEFeature.IDENTIFIER, ILcdARINCDMEFeature.ICAO_REGION, ILcdARINCDMEFeature.NAVAID_CLASS
    • TLcdARINCVORHandler: ILcdARINCVORFeature.IDENTIFIER, ILcdARINCVORFeature.ICAO_REGION, ILcdARINCVORFeature.NAVAID_CLASS
    • TLcdARINCTACANHandler: ILcdARINCTACANFeature.IDENTIFIER, ILcdARINCTACANFeature.ICAO_REGION, ILcdARINCTACANFeature.NAVAID_CLASS
    • TLcdARINCNDBHandler: ILcdARINCNDBFeature.IDENTIFIER, ILcdARINCNDBFeature.ICAO_REGION, ILcdARINCNDBFeature.NAVAID_CLASS
    • TLcdARINCMarkerHandler: ILcdARINCMarkerFeature.AIRPORT_ID, ILcdARINCMarkerFeature.RUNWAY_ID, ILcdARINCMarkerFeature.IDENTIFIER, ILcdARINCMarkerFeature.MARKER_TYPE
    The previous list of features in these handlers did not uniquely define the decoded objects. Because duplicates are ignored, this resulted in too few objects in the decoded models. The handlers TLcdARINCEnrouteAirwayHandler, TLcdARINCHoldingHandler and TLcdARINCProcedureHandler have been updated accordingly, to take into account the new list of features when retrieving an object from one of the decoded models (e.g., a procedure that refers to a waypoint). This results in an improved and more accurate representation of the decoded objects, when previously some referred objects could not be found.

    If there is an explicit dependency on the previous list of features, this might require some implementation changes. For example, if the previous list of features was used as a unique index on the decoded models, it should now be used as a normal index that can return multiple objects instead of only one.

    8.1.06

    ImprovementLuciadFusion

    LMAP-2771
    TLcdGeoTIFFModelEncoder and TLcdGeoTIFFModelDecoder now provide access to TIFF tags.

    ImprovementLuciadFusion

    LMAP-2772
    TLcdGeoTIFFModelEncoder now provides the option to save large (16-bits) color maps along with the images.

    ImprovementLuciadFusion

    Support for ILcdISO19103Measure has been extended with some extra units. The GML decoder and encoder now support the following units (UCUM notation):m,s,g,rad,K,Pa,[nmi_i],[mi_us],[kn_i],[ft_i],deg,gon,Cel,[degF],m/s,km/h,[nmi_i]/s, [ft_i]/min,km and hPa. A bug in the conversion from Celsius to Kelvin units has been fixed.

    Bug fixLuciadFusion

    LMAP-2793
    TLcdGXYAsynchronousPaintQueue: reduced the memory overhead for asynchronously painted labels in combination with a non-zero border factor.

    Bug fixLuciadFusion

    LMAP-2774
    The methods setRequestProperty(String, String) and setEntityLocation(String, URL) in TLcdOGCWMSProxyModelDecoder now also accept null as property value or location value.

    Bug fixLuciadFusion

    LMAP-2698, LMAP-2792
    ALcdGXYSmartController: in some situations, modal dialog windows could cause unwanted pan behavior.

    Bug fixLuciadFusion

    LMAP-2779
    The GML3 model encoder can now encode polygons with 0 points.

    Bug fixLuciadFusion

    LMAP-2758
    TLcdRangeSlider: the range slider no longer chops off large labels and reduces the horizontal slider size to accommodate the labels at the edges.

    Bug fixLuciadFusion

    LMAP-2443
    TLcdGXYEditController2: If an editable label overlaps with a filled object, such as a circle, it now moves the label if both the label and the object are touched (instead of the object).

    Bug fixLuciadFusion

    LMAP-2775
    TLcdRangeSlider: the range slider now always makes sure that a ComponentUI class is available for the range slider.

    Bug fixLuciadFusion

    LMAP-2357
    TLcdGXYShapeListPainter's getCreationClickCount method is now consistent with the edit operation when the list contains more than one shape.

    Bug fixLuciadFusion

    LMAP-2505
    The vertical view sample now auto-adjusts its displayed maximum and minimum grid values.

    Bug fixLuciadFusion

    LMAP-2770
    The UPS grid layer is no longer painted on top of all other layers.

    Bug fixLuciadFusion

    The CADRG decoder sample no longer throws an AccessControlException when run in a browser.

    Bug fixLuciadFusion

    LMAP-2769
    The advanced ruler controller now correctly sets its line style.

    Bug fixAviation Standards

    LMAP-2773
    The class TLcdAIXMDefaultLayerFactory now correctly initializes new layers for empty models.

    Bug fixDefense Symbology

    LMAP-2788
    A bug has been fixed in the ILcdGXYEditor for T-shaped tactical symbols in APP-6A and MIL-STD 2525b (e.g., the 'Clear' symbol), which sometimes resulted in an inaccurate calculation of one of the geometry points.

    8.1.05

    ImprovementLuciadFusion

    A new class, TLcdISO19103MeasureTypeCodeExtension, was added to the API. It provides additional measurement types (currently pressure and temperature) which are not defined by the ISO 19103 standard.

    Bug fixDatabase Connectors

    TLcdGeoRasterModelDecoder now handles GeoRasters in different schemas than the user's schema.

    Bug fixDatabase Connectors

    When updating elements in a database model, the UPDATE statements no longer rewrite the values of the primary feature, since they don't change.

    Bug fixGraph and Routing Engine

    LMAP-2747
    A bug in the polygon creation algorithm of the GDF model decoder was fixed; holes in GDF faces are now decoded correctly.

    Bug fixDefense Symbology

    LMAP-2766
    The rendering of the 'Jamming' ground unit symbol in MIL-STD 2525b and APP-6A (S*G*UUMSEJ*****, 1.X.3.1.2.2.2.1.4) was not correct and has been fixed.

    Bug fixMaritime Standards

    LMAP-2765
    A bug in TLcdS57Line and TLcdS57Area was fixed. This bug resulted in a NullPointerException during painting, when the line and area objects were created by hand (outside the S-57 model decoders).

    Bug fixRadar Connectors

    LMAP-2768
    TLcdASTERIXCategory30: the terminated flag of the track status is now used to determine which messages belong to different flights.

    Bug fixRadar Connectors

    LMAP-2762
    TLcdASTERIXModelDecoder: the decoder now properly handles messages with information of right before midnight, but which were received right after midnight.

    8.1.04

    ImprovementLuciadFusion

    LMAP-2755
    TLcdInterval now implements equals and hashCode.

    ImprovementLuciadFusion

    LMAP-2687
    TLcdAWTPath's clip bounds can now be changed using the Java system properties "com.luciad.view.gxy.TLcdAWTPath.maxOrdinate" and "com.luciad.view.gxy.TLcdAWTPath.minOrdinate". This is especially useful for large views, for example views larger than 4096x4096 pixels.

    ImprovementAviation Standards

    LMAP-2694
    The com.luciad.format.arinc.decoder.TLcdARINCRestrictiveAirspaceHandler now decodes extra features that provide time information. The following features have been added and are decoded by default:
    • Time Code, represented by ILcdARINCAirspaceFeature.TIME_CODE
    • NOTAM, represented by ILcdARINCAirspaceFeature.NOTAM
    • Time Of Operations, represented by ILcdARINCAirspaceFeature.TIME_OF_OPERATIONS
    • Time Of Operations - Time Code, represented by ILcdARINCAirspaceFeature.TIME_OF_OPERATIONS_CODE
    • Time Of Operations - Time Indicator, represented by ILcdARINCAirspaceFeature.TIME_OF_OPERATIONS_INDICATOR
    • Time Of Operations - NOTAM, represented by ILcdARINCAirspaceFeature.TIME_OF_OPERATIONS_NOTAM

    Bug fixLuciadFusion

    LMAP-2751
    TLcdMapLocation now has a correct format LOCATION_DEC_MIN.

    Bug fixLuciadFusion

    LMAP-2763
    TLcdDEMModelDecoder and TLcdDEMTileDecoder now take into account the vertical unit of measure (meters or feet), always returning elevation values in meters.

    Bug fixLuciadFusion

    LMAP-2722
    The GML3 decoder and encoder now support the ILcdISO19103Measure interface. Decoded elements of type gml:MeasureType now implement this interface, and ILcdISO19103Measure implementations can now be encoded to gml:MeasureType elements.

    Bug fixLuciadFusion

    LMAP-2761
    View painting no longer breaks when terminating a TLcdGXYPanController during a mouse drag.

    Bug fixLuciadFusion

    LMAP-2759
    TLcdRangeSlider: used to throw a ClassCastException if labels were turned on, tick spacing was changed, and then model min/max was updated.

    Bug fixLuciadFusion

    LMAP-2757
    TLcdRangeSlider: preferred size was incorrect for vertical orientation.

    Bug fixLuciadFusion

    LMAP-2726
    The ILcdFeaturedDescriptor was only configured for extensions of gml:AbstractFeature, during decoding. It is now configured correctly for all objects.

    Bug fixLuciadFusion

    LMAP-2696
    In some circumstances, changing a vertical view's model could cause an ArrayIndexOutOfBoundsException.

    Bug fixLuciadFusion

    LMAP-2733
    A bug in the conversion of java Date to XML dateTime, date and time during GML3 encoding has been fixed.

    Bug fixLuciadFusion

    A new method, getSchemaType, was added to TLcdGML2ElementNameProvider and TLcdGML3ElementNameProvider, which allows to extend/customize the mapping from Java classes to XML schema types.

    Bug fixLuciadFusion

    LMAP-2697
    XML documents containing multiple prefixes for the same namespaces can now be read correctly.

    Bug fixLuciadFusion

    The gml:coordinates element is now supported within the gml:lineStringSegment element.

    Bug fixAdvanced Raster Services

    LMAP-2749
    TLcdGeoSPOTModelDecoder no longer produces a "FAILED" log message when encountering "SENSOR_GAINS" keys or "SENSOR_OFFSET" keys with multiple values.

    Bug fixDatabase Connectors

    LMAP-2754
    Database models now correctly support 3D geometries, instead of accidentally always trying to encode 2D geometries.

    Bug fixDatabase Connectors

    LMAP-2753
    decoder.oracle.spatial.bat now includes lcd_epsg_resources.jar in the class path, so the sample no longer pops up a windows about missing EPSG resources.

    Bug fixTerrain Analysis Engine

    LMAP-2760
    TLcdP2PCoverageFactory: the methods getFromPointHeightAboveGround and getToPointHeightAboveGround of the created ILcdExtendedPoint2PointIntervisibility object used to return an incorrect value when the corresponding altitude mode in the P2PCoverage is set to ABOVE_GROUND_LEVEL.

    Bug fixTerrain Analysis Engine

    LMAP-2756
    TLcdLOSPropagationFunctionFixedHeight: the propagation now returns a correct result when the maximum vertical angle is set to 180.

    8.1.03

    ImprovementLuciadFusion

    LMAP-2750
    TLcdAltitudeFormat now has two new methods setUnitAlignment and getUnitAlignment in order to handle altitudes that have their display unit names at their left side. This is, for example, useful for the flight level altitude unit.

    ImprovementLuciadFusion

    TLcdVVJPanel's cursor is now automatically moved when the view is filtered.

    ImprovementLuciadFusion

    LMAP-2651
    TLcdVVJPanel now contains two new methods setVerticalCursorPercentage(double aPercentage) and getVerticalCursorPercentage() to move the vertical cursor to any position on the vertical view. The vertical view sample now includes a new controller, VerticalCursorController, that shows how to do this.

    ImprovementDefense Symbology

    LMAP-2748
    An issue has been fixed that caused in some cases an incorrect visualization/editing behavior of curved polygon symbols with an icon (e.g., the MIL-STD 2525b Meteo Training Area symbol).

    Bug fixLuciadFusion

    LMAP-2661
    TLcdDefaultVVGridRenderer#getOrdinateLabelWidth now returns a label width that completely fits the given altitude ordinates.

    Bug fixReal-time Engine

    LMAP-2746
    TLcdSimulatorTimeSlider: this slider can now also work with simulator models whose begin and end date are more than Integer.MAX_VALUE milliseconds apart.

    Bug fixTerrain Analysis Engine

    TLcdP2PCoverage: The method Object.equals( Object ) has been overridden to compare all coverage settings instead of only the object instance. This fix also adds caching support to the ILcdExtendedPoint2PointIntervisibility objects created in the TLcdP2PCoverageFactory.

    Bug fixRadar Connectors

    The "Calculated Track Velocity (Cartesian)" values of category 30 are now read as signed numbers.

    Upgrade considerationLuciadFusion

    TLcdVVJPanel's getVerticalCursorPosition used to return null when the cursor is not exactly positioned on one of the main profile points. This is no longer the case. Please use getVerticalCursorPercentage() to determine the exact position of the vertical cursor.

    8.1.02

    Bug fixDatabase Connectors

    LMAP-2736
    The model decoder now handles correctly table names containing schemas.

    8.1.01

    ImprovementWeather & Environment Standards

    LMAP-2701
    OutlineSHPLayerFactory (sample code) used to use some deprecated code.

    Bug fixLuciadFusion

    LMAP-2705
    TLcdColorMapCustomizer: The "Set all levels" button used to propose the entire interval if only 2 or less levels were present. It now uses the the interval specified by those 2 levels, or the visible interval (getVisibleInterval) if only one level is available.

    Bug fixLuciadFusion

    LMAP-2721
    TLcdGXYStampLabelPainter: used to write fail messages when editing multiple objects amongst which some objects were unlabeled.

    Bug fixDatabase Connectors

    LMAP-2699
    When the user was trying to access geographical tables from a different schema than his own, the metadata associated with that table was not correctly decoded, causing an exception (ORA-13208: internal error while evaluating [window SRID does not match layer SRID] operator). This has been fixed.

    8.1

    ImprovementLuciadFusion

    LMAP-2684
    The OGC filter encoder classes provided by TLcdOGCFilterElementAdapterProvider10 (OGC filter 1.0) and TLcdOGCFilterElementAdapterProvider11 (OGC filter 1.1) now encode TLcdOGCLiteral objects with a value of the type java.util.Date by using the ISO 8601 date/time representation. This representation is used by default throughout various OGC specifications, such as the WFS, GML, WMS, etc. In the past, the toString() implementation of java.util.Date was used, which is not compatible with ISO 8601.

    ImprovementLuciadFusion

    The package com.luciad.format.database now contains an additional interface ILcdDatabaseDecoder2, which extends the existing interface ILcdDatabaseDecoder. If it is implemented, the database model decoder provides improved performance whenever the cache is empty (or has a 0 size). The decoder can then perform queries in a single pass instead of two passes. The optional packages Oracle Locator, Informix Spatial, Informix Geodetic, and PostgreSQL PostGIS already support this improvement.

    ImprovementLuciadFusion

    TLcdContourFinder: these computations now support interrupted threads. The computations now return the intermediate result when the thread, on which they are run, is interrupted.

    ImprovementLuciadFusion

    The vertical view sample's altitude scale for the FLIGHT_LEVEL altitude unit now only shows valid levels based on the Reduced Vertical Separation Minimum (RVSM).

    ImprovementLuciadFusion

    The new package com.luciad.format.reference provides support for various kinds of referencing and rectification of rasters, based on tie points. The raster model decoders TLcdGeoTIFFModelDecoder and TLcdTABRasterModelDecoder now support these pluggable referencing strategies. The new rectification sample illustrates the use of these strategies for interactive rectification of rasters.

    ImprovementLuciadFusion

    TLcdVVLeftRightOffsetRangeSliderJPanel: the slider now listens to changes in the left and right offset of vertical view corresponding to the slider.

    ImprovementLuciadFusion

    TLcdVVJPanel: Support was added to configure the grid levels of the vertical view. More information can be found in the documentation of the interface com.luciad.view.vertical.ILcdVVGridLineOrdinateProvider and the class com.luciad.view.vertical.TLcdVVGridLineOrdinateProviderRVSM.

    ImprovementLuciadFusion

    TLcdStatusInputStreamFactory and TLcdStatusOutputStreamFactory are classes that can conveniently report progress about decoding and encoding operations, for example in combination with ILcdModelDecoder's or ILcdModelEncoder's.

    ImprovementLuciadFusion

    LMAP-2039
    A new class TLcdAngleUnit was added. It provides an implementation of ILcdISO19103UnitOfMeasure for angles.

    ImprovementLuciadFusion

    A new interface ILcdModelFactory was introduced. It is currently primarily used in Lucy.

    ImprovementLuciadFusion

    The implementations of ILcdGXYPen have been made consistent. They now also draw lines and arcs adaptively, resulting in a much better visual quality. The class ALcdGXYPen provides some basic support for all implementations, with two new methods appendParameterizedPath, making use of a new interface ILcdParameterizedPath.

    ImprovementLuciadFusion

    TLcdGXYViewPlanarImage is a new off-screen view, next to the existing TLcdGXYViewBufferedImage. It supports internal tiling, with tiles being computed on the fly, and is therefore better suited for large views.

    ImprovementLuciadFusion

    When the applyOnInteract2DBounds method of TLcdMultilevel2DBoundsIndexedModel is called with precision = 0, the model now uses the most precise submodel if this has an accuracy range starting from 0 (the method used to return without effect in this case).

    ImprovementLuciadFusion

    The elementsChanged method of TLcdModelList now only generates one event for all changes, instead of an event for each change.

    ImprovementLuciadFusion

    The ALcdModel class now implements all methods from ILcdModel, except for the elements() method. All methods for modifying the model (addElement, removeElement, ...) throw an UnsupportedOperation by default.

    ImprovementLuciadFusion

    Constants for the fire event modes FIRE_NOW, FIRE_LATER and NO_EVENT are added to the ILcdModel interface. These constants should be preferred over the corresponding constants in the ILcdFireEventMode interface, but they have the same value for backwards compatibility.

    ImprovementLuciadFusion

    TLcdContourFinder: Support was added to disable the interpolation of the created contours.

    ImprovementLuciadFusion

    LMAP-2617
    The vertical view's cursor change event now also contains the main profile index of the point located to the left of the cursor, making it easier to obtain an altitude value for the cursor.

    ImprovementLuciadFusion

    A new factory class TLcdWMSGXYViewFactory has been introduced, which is used to create and configure views in the WMS to render requested maps. Custom extensions can be integrated in the WMS by overriding the method createWMSGXYViewFactory(ServletConfig) in ALcdOGCWMSCommandDispatcherFactory.

    ImprovementLuciadFusion

    TLcdGXYViewBufferedImage now has the ability to work with a non-uniform scale along the x-axis and y-axis of the view. A new method setScale has been introduced to set a non-uniform scale, and methods getScaleX and getScaleX are added to allow to retrieve the individual scales.

    ImprovementLuciadFusion

    LMAP-2340
    ALcdGXYSmartController's keyboard control now works when the view does not have focus. This only works for JComponent views.

    ImprovementLuciadFusion

    LMAP-2340
    ALcdGXYSmartController now has a new property RequestFocusOnMousePressed. If true, the controller will make the view request focus when a mouse press occurs on it. The property is enabled by default.

    ImprovementLuciadFusion

    A new interface ILcdGeoBuffer has been added to com.luciad.shape. This ILcdShape extension represents a buffer or corridor shape, defined by a base shape and a width. An editable extension ILcd2DEditableGeoBuffer is added to com.luciad.shape.shape2D. Two 2D implementations TLcdLonLatGeoBuffer and TLcdXYGeoBuffer are added to com.luciad.shape.shape2D to create a two-dimensional buffer object from a polyline base shape, in geodetic space or in cartesian space. To paint the buffer objects in 2D, a painter TLcdGXYGeoBufferPainter has been added to com.luciad.view.gxy.painter. To calculate the contour, a method computeBufferContour2D has been added to TLcdEllipsoidUtil and TLcdCartesian, which are respectively used for an ellipsoidal and cartesian context.

    These new domain objects are to be used in favor of the existing 2D buffer implementation, TLcdLonLatBuffer. The new implementations use arcs to connect segments and properly handle overlapping areas, sharp angles and degenerate cases.

    ImprovementLuciadFusion

    LMAP-2380
    TLcdGXYViewCanvas now supports rotation.

    ImprovementLuciadFusion

    LMAP-2559
    The clone implementations of ALcdGXYPen, TLcdGXYPen, TLcdGeodeticPen, TLcdGridPen and TLcdProjectionPen have been improved.

    ImprovementLuciadFusion

    LMAP-2552
    TLcdWKTReferenceParser can now parse geocentric references.

    ImprovementLuciadFusion

    TLcdGXYZoomWheelController: the zooming of the view with the mouse wheel now generates TLcdUndoableEvents. You can receive these events by registering an ILcdUndoableListener on the mouse wheel controller with the addUndoableListener method.

    ImprovementLuciadFusion

    TLcdGXYOverviewController: the modification of the slave view now generates TLcdUndoableEvents. You can receive these events by registering an ILcdUndoableListener on the overview controller with the addUndoableListener method.

    ImprovementLuciadFusion

    LMAP-2526
    ALcdGXYSmartController: the panning and zooming operations resulting from key presses are now undoable.

    ImprovementLuciadFusion

    The documentation of TLcdImageIcon has been enhanced.

    ImprovementAdvanced GIS Engine

    The topology and intersection calculation implementations TLcdEllipsoidalBasicBinaryTopology, TLcdSphericalBasicBinaryTopology and TLcdCartesianBasicBinaryTopology now provide support for the new buffer shape ILcdGeoBuffer.

    Furthermore, calculations between a buffer shape and a bounds shape are now also supported by TLcdEllipsoidalBasicBinaryTopology.

    ImprovementDatabase Connectors

    The decoder now produces models that perform more efficient queries if their internal caches are empty (requesting all geometries and features in a single pass instead of two passes). If the transmission and decoding of geometries and their features is relatively fast compared to the overhead of performing a query, it may be worthwhile setting the cache size to 0.

    ImprovementDatabase Connectors

    The decoder now produces models that perform more efficient queries if their internal caches are empty (requesting all geometries and features in a single pass instead of two passes). If the transmission and decoding of geometries and their features is relatively fast compared to the overhead of performing a query, it may be worthwhile setting the cache size to 0.

    ImprovementDatabase Connectors

    TLcdOracleSpatialModelDecoder and TLcdOracleSpatialModelEncoder now support 3D geometries (points, polylines, polygons, boxes, surfaces, and solids). For this purpose, the JDBC driver ojdbc5.jar or higher is required.

    ImprovementDatabase Connectors

    The decoder now produces models that perform more efficient queries if their internal caches are empty (requesting all geometries and features in a single pass instead of two passes). If the transmission and decoding of geometries and their features is relatively fast compared to the overhead of performing a query, it may be worthwhile setting the cache size to 0.

    ImprovementDatabase Connectors

    The decoder now supports a new optional property geometryQueryColumn. If it is defined, it is used in spatial queries instead of geometryColumn. This may occasionally be useful, for instance to request geometries based on their center points instead of their bounds.

    ImprovementTerrain Analysis Engine

    TLcdAltitudeMatrixViewFactory, TLcdExtremePointFinder, TLcdVisibilityMatrixViewFactory: these computations now support interrupted threads. The computations now return the intermediate result when the thread, on which they are run, is interrupted.

    ImprovementTerrain Analysis Engine

    TLcdLOSCoverageFactory: these computations now support interrupted threads. The computations now return null when the thread, on which they are run, is interrupted.

    ImprovementDefense Standards

    LMAP-2658
    TLcdNITFModelDecoder now supports georeferencing of rasters that are distorted by a perspective projection.

    ImprovementDefense Symbology

    The validation of the country code part of symbol codes in TLcdEditableMS2525bObject and TLcdEditableAPP6AObject has been disabled, leaving the possibility to use custom codes for this part.

    ImprovementDefense Symbology

    LMAP-2669
    The following set of polyline symbols in APP-6A and MIL-STD 2525b are now rendered according to the straightLineMode setting of the layer's geodetic pen, instead of always using straight lines:
    • Phase Line (APP-6A: 2.X.2.1.1.2.4 and 2.X.2.5.3.2, MIL-STD 2525b: 2.X.2.1.2.4)
    • Light Line (APP-6A: 2.X.2.5.3.1, MIL-STD 2525b: 2.X.2.1.2.5)
    • Final Coordination Line (APP-6A: 2.X.2.1.5.2.3, MIL-STD 2525b: 2.X.2.5.2.3)
    • Limit Of Advance (APP-6A: 2.X.2.1.5.2.5 , MIL-STD 2525b: 2.X.2.5.2.5)
    • Line Of Departure (APP-6A: 2.X.2.1.5.2.6, MIL-STD 2525b: 2.X.2.5.2.6)
    • Line Of Departure/Line Of Contact (APP-6A: 2.X.2.1.5.2.7, MIL-STD 2525b: 2.X.2.5.2.7)
    • Holding Line (APP-6A: 2.X.2.1.6.2.3, MIL-STD 2525b: 2.X.2.6.1.2)
    • Release Line (APP-6A: 2.X.2.1.6.2.4, MIL-STD 2525b: 2.X.2.6.1.3)
    • Bridgehead (APP-6A: 2.X.2.1.6.2.2, MIL-STD 2525b: 2.X.2.6.1.4)
    • No-Fire Line (APP-6A: 2.X.2.3.2.5, MIL-STD 2525b: 2.X.4.2.2.3)
    • Probable Line Of Deployment (APP-6A: 2.X.2.1.5.2.8, MIL-STD 2525b: 2.X.2.5.2.8)
    • Fire Support Coordination Line (APP-6A: 2.X.2.3.2.1, MIL-STD 2525b: 2.X.4.2.2.1)
    • Restrictive Fire Line (APP-6A: 2.X.2.3.2.6, MIL-STD 2525b: 2.X.4.2.2.4)
    • Coordinated Fire Line (APP-6A: 2.X.2.3.2.2, MIL-STD 2525b: 2.X.4.2.2.2)

    ImprovementInfrastructure Standards

    The package contains a new decoder class called TLcdDWGModelListDecoder. It decodes a DWG file, after which the obtained model is split into several submodels, each corresponding to a single DWG layer. The submodels are returned as a TLcd2DBoundsIndexedModelList. For convenience, the model decoders TLcdDWGModelDecoder and TLcdDWGModelListDecoder share a new common interface ILcdDWGModelDecoder.

    Bug fixLuciadFusion

    LMAP-2695
    The magnifier controller no longer throws an IllegalComponentStateException when its view is visible but not showing.

    Bug fixLuciadFusion

    TLcdGXYAsynchronousPaintQueue now behaves correctly when its view is invalidated in a non-AWT thread.

    Bug fixLuciadFusion

    LMAP-2689
    TLcdColorMapCustomizer: the color buttons are now also visible in the Motif Look and Feel.

    Bug fixLuciadFusion

    LMAP-2682
    The warping raster painters no longer throw a ClassCastException if a raster does not contain a color model and any of its tiles contain a color model that's not an IndexColorModel.

    Bug fixLuciadFusion

    TLcdConcurrentBuffer has been fixed to avoid spurious NullPointerExceptions on multi-core processors.

    Bug fixLuciadFusion

    LMAP-1751
    The applet samples now work fine if there is a space in the path to the LuciadMap installation directory.

    Bug fixLuciadFusion

    The elements method of TLcdRegularTiled2DBoundsIndexedModel always returned an empty enumeration. It now returns a correct elements enumeration.

    Bug fixLuciadFusion

    The elementChanged method of TLcd2DRegularTiledBoundsIndexedModel was not always able to retrieve the changed element if the bounds of the element were changed. This has been fixed now.

    Bug fixLuciadFusion

    The elementsChanged method of TLcd2DRegularTiledBoundsIndexedModel has been fixed (it used to block the thread due to an infinite loop).

    Bug fixLuciadFusion

    The addElements, removeElements and removeAllElements methods in the model implementations of com.luciad.model now fire a model change event when the method is interrupted due to an invalid element which cannot be added/removed (no event was fired before in this case). The fired event only contains the elements which were successfully added/removed.

    Bug fixLuciadFusion

    LMAP-806
    ALcdGXYSmartController no longer changes the focused window when isRequestFocusOnMouseEntered is true.

    Bug fixLuciadFusion

    The focus point of a TLcdLonLatPolyline is no longer moved after a move2D, but recalculated when needed. This will only be of influence when the focus point was set to the polyline using setFocusPoint in order to monitor moves of the focus point.

    Bug fixTerrain Analysis Engine

    TLcdAltitudeMatrixViewFactory: the interpolated path method did not interpolate between all segment points.

    Bug fixInfrastructure Standards

    The method seekForward that was accidentally public in TLcdDWGModelDecoder but served no useful purpose has been removed from the API.

    Upgrade considerationLuciadFusion

    LMAP-2638
    TLcdUndoManager: the wrongly named removeStatusListener method has been deprecated in favor of removeChangeListener. Please use that method to remove your ILcdChangeListener instances.

    Upgrade considerationLuciadFusion

    TLcdVVAltitudeRangeSliderJPanel: When the bottom (or top) offset property of the vertical view corresponding to the slider is changed, the slider used to interpret this as a new minima (or maxima). Now the bottom (or top) offset property is interpreted as a new range minima (or maxima).

    Upgrade considerationLuciadFusion

    ILcdGXYAsynchronousLayerWrapper and ILcdGXYAsynchronousPaintQueue have been extended with the methods invokeLaterOnGXYLayerInEDT and invokeLaterInEDT respectively. Wrappers for or extensions of the above interfaces or their implementations should delegate to this method.

    Upgrade considerationLuciadFusion

    The base class ALcdGXYPen no longer contains the fields and methods to cache world/model references and transformations, since these were used and updated inconsistently, in the end only creating overhead without serving a practical purpose.

    Upgrade considerationLuciadFusion

    The behavior of some methods of TLcdFeatureIndexedVectorModel and TLcdFeatureIndexedAnd2DboundsIndexedModel has been changed:
    • If an index was added for which one or more of the feature names did not occur in the featured descriptor, an IndexOutOfBoundsException was thrown, either when the index was added or when the first element was added to the model. No exceptions are thrown anymore; an empty index is created instead.
    • If retrieveIndex is called for a unique index, this method now returns a Vector containing the unique element that matches the query, instead of returning null.
    • If retrieveUniqueIndex is called for a non-unique index, an IllegalArgumentException is thrown now, instead of returning null.
    • If retrieveIndex or retrieveUniqueIndex is called for an index which was not created yet, an IllegalArgumentException is thrown now, instead of returning null.

    Upgrade considerationLuciadFusion

    Null values are now explicitly forbidden as elements in a model. This was already the case for most model implementations in the com.luciad.model package (except for TLcdVectorModel).

    Upgrade considerationLuciadFusion

    Some methods of ILcdModel and its implementations now throw better exceptions:
    • The addModelListener and removeModelListener now throw a NullPointerException if the argument is null. All implementations in the com.luciad.model package have been modified to be compliant with the new specification.
    • The editing methods of all non-editable models in the com.luciad.model package now throw an UnsupportedOperationException instead of an IllegalArgumentException.
    • TLcd2DBoundsIndexedModel, TLcd2DRegularTiledBoundsIndexedModel, TLcdSoft2DBoundsIndexedModel and TLcdTiled2DBoundsIndexedModel now always throw a NullPointerException if the applyOnInteract2DBounds method is called with a null function or bounds (this was not the case in previous versions, if the model was empty).

    Upgrade considerationLuciadFusion

    The specification of addElement, addElements, removeElement and removeElements in ILcdModel has been changed; implementations are no longer required to throw an IllegalArgumentException when an invalid element is added or removed. Instead, these methods now have a precondition (
        canAddElement(aElement)
    ) which should hold for the element(s) that is being added/removed. It is unspecified by default what happens if one of these methods is called while the precondition does not hold. All implementations of ILcdModel in com.luciad.model no longer call canAddElement or canRemoveElement from within the addElement(s)/removeElement(s) methods. Existing code that relies on the IllegalArgumentException exception being thrown:
          try {
          model.addElement(aElement, ILcdModel.FIRE_NOW);
          }
          catch(IllegalArgumentException e) {
          // Do something.
          }
        
    should be refactored to:
          if (model.canAddElement(aElement)) {
          model.addElement(aElement, ILcdModel.FIRE_NOW);
          }
          else {
          // Do something.
          }
        
    Developers using the add/remove filters, provided by some model implementations, should also make sure that each addElement call is always preceded by a canAddElement call, as these filters are no longer checked in the add/remove methods.

    Upgrade considerationLuciadFusion

    The GNU regular expressions library gnu-regexp-1.1.4.jar is no longer required by LuciadMap, as its use has been replaced by the regular expressions API available in the JDK (since 1.4). This might require an update to existing build scripts to create a LuciadMap application, as they now no longer need to incorporate this library.

    Upgrade considerationLuciadFusion

    LMAP-2569, LMAP-2608
    A number of issues in the existing buffer domain object TLcdLonLatBuffer and corresponding painter TLcdGXYBufferPainter have been fixed in the new buffer implementation, by the introduction of a new geodetic implementation TLcdLonLatGeoBuffer and a new painter implementation TLcdGXYGeoBufferPainter. The following problems had been identified in the past and are fixed in the new implementation:
    • LMAP-2569: the fill of a buffer does not match with the contour for wide buffers,
    • LMAP-2608: a narrow buffer cannot be moved with TLcdGXYBufferPainter,
    • 2446: TLcdLonLatBuffer does not handle degenerate cases,
    • 2782: the line/fill style handling of TLcdGXYBufferPainter is inconsistent,
    • 3682: sharp angles in the axis of a buffer are not handled correctly by TLcdLonLatBuffer and TLcdGXYBufferPainter,
    • 4033: overlapping areas are not handled correctly by TLcdGXYBufferPainter,
    • 4549,5421,5475: TLcdGXYBufferPainter does not allow to move a buffer if it is part of a composite selection but not touched,
    To obtain the fixes, an upgrade is needed by replacing the use of TLcdLonLatBuffer and TLcdGXYBufferPainter with TLcdLonLatGeoBuffer and TLcdGXYGeoBufferPainter.

    Upgrade considerationLuciadFusion

    LMAP-2340
    ALcdGXYSmartController#RequestFocusOnMouseEntered is now by default false.

    Upgrade considerationLuciadFusion

    LMAP-2600
    ALcdGXYSmartController's default keyboard shortcuts for left and right panning have been reversed, in order to make them consistent with the panning behavior of the arrow keys.

    Upgrade considerationLuciadFusion

    LuciadMap now comes with two extra libraries: the JTS Java Topology Suite jts-1.8.jar and an extension lcd_jts_extension.jar. Both libraries are used by the com.luciad.shape.shape2D package (see Technical Notes -> Prerequisites). This might require an update to existing build scripts to create a LuciadMap application, to incorporate the new libraries.

    Upgrade considerationLuciadFusion

    LMAP-2526
    ALcdGXYSmartController: in order to support undo-functionality for the panning and zooming operations resulting from key presses, several undo-related methods have been added to this class:
    • addUndoableListener
    • removeUndoableListener
    • fireUndoableEvent
    If you have created a subclass of ALcdGXYSmartController and provided undo-capabilities for this subclass, you need to removed the corresponding methods from your subclass and use the methods mentioned above instead to register and unregister ILcdUndoableListeners and to fire TLcdUndoableEvents.

    Upgrade considerationDatabase Connectors

    The lib directory now contains the Oracle JDBC drivers ojdbc14.jar, ojdbc5.jar, and ojdbc6.jar, replacing classes12.jar, for JRE 1.4, 1.5, and 1.6 respectively.

    Upgrade considerationAviation Standards

    The domain object ILcdAirspaceCorridor now extends from the general buffer interface com.luciad.shape.ILcdGeoBuffer, available in LuciadMap. As a result, existing implementations of this interface must now provide an implementation for the methods ILcdGeoBuffer#getBaseShape(), ILcdGeoBuffer#getEndCapStyle() and ILcdGeoBuffer#getJoinStyle().

    8.0

    8.0.12

    Bug fixLuciadFusion

    LMAP-2680
    TLcdColorMapCustomizer: now consumes the key events when stepping through the levels with the arrow keys, to avoid that anybody else can still use these key events.

    Bug fixTerrain Analysis Engine

    TLcdP2PRadarPropagationFunction, TLcdP2PRadarPropagationFunctionSkyBackground: both propagation functions now return TLcdVisibilityStatus.INVISIBLE when one of the defining points lies beneath the terrain.

    8.0.11

    ImprovementLuciadFusion

    LMAP-2636
    TLcdGXYSelectControllerModel2: MouseClickedSensitivity is now larger by default, to accommodate for larger icons.

    ImprovementLuciadFusion

    New methods have been introduced in TLcdHttpServletRequestKVPRequestWrapper and TLcdHttpServletResponseWrapper to give applications more access to HTTP request and response headers.

    ImprovementDatabase Connectors

    The decoder now produces models that are thread-safe for read-only access, provided that the "alwaysCloseConnection" property is set to true and that a database driver that offers connection pooling is used (e.g. Proxool).

    ImprovementAviation Standards

    LMAP-2654
    The ARINC handlers for Restrictive and Controlled Airspace records, TLcdARINCRestrictiveAirspaceHandler and TLcdARINCControlledAirspaceHandler, have been made more robust, as they no longer fail for unrecognized airspace types, levels or classifications. In these cases, a debug message is now added to the error message report of the decoder (see TLcdARINCDecoder#getErrorMessage()).

    Bug fixLuciadFusion

    TLcdColorMapCustomizer: The customizer was editable via mouse events even when the customizer was disabled. Now only enabled customizers are editable via mouse events.

    Bug fixLuciadFusion

    LMAP-2515
    TLcdGXYStampLabelPainter: the interactive labels of the TLcdGXYStampLabelPainter can now be used even when other label painters are used within the same layer.

    Bug fixLuciadFusion

    LMAP-2662
    Raster painters with asynchronous subtile decoding activated now work correctly with layers that are wrapped by ILcdGXYAsynchronousLayerWrapper. However, for best results though, it is recommended to leave the asynchronous subtile decoding deactivated.

    Bug fixLuciadFusion

    LMAP-2657
    The two TLcdGeneralPerspective constructors taking an ILcdPoint as the origin were interchanging the origin's latitude and longitude. This is now fixed.

    Bug fixLuciadFusion

    LMAP-2650
    TLcdGeoTIFFModelDecoder now supports the same geodetic datums for user-defined grid references as for geodetic references.

    Bug fixLuciadFusion

    LMAP-2641
    TLcdGXYEllipsePainter and TLcdGXYCirclePainter now draw actual cartesian ellipses and circles when possible, instead of discretized versions. This especially improves the visual quality for large views and prints.

    Bug fixDatabase Connectors

    LMAP-2659
    The model decoder and encoder now correctly handle uppercase table names and column names. Such names must be surrounded by double quotes in Postgres.

    Bug fixGraph and Routing Engine

    GDF files could no longer be decoded in JRE 1.4 environements as of bug fix #7539. This has been fixed.

    Bug fixTerrain Analysis Engine

    TLcdDensityBasedRasterElevationProvider: it could happen that an elevation value was returned from another raster than the best density one.

    Bug fixTerrain Analysis Engine

    LMAP-2643
    TLcdTerrainProfileController: the background of the label now uses the correct dimension, also if the user sets a font with a different size.

    Bug fixAviation Standards

    TLcdDAFIFATSRouteDecoder and TLcdDAFIFTATSRouteDecoder: The decoders will only decode routes containing segments. Empty routes are not added to the model.

    Bug fixRadar Connectors

    Duplicate 'LayerFactory' sample class is now removed.

    Upgrade considerationDefense Standards

    The GeoSym engine no longer looks for GeoSym resources in the geosym/rules/ directory; from now on, only the GeoSym/ directory is searched for, which corresponds to the location used in the VPF resources file provided with the distribution (lcd_vpf_geosym_resources.jar).

    8.0.09

    ImprovementLuciadFusion

    The precision of encoding object features of type double using TLcdSHPModelEncoder has been increased to 18 characters (in string representation). Also, the TLcdSHPModelEncoder now supports features of type BigDecimal, with the same limit of 18 characters.

    Bug fixTerrain Analysis Engine

    LMAP-2640
    TLcdMatrixViewRasterFactory: createEquivalentRaster now also sends out END_BUSY status events.

    8.0.08

    ImprovementLuciadFusion

    TLcdCADRGDirectoryModelDecoder has a new boolean property readTableOfContentsFiles to specify whether A.TOC files should be read, whenever they are available.

    Bug fixLuciadFusion

    LMAP-2635
    TLcdCADRGModelDecoder now ignores any erroneous high bits in the section location length field.

    Bug fixLuciadFusion

    LMAP-2630
    TLcdColorMapCustomizer: using setGradientToggleable while the customizer is displayed on screen now properly refreshes the GUI.

    Bug fixLuciadFusion

    LMAP-2571
    TLcdLonLatPolygon.contains2D now handles correctly the case when the latitude of the tested point coincides with the latitude of one of the vertices.

    Bug fixDefense Standards

    LMAP-2625
    TLcdNITFModelDecoder now also takes into account BLOCKA Tagged Record Extensions in user data.

    Bug fixDefense Standards

    LMAP-2624
    TLcdNITFModelDecoder now accepts empty gray fill fields in BLOCKA Tagged Record Extensions.

    Bug fixDefense Standards

    LMAP-2623
    TLcdNITFModelDecoder again decodes correct raster bounds for UTM references.

    8.0.07

    ImprovementDatabase Connectors

    The access to the models produced by the TLcdGeoRasterModelDecoder is faster when multiple threads are reading the data, provided that a connection pooling database driver is used and the property alwaysCloseConnection is true.

    Bug fixTerrain Analysis Engine

    TLcdExtremePointFinder: Support was added to find the extreme points in a matrix view with only 1 column or row.

    Bug fixTerrain Analysis Engine

    TLcdAltitudeMatrixViewFactory: the create methods now convert special altitude values defined by the altitude provider to special altitude values defined by the descriptor of the altitude matrix view.

    8.0.06

    ImprovementLuciadFusion

    TLcdDEMModelDescriptor now provides access to the minimum and maximum values of the elevation.

    ImprovementLuciadFusion

    LMAP-2236
    LuciadMap now supports the latest TMEX WinUSB drivers from Dallas Semiconductor for iButton hardware keys.

    ImprovementDatabase Connectors

    TLcdOracleSpatialModelDecoder and TLcdOracleSpatialModelEncoder now encode shape lists containing sequences of polylines and arcs as line strings or compound line strings when possible.

    ImprovementDatabase Connectors

    The decoder now produces models that are thread-safe for read-only access, provided that the "alwaysCloseConnection" property is set to true and that a database driver that offers connection pooling is used (e.g. Proxool).

    ImprovementDatabase Connectors

    TLcdOracleSpatialModelDecoder now produces models that are thread-safe for read-only access, provided that the "alwaysCloseConnection" property is set to true and that a database driver that offers connection pooling is used (e.g. Proxool).

    ImprovementDatabase Connectors

    TLcdPostGISSpatialModelDecoder now produces models that are thread-safe for read-only access, provided that the "alwaysCloseConnection" property is set to true and that a database driver that offers connection pooling is used (e.g. Proxool).

    Bug fixLuciadFusion

    LMAP-2614
    TLcdCGMGXYPainterProvider has been fixed to correctly paint shapes that are not filled.

    Bug fixLuciadFusion

    LMAP-2613
    TLcdCGMModelDecoder now always creates grid references, in order to make sure circles, ellipses, and arcs are interpreted correctly.

    Bug fixLuciadFusion

    LMAP-2205
    TLcdRangeSlider now correctly repaints when double clicking it after the model (TLcdRangeSliderModel) has changed.

    Bug fixLuciadFusion

    LMAP-1259
    TLcdRangeSlider used to return its current width (for horizontal slider) or height (for vertical slider) as preferred size. It now behaves similar to JSlider: a fixed preferred width/height.

    Bug fixLuciadFusion

    The handling of GetMap requests through HTTP XML POST has been made more robust and corrected in some cases.

    Bug fixLuciadFusion

    LMAP-2421
    TLcdIGRFMagneticNorthMap: used to throw ArrayIndexOutOfBoundsException for some date values.

    Bug fixLuciadFusion

    LMAP-2596
    In rare circumstances, TLcdGXYAsynchronousLayerWrapper#invokeAndWaitOnGXYLayer would prevent pending layer property changes from being fired.

    Bug fixLuciadFusion

    LMAP-2595
    TLcdGXYAsynchronousLayerWrapper now fires property change events when its icon and label change.

    Bug fixDatabase Connectors

    The package com.luciad.format.oracle.spatial no longer depends on the deprecated Oracle library sdoapi.jar.

    Bug fixDatabase Connectors

    The entire com.luciad.format.oracle.spatialRelational package has been deprecated. It corresponds to the Oracle Relational Model, which has been deprecated and is no longer supported by Oracle. New applications should use the com.luciad.format.oracle.spatial package, which offers support for the new Oracle Object-Relational Model.

    Bug fixDefense Standards

    LMAP-2613
    TLcdNITFModelDecoder now always creates grid references for NITF files containing CGM vector data, in order to make sure circles, ellipses, and arcs are interpreted correctly.

    8.0.05

    ImprovementLuciadFusion

    LMAP-2382
    TLcdGXYViewPanel now informs its property change listeners of component property changes.

    ImprovementInfrastructure Standards

    LMAP-2594
    com.luciad.format.dgn.TLcdDGNModelDecoder now handles elements referencing bogus tag attributes.

    Bug fixLuciadFusion

    LMAP-2581
    TLcdXMLCustomizerComponentBuilder: in combination with Alloy look and feel, it used to produce an incorrect background color (white) when making the property dialogs larger.

    Bug fixLuciadFusion

    LMAP-2570
    TLcdMultilevelRasterPainter#suitableRasterLevel no longer needs the given raster to be set on the painter.

    Bug fixLuciadFusion

    LMAP-2553
    TLcdGXYOffsetIconPainter: the anchor point is now always painted when the offset of the icon changes.

    8.0.04

    ImprovementLuciadFusion

    Because the WMS Server uses TLcdConcurrentBuffer instead of TLcdBuffer as internal shared buffer since V7, the buffer size configuration is no longer required. The configuration property 'shared.buffer.size.mb' in WEB-INF/classes/settings.cfg is therefore no longer used and has been removed in the sample deployment available in distrib/LuciadMapWMS_x.x.x.

    ImprovementLuciadFusion

    The WMS Server no longer explicitly depends on the Xerces XML parser, but now uses the package javax.xml.* available in JRE 1.4 and later - the WMS Server requires JRE 1.4 or later, see prerequisites. The sample build script available in build/wms therefore no longer integrate the libraries xercesImpl.jar and xmlParserAPIs.jar in a new build.

    ImprovementLuciadFusion

    LMAP-2539
    The transformation of model bounds to world bounds has been made more efficient.

    ImprovementLuciadFusion

    TLcdOGCXPath now has an equals and a hashCode implementation.

    Bug fixLuciadFusion

    LMAP-2547
    TLcdGXYOffsetIconPainter: snapping now works for the offset icon painter.

    Bug fixLuciadFusion

    LMAP-2541
    The transformation of model bounds to world bounds now avoids discretisation problems in some corner cases that occur with Cassini and orthographic projections.

    Bug fixLuciadFusion

    LMAP-2248
    TLcdISO19103Measure#convert did not update the supplied ILcdISO19103Measure object if the same unit of measure was given as the source unit of measure.

    8.0.03

    ImprovementMaritime Standards

    LMAP-2551
    TLcdS52ComplexStroke now has a constructor with a clip; setting a clip on this stroke can improve performance significantly, especially when a large part of the shape to be stroked lies outside the clip. The S-52 painter provider makes now use of this enhancement, improving the rendering performance of S-52 significantly when zoomed in on complex stroked shapes.

    ImprovementRadar Connectors

    LMAP-2532
    The sample now shows an outline around the simple track-icon, making it better visible on irregular background data.

    Bug fixLuciadFusion

    LMAP-2558
    ALcdGXYPen's clone method and copy constructor now also take into account the hot spot icon.

    Bug fixGraph and Routing Engine

    LMAP-2524
    GDF features which are referred to in a GDF file from another feature or relationship, but which are not defined themselves in that file are no longer included in the model.

    Bug fixGraph and Routing Engine

    LMAP-2407
    Decoding of GDF files no longer fails when an invalid MARC language code is encountered. Instead, a warning message is logged and the code is ignored (the TLcdGDFLanguage attribute is left empty).

    Bug fixGraph and Routing Engine

    LMAP-2516
    TLcdGDFModelDecoder now supports non-ASCII encodings (UTF-8 and ISO 8859-1).

    Bug fixMaritime Standards

    LMAP-2498
    A problem with the decoding of AR2D fields was fixed.

    8.0.02

    ImprovementLuciadFusion

    TLcdSVGModelEncoder now has a get method for trueSVG.

    ImprovementLuciadFusion

    When using Tomcat as servlet container, verbose stacktraces could sometimes be observed in the server log files containing notifications of a org.apache.catalina.connector.ClientAbortException. This exception is thrown by Tomcat when a servlet is trying to send a result to a client which already closed the connection. The WMS / WFS / WCS server used to handle this exception as a regular IOException, by logging its stacktrace and sending a service exception report to the client - which fails in this case, resulting in a similar exception. This exception is now no longer propagated in the WCS server; instead, a short debug message is printed in the log files when it occurs.

    Bug fixLuciadFusion

    TLcdSVGModelEncoder no longer requires that shapes implement ILcd2DEditableShape in order to export them.

    Bug fixLuciadFusion

    TLcdSymbol rectangles are now the correct size. They used to be one pixel too wide and too high.

    Bug fixLuciadFusion

    TLcdGeoTIFFModelEncoder now correctly encodes projection coordinate systems with geodetic datums other than WGS 84.

    Bug fixLuciadFusion

    TLcdDatabaseModelDescriptor now properly synchronizes the creation and caching of its connection. Note that this class is used by all optional database packages.

    Bug fixLuciadFusion

    TLcdDEMModelDecoder and TLcdDEMTileDecoder now avoid unnecessarily rounding the coordinates of some raster bounds.

    Bug fixLuciadFusion

    TLcdGXYStampLabelPainter: using the scroll wheel of the mouse in interactive labels no longer throws ClassCastExceptions.

    Bug fixDefense Symbology

    LMAP-2520
    If a custom value was set for the modifier ILcdMS2525bCoded.sLocationLabel in MIL-STD 2525b or for the modifier ILcdAPP6ACoded.sLocationLabel in APP-6A, it was not displayed as a label. Only when no value was set, the default label containing the position in UTM coordinates was displayed.

    8.0.01

    ImprovementAviation Standards

    The AIXM decoder now decodes the attribute 'mid' for the existing domain objects. This attribute represents an artificial unique identifier, and is considered optional by the AIXM 3.3 and 4.x specification. The following domain objects have been updated:
    • Aerodrome: ILcdAIXMAerodromeFeature.MID
    • Navaid (DME, VOR, NDB, TACAN, Marker): ILcdAIXMNavaidFeature.MID
    • Designated point: ILcdAIXMWayPointFeature.MID
    • Airspace: ILcdAIXMAirspaceFeature.MID
    • Route: ILcdAIXMATSRouteFeature.MID
    • Route segment: ILcdAIXMRouteSegmentFeature.MID
    • Geoborder: ILcdAIXMGeoborderFeature.MID
    • Runway: ILcdAIXMRunwayFeature.MID
    • Runway direction: ILcdAIXMRunwayDirectionFeature.MID
    • Runway cline point: ILcdAIXMRunwayClinePointFeature.MID
    • ILS: ILcdAIXMILSFeature.MID
    • Procedure: ILcdAIXMProcedureFeature.MID
    The corresponding ILcdAIXMHandler implementations now decode this extra attribute by default.

    Bug fixDatabase Connectors

    The georaster model decoder now handles correctly the case of rasters that don't use pyramids but have blocks, and the block size is more than twice the size of the entire image.

    8.0

    ImprovementLuciadFusion

    The samples now use the new TLcdGXYCompositeController to combine the TLcdGXYZoomWheelController with other controllers. Regardless of the controller active on the view, one can now zoom in and out using the mouse wheel.

    ImprovementLuciadFusion

    TLcdGXYCompositeController enables combining multiple controllers into one controller.

    ImprovementLuciadFusion

    TLcdGXYZoomWheelController enables zooming in and out of a view using the mouse wheel.

    ImprovementLuciadFusion

    TABRasterModelDecoder and TFWRasterModelDecoder now have properties to override the color model of decoded models.

    ImprovementLuciadFusion

    TLcdMapBufferedImage has been extended with constructors to specify the image type and index color model.

    ImprovementLuciadFusion

    The new class TLcdRasterReferencingUtil provides methods to georeference rasters based on tie points and on transformation matrices. It allows to rotate model references and then create axis-aligned raster bounds, optimizing the match of the given tie points or transformation matrices.

    ImprovementLuciadFusion

    ALcdRasterPainter now provides a utility method idealPixelDensity, which computes the ideal pixel density that a raster should have for display in a given context.

    ImprovementLuciadFusion

    A new class TLcdGXYAsynchronousViewLabelPainterWrapper wraps existing view label painters so that they do not interfere with asynchronous painting.

    ImprovementLuciadFusion

    TLcdGXYAsynchronousPaintQueue now supports intermediary paint updates and automatically interrupts ongoing paints when appropriate.

    ImprovementLuciadFusion

    The LuciadMap views now send out an invalidation event when they have been resized.

    ImprovementLuciadFusion

    A new class TLcdGXYAsynchronousMultiPaintQueue enables layers to be painted asynchronously for multiple views.

    ImprovementLuciadFusion

    The advancedLineStyle sample has been reviewed and updated to illustrate three concepts in LuciadMap to render a line:
    • the painter TLcdGXYRoundedPointListPainter to draw point lists with rounded corners,
    • the stroke implementation TLcdGXYComplexStroke to draw Shape patterns repetitively along a path,
    • the painter TLcdGXYHaloPainter to add a halo effect to other ILcdGXYPainter implementations.

    ImprovementLuciadFusion

    A new painter TLcdGXYRoundedPointListPainter has been added to the API. It is an extension of TLcdGXYPointListPainter that allows to draw an ILcdPointList with rounded corners.

    ImprovementLuciadFusion

    The API documentation of the following classes has been reviewed and updated:
    • the interfaces ILcdGXYPainter and ILcdGXYEditor, and their principal implementations,
    • the interface ILcdGXYView, and its implementations,
    • ILcdGXYController and ILcdGXYLayer,
    • all implementations of ILcdModelDecoder in the package com.luciad.format.raster.

    ImprovementLuciadFusion

    TLcdGXYViewBufferedImage now has a getter for the name of the view.

    ImprovementLuciadFusion

    The class TLcdLonLatGridPainter now has methods for adding halo effects to the grid labels. Halo's can be enabled by setting the labelHaloEnabled property (setLabelHaloEnabled()) to true. The color and thickness can be changed via the setLabelHaloColor() and setLabelHaloThickness() methods.

    ImprovementLuciadFusion

    Support has been added for the optional WMS GetFeatureInfo request. This request allows to retrieve more information about particular features shown on a map. The class com.luciad.wms.client.model.ALcdWMSProxy has been extended with a method createFeatureInfoInputStream() that returns an InputStream with the result of the WMS server, similar to the method createImageInputStream() for WMS GetMap requests. To illustrate the use of GetFeatureInfo requests at the client side, the wms.client.gxy sample has been modified with GetFeatureInfo support.

    ImprovementLuciadFusion

    The wms.client.gxy sample now paints the WMS data asynchronously on the map, by using the asynchronous painting mechanism introduced in LuciadMap 7.2.

    ImprovementLuciadFusion

    The WMS server developer guide has been extended with a new section covering various performance guidelines and tips when running a LuciadMap WMS server.

    ImprovementLuciadFusion

    A new java.awt.Stroke implementation, TLcdGXYComplexStroke, has been added to the API. It offers functionality for drawing one or more Shape patterns repetitively along a path.

    ImprovementLuciadFusion

    The new layer wrapper TLcdGXYDensityLayer paints elements as color-coded densities, for instance using green for regions where few elements overlap and red for regions where many elements overlap.

    ImprovementLuciadFusion

    The new output stream factory TLcdFileOutputStreamFactory simply creates output streams to write to files.

    ImprovementLuciadFusion

    The new model reference encoder TLcdEPSGModelReferenceEncoder can write .epsg files containing decimal georeferencing codes, as specified by the European Petroleum Survey Group (EPSG).

    ImprovementLuciadFusion

    The new model reference encoder TLcdWKTModelReferenceEncoder can write .prj files containing Well-Known Text (WKT) georeferences, as specified by the Open GIS Consortium (OGC).

    ImprovementLuciadFusion

    The performance of asynchronous painting has been improved when working with many layers.

    ImprovementLuciadFusion

    The performance of asynchronous painting has been improved when working with unlabelled and/or invisible layers, and labels without selections.

    ImprovementLuciadFusion

    The performance of asynchronous painting has been improved in combination with view label painting.

    ImprovementLuciadFusion

    TLcdGXYAsynchronousPaintQueue can now delay the repainting of skipped labels and selections in BODIES_AND_SKIP mode, in order to avoid flicker.

    ImprovementLuciadFusion

    TLcdGXYAsynchronousPaintQueue can immediately display short asynchronous paints.

    ImprovementLuciadFusion

    TLcdGXYAsynchronousPaintQueue can paint an extra area around the synchronous view so small pan and zoom operations will have an immediate result.

    ImprovementLuciadFusion

    TLcdSHPModelEncoder is now capable of encoding PolylineZ and PolygonZ (3D) shapes.

    ImprovementLuciadFusion

    ILcdGXYView implementations: when an ILcdGXYController is set to an ILcdGXYView using setGXYController, and if that controller implements MouseWheelListener, it now also registers that controller as a MouseWheelListener so that it receives mouse wheel events.

    ImprovementLuciadFusion

    All cursors for zoom controllers are adapted so that they are now also visible on a dark background.

    ImprovementLuciadFusion

    TLcdGXYIconPainter: the painter now stores information in the ILcdCache of its domain object. The property 'paintCache' is added to enable caching support. Note that our ILcdPoint implementations do not implement ILcdCache. If you want to use caching in the icon painter, you should make sure that your domain objects implement ILcdCache.

    ImprovementLuciadFusion

    TLcdLayer now has a convenience method invalidate which can be called whenever the layer is no longer a valid representation of the model it contains. This method should not be called for properties which are set on the layer itself.

    ImprovementLuciadFusion

    View invalidation events now also store the invalidated layer, if appropriate.

    ImprovementLuciadFusion

    The new class TLcdEPSGModelReferenceDecoder provides a convenient way to define model references for formats that do not contain any referencing information, like the SHP format. Much like TLcdModelReferenceDecoder, which looks for .ref files next to the data files, TLcdEPSGModelReferenceDecoder looks for .epsg files. While .ref files specify model references using LuciadMap class names and property names, .epsg files specify model references using a single decimal code, as defined by the European Petroleum Survey Group.

    ImprovementLuciadFusion

    TLcdGXYLayer no longer performs any action when asked to paint in SELECTION mode while the selection is empty.

    ImprovementLuciadFusion

    The WMS GIF encoder, TLcdGXYViewGIFEncoder, now automatically uses the ImageIO library to encode to GIF, when JDK 1.6 is used. This results in a vast performance improvement, and also adds support for views that use transparency - which was before not possible. For older JDK versions, the Acme GIF encoder and JAI library are still used.

    ImprovementLuciadFusion

    TLcdStatusEventSupport: adding the method getStatusListeners which returns a list of all status event listeners that were added to the status event support instance.

    ImprovementLuciadFusion

    The WMS server sample now contains an implementation of ILcdWMSGetFeatureInfoEncoder, namely samples.wms.server.WMSFeatureInfoAsTextEncoder, to provide support for the optional WMS GetFeatureInfo request. To illustrate the use of GetFeatureInfo requests at the client side, the WMS client lightweight sample has been modified with GetFeatureInfo support.

    ImprovementDatabase Connectors

    TLcdOracleSpatialModelReferenceFactory is a new utility class that converts an Oracle SRID into a model reference.

    ImprovementDatabase Connectors

    The new Oracle Spatial package supports decoding of GeoRaster objects in Oracle Spatial databases.

    ImprovementTerrain Analysis Engine

    TLcdProfileViewJPanel: support is added to set the location of the mark to a point located at a fraction of a profile segment.

    ImprovementTerrain Analysis Engine

    Support is added to compute the extreme points within a shape. More information on these computations can be found in the developer guide and in the reference guide of the classes com.luciad.tea.TLcdExtremePointFinder.

    ImprovementTerrain Analysis Engine

    Support is added to compute a shape-to-shape visibility. More information on these computations can be found in the developer guide and in the reference guide of the classes com.luciad.tea.TLcdAltitudeMatrixViewFactory and com.luciad.tea.TLcdVisibilityMatrixViewFactory.

    ImprovementTerrain Analysis Engine

    TLcdProfileViewJPanel: the user can now change the color of the profile view using the method setValidColor().

    ImprovementAviation Standards

    A new domain object is added to AIS to represent airspace corridors. The basic interface is com.luciad.ais.model.airspace.ILcdAirspaceCorridor. Just like the existing airspace types, it extends from the generic airspace interface, ILcdGenericAirspace. The interface ILcdAirspaceCorridor has a default implementation com.luciad.ais.model.airspace.TLcdAirspaceCorridor and a featured extension com.luciad.ais.model.airspace.TLcdFeaturedAirspaceCorridor. For a list of features and the corresponding class mappings, the existing airspace feature interfaces and class mappers are used: com.luciad.ais.model.airspace.ILcdAirspaceFeature and com.luciad.ais.model.airspace.TLcdAirspaceFeatureClassMapper. The AIS domain object factory com.luciad.ais.model.ALcdAISObjectFactory is extended with two methods to create TLcdFeaturedAirspaceCorridor instances.

    ImprovementAviation Standards

    The AIXM decoder now supports version 4.0 and 4.5 of the AIXM format, next to the originally supported version 3.3. To comply with the new versions, the decoders, feature lists and feature value domains for existing domain objects have been updated accordingly.

    To represent the new airspace corridor concept introduced in version 4.0, the AIS package is extended with a new domain object, represented by the interface com.luciad.ais.model.airspace.ILcdAirspaceCorridor. The AIXM airspace decoder, TLcdAIXMAirspaceHandler, now automatically decodes airspace corridors using this new domain object.

    Apart from airspace corridors, no new domain objects or equivalent decoders have been introduced.

    ImprovementMaritime Standards

    The performance of selection on ECDIS layers has been improved.

    ImprovementMaritime Standards

    TLcdS52ComplexStroke has been deprecated in favor of a new class in LuciadMap, TLcdGXYComplexStroke. The latter provides a more flexible and correct implementation of a complex stroke. Existing projects can continue to use the TLcdS52ComplexStroke, but for new projects, the TLcdGXYComplexStroke should be preferred.

    ImprovementMaritime Standards

    S-57 meta data (object classes 300-312) are now supported by the TLcdS57ModelDecoder. TLcdS52PainterProvider also supports the visualization of meta data. All data are decoded by default. To prevent cluttering on the map, the TLcdS52PainterProvider now has a flag, setDisplayMetaData(), which can be used to control whether meta data should be shown or not. Its default value is false, to ensure the display behaviour of existing applications will not be affected. If the meta data should also be excluded from the model, a meta data filter can easily be configured on the TLcdS57ModelDecoder via the setExcludedObjectClasses() method.

    ImprovementMaritime Standards

    The S-52 rendering engine now uses icon caching for rendering of S-52 symbols.

    ImprovementMaritime Standards

    The S-57 decoder performance has been increased significantly. Especially models which require a lot of preprocessing should benefit from this.

    Bug fixLuciadFusion

    TLcdGXYTextPainter: the text object is now drawn during a THREE_CLICK creation to be able to see how the text is being created.

    Bug fixLuciadFusion

    All ILcdGXYView implementations now always return true when calling the deprecated method hasValidImage.

    Bug fixLuciadFusion

    In case of an URL source, TLcdDataInputStream was sometimes incorrectly throwing an EOF exception. This has now been fixed.

    Bug fixLuciadFusion

    TLcdGXYEllipsePainter no longer indicates that an ellipse has changed when it was merely selected. The painter used to return true for the edit method when the TRANSLATING mode was passed with deltaX and deltaY in the context equal to zero.

    Bug fixLuciadFusion

    The painters TLcdGXYLabelPainter and TLcdGXYFeaturedLabelPainter now have clone methods that create proper, deeper clones.

    Bug fixLuciadFusion

    The GXY views no longer ask the layers to paint themselves using a paint mode consisting solely of ALL, rather than the prescribed ALL+[BODIES|LABELS|SELECTION].

    Bug fixLuciadFusion

    ALcdAction no longer calls public methods from its constructor. This could have resulted in incorrectly initialized classes when constructing extensions of this class.

    Bug fixLuciadFusion

    TLcdLayer no longer calls public methods from its constructor. This could have resulted in incorrectly initialized classes when constructing extensions of this class.

    Bug fixLuciadFusion

    TLcdXYFloatLine now has a correct implementation of the equals method.

    Bug fixLuciadFusion

    A rotation change is now properly taken into account when drawing labels with a halo and image caching enabled, using TLcdGXYLabelPainter and TLcdGXYPolylineLabelPainter.

    Bug fixLuciadFusion

    Reduced magnifier window trails on the underlying view when used with JDK 1.4 and 1.5. The fix needs fixed interval updates. The problem does not occur on JDK 1.6, because of the latter's improved painting routines.

    Bug fixLuciadFusion

    TLcdGXYLayer now fires a property change event ('GXYLayerLabelPainter') when the layer label painter is changed.

    Bug fixDatabase Connectors

    The model decoder and encoder now correctly consider duplication of the first/last points in polygons.

    Bug fixAviation Standards

    TLcdARINCRunwayHandler incorrectly set the widths of runway objects to the value in feet, rather than converting it to meters as required by the specification of ILcdRunway.getWidth(). As a result, the runway painter would paint runways wider than they should be. This has now been corrected. Note that the width in feet, as read from the ARINC file, is still available in the features of the runway object (ILcdARINCRunwayFeature.WIDTH and ILcdARINCRunwayFeature.WIDTH_UNIT).

    Bug fixAviation Standards

    All painters now have clone methods that create proper, deeper clones.

    Bug fixDefense Symbology

    A bug has been fixed in the ILcdGXYEditor for T-shaped tactical symbols in APP-6A and MIL-STD 2525b (e.g., the 'Canalize' symbol), which prevented the translation of one of the points in some cases.

    Bug fixDefense Symbology

    The calculation of the area and line symbols with rounded corners in MIL-STD 2525b and APP-6A was not correct when a geodetic reference was used on the view, which resulted in an incorrect shape.

    Bug fixDefense Symbology

    The shape for the echelon TEAM/CREW in MIL-STD 2525b and APP-6A was not correctly rendered for some symbols on Linux and Solaris platforms.

    Upgrade considerationLuciadFusion

    TLcdCADRGModelListDecoder (present in versions 7.2.02 and higher) has been removed in favor of TLcdCADRGModelDecoder with its new property createMultilevelRasters.

    Upgrade considerationLuciadFusion

    TLcdGXYViewBufferedImage now throws an IllegalArgumentException when calling setNumberOfCachedBackgroundLayers with a non-zero argument.

    Upgrade considerationLuciadFusion

    Asynchronous paint events now also store the view for which the asynchronous paint was executed. The event constructor must now include this view.

    Upgrade considerationLuciadFusion

    From this version on LuciadMap is based on Java 1.4. This means amongst others that the libraries xmlParserAPIs.jar and xercesImpl.jar are no longer required, since these are part of the JDK as of version 1.4.

    Upgrade considerationLuciadFusion

    ILcdGXYAsynchronousPaintQueue has been extended with a new method isEmpty. Wrappers for or extensions of the above interface or its implementations should delegate to this method.

    Upgrade considerationLuciadFusion

    TLcdViewBufferedImage now throws UnsupportedOperationException instead of IllegalArgumentException when calling setGXYController and getGXYController. In the highly unlikely event that the former runtime exception is catched explicitly while calling these methods, its catch phrase should be changed or complemented with UnsupportedOperationException.

    Upgrade considerationLuciadFusion

    The default factories for dialogs, gui and beans gui have been switched to Swing. It is no longer required to set the Swing variant on TLcdBeanGUIFactory, TLcdGUIManager or TLcdUserDialog.

    Upgrade considerationLuciadFusion

    TLcd2DBoundsIndexedModel now checks whether an object can be added with canAdd as specified in ILcdModel. Up until now the object was only tested for implementing ILcdBounded. If the object can not be added, an IllegalArgumentException will be thrown. This may result in new exceptions being thrown, but this should not have great influence since these exceptions will only be thrown for objects which should not have been added to the model in the first place.

    Upgrade considerationAviation Standards

    The JTS library, used by AIS, has been upgraded from version 1.5 to 1.8. Because the name of the library has been changed from jts-1.5.jar to jts-1.8.jar, a classpath update is required if a classpath for a previous version of LuciadMap is used.

    Upgrade considerationMaritime Standards

    The JTS library, used by ECDIS, has been upgraded from version 1.5 to 1.8. Because the name of the library has been changed from jts-1.5.jar to jts-1.8.jar, a classpath update is required if a classpath for a previous version of LuciadMap is used.

    7.2

    7.2.24

    Bug fixLuciadFusion

    In some cases, asynchronous layer wrapper changes were not propagated to the wrapped layer. This has now been fixed.

    Bug fixLuciadFusion

    TLcdDMEDTileDecoder now again decodes the thumbnail raster data correctly.

    7.2.23

    ImprovementLuciadFusion

    The performance of the TLcdGXYLayerList.getGXYLabelPainter method has been significantly improved. This enhancement solves a performance problem, occuring when global label decluttering is enabled on maps containing layer lists with a large layer structure (such as ECDIS).

    ImprovementLuciadFusion

    TLcdContourFinder now supports status listeners, which are informed of the progress of the contour computations.

    Bug fixLuciadFusion

    TLcdCGMModelDecoder now avoids setting fonts with size 0 on decoded text elements.

    Bug fixLuciadFusion

    TLcdCGMModelDecoder now correctly reads padded text elements.

    Bug fixLuciadFusion

    TLcdSHPModelDecoder can now also read features from a dbf file when the case of the dbf file extension is the same as that of the shp file.

    7.2.22

    ImprovementLuciadFusion

    TLcdDEMModelDecoder and TLcdDEMTileDecoder now support data sets in UTM projections yet with rectangular bounds.

    ImprovementLuciadFusion

    TLcdGXYAsynchronousPaintQueue has been extended with a new method to check if asynchronous painting has finished.

    7.2.21

    Bug fixLuciadFusion

    Asynchronous paints no longer overwrite layer selections.

    7.2.19

    Bug fixLuciadFusion

    TLcdGXYSelectControllerModel2: If a bitwise or of SELECT_HOW_CHOOSE and SELECT_HOW_FIRST_TOUCHED was provided to the applySelection method, the SELECT_HOW_FIRST_TOUCHED was ignored.

    Bug fixDefense Standards

    A bug in the retrieval of feature attributes and their classes is fixed; the attribute values did not always math the attribute classes in the TLcdVPFFeatureClass and TLcdVPFModelDescriptor. Two kinds of changes might occur w.r.t. previous releases:
    • some attribute classes are now of type Short/Integer instead of String.
    • some attribute values are now of type String instead of Short/Integer.

    Bug fixDefense Symbology

    The code validation mechanism in the class TLcdEditableMS2525bObject in the MIL-STD 2525b API has been improved, to assure that an IllegalArgumentException is thrown when an invalid code is detected. In the past, a NullPointerException was sometimes thrown for invalid codes.

    7.2.18

    Bug fixLuciadFusion

    LuciadMap now correctly detects the MAC address on Windows Vista.

    Bug fixLuciadFusion

    TLcdGXYNewController now takes into account that the first click could have been invalid, for example when the mouse is clicked outside the world.

    Bug fixAviation Standards

    The class com.luciad.ais.shape.TLcdDiscretizedLonLatGeoPath now correctly discretizes geopath legs of type RHUMB_LINE. In the past, this was only correct when the leg corresponded to a meridian or parallel; in all other cases, the leg was interpreted as a geodesic line.

    Bug fixAviation Standards

    The class com.luciad.ais.shape.TLcdDiscretizedLonLatGeoPath could not correctly handle geopath legs of type ARC_BY_EDGE when the distance between center and edge exceeded a distance of about 300NM. In that case, the resulting arc did not pass correctly through the given point on the edge. The discretization process has been improved, and it is now possible to use ARC_BY_EDGE legs with center - edge distances of an arbitrary length within earth's dimensions.

    Bug fixAviation Standards

    TLcdDAFIFMilitaryTrainingRouteDecoder: decoding the CROSS_ALTITUDE_x_MEASURE and ENROUTE_ALTITUDE_x_MEASURE features no longer causes a NumberFormatException.

    Bug fixInfrastructure Standards

    com.luciad.format.dwg.TLcdDWGModelDecoder now correctly decodes text containing characters with the high bit set.

    7.2.16

    ImprovementLuciadFusion

    TLcdSHPModelEncoder has can now switch between exporting polygons and polylines as 2D or as 3D shapes in the SHP format. Since all ILcdShape implementations are essentially 3D, a switch had to be provided to export to the SHP format as 2D (POLYLINE, POLYGON) or as 3D (POLYLINE_Z, POLYGON_Z). For backward compatibility, the default behavior is to export as 2D shapes.

    Bug fixAdvanced Raster Services

    TLcdECWModelDecoder no longer throws an UnsatisfiedLinkError if the native ECW library can't be found.

    Bug fixMaritime Standards

    The S-52 rendering engine now takes into account the USAG and MASK flags of the edges in a line or area. These flags are now available through the API in the TLcdS57Area and TLcdS57Line objects. This fixes the problem of cell boundaries being visible within areas that are spread over multiple cells.

    7.2.15

    Bug fixLuciadFusion

    Area computations on an ellipsoid (geodesicArea in TLcdEllipsoid) now return positive values, regardless of the orientation (clockwise or counterclockwise) of the points passed.

    Bug fixLuciadFusion

    TLcdGeoTIFFModelDecoder now correctly handles multiple planar images in a single GeoTIFF file.

    7.2.14

    ImprovementMaritime Standards

    The S-57 package now provides two interfaces, ILcdS57ObjectClassDescriptionMap and ILcdS57AttributeClassDescriptionMap, that can map object class and attribute class acronyms and values to (language depedent) descriptions. A default implementation based on resource bundles is provided for both interfaces, as well as resources bundles for the English language.

    Bug fixLuciadFusion

    Smart-pan enabled ILcdGXYView implementations now do not paint empty regions anymore while panning.

    Bug fixLuciadFusion

    TLcdSHPModelEncoder now always encodes the proper record offsets in index files.

    Bug fixMaritime Standards

    The S-52 rendering engine now renders texts of enumerated and list values using their textual description, instead of their code, as is required by the specification. To enable this functionality, an appropriate ILcdS57AttributeClassDescriptionMap should be set on the TLcdS52GXYPainterProvider.

    Bug fixMaritime Standards

    A NullPointerException, that occured in TLcdS57ModelDecoder when a relationship points to a feature that is not available in the current set, now results in a warning instead of a decoding failure.

    Bug fixMaritime Standards

    A NullPointerException, that occured in TLcdS57ModelDecoder when the last feature in an ENC file was a filtered object, has been fixed.

    7.2.13

    ImprovementDefense Standards

    VPF databases with uppercase column names were no longer supported. This is fixed.

    7.2.12

    ImprovementDefense Standards

    TLcdBCIRasterModelDecoder now decodes three extra features: paperDates, creationDate and freeText. When an ILcdModel has been decoded, these features can be retrieved via the descriptor of the model, TLcdBCIRasterModelDescriptor.

    ImprovementDefense Standards

    An ArrayIndexOutOfBoundsException was thrown when edges in coverages with topological level 0 were read. This is fixed now.

    Bug fixLuciadFusion

    TLcdTABRasterModelDecoder now accepts TAB files containing grid references with tie points that are expressed in degrees.

    Bug fixLuciadFusion

    It is no longer possible to create a TLcdSelectionSupport for null ILcdSelection objects. A null pointer exception will be thrown when null is passed in the constructor.

    Bug fixLuciadFusion

    It is no longer possible to add a null selection listener to TLcdSelectionSupport. A null pointer exception will now be thrown immediately. Previously, a null pointer exception would be thrown when the first selection change event was fired.

    Bug fixLuciadFusion

    It is no longer possible to add a null status listener to TLcdStatusEventSupport. A null pointer exception will now be thrown immediately. Previously, a null pointer exception would be thrown when the first status changed event was fired.

    Bug fixLuciadFusion

    The licenseserver executable has been made more robust against network problems. It is now also better at detecting the server's IP addresses.

    Bug fixLuciadFusion

    The licenseserver executable has received a fix in its memory management.

    Bug fixLuciadFusion

    TLcdGXYViewJPanelLightWeight (and TLcdMapJPanelLightWeight subclass): fixed a visualization problem that occurred during panning with
    setCachingMode(TLcdMapJPanelLightWeight.DISABLE_CACHING)
    set.

    7.2.11

    Bug fixLuciadFusion

    TLcdGXYEditController2: now allows to change the default cursor using setCursor.

    Bug fixLuciadFusion

    TLcdGeoTIFFModelDecoder no longer throws a RuntimeException when trying to decode some GeoTIFFs that neither Java Advanced Imaging nor ImageIO can handle.

    7.2.10

    ImprovementLuciadFusion

    TLcdCADRGModelDecoder and TLcdCADRGImageDecoder have been made more resilient against future changes of the CADRG format.

    Bug fixLuciadFusion

    TLcdGXYTextPainter now computes the orientation of the painted text more accurately.

    7.2.09

    Bug fixLuciadFusion

    Asynchronous non-background layers no longer trigger background layer repaints.

    Bug fixLuciadFusion

    The range of an SLD colormap can now span values for 16 bits (either 0 to 65536, or -32769 to 32767). Raster pixels with values outside the range defined by an SLD ColorMap are now rendered with a transparent color.

    Bug fixReal-time Engine

    TLcdSimulator no longer throws ArithmeticExceptions when configured for maximum framerate.

    Bug fixInfrastructure Standards

    com.luciad.format.dgn.server.TLcdDGNMicroStationModelDecoder and com.luciad.format.dgn.server.TLcdDGNMicroStationServlet have been made more robust with respect to unexpected internal MicroStation errors.

    7.2.08

    ImprovementLuciadFusion

    TLcdDMEDModelDecoder has been made more robust for reading corrupt DMED files.

    Bug fixLuciadFusion

    TLcdGXYTextPainter now computes the size of the painted text more accurately.

    Bug fixLuciadFusion

    TLcdGXYViewJPanelLightWeight (and TLcdMapJPanelLightWeight subclass) now work correctly with asynchronous layers when
    setCachingMode(TLcdMapJPanelLightWeight.DISABLE_CACHING)
    is set.

    7.2.07

    Bug fixLuciadFusion

    TLcdSHPModelEncoder now always encodes the proper record lengths.

    7.2.06

    ImprovementMaritime Standards

    The error reporting of TLcdS57AttributeClassMapDecoder and TLcdS57ObjectClassMapDecoder has been improved; they now provide clear messages if something goes wrong during the decoding. Both attribute and object class map formats have now been documented in the API and in the default map files.

    ImprovementMaritime Standards

    A setter for an ILcdS57AttributeClassMap was added to the TLcdS57CatalogueModelDecoder (this could already be done in the past via the TLcdS57ModelDecoder the catalogue decoder delegates to).

    ImprovementMaritime Standards

    A new interface, ILcdS57FeatureObject, was added to the API. This interface is the new root interface for all S-57 domain objects. The previous root interface, ILcdS57Object, has become an extension of this interface. While the ILcdS57Object could not be used to model objects without geometry (such as S-57 collections), the new ILcdS57FeatureObject interface can, as it does not extend the ILcdShape interface. A default implementation of the new interface, TLcdS57FeatureObject, is also available. S-57 models will remain backwards compatible; they will only contain the objects which have an associated geometry (and thus implement ILcdS57Object). Objects without geometry are only reachable through relationships with geometric objects.

    Bug fixMaritime Standards

    The stroke was not explicitly set for some S-52 icon components (arcs, circles, polygons), causing some icons to be rendered with an incorrect stroke width. This is fixed now.

    Bug fixMaritime Standards

    A bug in the TLcdS57ModelDecoder was fixed. This bug could in some case have lead to empty line objects (lines without any points) in decoded S-57 models.

    Upgrade considerationMaritime Standards

    The S-57 domain model is extended and now supports S-57 relationships. Relationships are modelled using the ILcdS57Relationship and TLcdS57Relationship classes. The new ILcdS57FeatureObject interface provides methods to retrieve the relationships they are involved in. As the existing ILcdS57Object interface is an extension of this new interface, this means all existing implementations of ILcdS57Object need to be extended with these methods. The TLcdS57ModelDecoder is extended to decode and support relationships.

    7.2.05

    ImprovementAdvanced Raster Services

    The native ECW library is now available for 64-bits Linux as well.

    ImprovementAdvanced Raster Services

    TLcdECWModelDecoder has been updated to use the latest native ECW library.

    ImprovementAdvanced Raster Services

    TLcdMrSIDModelDecoder now also accepts "file:" URLs.

    ImprovementAdvanced Raster Services

    TLcdECWModelDecoder now also accepts "file:" URLs.

    ImprovementWeather & Environment Standards

    com.luciad.format.grib.TLcdGRIBModelDecoder now also accepts the extension "grib" in its method canDecodeSource.

    ImprovementDefense Standards

    TLcdUSRPModelDecoder now accepts files with missing QSR and QUV fields.

    ImprovementDefense Standards

    TLcdUSRPModelDecoder now also looks for ASRP and USRP data sets in the ASRP and USRP subdirectories, when decoding TRANSH01.THF files.

    ImprovementMaritime Standards

    The rounding during the conversion of S-52 digital library coordinates to AWT coordinates has been improved, slightly improving the rendering quality of the S-52 icons.

    ImprovementMaritime Standards

    Area fill patterns are translated together with the map now. This gives a better dragging experience, and resolves some artifacts that became visible on the map border after dragging when background image caching was enabled .

    ImprovementMaritime Standards

    The S-52 symbology now supports staggered fill patterns.

    ImprovementMaritime Standards

    The S-52 symbology now also supports raster symbols.

    ImprovementMaritime Standards

    The TLcdS57CatalogueModelDecoder was extended to properly support Inland ECDIS. The number of levels was therefore extended from 6 to 10: 1 to 6 for the existing navigational purposes, 7 to 9 for river-level navigational purposes, and 10 for overlay cells (identified with navigational purpose 'L').

    Bug fixLuciadFusion

    TLcdGXYViewJPanelLightWeight (and TLcdMapJPanelLightWeight subclass): now paints transparently on its background if
    setOpaque(false)
    and
    setCachingMode(TLcdMapJPanelLightWeight.DISABLE_CACHING)
    are set.

    Bug fixLuciadFusion

    The method geodesicArea in TLcdEllipsoid now takes into account that subsequent points in the array of points passed may be equal.

    Bug fixLuciadFusion

    TLcdGeoTIFFModelDecoder now also supports Polar Stereographic projections that are not centered at a pole.

    Bug fixAdvanced Raster Services

    TLcdECWModelDecoder now avoids overflows in the computation of the default cache size.

    Bug fixTerrain Analysis Engine

    TLcdTerrainProfileController: Used to throw a NullPointerException when a PropertyChangeEvent is fired and the view is set to null.

    Bug fixS-63

    S63 models now properly support ILcdFeatured when attribute and object class maps are configured on the TLcdS63ModelDecoder.

    7.2.04

    ImprovementLuciadFusion

    TLcdJPLGeodeticDatumFactory now recognizes NTF as an alias for Nouvelle Triangulation Francaise (Paris).

    Upgrade considerationAviation Standards

    The airspace domain objects and related objects now have clone methods that create proper, deeper clones. The clone methods of the following classes have been modified:
    • TLcdAirspace: the clone implementation now clones the airspace segments and no longer copies the discretization,
    • ILcdAirspaceAssociation: made clone method public,
    • TLcdAirspaceAssociation: added clone implementation that shares the airspace,
    • TLcdAssociationBasedAirspace: the clone implementation now also clones the associations,
    • ALcdDiscretizedGeoPath: added clone implementation that uses super.clone(),
    • TLcdDiscretizedLonLatGeoPath: the clone implementation now uses super.clone() and no longer copies the discretization,
    • TLcdGeoPath: added protected clone implementation that clones the GeoPath legs,
    • TLcdGeoPathLeg: added clone implementation that clones the parameter list.
    Please refer to the reference documentation for more detailed information about the actual implementation.

    7.2.03

    ImprovementLuciadFusion

    TLcdBILModelDecoder and TLcdBILTileDecoder now support tiled decoding, greatly improving the efficiency when decoding large files.

    ImprovementLuciadFusion

    TLcdBILModelDecoder and TLcdBILTileDecoder now support elevation data.

    Bug fixLuciadFusion

    TLcdLonLatParser now also handles decimal commas.

    7.2.02

    ImprovementLuciadFusion

    The new class TLcdCADRGDirectoryModelDecoder decodes CADRG models from directories that contain CADRG frame files. The decoder performs an exhaustive search of the directories instead of reading an A.TOC file. It is still performant, because it reads actual file contents lazily.

    ImprovementLuciadFusion

    TLcdCADRGModelDecoder has a new property createMultilevelRasters, to optionally decode multilevel rasters instead of ordinary rasters. These multilevel rasters contain the traditional CADRG rasters, organized according to their scales.

    ImprovementLuciadFusion

    TLcdSLDFeatureTypeStyle now returns the description title as a String representation if available.

    ImprovementLuciadFusion

    TLcdBILModelDecoder now decodes subtiled rasters by default, in order to avoid having to load entire BIL data files at once.

    ImprovementLuciadFusion

    TLcdBILTileDecoder now also handles subtiling with truncated last rows and columns of subtiles.

    ImprovementLuciadFusion

    TLcdBILModelDescriptor now also indicates elevation data.

    ImprovementAviation Standards

    The class com.luciad.format.arinc.decoder.TLcdARINCDecoder has been made more robust: it does now allow that ARINC datasets have one or more empty lines at then end. Previously, it rejected all datasets that did not use 132 characters for each record line.

    Bug fixLuciadFusion

    The labelsEditable property change event fired by TLcdGXYLayer now returns the correct new value.

    Bug fixLuciadFusion

    The asynchronous extended layer sample now correctly overrides the tracker getters.

    Bug fixLuciadFusion

    A problem with the license server refusing to start on some 64-bits Linux distributions (with the message "Your server license is not valid for this host") has been fixed.

    Bug fixLuciadFusion

    The default delimiter is now set correctly to TAB in TLcdMIFModelDecoder.

    Bug fixLuciadFusion

    TLcdColorMapCustomizer now fires a PropertyChangeEvent when a color is changed.

    Bug fixAviation Standards

    TLcdDAFIFAerodromeNavaidDecoder: decoding aerodrome navaid objects from a small DAFIF dataset no longer causes a NullPointerException.

    7.2.01

    ImprovementLuciadFusion

    TLcdGXYPointListPainter now has method to check whether the current mouse location is inside the point list as if it were rendered as a polygon. This facilitates modifying the behavior of the isTouched method.

    ImprovementRadar Connectors

    TLcdASDIFlightPlan: now has a public clone method.

    Bug fixLuciadFusion

    LMAP-2295
    TLcdGXYNewController and TLcdGXYEditController no longer highlight multiple snap targets. This was not very useful as it is only possible to choose one snap target.

    Bug fixAdvanced GIS Engine

    The intersection calculation between two ILcdShapeList objects or between an ILcdShapeList and an individual ILcdShape object in the available implementations of ILcd2DLineIntersectionTopology always stopped as soon as one intersection point was found.

    7.2

    ImprovementLuciadFusion

    TLcdCompositeIcon now has an implementation for the equals and hashcode methods.

    ImprovementLuciadFusion

    TLcdGXYPainterFontStyle is a new ILcdGXYPainterStyle that sets a font and a color. It is typically useful for TLcdGXYTextPainter.

    ImprovementLuciadFusion

    To enable evaluating custom extensions or interpretations of an OGC filter, the following interfaces have been made available:
    • ILcdGenericExpression: container marker interface for any object that can be evaluated
    • ILcdEvaluator: evaluates expressions
    • ILcdEvaluatorFactory: creates evaluators for given generic expressions
    And these changes have been applied to the API:
    • TLcdOGCFilterEvaluator: now has a method to create an evaluator factory that can be overwritten to return custom evaluator factories
    • ILcdEvaluatorFunction: the signature of the method apply has changed.

    ImprovementLuciadFusion

    TLcdWKTReferenceFormatter enables formatting a georeference in Well Known Text format as specificed in OGC document 01-009: Coordinate Transformation Service Implementation Specification.

    ImprovementLuciadFusion

    The class TLcdFeatureIndexedVectorModel is added to support an ILcdModel that can be indexed on values of ILcdFeatured objects which are not ILcdBounded.

    ImprovementLuciadFusion

    TLcdGXYTextPainter now allows to set the font directly, as an alternative to setting the font in a painter style.

    ImprovementLuciadFusion

    TLcdGXYEditController2: now updates the cursor when the ctrl-key is pressed or released. Before it was necessary to move the mouse for that.

    ImprovementLuciadFusion

    SLD: labels for complex polygons now have better placement, near the largest polygon, when defined with a point placement.

    ImprovementLuciadFusion

    TLcdGXYLabelPainter: this label painter now respects the pin color and selected pin color when they are explicitly set. If they are not set, the foreground and selection color of the labels themselves are used.

    ImprovementLuciadFusion

    TLcdGXYStampLabelPainter: mouse wheel events are now dispatched to the interactive labels when running on JDK 1.4 or higher.

    ImprovementLuciadFusion

    TLcdGXYPolylineLabelPainter now has a property to put the label on the path followed by the pen used to draw the polyline. Until now, the label was always placed at the center of the projected points of the segment the label would be placed next to. For long lines, rendered with a geodetic pen, the gap between the polyline and the label could become unacceptably big. Placing the label along the path does come at a cost, since the computation for the label location will be more complex.

    ImprovementLuciadFusion

    TLcdGXYLayerList now throws property change events when adding a sublayer causes its properties to change. Also, a protected method firePropertyChangeEvent has been added to support property change events in subclasses.

    ImprovementLuciadFusion

    A new package com.luciad.view.gxy.asynchronous provides support to paint individual layers asynchronously. The package offers layer wrappers that protect the layer state, and a paint queue to execute the actual painting in a background thread. At the same time, the method ILcdGXYView.setPaintInBackground has been deprecated in favor of this approach, since it is more versatile and generally offers better thread safety. Please consult the developer's guide for more details.

    ImprovementLuciadFusion

    The area painters (TLcdGXYArcBandPainter, TLcdGXYBoundsPainter, TLcdGXYBufferPainter, TLcdGXYCirclePainter, TLcdGXYEllipsePainter, TLcdGXYLonLatHeightBufferPainter, and TLcdGXYPointListPainter) now have consistent paint modes. Each of these painters/editors extend from the ALcdGXYAreaPainter which adds a mode, a selection mode and a edit mode property. These properties will be used when painting an object, a selected object and an object that is being edited.

    ImprovementLuciadFusion

    TLcdDataInputStream now reads little endian longs and integers faster.

    ImprovementLuciadFusion

    Mach, the ratio of the speed of an object and the speed of sound in the same fluidum has been added as a unit to TLcdSpeedUnit. The conversion factor is that of 340.3, corresponding to a ratio to the speed of sound at a temperature of 15 degrees Celsius and at sea level in the Earth's atmosphere. TLcdSpeedFormat has been adapted to support formatting and parsing speeds expressed in this unit.

    ImprovementLuciadFusion

    The contains2D methods in TLcdXYFloatPoint now take into account that the point is internally represented by floats.

    ImprovementLuciadFusion

    A UTM grid reference, TLcdUTMGrid, can now have its name set.

    ImprovementLuciadFusion

    There is a new class com.luciad.view.gxy.painter.TLcdGXYOffsetIconPainter that takes an ILcdGXYPainter which it uses to paint offset labels. The typical use case is that were you want to paint an icon at a certain offset and wish to reuse the label decluttering algorithms to automatically declutter these icons.

    ImprovementLuciadFusion

    TLcdSelectionSupport and TLcdLayer now have a new method selectObjects to select several objects at once. This is faster as selecting them one by one.

    ImprovementLuciadFusion

    TLcdAWTUtil: now has a method to find the parent Window of an Object.

    ImprovementReal-time Engine

    TLcdContinuousDeclutteringLabelPainter: now moves the anchor point of the label to the desired label location, where this used to be the top left of the label bounds.

    ImprovementReal-time Engine

    ALcdTimeIndexedSimulatorModel was added: it is an abstract extension of ALcdSimulatorModel that was designed to handle large data sets, as its time performance is generally related to the amount of changes that are required, not to the total amount of data.

    ImprovementReal-time Engine

    ALcdSimulatorModel was added: it is an abstract implementation of ILcdSimulatorModel that conveniently handles the properties of the interface and their property changes.

    ImprovementAviation Standards

    Support for the DAFIF Edition 8 specification was added to the DAFIF package. The model decoders that can decode DAFIF Edition 8 data can be found in the package com.luciad.format.dafift.decoder.

    ImprovementAviation Standards

    The ARINC handlers did not always decode all information available in version 15 of the ARINC 424 format. They are now extended with new features to make the missing information available.

    ImprovementAviation Standards

    The com.luciad.format.arinc.decoder.TLcdARINCEnrouteAirwayHandler now decodes all characters of the com.luciad.format.arinc.model.route.ILcdATSRouteSegmentFeature.CRUISE_LEVEL feature, where previously it only decoded the first.

    ImprovementAviation Standards

    The com.luciad.format.arinc.decoder.TLcdARINCNDBHandler now also supports Terminal airport and heliport NDB navaid records ('PN'). A new feature com.luciad.format.arinc.model.navaid.ILcdARINCNDBFeature.AERODROME_ID is added that contains the airport/heliport identification code for terminal airport/heliport NDB navaids.

    ImprovementAviation Standards

    The com.luciad.format.arinc.model.airspace.ILcdARINCAirspaceFeature is extended with the features FIR_UIR_COMBINED_FIR_UPPER_LIMIT, FIR_UIR_COMBINED_FIR_UPPER_LIMIT_UNIT and FIR_UIR_COMBINED_FIR_UPPER_LIMIT_REFERENCE that are only filled in by the com.luciad.format.arinc.decoder.TLcdARINCFIRUIRHandler : in case an airspace is a combined FIR/UIR airspace these features contain the upper limit characteristics of the FIR, while the existing UPPER_LIMIT features contain the upper limit characteristics of the UIR.

    ImprovementAviation Standards

    The com.luciad.format.arinc.decoder.TLcdARINCWaypointHandler now also supports Terminal airport ('PC') and heliport ('HC') waypoint records. A new feature com.luciad.format.arinc.model.navaid.ILcdARINCWayPointFeature.REGION_CODE is added that contains the airport/heliport identification code for terminal airport/heliport waypoints, and 'ENRT' for enroute waypoints.

    ImprovementAviation Standards

    The ARINC decoder now supports version 15, 17 and 18 of the ARINC 424 format, while previously it only supported version 15.

    ImprovementAviation Standards

    The airspace painter com.luciad.ais.symbology.icao.TLcdICAOAirspacePainter has been optimized to improve the drawing performance up to 50%.

    ImprovementDefense Standards

    The color model of the TLcdVPFLayerFactoryModel has been extended slightly; the 'library reference' and 'tile reference' coverage now always have a gray color, instead of a random color.

    ImprovementDefense Standards

    Relative database paths are now supported in VPF property files.

    ImprovementDefense Standards

    The user attribute set of a VPF feature now contains all attributes avaiable in the VPF feature class table, except low-level database-related attributes (id, edg_id, tile_id, ...). This used to contain only the set of attributes for which a mapping in the character or integer value description table was available.

    ImprovementDefense Standards

    The VPF models and model decoder have been improved to be used in multi-threaded environments.

    ImprovementDefense Standards

    Some extra methods were added to the TLcdVPFFeatureClass class,, to simplify the usage of the user attributes.

    ImprovementDefense Standards

    Coordinates defined as VPF short floating point type will now be mapped on Java floats, instead of doubles.

    ImprovementDefense Standards

    3-D geometries are supported now. If a Z-coordinate is available in the data, an XYZ- or LonLatHeight geometry will be created now (only the first two coordinates were supported before).

    ImprovementDefense Standards

    The mimimum object size is now taken into account when performing a model.applyOnInteract() call. Objects which are too small to be visible on screen will no longer be painted.

    ImprovementDefense Standards

    Performance of the VPF model decoder has been improved significantly. The decoding time of both memory models (on-the-fly and in-memory model) has been reduced, as well as the memory usage of both models. The documentation of TLcdVPFModelDecoder contains some extra performance tips. Additionally, a new model type has been introduced, the hybrid model, which is generally faster than the on-the-fly model, and requires less memory than the in-memory model. It uses a caching mechanism, adapting itself to the amount of available memory (the more memory available, the better the model will perform). This model is from now on the default model, used by the VPF model decoder.

    ImprovementDefense Symbology

    The LuciadMap APP-6A package now offers support for TTA-106 V4, an extension for APP-6A with an additional set of symbols. By default, TTA-106 support is disabled. It can be activated by using the following Java VM property when starting an application that uses the APP-6A package: -Dcom.luciad.symbology.app6a.tta106=true. Afterwards, the TTA-106 extension becomes available in the hierarchy tree of the APP-6A customizer and the domain object TLcdEditableAPP6AObject accepts TTA-106 symbol id codes. These objects can be used in the same way as regular APP-6A objects.

    ImprovementDefense Symbology

    It is now possible in APP-6A and MIL-STD 2525b to render the following symbols with more than two points:
    • Air Corridor (APP-6A: 2.X.2.1.2.2.1, MIL-STD 2525b: 2.X.2.2.2.1)
    • Flight Route (APP-6A: 2.X.2.1.2.2.3, MIL-STD 2525b: 2.X.2.2.2.3)

    This is in accordance with the specification, which defines that these symbols can contain multiple line segments.

    ImprovementDefense Symbology

    A set of tactical MIL-STD 2525b symbols have received additional labels, to improve their usability. The label list
    • Unique Designation (T): configurable through the modifier ILcdMS2525bCoded.sUniqueDesignation
    • Additional Information (H): configurable through the modifier ILcdMS2525bCoded.sAdditionalInformation
    • Date Time Group (W): configurable through the modifier ILcdMS2525bCoded.sDateTimeGroup
    • Effective Time (w): configurable through the modifiers ILcdMS2525bCoded.sEffectiveTime
    • Superior / Higher Formation (M): configurable through the modifiers ILcdMS2525bCoded.sHigherFormation
    • Altitude / Depth (X): configurable through the modifiers ILcdMS2525bCoded.sAltitudeDepth
    • Location (Y): configurable through the modifiers ILcdMS2525bCoded.sLocationLabel
    is now applicable to the following list of tactical point symbols
    • 2.X.2.1.1.1.1.1, G*G*GPUUD-****X
    • 2.X.2.1.1.1.2, G*G*GPUY--****X and children
    • 2.X.2.1.1.2.1, G*G*GPRS--****X
    • 2.X.2.1.1.2.2, G*G*GPRN--****X
    • 2.X.2.1.1.3.3, G*G*GPWE--****X
    • 2.X.2.1.1.3.6, G*G*GPWI--****X
    • 2.X.6.1.1, G*O*ED----****X
    • 2.X.6.1.2, G*O*EP----****X
    • 2.X.6.1.3, G*O*EV----****X
    • 2.X.3.1.5.1, G*M*OMU---****X
    • 2.X.2.1.1.5, G*G*GPH---****X and children
    • 2.X.2.2.1.1, G*G*APP---****X
    • 2.X.2.2.1.2, G*G*APC---****X
    • 2.X.2.1.1.4, G*G*GPF---****X
    • 2.X.2.4.1.1, G*G*DPT---****X
    • 2.X.4.1.1.1, G*F*PTS---****X
    • 2.X.4.1.1.2, G*F*PTN---****X
    and the following list of tactical line symbols
    • 2.X.2.1.3.9, G*G*GAS---****X
    • 2.X.2.1.3.11, G*G*GAZ---****X
    • 2.X.2.3.1, G*G*PD----****X
    • 2.X.3.2.1.2, G*M*BDD---****X
    • 2.X.3.4.4, G*M*NR----****X
    As in the past, individual modifiers can be restrained from being displayed as a label by using the method setLabelEnabled(String) in ILcdMS2525bStyle. A style can be associated with a symbol through ILcdMS2525bStyled, or it can be set as a default style on a (label) painter provider.

    ImprovementDefense Symbology

    The rendering of the following APP-6A and MIL-STD 2525b tactical symbols has been improved:
    • The 'Fortified line' symbol (MIL-STD 2525b: 2.X.3.3.3, G*M*SL----****X; APP-6A: 2.X.2.2.3.3, G*C*BSL---*****) now takes the 'cornerSmoothness' property of the symbol's style into account, to render a rounded polyline. By using 0 as value for this property, the original rendering with straight corners can still be reinstated.

    ImprovementDefense Symbology

    The rendering of the MIL-STD 2525b tactical symbols 'Dose rate contour lines' (G*M*NL----****X, 2.X.3.4.9) and 'Series or Group of Targets' (2.X.4.3.1.3), and of the APP-6A tactical symbols 'Dose rate contour lines' (G*C*BWR---*****, 2.X.2.2.4.12), 'Series of Targets using Regular Targets' (G*C*FARS--*****, 2.X.2.3.3.4.1), 'Series of Targets using Rectangular Targets' (G*C*FARU--*****, 2.X.2.3.3.4.2), 'Groups of Targets using Regular Targets' (G*C*FAZT--*****, 2.X.2.3.3.7.1) and 'Groups of Targets using Rectangular Targets' (G*C*FAZU--*****, 2.X.2.3.3.7.2) have been improved:
    • The 'cornerSmoothness' property of the symbol's style is now used to render a rounded area. By using 0 as value for this property, the original rendering with straight corners can still be reinstated.
    • The label of the symbol is now drawn with the font of the symbol's style (cfr. 'labelFont' property in ILcdMS2525bStyle and ILcdAPP6AStyle), instead of using a scaled version of this font.

    ImprovementInfrastructure Standards

    The DGN painter classes now return deep clones.

    ImprovementRadar Connectors

    Introduced ASDI : the package com.luciad.format.asdi is the Industry Specific Component for decoding and displaying ASDI data.

    Bug fixLuciadFusion

    All painters in the com.luciad.view.gxy.painter package now have clone methods that create proper, deeper clones. Implementations of ILcdGXYPainterStyle that are configured on these painters will be deeply cloned if they implement ILcdCloneable. All the implementations of ILcdGXYPainterStyle in LuciadMap implement the ILcdCloneable interface now. The ILcdCloneable interface itself now extends the java Cloneable interface.

    Bug fixLuciadFusion

    TLcdAUTOReferenceParser and TLcdAUTO2ReferenceParser now correctly take into account the latitude origin for UTM and Transverse Mercator references.

    Bug fixLuciadFusion

    TLcdSWMenuItem can now handle actions without an icon.

    Bug fixLuciadFusion

    TLcdRasterPainter, TLcdMultilevelRasterPainter, and their Warp/NoWarp versions now have clone methods that create proper, deeper clones.

    Bug fixLuciadFusion

    TLcdRangeSlider now passes all change events to its listeners when a new model was set to the Component.

    Bug fixLuciadFusion

    TLcdGXYEditController2: it was possible to unintentionally reshape multiple objects when the user started without the ctrl-key held and pressed this key 'mid-flight'.

    Bug fixLuciadFusion

    TLcdGXYLayer: when an ILcdGXYViewLabelPainter was used on the ILcdGXYView, and an ILcdGXYLayerLabelPainter was set to the TLcdGXYLayer, and if labeled was false and selection labeled true, the layer still (incorrectly) called the ILcdGXYLayerLabelPainter asking it to paint labels.

    Bug fixLuciadFusion

    The ILcdGXYView implementations in com.luciad.view.map no longer adjust the view origin when an XY world reference is set on the view equal to the one that was already set on it. When the view was resized earlier, this no longer results in a map pan like operation. To retain the previous behavior, the view origin needs to be set manually to the center point of the view after the XY world reference has been set.

    Bug fixLuciadFusion

    The getScaleRange and getLabelScaleRange methods of TLcdGXYLayerList no longer throw a NullPointerException when the range of one of its sublayers is null.

    Bug fixLuciadFusion

    TLcdGXYStampLabelPainter: the selected pin color is now respected.

    Bug fixLuciadFusion

    TLcdGXYLayerList had a dependency on Swing which is now removed.

    Bug fixLuciadFusion

    TLcdLayer now listens to model changes when constructed using a model and a label.

    Bug fixLuciadFusion

    RunTimeExceptions, thrown by XML element adapters during the encoding of an object, are no longer caught and logged by the TLcdXMLEncoder, but directly propagated to the caller of the encodeXML() method.

    Bug fixLuciadFusion

    TLcdEPSGReferenceFormatter now again formats common world references.

    Bug fixLuciadFusion

    TLcdModelChangedEventSupport no longer exposes internal information when passing events to the listeners. This enables listeners themselves to modify the model. Note that changes made by the listeners should not be fired immediately to allow subsequent listeners to receive the events in the order they have occurred.

    Bug fixLuciadFusion

    Rendering performance for TLcdImageIcon has been improved. Performance increase is most noticeable when rendering a high number (more than 100) of different image icons.

    Bug fixLuciadFusion

    The performance of the continuous pan controller, TLcdGXYContinuousPanController, has been improved on Linux and Solaris in low memory environments.

    Bug fixLuciadFusion

    TLcdGXYStampLabelPainter: the anchor point of the label is now correctly defined. It is the upper left corner of the bounds of the label.

    Bug fixLuciadFusion

    When setting a new model on a sub gxy layer in a TLcdGXYLayerList, the filter inidicating whether an object belongs to the model of the layer can no longer become invalid.

    Bug fixLuciadFusion

    The bounds of a TLcdLonLatPolyline and TLcdLonLatPolygon are now more accurately computed when the polyline is close to either the North or the South pole.

    Bug fixReal-time Engine

    TLcdContinuousDeclutteringLabelPainter: If it was used as ILcdGXYLayerLabelPainter on an TLcdGXYLayer for which isLabeled() returned false, and isSelectionLabeled() returned true, invalid warnings were produced.

    Bug fixReal-time Engine

    TLcdContinuousDeclutteringLabelPainter: If it was used as ILcdGXYLayerLabelPainter on an TLcdGXYLayer for which isLabeled() returned false, and isSelectionLabeled() returned true, ALcdLabelLocations.setPainted was not called for the labels it had painted.

    Bug fixReal-time Engine

    TLcdContinuousDeclutteringLabelPainter: no longer tries to spread sub-labels of the same label around. Instead, it respects their relative locations, and they are moved as one single unit.

    Bug fixDefense Standards

    A bug in the decoding of geometry data was fixed.

    Bug fixDefense Standards

    The VPF samples and the Lucy addon now have the same performance.

    Bug fixDefense Standards

    The VPF model decoder now throws a clear exception when a VPF properties file contains an invalid entry (e.g., a non-existing feature class).

    Bug fixDefense Symbology

    The affiliations JOKER and FAKER for the 'Air Defense' symbols in MIL-STD 2525b (hierarchy 1.X.3.1.1.1) and APP-6A (hierarchy 1.X.3.1.1.1) were not visualized correctly and have been fixed.

    Bug fixRadar Connectors

    The TLcdASTERIXFinalReplayInputStream.close did not cleanup properly the threads it started. This is fixed now.

    Upgrade considerationLuciadFusion

    TLcdPOLModelDecoder now checks whether a source name ends with '.pol'. This will be of influence for users having files containing pol data in a location with another extension. These files will no longer be decoded if the call to the decode method is preceded by a call to canDecodeSource. Decoding without calling the canDecodeSource method is still possible.

    Upgrade considerationLuciadFusion

    The signature of the method apply has changed in the class ILcdEvaluatorFunction. This should have no runtime impact as the contents of the removed argument ILcdAssocList were not accessible and could therefor not be used. See also the release note on support for custom extensions of OGC filter in the enhancements section.

    Upgrade considerationLuciadFusion

    TLcdSharedBuffer by default now returns a buffer suitable for asynchronous painting. It relies on Java memory allocation and does not support a direct getByte() operation. The old behavior can be restored by simply calling setBufferInstance with a TLcdBuffer instance of the desired size.

    Upgrade considerationLuciadFusion

    TLcdPropertyColor and TLcdPropertyColorSW in com.luciad.beans and com.luciad.beans.swing now have their dialog title set per instance. Before, the title was set for all instances at once. To retain the same behavior, the dialog title now has to be set on all instances of these classes.

    Upgrade considerationLuciadFusion

    The public static field sTraceOn or TRACEON in ALcdVVXAxisRendererJ2D, TLcdFontGXYPainterStyle, TLcdFillGXYPainterStyle, TLcdLineGXYPainterStyle are removed. Tracing can be turned on by calling either setTraceOn or setClassTraceOn as in other LuciadMap classes. This should not have any effect on deployed applications as tracing was turned off and is still turned off by default.

    Upgrade considerationLuciadFusion

    If you are running your LuciadMap application in JRE 1.4 or earlier, you must not forget to put the appropriate backport-util-concurrent-java*.jar in the class path. While this was only strictly necessary for multi-threaded code in the past, it is now required by common LuciadMap classes.

    Upgrade considerationLuciadFusion

    TLcd2DBoundsIndexedModel is no longer left in an inconsistent state when a non bounded object is added. The model now throws an IllegalArgumentException for non bounded objects. As this is a runtime exception, this change will not incurr compiling errors. There should also be no effect at runtime, since adding non bounded objects previously would have left the model in an invalid state.

    Upgrade considerationLuciadFusion

    The paint mode values of the TLcdGXYPointListPainter (POINT, POLYLINE, POLYGON, FILLED and OUTLINED_FILLED) have changed to make it consistent across all area painters. It may be required to recompile your application in order to use the new values of the constants.

    Upgrade considerationLuciadFusion

    TLcdLonLatHeightPoint: The implementation is now slightly faster. In the very unlikely event that somebody is using the protected fields fCosLat, fCosLon, fSinLat or fSinLon, they should update their code to use the getCosY(), getCosX(), getSinY() and getSinX() methods.

    Upgrade considerationLuciadFusion

    TLcdG2DLineStyle no longer has an inconsistency between the set and get methods for the color and the selection color. Both methods now assume the widths are doubles. This change will not affect existing code, as the argument of the setter is widened to a double from an int.

    Upgrade considerationAviation Standards

    To support editable labels for airspaces and navaids, the labelpainters TLcdICAOAirspaceDetailedLabelPainter and TLcdICAONavaidLabelPainter (which is extended by TLcdICAODMELabelPainter, TLcdICAONDBLabelPainter, TLcdICAOTACANLabelPainter and TLcdICAOVORLabelPainter) do now extend from TLcdGXYStampLabelPainter instead of TLcdGXYLabelPainter. Because TLcdGXYLabelPainter is a subclass of TLcdGXYStampLabelPainter, a number of methods are not available anymore:
    • public getLabelTextAlignmentMode(), setLabelTextAlignmentMode(int): was not used, because text aligment is automatically chosen to comply with the ICAO guidelines.
    • public isConsiderPinForBounds(), setConsiderPinForbounds(boolean): was not used.
    • public isFrame(), setFrame(boolean): was not used, because framed labels are automatically used to comply with the ICAO guidelines.
    • public paintLabel(int aLocationIndex, java.awt.Graphics aGraphics, int aMode, ILcdGXYContext aGXYContext): replaced by paintLabel(java.awt.Graphics aGraphics, int aMode, ILcdGXYContext aGXYContext), because the location is automatically determined by TLcdGXYStampLabelPainter
    • protected paintPin(java.awt.Graphics aGraphics, int aMode, int aStartPointX, int aStartPointY, int aEndPointX, int aEndPointY): painting the pin is handled automatically by TLcdGXYStampLabelPainter
    • protected calculateMaxLabelWidth(java.lang.String[] aLabelArray, java.awt.Graphics aGraphics): only removed in TLcdGXYNavaidLabelPainter, but still available in TLcdICAOAirspaceDetailedLabelPainter as it was a public method in that class.
    • protected getUpperLeftPointSFCT(java.awt.Point aAnchorPoint, java.lang.String[] aLabelArray, int aMaxLabelWidth, int aSingleLabelHeight, java.awt.Point aLocationPointSFCT): the position of the upper left point is now automatically determined by TLcdGXYStampLabelPainter.
    • protected getPinPointSFCT(java.awt.Point aAnchorPoint, java.lang.String[] aLabelArray, int aSingleLabelHeight, java.awt.Point aPinLocation): the position of the pin point is now automatically determined by TLcdGXYStampLabelPainter.
    These changes may be incompatible if any code made use of one of the methods listed above or if it explicitly relied on the fact that these labelpainters were of the type TLcdGXYLabelPainter (e.g., in an instanceof test).

    Upgrade considerationAviation Standards

    The com.luciad.format.arinc.decoder.TLcdARINCRestrictiveAirspaceHandler now uses the com.luciad.format.arinc.model.airspace.ILcdARINCAirspaceFeature features ICAO_REGION, TYPE, RESTRICTIVE_AIRSPACE_DESIGNATOR and MULTIPLE_CODE to uniquely identify a restrictive airspace, where previously it only used the RESTRICTIVE_AIRSPACE_DESIGNATOR : only using the RESTRICTIVE_AIRSPACE_DESIGNATOR could lead to incorrect airspaces, i.e. too few airspaces with too many segments.

    Upgrade considerationDefense Standards

    TLcdVectorIconProvider was removed from the API, as it did not contain any public API functionality.

    Upgrade considerationDefense Standards

    VPF field types of feature attributes are now properly mapped on Java classes (all types used to be mapped on java.lang.String). The documentation of TLcdVPFFeatureClass contains a detailed overview of this mapping.

    Upgrade considerationDefense Standards

    The return values of the coverage.getPath() and coverage.getPathName() methods now point to the correct coverage directory, instead of the parent library directory.

    Upgrade considerationDefense Standards

    Methods, returning package-visible class instances, were removed from TLcdVPFGeoSymProvider.

    Upgrade considerationRadar Connectors

    TLcdASTERIXLiveDecoder: To avoid threading problems between the decoder adapting the data and a user (for example) painting the data, all data modifications used to be done on the event dispatch thread (aka AWT thread). As this thread is also used for painting, there were no threading problems because all modifications and read access were queued and executed one after the other. The drawback is that this does not offer much flexibility and scalability, nor does it play well server side.

    Instead, TLcdASTERIXLiveDecoder now simply adapts the data on the calling thread, but uses TLcdLockUtil to acquire a write lock whenever it does so. As a result, users of the live decoder should now protect read access by acquiring a read lock (using TLcdLockUtil). The live sample uses a an extension of EditableLabelsLockedGXYLayer to do so.

    7.1

    7.1.18

    ImprovementAviation Standards

    The DAFIF decoders now also allow to supply a single source file to decode, instead of a DAFIF root directory path or a table of contents (.toc) file. Note however that a filename should correspond to the associated filename of a decoder, which can be retrieved through ILcdDAFIFDecoder.getDecodeFileName().

    Bug fixDefense Symbology

    It was wrongfully not possible to add a point on the last segment of a MIL-STD 2525b or APP-6A area using the CTRL key, for areas containing an icon (apart from the polygon).

    Bug fixMaritime Standards

    Symbols which, due to an offset, fall outside the area they apply to, are no longer drawn anymore (as specified the S-52 standard).

    Bug fixMaritime Standards

    The TLcdS52GXYLevelLayerList by default now has the TLcdGeodeticPen configured on it.

    7.1.17

    ImprovementWeather & Environment Standards

    The GRIB package now also supports Albers Equal Area projections.

    7.1.16

    ImprovementWeather & Environment Standards

    com.luciad.format.grib.TLcdGRIBModelDecoder now supports multiple parameter tables with the same table version, distinguishing them based on the originating center ID and subcenter ID if required.

    7.1.15

    Bug fixLuciadFusion

    TLcdGeodeticDatumfactory now also checks the datums parameters next to the name when polling TLcdJPLGeodeticDatumtFactory and TLcdNIMAGeodeticDatumFactory in order to write a geodetic datum to a Properties object.

    Bug fixLuciadFusion

    The UI for TLcdRangeSlider is now always set when used in an applet in a browser. The UI was not set when an applet was opened for the second time in the same browser session.

    Bug fixLuciadFusion

    The TLcdGML3ModelEncoder now supports exporting of empty models.

    Bug fixLuciadFusion

    TLcdLockUtil no longer deadlocks if one thread requests nested read locks, while another thread requests a write lock. This only happened in JDK 1.5.

    Bug fixMaritime Standards

    The clone() methods of some painters in the S-52 package were fixed.

    Upgrade considerationLuciadFusion

    Some native libraries for Solaris on Intel/AMD that were mistakenly put in solaris_amd64 have been moved to solaris_i586. Note that java on this platform runs in 32-bits mode (with 32-bits libraries) by default. It only runs in 64-bits mode (with 64-bits libraries) when specifying the option -d 64. You should therefore use the libraries in solaris_i586 by default, and the libraries in solaris_amd64 when specifying the option.

    7.1.13

    ImprovementLuciadFusion

    TLcdWarpRasterPainter and TLcdWarpMultilevelRasterPainter can now paint rasters of which the tiles have different color models.

    ImprovementLuciadFusion

    TLcdETOPOModelDecoder now supports the latest ETOPO2v2c_i2_MSB.bin data set.

    ImprovementRadar Connectors

    Slightly simplified samples.decoder.asterix.TrackGXYPainter.

    Bug fixLuciadFusion

    TLcdGXYStampLabelPainter now paints labels in the correct selection color, when haloing is enabled.

    Bug fixLuciadFusion

    TLcdGXYStampLabelPainter: a bug was solved that prevented the use of interactive labels with different sizes per object.

    Bug fixLuciadFusion

    TLcdGeoTIFFModelDecoder now handles files that contain spurious definitions of projections, even though the actual references are geodetic.

    Bug fixLuciadFusion

    TLcdMIFModelReferenceParser now correctly parses French NTF datum codes 107 and 1002, which were previously swapped.

    Bug fixDatabase Connectors

    TLcdOracleSpatialModelDecoder now supports many more SRIDs, including the various SRIDs for french, belgian, dutch, german, swiss, and UTM references.

    Bug fixWeather & Environment Standards

    com.luciad.format.grib.TLcdGRIBModelDescriptor.getPeriodOfTimeP1 now returns a value that is a combination of octet 19 and 20 when the time range indicator is 10, while getPeriodOfTimeP2 and getTimeInterval return 0 in this case.

    Bug fixDefense Standards

    The TLcdVPFModelDecoder now takes the library bounds as model decoding bounds if no bounds parameter was provided to the decode() method. Previously, the decoder used to take the world bounds, causing the fit action not to work properly on VPF models.

    Bug fixDefense Standards

    A NullPointerException occuring when switching from empty model to full model using the TLcdVPFDatabaseTree, was fixed.

    7.1.12

    Bug fixLuciadFusion

    TLcdGeodeticReference now has a better implementation of the clone method.

    Bug fixLuciadFusion

    TLcdEPSGReferenceParser now returns a new instance of the parsed model reference or XY world reference for every call to the parse method.

    Bug fixLuciadFusion

    TLcdDTEDModelDecoder now works around erroneous point counts in accuracy subregion descriptions.

    7.1.11

    Bug fixLuciadFusion

    TLcdWarpRasterPainter and TLcdWarpMultilevelRasterPainter no longer throw NullPointerExceptions when painting rasters, when a color filter has been set.

    Bug fixLuciadFusion

    TLcdEllipsoid no longer returns the longer distance between 2 points at the same latitude.

    Bug fixLuciadFusion

    The TLcdGML3ModelEncoder can now encode models whose ILcdFeatured value for a given index is null for all elements.

    7.1.10

    Bug fixAviation Standards

    The class com.luciad.format.arinc.decoder.TLcdARINCFIRUIRHandler did not correctly decode data records in the ARINC version 15 format or later.

    Bug fixAviation Standards

    The class com.luciad.format.arinc.decoder.TLcdARINCFIRUIRHandler did not decode the lower limit reference.

    7.1.09

    Bug fixLuciadFusion

    TLcdCADRGModelDecoder now correctly decodes A.TOC rasters that have empty tiles and of which the color maps are expanded.

    Bug fixDefense Symbology

    The APP-6A symbols 'Data Link Reference Point' (G*C*OXRD--*****, 2.X.2.5.1.2) and 'Diversions' (G*C*OXRD--*****, 2.X.2.5.1.8.2) have an identical symbol ID code (G*C*OXRD--*****) in the APP-6A specification, while these codes should be unique. Following the advised approach described in the APP-6A specification, LuciadMap now uses the MIL-STD 2525b equivalent code for the 'Diversions' symbol (2.X.2.5.1.8.2), which is G*C*OXOD--*****.

    7.1.08

    ImprovementLuciadFusion

    TLcdLonLatParser now also parses ddmm.mmmm[SNWE] and dd.dddd[SNWE] formats.

    ImprovementLuciadFusion

    TLcd2DBoundsIndexedModel now checks whether elements are ILcdBounded in the methods addElement and removeElement, throwing an IllegalArgumentException right away if they are not.

    ImprovementMaritime Standards

    TLcdS57ModelDecoder can now read S-57 files containing fields with trailing zero's.

    7.1.07

    Bug fixAviation Standards

    The classes com.luciad.format.arinc.decoder.TLcdARINCDMEHandler, TLcdARINCVORHandler and TLcdARINCTACANHandler did not correctly decode an 'Out of service' figure of merit.

    Bug fixAviation Standards

    The classes com.luciad.format.arinc.decoder.TLcdARINCAirportCommunicationHandler, com.luciad.format.arinc.decoder.TLcdARINCHeliportCommunicationHandler and com.luciad.format.arinc.decoder.TLcdARINCEnrouteCommunicationHandler produced domain objects with altitude values in feet which is now corrected to meters.

    Bug fixAviation Standards

    The classes com.luciad.format.arinc.decoder.TLcdARINCAerodromeHandler and com.luciad.format.arinc.decoder.TLcdARINCHeliportHandler did not correctly decode the speed limit altitude in case the record specified F instead of FL to indicate Flight Level as altitude unit.

    Bug fixAviation Standards

    The classes com.luciad.format.arinc.decoder.TLcdARINCAerodromeHandler and and com.luciad.format.arinc.decoder.TLcdARINCHeliportHandler produced aerodromes with altitude values in feet. This is now corrected to meters.

    7.1.06

    Bug fixLuciadFusion

    A dependency on JDK 1.5 in TLcdXMLDateTime and TLcdXMLDuration was removed.

    Bug fixMaritime Standards

    A dependency on JDK 1.5 was removed.

    7.1.05

    Bug fixLuciadFusion

    TLcdGXYFeaturedLabelPainter could not be serialized.

    Bug fixLuciadFusion

    TLcdXYFloatLine now has a better implementation of the equals method.

    Bug fixLuciadFusion

    TLcdGXYIconPainter did not take into account the full size of the icon when checking whether an object was touched. It is now easier to select an object which is represented by an icon with different width and height.

    Bug fixDatabase Connectors

    TLcdOracleSpatialModelDecoder now decodes the geometry if an SDO_GEOMETRY defines both a point and a geometry.

    Bug fixAviation Standards

    The class com.luciad.format.arinc.decoder.TLcdARINCMarkerHandler did not correctly decode the marker type, as it only recognized the value 'Locator at marker'.

    Bug fixAviation Standards

    The class com.luciad.format.arinc.decoder.TLcdARINCHoldingHandler did not correctly set the altitude description of the holding leg (see ILcdProcedureLeg.getAltitudeDescription) when the lower or upper altitude was not defined. It did also not correctly decode the course value of the leg if it was encoded with a T as last character.

    7.1.03

    ImprovementAviation Standards

    A new method getVectorIcon(Object) has been introduced in the class com.luciad.ais.symbology.icao.TLcdICAODefaultSymbolProvider, to allow the user to create extensions that add new vector icons. These icons are automatically cached in an image, if the isPaintVectorIcons() property returns false.

    Bug fixLuciadFusion

    StickyLabelsEditController: this sample class did not make interactive labels sticky.

    Bug fixLuciadFusion

    TLcdGXYSelectController2: a double click unintentionally initiated a 'drag rectangle' from the top left corner.

    Bug fixLuciadFusion

    TLcdGXYSelectController2 did not select small, horizontal or vertical line segments when a rectangle was dragged around them.

    Bug fixLuciadFusion

    TLcdGXYSelectController2 did not pass the SELECTED mode to the isTouched method of the ILcdGXYPainter when trying to select objects. This can be important for objects that are different in selection and regular mode. For example, the axis polyline of a buffer only appears in selected mode, and a right click on the axis polyline deselected the object before showing the popup window.

    7.1.02

    Bug fixAviation Standards

    TLcdAIXMModelDecoder could not correctly work with ILcdAIXMHandler implementations that were extensions of the predefined ILcdAIXMHandler implementations in the package com.luciad.format.aixm.decoder.

    Bug fixAviation Standards

    Updates to a domain object that were decoded after a key change of the domain object in an update file were ignored by the predefined ILcdAIXMHandler implementations in the package com.luciad.format.aixm.decoder.

    7.1.01

    ImprovementDefense Standards

    This package is a new LuciadMap option since v7.1.

    Bug fixLuciadFusion

    TLcdGXYMagnifier no longer tries to update the location of the glass magnifier window when the original view is no longer visible. This resulted in an illegal component state, which now can no longer be encountered.

    Bug fixLuciadFusion

    A bug in TLcdXMLSchemaDecoder was fixed. group elements containing a choice element are now read correctly.

    Bug fixLuciadFusion

    TLcdColorMapCustomizer: It needed setObject twice when it was already displayed. If only one setObject was performed, the layout used to be corrupt.

    Bug fixLuciadFusion

    TLcdPOLModelDecoder: canDecodeSource used to create an input stream without closing it.

    Bug fixAviation Standards

    The class com.luciad.format.arinc.decoder.TLcdARINCControlledAirspaceHandler now uses Float instances for the features ILcdARINCAirspaceFeature.RNP (Required Navigation Performance) instead of String instances, which was not correct according to the documentation of these features.

    Upgrade considerationLuciadFusion

    The field for the property 'enabled' in ALcdAction no longer has protected visibility. If code referred to this field directly, replace the code by calling the already existing setEnabled/getEnabled methods. The trivial method asAction which returned the object itself has been removed. If any code used this method, the call to this method can be removed completely.

    7.1

    ImprovementLuciadFusion

    TLcdOkCancelButtonPanelSW: pressing the escape key now has the same effect as cancel.

    ImprovementLuciadFusion

    TLcdGXYEditController2: now cancels an edit operation if the escape key is pressed.

    ImprovementLuciadFusion

    TLcdGXYFeaturedLabelPainter: removed erroneous constructor with arguments (ALcdGXYInteractiveLabelProvider, ILcdGXYController), added constructor with arguments (ALcdGXYInteractiveLabelProvider)

    ImprovementLuciadFusion

    TLcdGeoTIFFModelDecoder now tries to assign a suitable grayscale index color model to 16-bits grayscale images, based on the minimum and maximum sample values specified in the GeoTIFF file.

    ImprovementLuciadFusion

    The performance of warping raster painters for painting elevation rasters has been improved.

    ImprovementLuciadFusion

    TLcdGXYBoundsPainter now supports moving the bounds outside of the world as long as the bottom-left corner remains in the world or re-enters the world in another location. For example, in equidistant cylindrical projection the bounds can now be moved across the date line in both directions.

    ImprovementLuciadFusion

    TLcdGXYNewController now only pans the view on a mouse exit when the creation of the object is taking place. Before and after creation, the view is not panned when the mouse exits the view.

    ImprovementLuciadFusion

    The raster painters now have a property avoidOpaqueBorder, to avoid drawing opaque borders around warped rasters with IndexColorModels, without transparent pixels. Please note that setting the property entails some processing overhead when such rasters are painted.

    ImprovementLuciadFusion

    TLcdTABModelDecoder and TLcdTFWModelDecoder now have settable input stream factories for accessing TAB and TFW files, respectively.

    ImprovementLuciadFusion

    TLcdGeoTIFFModelDecoder and TLcdTABModelDecoder now have a new property allowOrthographicReferencing, specifying whether rasters that are postioned in geodetic references, using tie points, may be put in approximating orthographic grid references that are centered around the rasters. The resulting georeferencing will generally be more accurate than when just trying to rotate the rasters in their original geodetic references. The default is true.

    ImprovementLuciadFusion

    The classes TLcdGXYStampLabelPainter, TLcdGXYPolygonLabelPainter, TLcdGXYPolylineLabelPainter and TLcdGXYIconPainter now have methods for adding halo effects to labels or icons. Halo's can be enabled by setting the halo thickness (setHaloThickness()) to a value larger than zero. The color can be changed via the setHaloColor() method. Additionally, two new classes, TLcdGXYHaloPainter and TLcdGXYHaloLabelPainter are also added to the API. These classes can be used to add a halo effect to other ILcdGXYPainter or ILcdGXYLabelPainter implementations. Halo's can be added by wrapping an existing painter in one of these two halo painters. They offer similar API methods as TLcdGXYLabelPainter and TLcdGXYIconPainter for configuring the halo thickness and color.

    ImprovementLuciadFusion

    TLcdGXYBoundsPainter, TLcdGXYBufferPainter, TLcdGXYLonLatHeightBufferPainter, and TLcdGXYPointListPainter now have consistent editing behaviour. For each of these painters/editors the shape as displayed after editing will be exactly as it was when the mouse was released while editing. Previously, shapes could 'jump' when editing was finished.

    ImprovementLuciadFusion

    The package com.luciad.model contains two new model decoders, TLcdTarModelListDecoder and TLcdZipModelListDecoder, for decoding all the entries inside tar and zip archives, respectively. The actual decoding of the entries is performed by model decoders that can be specified. At a lower level, the package com.luciad.io contains two related new input stream factories, TLcdTarInputStreamFactory and TLcdZipInputStreamFactory, for creating input streams for entries inside tar and zip archives, respectively. Note that TLcdTarModelListDecoder and TLcdTarInputStreamFactory require the new library tar.jar.

    ImprovementAdvanced GIS Engine

    A new interface ILcd2DLineIntersectionTopology was introduced to model 2-dimensional intersection calculations between shape outlines. Ellipsoidal, spherical and cartesian implementations are available.

    ImprovementAdvanced Raster Services

    TLcdDIMAPModelDecoder now uses the georeferencing information from the GeoTIFF or DTED rasters, falling back on the georeferencing information from the DIMAP metadata files if necessary.

    ImprovementAdvanced Raster Services

    TLcdDIMAPModelDecoder now also decodes DTED elevation data, assuming a shared buffer has been set, to cache the decoded DTEDs. When upgrading, you should therefore consider passing a shared buffer to the constructor of the decoder.

    ImprovementAdvanced Raster Services

    TLcdDIMAPModelDecoder now provides support for image input stream factories, for accessing the actual raster files (GeoTIFF and DTED).

    ImprovementAdvanced Raster Services

    TLcdDIMAPModelDecoder now has a new property allowOrthographicReferencing, specifying whether rasters that are postioned in geodetic references may be put in approximating orthographic grid references that are centered around the rasters. The resulting georeferencing will generally be more accurate than when just trying to rotate the rasters in their original geodetic references. The default is true.

    ImprovementTerrain Analysis Engine

    TLcdVVTerrainProfileRenderer displays unknown altitude values with a different color than known altitude values. Before it was not possible to distinguish zero altitude values and unknown altitude values.

    ImprovementTerrain Analysis Engine

    TLcdTerrainProfileController: adding support to show or hide labels corresponding to the different invalid altitude values.

    ImprovementTerrain Analysis Engine

    ALcdRasterTerrainElevationProvider: this class now support different invalid altitude values. The value 'outOfRasterBoundsValue' corresponds to points which lie outside the bounds of the source raster. The value 'unknownElevation' corresponds to elevation values of points for which the raster does not contain a valid raster value, it is not inside the interval [minimumValidRasterValue,maximumValidRasterValue].

    ImprovementTerrain Analysis Engine

    LMAP-1019
    Line-of-sight computations now support pluggable propagation functions. Four propagation functions are provided:
    • com.luciad.tea.TLcdLOSRadarPropagationFunction to compute visual or radar line of sight on an earth modeled as a sphere,
    • com.luciad.tea.TLcdLOSRadarPropagationFunctionSkyBackground to compute where one is visible with sky in the background.
    • com.luciad.tea.TLcdLOSPropagationFunctionFixedHeight to compute the visibility at a given height above the ground,
    Use the factory TLcdLOSCoverageFactory to compute a line-of-sight covering an area around a center point and the factory TLcdP2PCoverageFactory to compute a point-to-point line-of-sight between two points. More information can be found in the developer guide and the API reference documentation.

    ImprovementWeather & Environment Standards

    Added a new decoder com.luciad.format.grib.TLcdGRIBBulletinModelDecoder, for decoding GRIB bulletin files. The GRIB messages are concatenated in the bulletin files, with optional headers. They can be filtered based on these headers and on the model descriptors, references, and bounds.

    ImprovementDefense Symbology

    The MIL-STD 2525b implementation has received a major upgrade to comply with MIL-STD 2525b Change 1 2004, the most recent specification. In this context, the rendering of a set of corresponding APP-6A symbols has been improved also.

    The most important changes in the Change 1 specification are:
    • An extension of the available affiliations with EXERCISE PENDING, EXERCISE UNKNOWN, EXERCISE ASSUMED FRIEND, EXERCISE FRIEND and EXERCISE NEUTRAL
    • The addition of a general warfighting symbol, S*Z*------***** (1.X), with unknown battle dimension.
    • The expansion of the symbol 'Drone' (1.X.2.1.1.16) with a large set of child symbols.
    • A new symbol category 'Dead Reckoning Trailer' (2.X.2.1.1.2.5).
    • A new symbol category 'Area of Uncertainty' (2.X.2.1.1.2.6).
    • A new symbol category 'Wreck' (2.X.6.3.1.3).
    • A vast expansion of the symbol category 'Fire support' (2.X.4).
    • A major expansion of the weather/metoc symbology, with 291 new symbols
    Next to this list, various other small improvements have been made to comply with Change 1.

    ImprovementDefense Symbology

    The calculation of the label bounds for multipoint symbols (2 points or more) in APP-6A and MIL-STD 2525b has been enhanced to obtain a better accuracy. This improves the behavior of a label decluttering algorithm, which generally uses the label bounds to declutter the labels.

    ImprovementDefense Symbology

    The rendering of the following weather symbols in APP-6A and MIL-STD 2525b has been improved:
    • The frontal systems, the trough line symbol and the squal line symbol in APP-6A (located in 'Weather' - 'Pressure Systems') and in MIL-STD 2525b (located in 'Metoc' - 'Atmospheric' - 'Pressure Systems') are now rendered using the 'cornerSmoothness' property of the symbol's style, to obtain a curved polyline which better reflects the nature of a pressure system. By using 0 as value for this property, the original rendering with straight corners can still be reinstated.
    • The icon symbol 'Wind Plot/Barb' in MIL-STD 2525b (3.X.3.1.4.2) and APP-6A (3.X.4) is now rendered dynamically: it uses the modifiers 'Movement Direction' (ILcdMS2525bCoded.sMovementDirection, ILcdAPP6ACoded.sMovementDirection) and 'Speed' (ILcdMS2525bCoded.sSpeedLabel, ILcdAPP6ACoded.sSpeedLabel) to better reflect the actual wind condition. The 'Movement Direction' modifier is used to specify a wind direction in degrees, while the 'Speed' modifier is used to specify the wind speed in knots; these modifiers respectively define the orientation and decoration of the wind barb icon.
    • The symbols 'Rain' (APP-6A: 3.X.7.1, MIL-STD 2525b: 3.X.3.1.7.1), 'Snow' (APP-6A: 3.X.7.1, MIL-STD 2525b: 3.X.3.1.7.1), 'Hail' (APP-6A: 3.X.7.1, MIL-STD 2525b: 3.X.3.1.7.1), 'Ice pellets' (APP-6A: 3.X.7.1, MIL-STD 2525b: 3.X.3.1.7.1) and 'Ice crystals' (APP-6A: 3.X.7.1, MIL-STD 2525b: 3.X.3.1.7.1) are now rendered as areas (also using the 'cornerSmoothness' property of the symbol's style), which better reflects the nature of the symbol.

    Bug fixLuciadFusion

    The warping raster painters no longer throw a NullPointerException when the clipping rectangle has zero width or height.

    Bug fixLuciadFusion

    A problem with the printing of dashed and complex strokes, caused by a bug in the Sun graphics implementation, was solved. Dashed and complex strokes are now rendered correctly on printing devices.

    Bug fixLuciadFusion

    ALcd3DEditableFloatPolypoint now checks on the size of the array that is passed in the constructor.

    Bug fixLuciadFusion

    TLcdGXYBoundsPainter no longer changes the dimensions of a bounds when the bounds is moved over the north- or south pole.

    Bug fixAdvanced GIS Engine

    A bug in the line-arc intersection algorithm was fixed. Some intersection points between arcs and linear shapes (polyline, polygon, buffer) which were not detected previously, will be computed correctly now.

    Bug fixAviation Standards

    TLcdProcedureGeometryCalculator now respects the turn direction specified in procedure legs wherever possible. In previous versions, the turn direction would in some cases be ignored in favour of the shortest turn (i.e. the turn requiring the smallest course change).

    Bug fixDefense Standards

    TLcdUSRPModelDecoder now correctly decodes TRANSH01.THF files pointing to ADRG datasets.

    Upgrade considerationLuciadFusion

    TLcdLonLatArcBand and TLcdXYArcBand now throw an IllegalArgumentException when a negative minimum or maximum radius is passed at construction time or via the methods setMinRadius or setMaxRadius.

    Upgrade considerationLuciadFusion

    TLcdGXYPolygonLabelPainter and TLcdGXYPolylineLabelPainter no longer paint a label when the array returned by retrieveLabels is null or of zero length. This is the same behavior as TLcdGXYLabelPainter. The effect of this change will only be visible in extension of the painters which returned such arrays and when the label painter was configured to put a frame around the label, or to fill the label with a background color. To regain the previous behaviour it suffices to return an array with a non zero length, containing empty Strings.

    Upgrade considerationLuciadFusion

    TLcdGXYPointListPainter now checks the painter mode (polygon, polyline, ... ) before removing points. Point lists painted in POLYGON, FILLED or OUTLINED FILLED mode can not have the 2nd but last point removed, point lists in POLYLINE mode can not have the one but last point removed and point lists in POINT mode can not have the last point removed. Before this change the default behavior was to allow removal of all points except the last one. To reinstate that behavior overwrite the method retrieveMinimalPointcount in TLcdGXYPointListPainter to always return 1.

    Upgrade considerationLuciadFusion

    com.luciad.util.ILcdRotationCapable has be deprecated in favor of com.luciad.view.gxy.ILcdRotationCapableGXYView, since it was only used in the context of views. Since the new interface extends the old interface, no problems should arise with existing code. All view implementations that implemented ILcdRotationCapable, now implement ILcdRotationCapableGXYView. Take into account that new code may be written against the new interface and will not work for ILcdRotationCapable implementations. To avoid this, replace all ILcdRotationCapable occurences by ILcdRotationCapableGXYView.

    Upgrade considerationTerrain Analysis Engine

    TLcdVVTerrainProfileModel: the methods minZ and maxZ can return a Double.NaN, a Double.NEGATIVE_INFINITY or a Double.POSITIVE_INFINITY when invalid elevations are found.

    Upgrade considerationDefense Symbology

    A set of MIL-STD 2525b symbols have received a new unique code in the MIL-STD 2525b Change 1 2004 specification. To ease the upgrade to Change 1, the old codes can still be used in TLcdEditableMS2525bObject: when an old code is detected, it will be automatically converted to the correct MIL-STD 2525b Change 1 2004 code. Note that the method getMS2525Code() always returns the new code in that case. The following list shows all updated symbols, including their old and new hierarchy position and name - which are also changed for some symbols:
    1. WA--PXT--------, 3.X.3.1.1.4.1, TROUGH LINE is now known as WA-DPXT----L---, 3.X.3.1.1.4.1, TROUGH AXIS
    2. WA--OS---------, 3.X.3.1.9.1, BLOWING SNOW (BLSN) is now known as WAS-WSSBLMP----, 3.X.3.1.6.7.4, BLOWING SNOW - LIGHT/MODERATE
    3. WA--IRL--------, 3.X.3.1.3.2.1, LIGHT RIME ICING is now known as WAS-IRL---P----, 3.X.3.1.3.2.1, RIME ICING - LIGHT
    4. WA--TE---------, 3.X.3.1.2.4, EXTREME TURBULENCE is now known as WAS-TE----P----, 3.X.3.1.2.4, TURBULENCE - EXTREME
    5. WA--STF--------, 3.X.3.1.8.1.2, FUNNEL CLOUD (FC)/TORNADO/WATERSPOUT is now known as WAS-WST-FCP----, 3.X.3.1.6.13.6, FUNNEL CLOUD (TORNADO/WATERSPOUT)
    6. WA--CS---------, 3.X.3.1.6.2, SCATTERED SKY (SCT) is now known as WAS-CCCSSCP----, 3.X.3.1.5.1.3, SCATTERED COVERAGE
    7. WA--RSG--------, 3.X.3.1.7.2.2, SNOW GRAINS (SG) is now known as WAS-WSSG--P----, 3.X.3.1.6.8, SNOW GRAINS
    8. WA--RRS--------, 3.X.3.1.7.1.1, RAIN SHOWER is now known as WAS-WSRSL-P----, 3.X.3.1.6.3.1, RAIN SHOWERS - LIGHT
    9. WA--OT---------, 3.X.3.1.9.3, DUST/SAND STORM is now known as WAS-WSDSLMP----, 3.X.3.1.6.18.1, DUST/SAND STORM - LIGHT TO MODERATE
    10. WA--RR---------, 3.X.3.1.7.1, RAIN (RA) is now known as WAS-WSR-LIP----, 3.X.3.1.6.1.1, RAIN - INTERMITTENT LIGHT
    11. WA--PFC--------, 3.X.3.1.1.3.1, COLD FRONT is now known as WA-DPFC----L---, 3.X.3.1.1.3.1, COLD FRONT
    12. WA--FV---------, 3.X.3.1.5.2, VISUAL CEILING is now known as WA-DBAMV----A--, 3.X.3.1.7.2, MARGINAL VISUAL FLIGHT RULE (MVFR)
    13. WA--PL---------, 3.X.3.1.1.1, LOW PRESSURE CENTER is now known as WAS-PL----P----, 3.X.3.1.1.1, LOW PRESSURE CENTER
    14. WA--PFO--------, 3.X.3.1.1.3.3, OCCLUDED FRONT is now known as WA-DPFO----L---, 3.X.3.1.1.3.3, OCCLUDED FRONT
    15. WA--ICS--------, 3.X.3.1.3.1.3, SEVERE CLEAR ICING is now known as WAS-ICS---P----, 3.X.3.1.3.1.3, CLEAR ICING - SEVERE
    16. WA--TL---------, 3.X.3.1.2.1, LIGHT TURBULENCE is now known as WAS-TL----P----, 3.X.3.1.2.1, TURBULENCE - LIGHT
    17. WA--WJ---------, 3.X.3.1.4.1, JET STREAM is now known as WA-DWJ-----L---, 3.X.3.1.4.3, JET STREAM
    18. WA--PXR--------, 3.X.3.1.1.4.2, RIDGE LINE is now known as WA-DPXR----L---, 3.X.3.1.1.4.2, RIDGE AXIS
    19. WA--OD---------, 3.X.3.1.9.4, DUST DEVIL is now known as WAS-WSDD--P----, 3.X.3.1.6.18.3, DUST DEVIL
    20. WA--PFCU-------, 3.X.3.1.1.3.1.1, UPPER COLD FRONT is now known as WA-DPFCU---L---, 3.X.3.1.1.3.1.1, UPPER COLD FRONT
    21. WA--ICL--------, 3.X.3.1.3.1.1, LIGHT CLEAR ICING is now known as WAS-ICL---P----, 3.X.3.1.3.1.1, CLEAR ICING - LIGHT
    22. WA--STL--------, 3.X.3.1.8.1.3, LIGHTNING (LTG) is now known as WAS-WST-LGP----, 3.X.3.1.6.13.8, LIGHTNING (LTG)
    23. WA--TM---------, 3.X.3.1.2.2, MODERATE TURBULENCE is now known as WAS-TM----P----, 3.X.3.1.2.2, TURBULENCE - MODERATE
    24. WA--CW---------, 3.X.3.1.6.4, OVERCAST WITH BREAKS is now known as WAS-CCCSBCP----, 3.X.3.1.5.1.4, BROKEN COVERAGE
    25. WA--RC---------, 3.X.3.1.7.5, ICE CRYSTALS (IC) is now known as WAS-WSIC--P----, 3.X.3.1.6.11, ICE CRYSTALS (DIAMOND DUST)
    26. WA--IMM--------, 3.X.3.1.3.3.2, MODERATE MIXED ICING is now known as WAS-IMM---P----, 3.X.3.1.3.3.2, MIXED ICING - MODERATE
    27. WA--RH---------, 3.X.3.1.7.3, HAIL is now known as WAS-WSGRL-P----, 3.X.3.1.6.10.1, HAIL - LIGHT NOT ASSOCIATED WITH THUNDER
    28. WA--OF---------, 3.X.3.1.9.2, FOG (FG) is now known as WAS-WSFGSOP----, 3.X.3.1.6.14.5, FOG - SKY OBSCURED
    29. WA--IRM--------, 3.X.3.1.3.2.2, MODERATE RIME ICING is now known as WAS-IRM---P----, 3.X.3.1.3.2.2, RIME ICING - MODERATE
    30. WA--OB---------, 3.X.3.1.9.7, BLOWING DUST OR SAND is now known as WAS-WSDB--P----, 3.X.3.1.6.18.4, BLOWING DUST OR SAND
    31. WA--CB---------, 3.X.3.1.6.3, BROKEN SKY (BKN) is now known as WAS-CCCSBCP----, 3.X.3.1.5.1.4, BROKEN COVERAGE
    32. WA--RI---------, 3.X.3.1.7.4, ICE PELLETS (PE) is now known as WAS-WSPLL-P----, 3.X.3.1.6.12.1, ICE PELLETS - LIGHT
    33. WA--PFW--------, 3.X.3.1.1.3.2, WARM FRONT is now known as WA-DPFW----L---, 3.X.3.1.1.3.2, WARM FRONT
    34. WA--FI---------, 3.X.3.1.5.1, INSTRUMENT CEILING is now known as WA-DBAIF----A--, 3.X.3.1.7.1, INSTRUMENT FLIGHT RULE (IFR)
    35. WA--ST---------, 3.X.3.1.8.1, THUNDERSTORMS (TS) is now known as WA-DBAT-----A--, 3.X.3.1.7.7, THUNDERSTORMS
    36. WA--OH---------, 3.X.3.1.9.6, HAZE (HZ) is now known as WAS-WSHZ--P----, 3.X.3.1.6.17, HAZE
    37. WA--RRD--------, 3.X.3.1.7.1.3, DRIZZLE (DZ) is now known as WAS-WSD-LIP----, 3.X.3.1.6.4.1, DRIZZLE - INTERMITTENT LIGHT
    38. WA--RRDF-------, 3.X.3.1.7.1.3.1, FREEZING DRIZZLE (FZDZ) is now known as WAS-WSDFMHP----, 3.X.3.1.6.5.2, FREEZING DRIZZLE - MODERATE
    39. WA--RRF--------, 3.X.3.1.7.1.2, FREEZING RAIN (FZRA) is now known as WAS-WSRFMHP----, 3.X.3.1.6.2.2, FREEZING RAIN - MODERATE
    40. WA--PXS--------, 3.X.3.1.1.4.3, SQUALL LINE is now known as WA-DPXIL---L---, 3.X.3.1.1.4.4, INSTABILITY LINE
    41. WA--PFWU-------, 3.X.3.1.1.3.2.1, UPPER WARM FRONT is now known as WA-DPFWU---L---, 3.X.3.1.1.3.2.1, UPPER WARM FRONT
    42. WA--PFS--------, 3.X.3.1.1.3.4, STATIONARY FRONT is now known as WA-DPFS----L---, 3.X.3.1.1.3.4, STATIONARY FRONT
    43. WA--IML--------, 3.X.3.1.3.3.1, LIGHT MIXED ICING is now known as WAS-IML---P----, 3.X.3.1.3.3.1, MIXED ICING - LIGHT
    44. WA--SSH--------, 3.X.3.1.8.2.2, HURRICANE is now known as WAS-WSTSH-P----, 3.X.3.1.6.19.3, HURRICANE/TYPHOON
    45. WA--TS---------, 3.X.3.1.2.3, SEVERE TURBULENCE is now known as WAS-TS----P----, 3.X.3.1.2.3, TURBULENCE - SEVERE
    46. WA--OK---------, 3.X.3.1.9.5, SMOKE (FU) is now known as WAS-WSFU--P----, 3.X.3.1.6.16, SMOKE
    47. WA--CO---------, 3.X.3.1.6.5, OVERCAST (OVC) is now known as WAS-CCCSOCP----, 3.X.3.1.5.1.5, OVERCAST COVERAGE
    48. WA--SST--------, 3.X.3.1.8.2.1, TROPICAL STORM is now known as WAS-WSTSS-P----, 3.X.3.1.6.19.2, TROPICAL STORM
    49. WA--STR--------, 3.X.3.1.8.1.1, THUNDERSTORM (TS) WITH RAIN (RA) is now known as WAS-WSTMR-P----, 3.X.3.1.6.13.2, THUNDERSTORM LIGHT TO MODERATE WITH RAIN/SNOW - NO HAIL
    50. WA--PH---------, 3.X.3.1.1.2, HIGH PRESSURE CENTER is now known as WAS-PH----P----, 3.X.3.1.1.2, HIGH PRESSURE CENTER
    51. WA--CP---------, 3.X.3.1.6.6, SKY OBSCURED OR PARTIALLY OBSCURED is now known as WAS-CCCSOBP----, 3.X.3.1.5.1.6, SKY TOTALLY OR PARTIALLY OBSCURED
    52. WA--RSS--------, 3.X.3.1.7.2.1, SNOW SHOWERS is now known as WAS-WSSSL-P----, 3.X.3.1.6.9.1, SNOW SHOWERS - LIGHT
    53. WA--RS---------, 3.X.3.1.7.2, SNOW(SN) is now known as WAS-WSS-LIP----, 3.X.3.1.6.7.1, SNOW - INTERMITTENT LIGHT
    54. WA--IMS--------, 3.X.3.1.3.3.3, SEVERE MIXED ICING is now known as WAS-IMS---P----, 3.X.3.1.3.3.3, MIXED ICING - SEVERE
    55. WA--OFF--------, 3.X.3.1.9.2.1, FREEZING FOG (FZFG) is now known as WAS-WSFGFVP----, 3.X.3.1.6.14.6, FOG - FREEZING, SKY VISIBLE
    56. WA--IRS--------, 3.X.3.1.3.2.3, SEVERE RIME ICING is now known as WAS-IRS---P----, 3.X.3.1.3.2.3, RIME ICING - SEVERE
    57. WA--ICM--------, 3.X.3.1.3.1.2, MODERATE CLEAR ICING is now known as WAS-ICM---P----, 3.X.3.1.3.1.2, CLEAR ICING - MODERATE
    58. WA--W----------, 3.X.3.1.4, WIND BARB is now known as WAS-WP----P----, 3.X.3.1.4.2, WIND PLOT
    59. WA--CC---------, 3.X.3.1.6.1, CLEAR SKY (SKC) is now known as WAS-CCCSCSP----, 3.X.3.1.5.1.1, CLEAR SKY
    60. G*G*SAB---****X, 2.X.2.6.2.3, BRIDGEHEAD is now known as G*G*SLB---****X, 2.X.2.6.1.4, BRIDGEHEAD
    61. G*F*PTC---****X, 2.X.4.1.1.3, CIRCULAR TARGET is now known as G*F*ATC---****X, 2.X.4.3.1.2, CIRCULAR TARGET
    62. G*F*PTR---****X, 2.X.4.1.1.4, RECTANGULAR TARGET is now known as G*F*ATR---****X, 2.X.4.3.1.1, RECTANGULAR TARGET
    63. G*F*AA----****X, 2.X.4.3.1, FIRE SUPPORT AREA (FSA) is now known as G*F*ACSI--****X, 2.X.4.3.2.1.1, IRREGULAR
    64. G*F*AC----****X, 2.X.4.3.2, AIRSPACE COORDINATION AREA (ACA) is now known as G*F*ACAI--****X, 2.X.4.3.2.2.1, IRREGULAR
    65. G*F*AK----****X, 2.X.4.3.4, SMOKE is now known as G*F*ATS---****X, 2.X.4.3.1.4, SMOKE
    66. G*F*AS----****X, 2.X.4.3.5, SERIES OR GROUP OF TARGETS is now known as G*F*ATG---****X, 2.X.4.3.1.3, SERIES OR GROUP OF TARGETS
    67. G*F*AB----****X, 2.X.4.3.6, BOMB AREA is now known as G*F*ATB---****X, 2.X.4.3.1.5, BOMB AREA
    68. G*F*AF----****X, 2.X.4.3.7, FREE FIRE AREA (FFA) is now known as G*F*ACFI--****X, 2.X.4.3.2.3.1, IRREGULAR
    69. G*F*AN----****X, 2.X.4.3.8, NO-FIRE AREA (NFA) is now known as G*F*ACNI--****X, 2.X.4.3.2.4.1, IRREGULAR
    70. G*F*AR----****X, 2.X.4.3.9, RESTRICTIVE FIRE AREA (RFA) is now known as G*F*ACRI--****X, 2.X.4.3.2.5.1, IRREGULAR
    71. G*F*AP----****X, 2.X.4.3.10, POSITION AREA FOR ARTILLERY (PAA) is now known as G*F*ACPR--****X, 2.X.4.3.2.6.1, RECTANGULAR
    72. G*F*LP----****X, 2.X.4.2.6, FINAL PROTECTIVE FIRE (FPF) is now known as G*F*LTF---****X, 2.X.4.2.1.2, FINAL PROTECTIVE FIRE (FPF)
    73. G*F*LL----****X, 2.X.4.2.5, LINEAR TARGET is now known as G*F*LS----****X, 2.X.4.2.1.1, LINEAR SMOKE TARGET
    74. G*O*SBW---****X, 2.X.6.3.1.3, WRECK is now known as G*O*SBWN--****X, 2.X.6.3.1.3.2, WRECK, NON-DANGEROUS

    Upgrade considerationDefense Symbology

    The class TLcdEditableMS2525bObject in the MIL-STD 2525b API previously accepted symbol codes that represented directories, because they are defined in the MIL-STD 2525b specification. These codes are now listed as invalid, because they do not represent a real symbol and cannot be drawn on map: when such a code is now set on a TLcdEditableMS2525bObject, an IllegalArgumentException will be thrown, as this was the default behavior for other invalid codes. This behavior was already present for APP-6A.

    7.0

    7.0.16

    ImprovementWeather & Environment Standards

    com.luciad.format.grib.TLcdGRIBModelDecoder now puts better display names in the model descriptors of decoded models.

    ImprovementDefense Symbology

    In JDKs/JREs prior to 1.6, using large AWT coordinates in combination with a Stroke on the Graphics could cause a JVM crash in some cases, with as error message "An unrecoverable stack overflow has occurred". See also Sun bug #5054725. In MIL-STD 2525b and APP-6A, this error can occur when zooming on certain icons. A improved method to render the icons has been integrated that prevents these JVM crashes.

    7.0.15

    ImprovementLuciadFusion

    The polar stereo graphic projection (TLcdPolarStereoGraphic) now has support for a central meridian. This meridian will become a line along the Y-axis in the projected plane.

    ImprovementInfrastructure Standards

    com.luciad.format.dwg.TLcdDWGModelDecoder now cleans up formatting information in the strings of decoded text objects.

    Bug fixLuciadFusion

    The vertical cursor is now prohibited from leaving the vertical view (TLcdVVJPanel) when resizing the window. Previously, when the vertical view was resized the vertical cursor could leave the vertical view on the right side. Since the cursor can only be moved with the mouse, this rendered the vertical cursor useless until the vertical view was resized again to contain the vertical cursor.

    Bug fixLuciadFusion

    TLcdLonLatCircle bounds were computed incorrectly when the circle contained either of the north or south pole.

    Bug fixLuciadFusion

    ALcdXYDynamicSegmentationEvent accidentally had a number of package visible abstract methods. These have now been made public.

    Bug fixAviation Standards

    The geometry calculator for procedures, TLcdProcedureGeometryCalculator, could not handle CD or VD legs with a navaid distance larger than 100 km. This limit has been removed, allowing arbitrary long distances.

    Bug fixInfrastructure Standards

    com.luciad.format.dwg.gxy.TLcdDWGGXYLineStyle now applies the line width of polylines.

    Bug fixInfrastructure Standards

    com.luciad.format.dwg.TLcdDWGModelDecoder now provides properties to allow decoding of invisible objects and invisible or frozen layers.

    Upgrade considerationLuciadFusion

    TLcdLonLatEllipse, TLcdXYEllipse, TLcdLonLatArc and TLcdXYArc now throw an IllegalArgumentException when a negative value is passed for the semi-minor or semi-major axis length at construction time or when setting the value via setA or setB.

    Upgrade considerationLuciadFusion

    TLcdLonLatCircle and TLcdXYCircle now throw an IllegalArgumentException when a negative radius is passed at construction time or via the method setRadius.

    7.0.14

    ImprovementDefense Symbology

    The country codes in the 'Country' combobox in the APP-6A and MIL-STD 2525b customizer are now alfabetically ordened.

    Bug fixLuciadFusion

    A problem with the caching of computed general paths in TLcdGXYPointListPainter was fixed. This fix might improve painting performance of all polylines and polygons that make use of TLcdCache (including all LuciadMap classes that extend from ALcd2DEditablePolypoint).

    Bug fixLuciadFusion

    TLcdRenderedImageTile no longer throws an ArrayIndexOutOfBoundsException if forcedTransparentColorIndex has been set for a 16-bits IndexColorModel.

    Bug fixLuciadFusion

    TLcdDTEDDirectoryModelDecoder and the multilevel raster painters now handle empty data sets.

    Bug fixLuciadFusion

    TLcdSymbol: rendering the symbol type OUTLINED_AREA did not render an outline using the method paintIcon, it did using the method paint. They now both do. The type POINTS rendered the point in the center using paintIcon, and at the top left using paint, they now both center the dot.

    Bug fixLuciadFusion

    TLcdInputStreamFactory now allows to unset a default request property, by setting it to null.

    Bug fixLuciadFusion

    TLcdTTFIcon now takes into account the color, the offset and the rotation when comparing using the equals method.

    Bug fixLuciadFusion

    TLcdContourFinder: for contour computations with non-optimized edges, the last valid point was not added to the contour.

    Bug fixLuciadFusion

    The arcs part of an arcband painted by the TLcdGXYArcBandPainter can now be moved across each other, effectively switching the minimum and maximum radius of an arcband.

    Bug fixLuciadFusion

    TLcdSHPModelEncoder no longer writes corrupt DBF files for String features which started or ended with spaces.

    Bug fixDefense Standards

    TLcdNITFModelDecoder now throws a more helpful IOException if it doesn't have a model reference decoder and it can't decode a model reference.

    7.0.13

    Bug fixLuciadFusion

    TLcdLonLatPoint now takes into account that longitudes -180 and 180 are the same in the equals method.

    Bug fixLuciadFusion

    TLcd2DEditableFeaturedPoint did not take into account that any of the features or the point could be null in the equals or hashcode method.

    Bug fixLuciadFusion

    TLcdSHPModelDecoder no longer throws a NullPointerException when the model reference decoder is set to null. The decoder then uses the default model reference.

    7.0.11

    ImprovementLuciadFusion

    The performance of TLcdRenderedImageTile has been improved. This tile is typically used when decoding GeoTIFF, TFW, JGW, and TAB files.

    ImprovementLuciadFusion

    The thread-safety of the most important implementations of ILcdTileDecoder has been improved and documented. Notably, TLcdCADRGImageDecoder is now thread-safe, with better concurrent performance.

    ImprovementTerrain Analysis Engine

    TLcdProfileViewJPanel displays unknown altitude values with a different color than known altitude values. Before it was not possible to distinguish zero altitude values and unknown altitude values.

    Bug fixLuciadFusion

    TLcdEllipsoidUtil now correctly computes the intersection points of lines for which the begin an/or end points are coincident.

    Bug fixLuciadFusion

    TLcdGXYViewJPanel, TLcdGXYViewJPanelLightweight and TLcdMapCanvas did not convey all property change events to the listeners added.

    Bug fixLuciadFusion

    TLcdSHPModelDecoder decoded less model reference files. This was due to an unintended incompatible change.

    Bug fixLuciadFusion

    License files containing non-ASCII characters were not accepted if the default character set was not ISO-8859-1.

    Bug fixAdvanced Raster Services

    TLcdDIMAPModelDecoder no longer adds the last raster listed in a VOL_LIST.DIM file to the model twice.

    7.0.09

    Bug fixLuciadFusion

    TLcdWCSProxy now checks the coverage description to see if the coverage is two- or three-dimensional, and adapts its requests accordingly.

    Bug fixLuciadFusion

    Invoking the getChildWMSLayerIndex(ALcdMWSLayer) method on a TLcdWMSLayer object without any child layers resulted in a NullPointerException. This has been fixed: the value -1 is now returned in that case, following the method description in the javadoc.

    7.0.08

    Bug fixLuciadFusion

    TLcdWCSProxy now clears the cache of the rasters contained within it whenever a tile finishes loading new coverage data from the WCS. This allows a TLcdWCSProxy to be painted correctly when the setUseSubtileImageCaching() property of TLcdMultilevelRasterPainter is switched on.

    Bug fixLuciadFusion

    TLcdEllipsoid incorrectly computed points at very large distances (crossing north and south pole) along a rhumb line.

    7.0.07

    Bug fixLuciadFusion

    TLcdWCSProxy has improved handling of TIFF images. In particular, an issue was fixed that caused some data not to be drawn by TLcdWarpMultilevelRasterPainter.

    Bug fixRadar Connectors

    Feature values (attributes) of ASTERIX domain objects that return an instance of ILcdISO19103Measure sometimes did not use the correct SI standard units. These changes were made:
    • Degrees -> Radians
    • dBm -> watt
    • Bar -> Pascal
    • Celcius -> Kelvin
    Note that this only affects the standard units (ILcdISO19103Measure.getUnitOfMeasure().convertToStandard) and not the actually used unit (ILcdISO19103Measure.getUnitOfMeasure()) nor the value (ILcdISO19103Measure.getValue()).

    7.0.06

    ImprovementLuciadFusion

    TLcdGXYTextPainter now paints rotated texts more accurately.

    ImprovementLuciadFusion

    TLcdGeoTIFFModelDecoder now also decodes GeoTIFF files with 16-bit RGB values. The values are scaled to 8-bit values.

    ImprovementLuciadFusion

    TLcdGeoTIFFModelDecoder now also decodes GeoTIFF files with 4 wavelength bands. The decoded rasters only contain the RGB bands.

    ImprovementDefense Symbology

    The rendering of the following tactical point symbol in MIL-STD 2525b and APP-6A has been corrected:
    • The anchor point indication in the Oil Rig tactical symbol in MIL-STD 2525b (G*O*HO----****X, 2.X.6.2.4) and in APP-6A (G*C*OXZO--*****, 2.X.2.5.1.9.1) has been removed, as it is not part of the symbol.

    Bug fixLuciadFusion

    TLcdGeodeticDatum did not take into account that the ellipsoid of the datum could be different from the ellipsoid of the reference datum when transforming lon lat height points to and from the reference datum.

    Bug fixLuciadFusion

    TLcdJPLGeodeticDatumFactory contained inaccurate parameters for WGS72 datums.

    Bug fixLuciadFusion

    TLcdGeoTIFFModelDecoder now correctly decodes user-defined ellipsoids.

    Bug fixLuciadFusion

    Lines with an SLD image stroke are now printed completely.

    Bug fixLuciadFusion

    TLcdGeoTIFFModelDecoder now also decodes GeoTIFF files with a planar configuration.

    7.0.05

    ImprovementLuciadFusion

    The WMS 1.3.0 capabilities now contain the XML element 'BoundingBox' for a layer, describing its bounds in one of the available CRSs. This is in contrast with the already available element 'EX_GeographicBoundingBox', that always describes the bounds of a layer in WGS 84 coordinates.

    ImprovementLuciadFusion

    Support has been added for the optional FORMAT parameter in a GetCapabilities request. Both the WMS 1.1.1 and 1.3.0 capabilities now mention two available output formats, text/xml and application/vnd.ogc.wms_xml, which can be used in the FORMAT parameter. If no FORMAT parameter is specified, the default format for the version of the capabilities is used: application/vnd.ogc.wms_xml for WMS 1.1.1, text/xml for WMS 1.3.0.

    ImprovementLuciadFusion

    When a GetFeatureInfo request was received for an invalid layer, the returned service exception report did not specify the 'LayerNotDefined' code.

    ImprovementLuciadFusion

    TLcdCADRGImageDecoder has been improved to yield a better performance.

    ImprovementAdvanced Raster Services

    TLcdDIMAPModelDecoder now also decodes GeoTIFF files with 16-bit RGB values. The values are scaled to 8-bit values.

    ImprovementAdvanced Raster Services

    TLcdDIMAPModelDecoder now also decodes GeoTIFF files with float or double values. The values are cast to short values.

    ImprovementAdvanced Raster Services

    TLcdDIMAPModelDecoder now also decodes GeoTIFF files with 4 wavelength bands. The decoded rasters only contain the RGB bands.

    ImprovementDefense Standards

    Exceptions which where printed directly on the system error log are now logged via TLcdLog.

    ImprovementDefense Standards

    GRT tables with column names 'parameter X' instead of 'parameterX' (where X = 1..4) are supported now.

    ImprovementDefense Symbology

    The labeling of the tactical point symbols in MIL-STD 2525b and APP-6A (category 2.X) has been improved:
    • The position of the different labels has been analyzed and improved, following the latest label guidelines in the corresponding specifications.
    • The property 'labelFontScalingEnabled' in ILcdMS2525bStyle and ILcdAPP6AStyle is now properly taken into account; if it is set to false, the size of the active font - configurable through the 'labelFont' property in ILcdMS2525bStyle and ILcdAPP6AStyle - is not changed anymore.

    ImprovementDefense Symbology

    The rendering of three tactical point symbols in MIL-STD 2525b and APP-6A has been corrected:
    • The example label '2BD' in the Ambulance Exchange Point tactical symbol in MIL-STD 2525b (G*S*PX----****X, 2.X.5.1.1) and in APP-6A (G*C*SPA---*****, 2.X.2.4.1.1) has been removed, as it is not a fixed label of the symbol.
    • The position of the General Supply Point tactical symbol in MIL-STD 2525b (G*SPPSZ---****X, 2.X.5.1.14.1) and in APP-6A (G*C*SPQT--*****, 2.X.2.4.1.14.1) is now centered on the X-axis instead of shifted to the left.
    • The anchor point indication in the Task - Destroy tactical symbol in MIL-STD 2525b (G*T*D-----****X, 2.X.1.9) and in APP-6A (G*T*GD----*****, 2.X.1.1.9) has been removed, as it is not part of the symbol.

    ImprovementDefense Symbology

    The classes TLcdEditableAPP6AObject and TLcdEditableMS2525bObject have received an improved implementation of the clone method. Notably, the method clone now always delegates to the method super.clone, which ensures that a class of the proper type is created, even for extensions. The javadoc can be consulted for the exact clone behavior.

    ImprovementDefense Symbology

    The labeling of the Supply Route Symbols in MIL-STD 2525b (2.X.5.2.2.1/2/3/4/5) and APP-6A (2.X.2.4.2.2.1/2/3/4/5) has been improved: the labels were not visible when zoomed in on these lines.

    Bug fixLuciadFusion

    TLcdWKTReferenceParser no longer fails on UTM grid references where the name does not follow a pattern UTM zone NN[N|S]. If the name of the reference is according to the pattern the decoded reference will be a TLcdUTMGrid from which the zone and hemisphere can be retrieved. If the name does not follow the pattern, the string will be decoded as a regular grid reference, from which only the zone can be retrieved indirectly.

    Bug fixLuciadFusion

    TLcdWCSProxy now correctly includes the Z coordinates of its bounds when it issues requests to the WCS server. This allows users to query three-dimensional coverages.

    Bug fixAdvanced Raster Services

    TLcdDIMAPModelDecoder now also decodes GeoTIFF files with a planar configuration.

    Bug fixTerrain Analysis Engine

    The line-of-sight computation was sometimes not complete when the arc angle is different from 360 and the center point reference is different than the target reference. Although all computations were performed, they were not all included in the resulting raster.

    Bug fixWeather & Environment Standards

    com.luciad.format.grib.TLcdGRIBParameterTable no longer throws an ArrayIndexOutOfBoundsException when a parameter with index 255 is set.

    Bug fixS-63

    Basic permit files with empty lines can now be handled by the TLcdS63ModelDecoder.

    Bug fixS-63

    A bug in the TLcdS63ModelDecoder, causing encrypted files to become undecodable, was fixed (applies on all files encrypted with a hardware ID other than the demo ID).

    7.0.03

    ImprovementDatabase Connectors

    TLcdOracleSpatialModelDecoder now uses the SRID specified in the properties file if it is not set in the metadata in the spatial database.

    Bug fixDatabase Connectors

    TLcdOracleSpatialModelDecoder now correctly ignores geometry elements of type 0 (i.e., unsupported by Oracle Spatial).

    7.0.02

    ImprovementDefense Standards

    TLcdNITFModelDecoder no longer unnecessarily invokes its model reference decoder when it can decode a model reference from the NITF file itself.

    Bug fixLuciadFusion

    TLcdGeoTIFFModelEncoder now correctly encodes rasters that are defined in a grid reference that is rotated.

    Bug fixWeather & Environment Standards

    com.luciad.format.grib.TLcdGRIBModelDescriptor now only considers the significant bits of the internal GRIB value in the method getActualValue, discarding any other spurious bits.

    Upgrade considerationLuciadFusion

    The magnifier controller did not take into account the rotation of the underlying view. TLcdGXYMagnifierController now creates a TLcdGXYViewJPanel instead of a TLcdGXYCanvas. This will only affect applications that do not use Swing to render components. In that case, extend TLcdGXYMagnifierController and overwrite the method createGlassGXYView to return a TLcdGXYViewCanvas.

    7.0.01

    ImprovementLuciadFusion

    The methods createImageInputStream(int, int, com.luciad.view.ILcdXYWorldReference, com.luciad.shape.ILcdBounds, java.awt.Color) and createImage(int, int, com.luciad.view.ILcdXYWorldReference, com.luciad.shape.ILcdBounds, java.awt.Color) in the ALcdWMSProxy object created by TLcdOGCWMSProxyModelDecoder have been made thread-safe. Multiple threads can now use these methods concurrently on the same ALcdWMSProxy object, without the need for extra synchronization.

    Bug fixLuciadFusion

    TLcdGML2ModelEncoder now encodes the srsName attribute for MultiGeometry elements, as required by the GML2 schema.

    Bug fixLuciadFusion

    Constructing a TLcdShapeList with the default constructor no longer results in a NullPointerException when requesting the shape count.

    Bug fixLuciadFusion

    TLcd2DBoundsIndexedModelList now takes into account that a function may return false for an object in a sub model when calling applyOnInteracts2DBounds. The function will no longer be applied to subsequent models.

    Bug fixLuciadFusion

    TLcdGXYLayerList now takes into account that a function may return false for an object in a sub gxy layer when calling applyOnInteract. The function will no longer be applied to subsequent sub gxy layers.

    Bug fixLuciadFusion

    TLcdRasterPainter and TLcdMultilevelRasterPainter now always paint rasters with the correct transformation if the model reference or the world reference are grid references that are rotated.

    Bug fixLuciadFusion

    TLcdGeoRefUtil now better checks for the length of the strings to parse.

    Bug fixLuciadFusion

    TLcdVVJPanel used to throw a NullPointerException if it was used in combination with certain look-and-feels (for example Synth).

    Bug fixLuciadFusion

    The class com.luciad.wms.server.viewencoder.TLcdGXYViewPNGEncoder, which is used by the WMS to encode images to PNG, did not work under JRE 1.6.0 when the native codecLib ImageIO plugin was active.

    Bug fixWeather & Environment Standards

    com.luciad.format.grib.TLcdGRIBModelDecoder now handles Grid Description Sections with the PV/PL field set to 0 (instead of the more correct value 255).

    Bug fixAviation Standards

    The class com.luciad.ais.shape.TLcdDiscretizedLonLatGeoPath used TLcdXYPoint objects instead of TLcdLonLatPoint objects to represent the discretized points of an airspace. This caused problems with airspaces that crossed the 180th meridian, more specifically in bounds calculations, model2world and world2view transformations; the coordinates of the discretized points were still correct.

    Bug fixAviation Standards

    The class com.luciad.format.aixm.decoder.TLcdAIXMILSHandler did not correctly set a descriptor for the collocated DME objects in the ILS model descriptor. This DME descriptor is now properly set while decoding, and can be retrieved through TLcdAIXMILSModelDescriptor.getDMEDescriptor().

    Bug fixDefense Symbology

    The classes TLcdEditableAPP6AObject and TLcdEditableMS2525bObject now use TLcdLonLatPoint objects to represent the individual points of the APP-6A or MIL-STD2525b symbols, and TLcdLonLatBounds to represent the bounds of a symbol. In the past, TLcdXYPoint and TLcdXYBounds were used, which sometimes caused inaccuracies in the bounds calculations.

    Bug fixInfrastructure Standards

    com.luciad.format.dwg.TLcdDWGModelDecoder is now correctly re-initialized when decoding more than one model.

    Bug fixRadar Connectors

    Updated sample: now properly handles license errors.

    Upgrade considerationLuciadFusion

    The class com.luciad.wms.client.model.ALcdWMSProxy has been extended with a clone() method. By default, it returns a shallow clone of the source object. Implementations of ALcdWMSProxy are recommended to provide a proper implementation. For example, if an implementation is defined that acts as a wrapper around another ALcdWMSProxy object, the wrapper class should provide a clone() implementation that clones the internal ALcdWMSProxy delegate object.

    7.0

    ImprovementLuciadFusion

    The EPSG resources are updated to EPSG database v6.12. To make use of this change update the jar lcd_epsg_resources.jar in your classpath.

    ImprovementLuciadFusion

    ALcdGXYPen now has support for ILcdIcon when drawing hot points. When the hot point icon is set, the values of hot point color, shape, and size are disregarded.

    ImprovementLuciadFusion

    TLcdWFSProxyModelFactory now allows creating proxy models for WFS output formats other than GML. To support other formats, an interface ILcdWFSModelDecoder was introduced, and TLcdWFSProxyModelFactory has a new createProxyModel() method which takes the name of an output format and a corresponding ILcdWFSModelDecoder as arguments. More details can be found in the reference documentation.

    ImprovementLuciadFusion

    LuciadMap WFS now properly supports the WFS 1.1.0 capabilities format.

    ImprovementLuciadFusion

    The predefined TLcdAltitudeUnit constants METRE_AMSL, KM_AMSL and FEET_AMSL have been deprecated. They have been reintroduced as METRE, KM and FEET, i.e. without the "AMSL" (Above Mean Sea Level) suffix. This better reflects the actual purpose of TLcdAltitudeUnit, which is to reflect the unit of measure of an altitude without implying any particular altitude reference.

    ImprovementLuciadFusion

    The samples have been restyled to demonstrate LuciadMaps functionalities in a nicer, more coherent, way.

    ImprovementLuciadFusion

    A new XML class, TLcdXMLDocumentReader, was added to the API, to be able to embed a set of LuciadMap XML readers in an existing SAX handler.

    ImprovementLuciadFusion

    TLcdGenericGeodeticDatumFactory now also saves and loads the name of the ellipsoid of the geodetic datum.

    ImprovementLuciadFusion

    TLcdWCSProxyModelFactory now offers the possibility to create a proxy model for coverages obtained in formats other than GeoTIFF. This is done by providing the factory with an ILcdWCSCoverageDecoder, a new interface which is used to process the results obtained from a WCS. Please refer to the reference documentation for details.

    ImprovementLuciadFusion

    The methods get/setMouseDraggedSensitivity(int) moved from TLcdGXYSelectController up in the class hierarchy to TLcdGXYDragRectangleController. This offers consistent behavior for TLcdGXYSelectController, TLcdGXYSelectController2 and TLcdGXYZoomController.

    ImprovementLuciadFusion

    TLcdOpenAction now lowers the priority of the thread loading the data when the data is loaded in a separate thread.

    ImprovementLuciadFusion

    com.luciad.view.map.multilevelgrid is a new package to support multilevel grids. A multilevel grid is a grid that has multiple levels of subdivisions. The classes are:
    • ILcdMultilevelGrid: models the grid,
    • TLcdMultilevelGridLayer: an ILcdGXYLayer capable of rendering a multilevel grid on an ILcdGXYView,
    • ILcdMultilevelGridCoordinate: models an object that covers an element of the grid at any of the levels of the grid,
    • TLcdMultilevelGridUtil: a utility class to convert locations expressed in the reference on which the grid is based to and from multilevel grid coordinates,
    • ALcdMultilevelGridCoordinateFormat: parses and formats multilevel grid coordinates,
    • TLcdMultilevelGridCoordinateModel: takes into account the structure of a multilevel grid to contain multilevel grid coordinates.
    Two samples demonstrate how this grid can be used to model and display a CGRS and a GARS grid.

    ImprovementLuciadFusion

    LuciadMap now supports editable labels that can be freely placed. To this end several interfaces were extended.

    These changes mostly affect the com.luciad.view.gxy and com.luciad.view.gxy.controller package. Following interfaces have been extended:

    In addition, there are new select and edit controllers that can select and manipulate these editable labels: com.luciad.view.gxy.TLcdGXYSelectController2 and com.luciad.view.gxy.TLcdGXYEditController2. The old select and edit controllers were not modified to work with these editable labels.

    ImprovementLuciadFusion

    TLcdConcurrentBuffer is a new implementation of ILcdBuffer that is suitable for concurrent access from multiple threads. It should be used instead of TLcdBuffer in all multi-threaded applications. This is typically done by plugging an instance of TLcdConcurrentBuffer into TLcdSharedBuffer.setBufferInstance or directly into the raster model decoders that require a buffer.

    ImprovementLuciadFusion

    The implementations of ILcdRaster and ILcdTile have been improved for concurrent access from multiple threads. Their levels of thread-safety are documented in the API documentation.

    ImprovementLuciadFusion

    The implementations of ILcdShape have been improved for concurrent access from multiple threads. Their levels of thread-safety are documented in the API documentation.

    ImprovementLuciadFusion

    The class com.luciad.wms.client.model.ALcdWMSNamedLayer has been extended with support for the elements MetadataURL, DataURL and FeatureListURL. Analogously, the class com.luciad.wms.client.model.ALcdWMSNamedLayerStyle has been extended with support for the elements LegendURL, StyleSheetURL and StyleURL. To model these elements, the class TLcdOGCWMSURL has been introduced.

    ImprovementLuciadFusion

    Support has been added to handle multi-dimensional data in the WMS server, as defined by Annex C of the OpenGIS OGC 06-042 Web Map Server Implementation Specification.

    To retrieve dimension information for a layer, the class com.luciad.wms.client.model.ALcdWMSNamedLayer has been extended with two new methods, getDimension(int) and getDimensionCount(). The dimension information itself is modeled as follows:
    • ALcdOGCWMSDimension: represents a dimension definition.
    • TLcdOGCWMSDimensionExtent: represents a set of values or intervals for a dimension.

    To include one or more dimensional parameters in a request, TLcdOGCWMSDimensionWrapper objects must be registered on the active ALcdWMSProxy. A TLcdOGCWMSDimensionWrapper holds a reference to a dimension definition (modeled by ALcdOGCWMSDimension) and the value(s)/interval(s) to be used (modeled by TLcdOGCWMSDimensionExtent). To configure dimensions on a ALcdWMSProxy, the following methods have been introduced:
    • addDimension(ALcdOGCWMSDimension)
    • getDimensionCount()
    • getDimension(int)
    • removeDimension(int)
    • clearDimensions()

    ImprovementLuciadFusion

    Support has been added to handle multi-dimensional data in the WMS server, as defined by Annex C of the OpenGIS OGC 06-042 Web Map Server Implementation Specification.

    To define a dimension for a layer, the classes ALcdWMSDimension, TLcdWMSDimension and TLcdWMSDimensionExtent have been introduced. ALcdWMSDimension and TLcdWMSDimension represent a dimensional parameter, while TLcdWMSDimensionExtent is used to model the available values for a dimension. The classes ALcdWMSLayer and TLcdWMSLayer have been extended with methods to configure these elements.

    For convenience, the sample XML configuration format to configure the capabilities of a server has been extended with support for dimensions. The decoders for this format, com.luciad.wms.server.config.xml.TLcdWMSCapabilitiesXMLDecoder and samples.wms.server.config.xml.WMSCapabilitiesXMLDecoder, both recognize the XML element 'Dimension' and its contents.

    The source name property of a layer (see getSourceName() in ALcdWMSLayer), is too limited to be used for a layer with one or more dimensions, since the corresponding data source depends not only on the layer name but also on the dimensional parameters supplied by the client. To be able to map an ALcdWMSLayer with one or more dimensional parameters on a data source, the abstract class ALcdMultiDimensionalModelProvider has been introduced. Users must implement this class and register it by overriding the method createModelProvider(ILcdModelDecoderFactory[]) in ALcdOGCWMSCommandDispatcherFactory, to support multi-dimensional layers.

    ImprovementLuciadFusion

    The domain model for the WMS capabilities has been extended to include support for the elements MetadataURL, DataURL and FeatureListURL that can be defined for a layer, and for the elements LegendURL, StylesheetURL and StyleURL that can be defined for a layer style. To model these elements, a new class TLcdWMSURL has been introduced. The classes ALcdWMSLayer, TLcdWMSLayer, ALcdWMSLayerStyle and TLcdWMSLayerStyle have been extended with methods to configure these elements. For consistency, the already supported element AuthorityURL for a layer can now also be modeled using TLcdWMSURL in ALcdWMSLayer and TLcdWMSLayer.

    ImprovementLuciadFusion

    A new interface ILcdWMSOnlineResourceResolver has been introduced, which is used to dynamically resolve the paths to online resources. A default implementation is registered by default, but custom implementations can be used by overriding the method createWMSOnlineResourceResolver(ServletConfig) in ALcdOGCWMSCommandDispatcherFactory.

    ImprovementLuciadFusion

    TLcdXYText and TLcdGXYTextPainter now support multi-line text (i.e., text strings with embedded newline characters).

    ImprovementLuciadFusion

    TLcdWKTReferenceParser returns TLcdUTMGrid instances for lines that contain the words 'utm zone'.

    ImprovementLuciadFusion

    TLcdGeodeticReference now has methods to set and retrieve the name as a textual representation of the reference.

    ImprovementLuciadFusion

    Two new methods have added to ALcdWMSLayer, which make it possible to retrieve the parent layer:
    • setParentWMSLayer(ALcdWMSLayer): a protected method that can be called to register the parent layer. The default implementation TLcdWMSLayer automatically invokes this method on the child layer when addChildWMSLayer(ALcdWMSLayer) or removeChildWMSLayer(ALcdWMSLayer) is called.
    • getParentWMSLayer(): a public method, allowing to retrieve the currently registered parent layer.

    This functionality is particularly useful to retrieve the layer styles registered on parent layers, because the WMS specification defines that a layer inherits the styles of its parent.

    ImprovementLuciadFusion

    The raster model decoders now provide support for input stream factories.

    ImprovementLuciadFusion

    TLcdEPSGReferenceParser now has support for more EPSG codes. It now supports:
    • references based on a geodetic datum with a meridian shift,
    • geodetic references of which the name is unknown but for which the transformation parameters to WGS84 are known,
    • geodetic references for which the names was not recognized, but one of the aliases for the name is.
    The complete list of supported coordinate references is available from the API documentation of the TLcdEPSGReferenceParser class. To take advantage of this enhancement the lcd_epsg_resources.jar of this release should be put in the classpath.

    ImprovementLuciadFusion

    The class com.luciad.wms.client.model.ALcdOGCWMSCapabilities has been extended with three new methods to retrieve extra information about the capabilities of an SLD-enabled Web Map Service:
    • getDescribeLayerURL(): returns the URL prefix that must be used for DescribeLayer requests.
    • getGetLegendGraphicURL(): returns the URL prefix that must be used for GetLegendGraphic requests.
    • getSupportedLegendGraphicFormatCount(): returns the number of supported legend graphic formats by a Web Map Service.
    • getSupportedLegendGraphicFormat(int): returns the supported legend graphic format at a given index.
    Note that there are no methods to retrieve the supported formats for the DescribeLayer request, because the SLD specification defines the MIME type application/vnd.ogc.wms_xml as the only available response format for WMS 1.1.1 - 1.3.0.

    ImprovementLuciadFusion

    Support has been added for two new requests: GetLegendGraphic and DescribeLayer. The GetLegendGraphic request provides a general mechanism for acquiring legend symbols. The DescribeLayer request allows a client to obtain feature/coverage-type information for a named layer, which can be used to construct user-defined styles. Both requests are defined by the OpenGIS OGC 02-070 Styled Layer Descriptor Implementation Specification, and are considered optional for an SLD-enabled WMS.

    To provide support for these requests in a WMS implementation, the factory methods createWMSGetLegendGraphicEncoders(ServletConfig) and createWMSDescribeLayerEncoders(ServletConfig) in ALcdOGCSLDWMSCommandDispatcherFactory must be implemented. These methods should return respectively one or more ILcdWMSGetLegendGraphicRequestEncoder and ILcdWMSDescribeLayerRequestEncoder objects, which are responsible for sending a response to the client. Next, the available legend graphic and describe layer formats must be listed in the ALcdWMSCapabilities object created by the ILcdWMSCapabilitiesDecoder in ALcdOGCSLDWMSCommandDispatcherFactory.

    Because the OpenGIS OGC 02-070 Styled Layer Descriptor Implementation Specification defines a default XML format for DescribeLayer responses, an implementation of ILcdWMSGetLegendGraphicRequestEncoder, ALcdWMSDescribeLayerRequestEncoder, is also available. This abstract class implements the methods defined in ILcdWMSGetLegendGraphicRequestEncoder, and adds some extra abstract methods that are needed to construct a correct DescribeLayer response. Encoders that want to use the default XML format should extend from this abstract class.

    ImprovementAdvanced Raster Services

    TLcdDIMAPModelDecoder now provides support for input stream factories.

    ImprovementAdvanced Raster Services

    TLcdGeoSPOTModelDecoder now provides support for input stream factories.

    ImprovementAdvanced Raster Services

    TLcdSwissDHMMatrixModelDecoder now provides support for input stream factories.

    ImprovementGraph and Routing Engine

    The order of point, line, area and complex feature records is preserved now, when converting a GDF file to a multi-leveled GDF file.

    ImprovementReal-time Engine

    A new decluttering algorithm was added, specially designed to label moving tracks. The labels move in a continuous fashion, and sudden jumps are avoided. Check out TLcdContinuousDeclutteringLabelPainter or the samples for more information.

    ImprovementTerrain Analysis Engine

    A new hypsometric value provider (TLcdHypsometricCrease) is added which computes the ridges and/or valleys of a terrain.

    ImprovementAviation Standards

    The DAFIF decoders no longer discard objects with an unsupported or unknown geodetic datum if the record also contains a WGS84-based lon/lat coordinate pair.

    ImprovementAviation Standards

    ALcdDAFIFDecoder has been extended with two methods, setInputStreamFactory(ILcdInputStreamFactory) and getInputStreamFactory(), which allow users to set a custom ILcdInputStreamFactory. An ILcdInputStreamFactory is used to create InputStream objects for source files. By default, TLcdInputStreamFactory is used.

    ImprovementAviation Standards

    TLcdARINCDecoder has been extended with two methods, setInputStreamFactory(ILcdInputStreamFactory) and getInputStreamFactory(), which allows users to set a custom ILcdInputStreamFactory. An ILcdInputStreamFactory is used to create InputStream objects for source files. By default, TLcdInputStreamFactory is used.

    ImprovementDefense Standards

    TLcdNITFModelDecoder now provides support for input stream factories.

    ImprovementDefense Symbology

    The 'Air Corridor' symbol in MIL-STD 2525b (G*G*ALC---****X, 2.X.2.2.2.1) didn't have any labels. In accordance with the MIL-STD 2525b Change 1 2004 specification, it will now use the 'Unique Designation' modifier (ILcdMS2525bCoded.sUniqueDesignation, ILcdAPP6ACoded.sUniqueDesignation) to draw two labels, one above the axis and one below the axis of the symbol. By using the separator character ':' in the modifier ILcdAPP6ACoded.sUniqueDesignation / ILcdMS2525bCoded.sUniqueDesignation, one can create these two labels: the text before ':' will be used above the axis, the other part of the text will be used below the axis of the symbol.

    Furthermore, the rendering quality of the labels of this symbol and related symbols in the group Aviation Lines (MIL-STD 2525b: 2.X.2.2.2, APP-6A: 2.X.2.1.2.2) has been improved.

    ImprovementDefense Symbology

    The movement direction arrow of MIL-STD 2525b and APP-6A icon symbols (ILcdMS2525bCoded.sMovementDirection, ILcdAPP6ACoded.sMovementDirection) was not taken into account in the bounds calculation performed by the painter.

    ImprovementDefense Symbology

    The echelon restrictions in the MIL-STD 2525b and APP-6A customizer for Special Operations Forces (SOF) units (1.X.6) have been diminished. All echelons except for echelons of the type 'INSTALLATION' are now applicable.

    ImprovementDefense Symbology

    It is now possible in APP-6A and MIL-STD 2525b to render a limited set of arrows with more than two points:
    • Axis of Advance for Feint (APP-6A: 2.X.2.1.3.2, MIL-STD 2525b: 2.X.2.3.2)
    • Friendly Aviation (APP-6A: 2.X.2.1.5.2.1.1, MIL-STD 2525b: 2.X.2.5.2.1.1)
    • Friendly Airborne (APP-6A: 2.X.2.1.5.2.1.2, MIL-STD 2525b: 2.X.2.5.2.1.2)
    • Friendly Attack Helicopter (APP-6A: 2.X.2.1.5.2.1.3, MIL-STD 2525b: 2.X.2.5.2.1.3)
    • Friendly Ground Axis of Supporting Attack (APP-6A: 2.X.2.1.5.2.1.4, MIL-STD 2525b: 2.X.2.5.2.1.4.2)
    • Friendly Ground Axis of Main Attack (APP-6A: 2.X.2.1.5.2.1.5, MIL-STD 2525b: 2.X.2.5.2.1.4.1)
    • Friendly Ground Axis On Order (APP-6A: 2.X.2.1.5.2.1.6)
    • Enemy Confirmed (APP-6A: 2.X.2.1.5.2.1.7)

    When more than two points are used, the arrow is smoothly rendered through the specified points. The amount of smoothness can be controlled through the methods setCornerSmoothness(double), getCornerSmoothness() in ILcdAPP6AStyle and ILcdMS2525bStyle.

    In the past, special functionality was introduced to allow aviation-related arrows in APP-6A (situated in 2.X.2.1.5.2.1) and MIL-STD 2525b (situated in 2.X.2.5.2.1) to be painted curved. As these arrows were still limited to have only two points at that time, an arrow curvedness property was introduced (setArrowCurvedness(double) and getArrowCurvedness() in ILcdAPP6AStyle and ILcdMS2525bStyle) to control whether the arrow must be painted straight or curved. This functionality is still working, and does not conflict with the possibility to add more than two points. When more than two points are used, the arrow curvedness property is not taken into account. Instead, the arrow is smoothly rendered through the specified points by using a corner smoothness property, as described above.

    ImprovementDefense Symbology

    The icon repository that is used by APP-6A and MIL-STD 2525b has been completely redesigned, resulting in a major quality improvement. Especially on small scales, the new icons provide a lot more detail.

    ImprovementDefense Symbology

    The rendering of the dashed line of framed icons with Anticipated/Planned status in MIL-STD 2525b and APP-6A has been improved.

    ImprovementDefense Symbology

    The outlined versions of Spacetrack, Airtrack and Subsurface icons in MIL-STD 2525b and APP-6A were not rendered entirely correct, due to a redundant line that was present at the bottom (Spacetrack/Airtrack) or at the top (Subsurface) of the icon.

    ImprovementDefense Symbology

    The APP-6A and MIL-STD 2525b samples have each been extended with a new class, respectively APP6AImageObjectIconProvider and MS2525bImageObjectIconProvider, which allow to apply image-caching on the icon symbols. This can greatly enhance the performance when a lot of symbols must be drawn.

    ImprovementMaritime Standards

    The canDecodeSource() method of the S-57 and S-63 decoders now returns a more precise result; the S57 decoder will no longer return true for S-63 files and vice versa.

    ImprovementMaritime Standards

    The ECDIS domain objects now properly implement the equals() and hashcode() methods.

    ImprovementMaritime Standards

    The basic ECDIS sample now includes extra functionality for displaying additional information about the attributes of S-57 objects. The sample contains some extra resource bundles, providing english names for objects, attributes and attribute values.

    ImprovementMaritime Standards

    The S-57 domain objects now implement ILcdFeatured. The following classes were adapted:
    • TLcdS57Point, TLcdS57Line and TLcdS57Area now implement ILcdFeatured
    • TLcdS57Identifier and TLcdS57EditableIdentifier now implement ILcdFeatured as well.
    • All S-57 model descriptors (TLcdS57ModelDescriptor, TLcdS57CatalogueModelDescriptor, TLcdS57LevelModelDescriptor) now implement the ILcdFeaturedDescriptorProvider interface, being able now to return an ILcdFeaturedDescriptor for each S-57 object in the model.

    ImprovementMaritime Standards

    The S-57 package now provides extra information about object and attribute classes. TLcdS57AttributeClassDescriptor (and derivatives) and TLcdS57ObjectClassDescriptor can be used to retrieve the class code, acronym, type and other meta information, as defined in the S-57 specification. The following other classes were changed:
    • New iplementations of ILcdS57AttributeClassMap and ILcdS57ObjectClassMap are made available in the API, offering extra methods for retrieving attribute and object class descriptors.
    • A TLcdS57AttributeClassMap needs to be set on the TLcdS57ObjectClassMapDecoder now, for linking attribute descriptors to object descriptors.
    • TLcdS57Attribute, TLcdS57Identifier and TLcdS57EditableIdentifier now provide extra methods for retrieving attribute and object class descriptors
    • A TLcdS57ObjectClassMap and TLcdS57AttributeClassMap need to be set on the TLcdS57(Catalogue)ModelDecoder now, to provide all available S-57 object and attribute class definitions to the model decoder.

    ImprovementRadar Connectors

    Updated sample : trajectory layers now use a TLcdGeodeticPen and simulated tracks are interpolated doing true geodesic interpolation, all to avoid problems at the edges of the map.

    ImprovementRadar Connectors

    Updated sample : world data is now loaded at startup.

    Bug fixLuciadFusion

    An issue has been solved in the view management performed by com.luciad.wms.server.TLcdOGCWMSCommandDispatcher, which potentially could lead to a deadlock when handling GetMap/GetFeatureInfo requests, especially on high-loaded servers. When established, some incoming requests would never be handled, and ultimately, the server would stop responding to GetMap/GetFeatureInfo requests.

    Bug fixLuciadFusion

    ALcd3DEditableShape.move3D now moves the shape in the correct direction.

    Bug fixLuciadFusion

    EPSG codes 27391 through 27398 are now supported.

    Bug fixLuciadFusion

    The layer and view label painters now paint all the labels of a multilabelpainter, when selected, instead of only the first one.

    Bug fixLuciadFusion

    TLcdJPLEllipsoidFactory did not return the correct aliases for some ellipsoids.

    Bug fixLuciadFusion

    The method invalidateRegion in the ILcdGXYView implementations now correctly take into account the clip.

    Bug fixLuciadFusion

    The georeferencing of the GeoTIFF sample file bluemarble.tif has been corrected (its width and height erroneously spanned the Earth twice). Please make sure you update to the corrected version, as the old version may no longer be displayed as expected.

    Bug fixLuciadFusion

    TLcdGeoTIFFModelEncoder now avoids an encoding problem when working in the turkish locale.

    Bug fixLuciadFusion

    The class com.luciad.metadata.iso19115.spatial.TLcdISO19115SpatialRepresentationTypeCode is no longer declared as final, making it possible to define extensions to represent custom spatial representation types.

    Bug fixLuciadFusion

    EPSG code 4270, based on the Nahrwan 1967 geodetic datum is now supported.

    Bug fixLuciadFusion

    EPSG code 2961 is now supported.

    Bug fixLuciadFusion

    EPSG model references with a geodetic datum with a prime meridian different from Greenwhich are now supported.

    Bug fixLuciadFusion

    TLcdGridReference has a new property name to identify the reference using a textual representation.

    Bug fixLuciadFusion

    The equals method in TLcdGeodeticDatum now always checks whether the 8 parameters are exactly equal. Previously name equality sufficed to return true.

    Bug fixGraph and Routing Engine

    A bug in TLcdGDFModelEncoder, causing models to be encoded wrong on systems having other default file encoding than ISO-8859-1, is fixed.

    Bug fixAviation Standards

    ILcdDAFIFParachuteJumpAreaFeature contains a new altitude reference feature, which allows applications to distinguish Above Ground Level (AGL) altitudes from Above Mean Sea Level (AMSL) ones. Also, the decoder no longer sets the altitude unit to null if the altitude reference is AGL.

    Bug fixDefense Symbology

    The 'Air Corridor' symbol in APP-6A (G*C*MALC--*****, 2.X.2.1.2.2.1) was not available in the past, because the APP-6A specification did not define a preview/example graphic. The symbol is now added, based on the preview/example graphic in the MIL-STD 2525b Change 1 2004 specification.

    Bug fixMaritime Standards

    TLcdS52Symbol now implements the ILcdIcon interface correctly; the values returned by getIconWidth() and getIconHeight() now correspond with what is drawn by the paintIcon() method.

    Upgrade considerationLuciadFusion

    Where possible, the cloneAs...() methods in the classes contained in the packages com.luciad.shape.shape2D and com.luciad.shape.shape3D now rely on the clone() method. This will only influence code that (erroneously) assumes a specific type for the returned object, for example, it assumes that TLcdLonLatHeightBounds.cloneAs2DEditableBounds() returns a TLcdLonLatBounds object. The following methods have been updated:
    • TLcdLonLatBounds.cloneAs2DEditableBounds()
    • TLcdLonLatFloatBounds.cloneAs2DEditableBounds()
    • TLcdXYBounds.cloneAs2DEditableBounds()
    • TLcdXYFloatBounds..cloneAs2DEditableBounds()
    • TLcdLonLatPoint.cloneAs2DEditablePoint()
    • TLcdLonLatFloatPoint.cloneAs2DEditablePoint()
    • TLcdLonLatZonalPoint.cloneAs2DEditablePoint()
    • TLcdXYPoint.cloneAs2DEditablePoint()
    • TLcdXYFloatPoint.cloneAs2DEditablePoint()
    • TLcdLonLatHeightBounds.cloneAs2DEditableBounds()
    • TLcdLonLatHeightBounds.cloneAs3DEditableBounds()
    • TLcdXYZBounds.cloneAs2DEditableBounds()
    • TLcdXYZBounds.cloneAs3DEditableBounds()
    • TLcdXYZFloatBounds.cloneAs2DEditableBounds()
    • TLcdXYZFloatBounds.cloneAs3DEditableBounds()
    • TLcdLonLatHeightPoint.cloneAs2DEditablePoint()
    • TLcdLonLatHeightPoint.cloneAs3DEditablePoint()
    • TLcdXYZPoint.cloneAs2DEditablePoint()
    • TLcdXYZPoint.cloneAs3DEditablePoint()
    • TLcdXYZFloatPoint.cloneAs2DEditablePoint()
    • TLcdXYZFloatPoint.cloneAs3DEditablePoint()

    Upgrade considerationLuciadFusion

    The constructors of TLcdXMLSchema, TLcdXMLSchemaElement, TLcdXMLSchemaType and TLcdXMLSchemaAttribute have changed slightly; all schema elements, types and attributes now keep a reference to their schema, while the schema itself keeps a reference to its schema provider.

    Upgrade considerationLuciadFusion

    ALcdPoint no longer extends ALcdBounds, instead it extends ALcdShape and implements the interface ILcdBounds. This will only influence code that relies explicitly on ALcdBounds. As ALcdBounds does not expose any methods besides methods defined by ILcdBounds, the ALcdBounds occurrences can be replaced by ILcdBounds.

    Upgrade considerationLuciadFusion

    Some TLcdXMLName constants in the TLcdXMLSchemaConstants class which were accidentally made public, are removed from the API again.

    Upgrade considerationLuciadFusion

    ILcdWFSFeatureType has been extended to contain a list of TLcdWFSMetadataURLs. This list was previously only included in TLcdWFSFeatureType, but is now included in the interface as well and must therefore be added to all implementations. The metadata URLs are not mandatory, however, so implementations of the new methods may be empty if they are not needed.

    Upgrade considerationLuciadFusion

    TLcdAdvancedMapRulerController: the methods get/setGXYEditController and get/setGXYNewController now accept an argument of type ILcdGXYController instead of TLcdGXYEditController and TLcdGXYNewController respectively. This allows to use TLcdGXYEditController2 in combination with the ruler, and in general allows for greater flexibility.

    Upgrade considerationLuciadFusion

    TLcdGXYLayer now implements ILcdGXYEditableLabelsLayer as well as ILcdGXYLayer. If you used to delegate to a TLcdGXYLayer instance in your own implementation of ILcdGXYLayer, you need to delegate the extra methods defined in ILcdGXYEditableLabelsLayer as well if you want to enable the editable labels functionality.

    Upgrade considerationLuciadFusion

    The interfaces ILcdRemoteOWSModelDecoder and ILcdRemoteOWSModelProvider have been updated to enable implementations to return an ILcdModel array instead of a single ILcdModel:
    • ILcdRemoteOWSModelDecoder.decode(): the return type is now ILcdModel[] instead of ILcdModel
    • ILcdRemoteOWSModelProvider.getModel(): the return type is now ILcdModel[] instead of ILcdModel
    This is done to support Styled Layer Descriptors that combine multiple coverages (WCS) or feature types (WFS) into one user-defined layer. Implementations can decode each coverage or feature type into a single ILcdModel. This is especially needed when these coverages or feature types use different model references, since an ILcdModel can only have one model reference.

    The abstract class ALcdSLDWMSGXYLayerFactory has been adapted accordingly: the signature of the method
    • abstract public ILcdGXYLayer createGXYLayer( ILcdModel, TLcdSLDUserLayer, TLcdSLDFeatureTypeStyle[] );
    has changed into
    • abstract public ILcdGXYLayer[] createGXYLayer( ILcdModel[], TLcdSLDUserLayer, TLcdSLDFeatureTypeStyle[] );
    to allow implementations to create an ILcdGXYLayer for each decoded ILcdModel that is part of a user-defined layer.

    Upgrade considerationLuciadFusion

    As stated in the enhancements section, LuciadMap now supports freely placeable labels. In order for your projects to take full advantage of this feature, several guidelines must be followed.

    All classes that use any of the methods in ILcdGXYLabelPainter should be made aware that these label painters could also implement ILcdGXYLabelPainter2. If these label painters also implement ILcdGXYLabelPainter2, the Object and the TLcdLabelLocation must be set instead of the Object and the location index.

    All classes that paint labels should inform the ALcdLabelLocations which labels have been painted. For instance implementations of ILcdGXYLayer, ILcdGXYLayerLabelPainter and ILcdGXYViewLabelPainter paint labels, and as such have to inform these ALcdLabelLocations.
    Please refer to the reference documentation of ILcdGXYEditableLabelsLayer, ILcdGXYLabelPainter2 and ALcdLabelLocations for more detailed information.

    If these guidelines are not followed, your application will behave as if there are no editable labels.

    Upgrade considerationLuciadFusion

    The implementations of ILcdModel have been improved for concurrent access from multiple threads. Their levels of thread-safety are documented in the API documentation. Notably, TLcd2DBoundsIndexedModel now allows concurrent read-only access. The method applyOnInteracts2D is no longer explicitly synchronized, allowing multiple threads to access the model concurrently. This change may be incompatible if any code explicitly or implicitly relies on this synchronization. If so, one can set system properties that are defined in the API documentation to revert to the old behavior. Concurrent read-write access is still only possible with external synchronization. Please consult the developer guide for more details.

    Upgrade considerationLuciadFusion

    The implementations of ILcdShape - except for all *Float* classes - in com.luciad.shape, com.luciad.shape.shape2D and com.luciad.shape.shape3D have received consistent implementations of the methods clone, equals, hashCode, and toString.

    Notably, the method clone now always delegates to the method super.clone, which ensures that a class of the proper type is created, even for extensions. The behavior of clone is kept as much the same as before as possible, especially regarding the choice between a deep clone and shallow clone. The javadoc of the clone method in the updated ILcdShape implementations can be consulted for the exact clone behavior.

    The methods equals and hashCode now always compare the classes and the properties of the shapes (like coordinates, radius, height, etc).

    As with any class that implements equals and hashcode based on object properties, the implications may catch unsuspecting developers by surprise. A common example is a point that is put in a hash table. If its coordinates are changed after it has been put in the hash table, its identity and, more specifically, its hash code changes. It then becomes impossible to retrieve the point based on its hash code. This usually leads to NullPointerExceptions, as null is returned instead of the object. Another example is points only being equal if their classes are equal. A final example is the confusion caused by extensions of the basic shape implementations that do not properly override the identity methods. Overriding implementations should always delegate to their super versions, adding any necessary code for additional properties. The new implementations in LuciadMap may be incompatible with existing code if the code explicitly or implicitly relies on the previous imperfect implementations.

    Upgrade considerationLuciadFusion

    The interface ILcdWMSHttpServletRequestFileNameResolver has been removed, due to its limited practical relevance. The two implementations TLcdWMSServiceExceptionDTDDefaultFileNameResolver and TLcdWMSCapabilitiesDTDDefaultFileNameResolver have been removed accordingly.

    Four methods in TLcdOGCWMSCommandDispatcher that were used to set or retrieve an instance of ILcdWMSHttpServletRequestFileNameResolver to resolve the WMS 1.1.1 Capabilities DTD or Service Exception DTD have been removed also:
    • ILcdWMSHttpServletRequestFileNameResolver getWMSCapabilitiesDTDFileNameResolver()
    • setWMSCapabilitiesDTDFileNameResolver(ILcdWMSHttpServletRequestFileNameResolver)
    • ILcdWMSHttpServletRequestFileNameResolver getWMSExceptionDTDFileNameResolver()
    • setWMSExceptionDTDFileNameResolver(ILcdWMSHttpServletRequestFileNameResolver)

    Upgrade considerationLuciadFusion

    A new class com.luciad.wms.server.TLcdWMSRequestContext has been introduced that holds information about a current request. A number of interfaces in the package com.luciad.wms.server have been adapted to include this class as a parameter in its methods:
    • ILcdRemoteOWSModelDecoder.canDecode(): replaced HttpServletRequest parameter with TLcdWMSRequestContext parameter
    • ILcdRemoteOWSModelDecoder.decode(): replaced HttpServletRequest parameter with TLcdWMSRequestContext parameter
    • ILcdRemoteOWSModelDecoderFactory.createModelDecoder(): replaced HttpServletRequest parameter with TLcdWMSRequestContext parameter
    • ILcdRemoteOWSModelProvider.getModel(): replaced HttpServletRequest parameter with TLcdWMSRequestContext parameter
    Existing implementations just need to update the signature of these methods and can choose whether to use the additional parameter.

    Because the information in TLcdWMSRequestContext can also be useful when encoding GetFeatureInfo responses, a new interface ILcdWMSGetFeatureInfoRequestEncoder has been introduced. This interface is similar to the existing ILcdWMSFeatureInfoRequestEncoder, except for the extra TLcdWMSRequestContext parameter that is added to the encode() method. Accordingly, a factory method createWMSGetFeatureInfoEncoders(ServletConfig) in ALcdOGCWMSCommandDispatcherFactory and a method addWMSGetFeatureInfoEncoder(ILcdWMSGetFeatureInfoRequestEncoder) in TLcdOGCWMSCommandDispatcher have been added. The existing interface ILcdWMSFeatureInfoRequestEncoder and associated methods are still fully functional. Note that registered ILcdWMSGetFeatureInfoRequestEncoder objects have precedence above registered ILcdWMSFeatureInfoRequestEncoder objects, when they have the same content type.

    Upgrade considerationAviation Standards

    The class com.luciad.ais.view.gxy.TLcdGXYProcedureTrajectoryLegLabelPainter and the identical sample class samples.ais.view.gxy.TLcdGXYProcedureTrajectoryLegLabelPainter do now implement ILcdGXYMultilabelPainter, since they paint a label at each leg of a procedure. These changes may be incompatible if any code explicitly invokes the labelBoundsSFCT() or paintLabel() method: the current implementation requires to set the label index and sublabel index before invoking these methods.

    Upgrade considerationAviation Standards

    The implementations of ILcdShape in com.luciad.ais.shape.** and com.luciad.ais.model.** have received consistent implementations of the methods clone, equals and hashCode. Notably, the method clone now always delegates to the method super.clone, which ensures that a class of the proper type is created, even for extensions. The methods equals and hashCode always compare the classes and the properties of the shapes, like coordinates, height, etc. Note that this may still yield surprising results if extensions don't properly override these implementations, which was already the case in previous versions. These changes may be incompatible if any code explicitly or implicitly relies on previously missing or imperfect implementations.

    Upgrade considerationMaritime Standards

    The return types of TLcdS57ObjectClassMapDecoder.decodeS57ObjectClassMap() and TLcdS57AttributeClassMapDecoder.decodeS57AttributeClassMap() have been refined to return a more specific implementation of ILcdS57ObjectClassMap and ILcdS57AttributeClassMap. Extensions of these classes that have overridden these methods might cause a compilation error; they should refine their return type as well to adhere to the contract of the ancestor class again.

    Upgrade considerationMaritime Standards

    The S-57 model descriptors (TLcdS57ModelDescriptor, TLcdS57CatalogueModelDescriptor, TLcdS57LevelModelDescriptor) no longer implemented by these model descriptors.

    6.2

    6.2.21

    ImprovementS-63

    S-63 models now have a TLcdS63ModelDescriptor instead of a TLcdS57ModelDescriptor. The former extends the latter, to keep the API backwards compatible.

    Bug fixLuciadFusion

    The encoding of a service exception report to an image instead of to the predefined XML format could possibly lead to a NullPointerException.

    Bug fixAviation Standards

    The runway painter com.luciad.ais.symbology.icao.TLcdICAORunwayPainter now returns a valid ILcdGXYPainter for each ILcdRunway, regardless of its geometry. In the past, null was returned for runways with less than two points, which could lead to a NullPointerException. Note that the ILcdGXYPainter that is now returned for ILcdRunway objects with less than two points does not paint the runway, as this cannot be done according to the ICAO specification.

    6.2.19

    ImprovementLuciadFusion

    TLcdTABRasterModelDecoder now has a property maximumResidualTiePointError to control when to reject rasters of which the tie points do not precisely define an affine transformation (throwing an IOException instead).

    ImprovementAdvanced Raster Services

    TLcdDIMAPModelDecoder now has properties minimumTiePointCount and maximumResidualTiePointError to control when to reject rasters whose tie points do not precisely define an affine transformation (throwing an IOException instead).

    ImprovementAdvanced Raster Services

    TLcdECWModelDecoder now has a property maximumResidualTiePointError to control when to reject rasters whose tie points do not precisely define an affine transformation (throwing an IOException instead).

    ImprovementAdvanced Raster Services

    TLcdMrSIDModelDecoder now has a property maximumResidualTiePointError to control when to reject rasters whose tie points do not precisely define an affine transformation (throwing an IOException instead).

    Bug fixLuciadFusion

    TLcdGeoTIFFModelDecoder, TLcdTABRasterModelDecoder, and TLcdTFWModelDecoder now handle rasters that are rotated in a geodetic coordinate system.

    Bug fixAdvanced Raster Services

    TLcdDIMAPModelDecoder now properly handles image tie point coordinates expressed as floating point numbers in METADATA.DIM.

    Bug fixAdvanced Raster Services

    TLcdDIMAPModelDecoder now supports rasters that are rotated in a geodetic coordinate system.

    Bug fixDefense Symbology

    The 'Own track' symbol in MIL-STD 2525b and APP-6A (S*S*O-----*****, 1.X.4.4) was not present anymore in the icon repository and has been readded.

    6.2.18

    Bug fixDefense Standards

    GRT tables with an empty projection code field (which is the case for geodetic references) are supported now.

    6.2.17

    ImprovementLuciadFusion

    TLcdWFSFeatureType has been extended to contain a list of TLcdWFSMetadataURLs. If present, these URLs are added to the feature type list in the capabilities document of the WFS.

    ImprovementTerrain Analysis Engine

    TLcdTerrainProfileController: adding getter and setter to adjust the default TLcdGXYViewBasedTerrainElevationProvider.

    Bug fixLuciadFusion

    GML2 documents now always contain a gml:boundedBy element, even if the original ILcdModel was not ILcdBounded - as is required by the GML2 schema.

    Bug fixLuciadFusion

    TLcdMIFModelReferenceParser now supports the french NTF geodetic datum with prime meridian through Paris (number 107), and custom geodetic datums with prime meridians different from 0.

    Bug fixLuciadFusion

    The robustness of the WMS has been improved when the encoding of a GetMap or GetFeatureInfo result fails. In such cases, a proper service exception report will be created and sent to the client.

    Bug fixTerrain Analysis Engine

    The TLcdDensityBasedRasterElevationProvider will always use the best density raster to retrieve the elevation values. Also when this raster contains invalid data.

    Bug fixDefense Standards

    The FACC attribute list of a VPF feature now only contains FACC attributes (other low-level feature attributes used by VPF, like tile id and primitive id, are excluded from the list now).

    6.2.16

    Bug fixLuciadFusion

    A bug in the GML2 schema generation, resulting in the FeatureCollection element and type missing in the schema, has been fixed.

    6.2.15

    ImprovementLuciadFusion

    It is now possible to insert a TLcdSLDRule at a given index in a TLcdSLDFeatureTypeStyle, and to insert a TLcdSLDSymbolizer at a given index in a TLcdSLDRule. This avoids tedious removing and re-adding of rules or symbolizers.

    ImprovementLuciadFusion

    iButton USB support has been extended to Mac OS X. The iButton is now supported on the following platforms:
    • serial adapter: Windows XP/NT/2000, Linux, Solaris
    • USB adapter: Windows XP/2000, Linux, Mac OS X

    ImprovementInfrastructure Standards

    com.luciad.format.dwg.TLcdDWGModelDecoder now supports the DWG R2004 format.

    Bug fixLuciadFusion

    TLcdSLDFill and TLcdSLDStroke now allow to unset a CSSparameter by passing null as the value of a parameter.

    Bug fixLuciadFusion

    TLcdSHPModelEncoder now supports encoding Float features.

    Bug fixLuciadFusion

    TLcdFeatureIndexedAnd2DBoundsIndexedModel no longer throws a null pointer exception when checking whether an object may be removed from the model.

    Bug fixLuciadFusion

    TLcdAdvancedMapRulerController: the feature count (ILcdFeatured.getFeatureCount()) of the polyline given to the painter (as explained in the documentation of createGXYLabelPainter()) incorrectly returned 2, instead of 3.

    Bug fixLuciadFusion

    TLcdCADRGModelDecoder is now more robust in making the distinction between A.TOC files and frame files.

    Bug fixLuciadFusion

    TLcdSWAction now takes into account that a null icon may be set.

    Bug fixLuciadFusion

    TLcdUTMMgrsUtil now takes into account that strings passed to parse may be too short.

    Bug fixLuciadFusion

    ALcdGXYPen.isViewLineTouched now correctly takes into account the sensitivity parameter and the hot point size when performing its check.

    Bug fixLuciadFusion

    The TLcdGXYMagnifierController view now updates itself when the scale factor or scale accelerator was changed.

    Bug fixLuciadFusion

    TLcdCADRGModelDecoder now sets the correct type on decoded tiles when expandColorMap is true.

    Bug fixLuciadFusion

    TLcdGXYViewJPanelLightWeight now correctly initializes its background color to the color defined by the look and feel.

    Bug fixDefense Standards

    TLcdNITFModelDecoder now makes color 255 of decoded grayscale JPEG images transparent, consistently with uncompressed grayscale images, in order to avoid a black border when they are painted with warping.

    Bug fixDefense Standards

    TLcdNITFModelDecoder now correctly decodes coordinates specified in the 'D' format.

    Bug fixInfrastructure Standards

    com.luciad.format.dwg.gxy.TLcdDWGGXYLineStyle now properly sets and scales line widths.

    6.2.14

    ImprovementLuciadFusion

    Performance of the XSD schema generation in the GML3 encoder has been improved: for models having an ILcdFeaturedDescriptor, the schema will be generated directly using the featured descriptor; for models having an ILcdFeaturedDescriptorProvider, the encoder will still need to iterate over all elements to retrieve all possible ILcdFeaturedDescriptor objects.

    ImprovementLuciadFusion

    Geometric properties are now all encoded by the GML3 encoder as gml:geometryProperty elements; no distinction is made anymore between point, line and polygon geometries.

    ImprovementLuciadFusion

    The GML3 encoder now supports all commonly used Java basic data types (support for short, BigInteger, BigDecimal and some SQL-specific types, used by JDBC, was added).

    ImprovementLuciadFusion

    The GML decoder and encoder now support and use GML 3.1.1.

    ImprovementLuciadFusion

    TLcdLonLatGridPainter now has properties to specify the offsets of the labels from the edge of the view and from the grid lines.

    Bug fixLuciadFusion

    ILcdFeatured objects which do not implement the ILcdShape interface are now properly encoded by the GML3 encoder (these elements were ignored before).

    Bug fixDefense Standards

    Features having a 1:N feature-primitive relationship are now decoded correctly (feature attributes were missing before). Decoded VPF models contain an ILcdFeatured+ILcdShape object for each of the primitives, defining a feature.

    Upgrade considerationLuciadFusion

    Protected methods of the GML element name providers are now made public, to be able to access them from other places.

    6.2.13

    ImprovementLuciadFusion

    When using an SLD-enabled WMS (1.1.1 or 1.3.0), the capabilities that are sent to the client now mention the version number of the supported SLD specification in LuciadMap, which is 1.0. This information is added to the contents of the element 'UserDefinedSymbolization'. Displaying this information in the capabilities is optional according to the WMS 1.1.1 specification.

    ImprovementRadar Connectors

    Improved performance of updateObjectsForTime method of sample TrackSimulationModel.

    6.2.12

    ImprovementLuciadFusion

    TLcdRenderedImageTile now has a dispose method that disposes of the wrapped RenderedImage and SeekableInputStream. This can be useful for releasing locks on files that are to be moved or deleted, especially on the Windows platform.

    ImprovementLuciadFusion

    Support has been added for the layer attribute 'opaque'. This is a property defined by the WMS specification that allows to indicate that a layer represents an area-filling coverage. To retrieve this property for a layer, the method isOpaque() has been added to ALcdWMSNamedLayer. Note that the WMS specification defines that this property is inherited from the parent layer if it is not explicitly defined: this relationship is automatically applied by the decoder.

    ImprovementLuciadFusion

    Support has been added for the layer attribute 'opaque'. This is a property defined by the WMS specification that allows to indicate that a layer represents an area-filling coverage. The following changes have been made to support this property:
    • ALcdWMSLayer has been extended with a method isOpaque() and TLcdWMSLayer has been extended with a method setOpaque(Boolean). The configured value is automatically taken into account while sending the capabilities to the client (see below).
    • The WMS server configuration decoders, com.luciad.wms.server.config.xml.TLcdWMSCapabilitiesXMLDecoder and samples.wms.server.config.xml.WMSCapabilitiesXMLDecoder, both recognize the XML attribute 'opaque="true|false"' for the XML element 'Layer'.

    Bug fixAviation Standards

    The class com.luciad.format.aixm.decoder.TLcdAIXMAirspaceHandler now omits all airspaces that don't have a geometry from the resulting model. In the past, only association-based airspaces without a geometry were omitted. An error message specifying these omitted airspaces can be retrieved through the method getErrorMessage() in TLcdAIXMModelDecoder, after the decoding process.

    6.2.11

    ImprovementLuciadFusion

    TLcdSystemPropertiesUtil now has methods to detect Java versions 5 and 6.

    ImprovementLuciadFusion

    The WMS Client layer factory, TLcdWMSProxyGXYLayerFactory, now uses the model descriptor's display name as default layer label, instead of 'WebMapServer'. The model descriptor's display name corresponds to the the title of the service described in the capabilities of a server.

    ImprovementInfrastructure Standards

    com.luciad.format.dgn.TLcdDGNModelDecoder now handles multi-lines.

    ImprovementInfrastructure Standards

    com.luciad.format.dgn.ILcdDGNModelDecoder now provides methods to select levels to be decoded, based on their names.

    6.2.09

    ImprovementLuciadFusion

    TLcdGML3ModelEncoder now supports the encoding of java.sql.TimeStamp features.

    ImprovementLuciadFusion

    TLcdGXYSelectController has a new property removeSelectedInAlternateMode which enables a more consistent behaviour for the ILcdGXYSelectControllerMode.ALTERNATE mode. If set to true, objects selected again in a rectangle will be removed from the selection. This mimics the behaviour of selection in popular file browsers. The default value is false for backwards compatibility reasons.

    Bug fixLuciadFusion

    When a property change listener removed itself as a listener from TLcdGXYViewJPanel the next property change listener is no longer skipped.

    Bug fixLuciadFusion

    TLcd2DBoundsIndexedModel now returns the correct value when it is interrupted by the applied function returning false.

    Bug fixLuciadFusion

    TLcdCGMModelDecoder has been made more robust when handling unknown element classes.

    Bug fixDefense Symbology

    A number of painting calculations regarding tactical symbols in MIL-STD 2525b and APP-6A have been improved, because of a possible occurrence of a division by zero generating an ArithmeticException.

    Bug fixS-63

    The S-63 hardware id is now included in the LuciadMap license file, and can no longer be set separately via the API (the method TLcdS63ModelDecoder.setHardwareID() has been removed from the API).

    6.2.07

    ImprovementLuciadFusion

    TLcdGeoTIFFModelDecder now has a setting to expand the color maps of decoded GeoTIFFs. Expanding color maps should avoid any problems with colored borders around warped rasters, at the cost of some performance.

    ImprovementDefense Standards

    TLcdNITFModelDecoder now decodes the optional Tagged Record Extension BLOCKA, which contains the image corner locations at a higher precision than the one in the standard NITF header.

    ImprovementDefense Standards

    TLcdNITFModelDecoder can attach approximate orthographic grid references to aerial pictures and satellite imagery that are stored with a simple geodetic reference. The maximum residual error for the corner points can be specified.

    Bug fixLuciadFusion

    A bug, causing a NullPointException to be thrown when a model with null bounds is encoded using the TLcdGML2ModelEncoder or TLcdGML3ModelEncoder, was fixed.

    Bug fixLuciadFusion

    TLcdGXYViewFitAction sometimes fitted to an infinite scale, for example, when trying to fit to a layer containing only data in the southern hemisphere, while the views reference is a Polar Stereographic of the northern hemisphere.

    Bug fixLuciadFusion

    TLcdGXYViewFitAction now externalizes handling exceptions when fitting to a layer failed by allowing to setting an ILcdExceptionHandler.

    Bug fixLuciadFusion

    The boundaries of the Oblique Mercator projection are now closer to the projections poles.

    Bug fixDefense Standards

    The getFeatureAttributeDescription() getFeatureAttributeClass() methods of TLcdVPFFeatureClass now return correct values (the returned values used to be off-by-one).

    Bug fixDefense Standards

    TLcdNITFModelDecoder now correctly decodes tiles that are larger than their images.

    6.2.06

    Bug fixLuciadFusion

    The WFS now properly sets the content type (mime type) of its responses.

    Bug fixLuciadFusion

    TLcdInputStreamFactory now automatically decompresses URL streams if their content encoding indicates compression.

    6.2.05

    ImprovementLuciadFusion

    TLcdGML3ModelEncoder now supports the encoding of java.sql.date features.

    Upgrade considerationLuciadFusion

    All element readers and adapters of GML3 are now instantiated using reflection. Special care should be taken when shrinking code using an obfuscation/shrinking tool, like ProGuard for example: constructors of these classes should not be removed during the shrinking. See the luciadmap.pro sample file, provided with LuciadMap, for an example of a ProGuard configuration file.

    6.2.04

    ImprovementLuciadFusion

    The WMS Client does now support different compression encodings: gzip, x-gzip, zip, x-zip, compress, x-compress and deflate. As before, HTTP request properties can be set through the method setRequestProperty(String, String) in TLcdOGCWMSProxyModelDecoder.

    ImprovementAviation Standards

    A new method setDefaultGeodeticDatum(ILcdGeodeticDatum) has been introduced in all ILcdARINCHandler implementations, to make it possible to set a default datum. This datum is used for records which do not explicitly mention a geodetic datum. By default, WGS 84 is set.

    Bug fixLuciadFusion

    TLcdGXYArcPainter now has an extra property CreationOrientation which defines how an arc will be created, clockwise or counter clockwise. For the sake of uniformity the TLcdGXYArcBandPainter now has the same property, deprecating the property counterClockwise of that painter.

    Bug fixLuciadFusion

    TLcdContourFinder now correctly returns all contours, for mountains and for holes. Note that the contours may still need to be sorted if they are to be painted in the right order.

    Bug fixLuciadFusion

    The com.luciad.format.shp package no longer keeps a static reference to the ILcdInputStreamFactory that was set to the TLcdSHPModelDecoder, solving possible memory leaks.

    Bug fixLuciadFusion

    TLcdContourFinder now checks for invalid matrices i.e. matrices with less than one row or less than one column.

    Bug fixAdvanced Raster Services

    TLcdDIMAPModelDecoder now recognizes the NODATA special value for defining transparent pixels.

    Bug fixAdvanced Raster Services

    TLcdDIMAPModelDecoder now recognizes the ULXMAP/ULYMAP/XDIM/YDIM tags and FRAME_* tags, in addition to the TIE_POINT_* tags, for positioning decoded rasters.

    Bug fixTerrain Analysis Engine

    TLcdProfileViewJPanel: the visibility lines are only calculated if a mark point has been set. The mark point can be set by left clicking the profile view.

    Bug fixTerrain Analysis Engine

    TLcdProfileViewJPanel: the profile is cleared when the TLcdTerrainProfileController recieves a mouse click.

    Bug fixAviation Standards

    TLcdDAFIFRefuelingTrackDecoder incorrectly interpreted UHF frequencies as being expressed in Hertz, where they should have been MegaHertz. The values of the PRIMARY_UHF_FREQUENCY_UNIT and BACKUP_UHF_FREQUENCY_UNIT fields defined by ILcdDAFIFRefuelingTrackFeature are now set to TLcdFrequencyUnit.MHZ_UNIT instead of TLcdFrequencyUnit.HZ_UNIT.

    Bug fixAviation Standards

    A memory leak has been fixed in the DAFIF independent decoders:
    • TLcdDAFIFIndependentAerodromeNavaidDecoder
    • TLcdDAFIFIndependentATSRouteDecoder
    • TLcdDAFIFIndependentHelipadDecoder
    • TLcdDAFIFIndependentHoldingDecoder
    • TLcdDAFIFIndependentILSDecoder
    • TLcdDAFIFIndependentProcedureDecoder
    • TLcdDAFIFIndependentRunwayDecoder
    After decoding, these decoders still kept a reference to the external models needed while decoding the domain objects.

    Bug fixAviation Standards

    A memory leak has been fixed in TLcdAIXMModelDecoder, which caused that all registered ILcdAIXMHandler instances were still referenced after having invoked the method removeAllHandlersForTypeToBeDecoded().

    Bug fixAviation Standards

    The DAFIF ILS decoder TLcdDAFIFILSDecoder, which generates a model list with localizer, glide slope, marker and DME objects, did not correctly parse the frequency feature: the implicit comma between the fourth and fifth character in the record value was ignored, resulting in frequencies that were a factor 1000 larger than expected.

    6.2.03

    ImprovementLuciadFusion

    TLcdTABRasterModelDecoder and TLcdTFWRasterModelDecoder now return more useful display names in the model descriptors of decoded models.

    ImprovementLuciadFusion

    TLcdDTEDModelDecoder and related model decoders now return more useful display names in the model descriptors of decoded models.

    ImprovementLuciadFusion

    TLcdLonLatGrid now checks the values set for deltaLat and deltaLon. If a negative value is passed, an IllegalArgumentException will be thrown.

    ImprovementDefense Symbology

    The icons for the following MIL-STD 2525b symbols were incorrect and have been fixed:
    • Sensor Outpost / Listening Post (G*G*DPOS--****X, 2.X.2.4.1.2.4): the trapezium inside the triangle may not be filled.
    • Anti Armor Armored Tracked (S*G*UCAAAT*****, 1.X.3.1.1.3.7.1): the icon was not rendered when 'Friendly' affiliation was chosen.
    • Single Rocket Launcher (S*G*UCFRS-*****, 1.X.3.1.1.7.2.1): the icon has been updated to the latest MIL-STD 2525b specification, version 2004.
    • Multiple Rocket Launcher (S*G*UCFRM-*****, 1.X.3.1.1.7.2.2): the icon has been updated to the latest MIL-STD 2525b specification, version 2004.
    • Fire Support Station (G*F*PS----****X, 2.X.4.1.2): the example FSS label has been removed.

    ImprovementDefense Symbology

    The MIL-STD 2525b and APP-6A echelon symbols Towed Array Short and Towed Array Long were not rendered.

    ImprovementDefense Symbology

    The classes TLcdMS2525bGXYPainterProvider and TLcdAPP6AGXYPainterProvider has been extended with two new methods, getIconProvider() and setIconProvider(ILcdObjectIconProvider), that allow to set a custom icon provider implementation. By default, TLcdMS2525bObjectIconProvider is used for MIL-STD 2525b and TLcdAPP6AObjectIconProvider for APP-6A.

    Bug fixLuciadFusion

    TLcdByteArrayTile and TLcdIntArrayTile now return the correct types and pixel sizes.

    Bug fixLuciadFusion

    TLcdSHPModelEncoder now makes sure that the field names in the DBF file have a maximum length of 10 characters (instead of 11), and that they only contain letters and digits.

    Bug fixLuciadFusion

    TLcdGeoTIFFModelDecoder now also sets a valid display name on the model descriptor if a GeoTIFF is decoded from a URL.

    Bug fixLuciadFusion

    TLcdGXYMagnifierController now closes the magnifying window created with a right mouse click when deactivated.

    Bug fixWeather & Environment Standards

    com.luciad.format.grib.TLcdGRIBModelDecoder now decodes the correct GRIB bounds, without extending them by half a pixel in all directions. This would cause problems for GRIB files that extend all the way to the north pole or the south pole. For consistency, TLcdGRIBTileDecoder now discards the last column and row of sample values, which are duplicated across tiles. The sample value in the top left corner of each pixel is used as the pixel's value.

    Bug fixAviation Standards

    The (optional) additional points between the low end and high end of runways were not correctly decoded by TLcdDAFIFRunwayDecoder.

    6.2.02

    ImprovementLuciadFusion

    TLcdGeoTIFFModelEncoder is now more memory efficient when encoding rasters containing a single large tile.

    ImprovementLuciadFusion

    Development licenses can now be used to test applications that are obfuscated for deployment.

    ImprovementGraph and Routing Engine

    Edge directions of Navteq datasets are now decoded correctly (the encoding of edge directions in Navteq data is not compliant with the GDF specification).

    ImprovementDefense Symbology

    All the tactical point symbols in MIL-STD 2525b and APP-6A now have four labels:
    • Unique Designation (T): This label can be set through the modifiers ILcdMS2525bCoded.sUniqueDesignation and ILcdAPP6ACoded.sUniqueDesignation
    • Additional Information (H): This label can be set through the modifiers ILcdMS2525bCoded.sAdditionalInformation and ILcdAPP6ACoded.sAdditionalInformation
    • Date Time Group (W): This label can be set through the modifiers ILcdMS2525bCoded.sDateTimeGroup and ILcdAPP6ACoded.sDateTimeGroup
    • Effective Time (w): This label can be set through the modifiers ILcdMS2525bCoded.sEffectiveTime and ILcdAPP6ACoded.sEffectiveTime
    The tactical point symbols are the point symbols in the 2.X group, with a symbol code starting with 'G'. As in the past, individual modifiers can be restrained from being displayed as a label by using the method setLabelEnabled(String) in ILcdMS2525bStyle and ILcdAPP6AStyle. A style can be associated with a symbol through ILcdMS2525bStyled and ILcdAPP6AStyled, or it can be set as a default style on a (label) painter provider.

    Bug fixLuciadFusion

    The projections TLcdStereographic, TLcdObliqueMercator and TLcdSwissObliqueMercator did not have a correct implementation of the clone method.

    Bug fixLuciadFusion

    TLcdRasterPainter and TLcdMultilevelRasterPainter now correctly implement the clone method.

    Bug fixLuciadFusion

    TLcdSoft2DBoundsIndexedModel no longer throws a NullPointerException when requesting its model descriptor or model reference, and the model cannot be decoded.

    Bug fixGraph and Routing Engine

    The clustered partitioning algorithm has been improved, generating better partitionings (the algorithm sometimes couldn't find any suitable partioning). Performance of the algorithm has also been improved with a factor 3-4.

    Bug fixDefense Symbology

    The functionality to restrain a modifier from being displayed as a label in MIL-STD 2525b and APP-6A through setLabelEnabled(String)/isLabelEnabled(String) in ILcdMS2525bStyle/ILcdAPP6AStyle now works for all symbols. In the past, it was only used for framed icon symbols.

    Bug fixMaritime Standards

    Invisible objects are not selected anymore when using rectangle selection.

    Bug fixMaritime Standards

    A NullPointerException, occuring when the PaintOverscaleIndication flag was set to true and both PaintUnderscaleIndication and PaintChartScaleBoundaries were set to false, on a TLcdGXYLevelLayerList, is fixed.

    Upgrade considerationDefense Standards

    Inner polygons (holes) in faces are now supported. The domain model objects representing VPF areas now implement the ILcdComplexPolygon interface, instead of the ILcdPolygon interface.

    6.2.01

    ImprovementLuciadFusion

    TLcdGXYEllipsePainter has two new properties: selectionMode and editingMode. These two properties are rendering modes indicating how the ellipse should be rendered when it is selected and when it is being edited.

    ImprovementLuciadFusion

    GML3 model objects can now be cloned.

    ImprovementRadar Connectors

    toString() methods of TLcdASTERIXTrajectory and TLcdASTERIXTrack now return a human readable string.

    Bug fixLuciadFusion

    TLcdUTMMgrsUtil now throws out of bounds exceptions when converting lon lat points to UTM coordinates when the point is outside the valid area of the UTM projection.

    6.2

    ImprovementLuciadFusion

    TLcdDTEDModelDecoder and related model decoders now accept DTED files containing empty numerical fields, interpreting them as 0.

    ImprovementLuciadFusion

    TLcdBufferedTile now avoids repeatedly trying to load missing tiles.

    ImprovementLuciadFusion

    To allow better error handling when using the WMS Client API, three new classes have been added that define specific error conditions:
    • TLcdOGCWMSServiceException: represents an IOException that results from an OWS Service Exception Report sent by the WMS server.
    • TLcdOGCWMSHttpException: represents an IOException that results from an invalid HTTP response that was received from a server.
    • TLcdOGCWMSException: represents an IOException, different from an HTTP error or service exception report, that occurred while connecting with a WMS server or while parsing the result.
    These exceptions are thrown by the following methods:
    • TLcdOGCWMSProxyModelDecoder.decode(String): uses the GetCapabilities request to retrieve the capabilities of the server.
    • ALcdWMSProxy.createImageInputStream(int, int, ILcdXYWorldReference, ILcdBounds, Color): uses the GetMap request to retrieve a map.

    ImprovementLuciadFusion

    TLcdObliqueMercator now has an ellipsoidal implementation, according to the Hotine formulas.

    ImprovementLuciadFusion

    The GML element name providers now have a protected method that can be overridden to control the way feature names are mapped on xml names. The default implementation now also performs a check on duplicate names.

    ImprovementLuciadFusion

    The GML3 decoder, encoder, reader and apter providers now have methods to register readers/adapters for anonymous types.

    ImprovementLuciadFusion

    The XML encoder now removes control characters that are not allowed by the XML specification from all XML content that is encoded.

    ImprovementLuciadFusion

    TLcdGeoTIFFModelDecoder now supports GeoTIFF files containing signed shorts, by default interpreting them as elevation values (isElevation of the decoded model descriptor returns true).

    ImprovementLuciadFusion

    TLcdSLDSymbolizerPainterFactory now creates a raster painter provider which provides a raster painter for ILcdBounded objects. This allows applying an SLD raster symbolizer to ILcdBounded objects.

    ImprovementLuciadFusion

    TLcdGXYPanController, TLcdGXYZoomController and ALcdGXYNewControllerModel now implement the ILcdUndoableSource interface; they already contained the methods of that interface.

    ImprovementLuciadFusion

    The new class TLcdISO19103Measure can be used to represent any measure: a distance measure, a speed measure, ...

    ImprovementLuciadFusion

    To provide better support for dynamic WMS server implementations, a number of enhancements haven been implemented:
    • A new interface com.luciad.wms.server.ILcdWMSCapabilitiesUpdater has been introduced which can be used to implement an update strategy for the WMS server. This interface contains one method update(HttpServletRequest), which will be invoked for each incoming request. To register an implementation on the WMS, the new factory method createWMSCapabilitiesUpdater(ServletConfig, TLcdOGCWMSCommandDispatcher, ILcdWMSCapabilitiesDecoder) in ALcdOGCWMSCommandDispatcherFactory must be implemented.
    • A new factory method createModelProvider() has been introduced in ALcdOGCWMSCommandDispatcherFactory, which returns an ILcdModelProvider. In the past, an ILcdModelProvider was created internally and set on the command dispatcher, which made it more difficult to insert a custom ILcdModelProvider implementation.
    • The WMS server sample has been extended with a sample implementation of ILcdWMSCapabilitiesUpdater.
    • The implementation of TLcdOGCWMSCommandDispatcher has been improved in the context of a dynamic WMS:
      • Extra measures have been taken to prevent any inconsistencies while updating the server at runtime.
      • The getWMSCapabilities(HttpServletRequest) will now always return the same ALcdWMSCapabilities object for the same HttpServletRequest object.

    ImprovementLuciadFusion

    TLcdInputStreamFactory now provides the possibility to specify request properties when opening connections.

    ImprovementLuciadFusion

    The new classes TLcdByteArrayTile, TLcdIntArrayTile, and TLcdShortArrayTile provide simple implementations of the ILcdTile interface.

    ImprovementLuciadFusion

    A new client API for OGC Web Coverage Services (WCS) has been introduced. More information can be found in Wcs_client_DeveloperGuide.pdf and in the reference documentation for the package com.luciad.ogc.wcs.client. An example program can be found in samples.ogc.wcs.proxy.

    ImprovementLuciadFusion

    A new client API for OGC Web Feature Services (WFS) has been introduced. More information can be found in Wfs_client_DeveloperGuide.pdf and in the reference documentation for the package com.luciad.ogc.wfs.client. An example program can be found in samples.ogc.wfs.proxy.

    ImprovementLuciadFusion

    TLcdRasterGXYLayerCodec and TLcdMultilevelRasterGXYLayerCodec: setting the correct color model to the raster painter based on the contents of the style file (*.sty) now works more robust: even if no existing color model is found on the painter or the model, the colors are restored.

    ImprovementLuciadFusion

    TLcdDMEDModelDecoder now avoids creating bounds that are larger than necessary, for valid DMED files and for malformed DMED files alike.

    ImprovementLuciadFusion

    Performance of the TLcdGXYLayerList.getGXYPainter() and TLcdGXYLayerList.getGXYEditor() methods has been improved; in case multiple sublayers return a valid painter/editor for a given object, all equal (i.e., equals() returns true for all painters/editors), a significant performance improvement might be noticed for large or lazy loaded models. Performance of the TLcdGXYLayerList.selectObject() method has also been improved; the method will stop now as soon as the object to be selected has been found in one of the sublayers (it used to iterate over all sublayers in all cases).

    ImprovementLuciadFusion

    Addition of the setSchemaLocationsMap method to the TLcdSLDFeatureTypeStyleEncoder10 class. This method in fact delegates to the underlying XML encoder. The schema locations will be declared in all XML document encoded by the encoder, in the xsi:schemaLocations="namespace schemaLocation ..." attribute of the root element.

    ImprovementLuciadFusion

    A new method pair setPreserveMeasurement/isPreserveMeasurement was added to TLcdAdvancedMapRulerController to either preserve the measurement between successive calls to startInteraction and terminateInteraction, or to start from scratch every time the controller is started.

    ImprovementLuciadFusion

    TLcdSHPModelDecoder now also decodes non standard files in which the first record does not have record number 0001.

    ImprovementLuciadFusion

    TLcdGeoTIFFModelDecoder now has two properties to restrict the acceptance of GeoTIFF files containing tie points without additional scaling information: minimumTiePointCount and maximumResidualTiePointError.

    ImprovementLuciadFusion

    TLcdTFWModelDecoder now supports rotated rasters.

    ImprovementLuciadFusion

    TLcdModelXYWorldBoundsCalculation now computes tighter transformed bounds for complex cases where some boundary points cannot be transformed.

    ImprovementLuciadFusion

    TLcdGeodeticDatum has an extra parameter to support prime meridians which are not equal to the Greenwich meridian.

    ImprovementLuciadFusion

    TLcdRasterModelDescriptor and TLcdMultilevelRasterModelDescriptor now have a boolean elevation property, which specifies whether the rasters in the corresponding models contain elevation data.

    ImprovementLuciadFusion

    TLcdAltitudeFormat, TLcdDistanceFormat, and TLcdSpeedFormat now have a NaNString property, which specifies the string to be used for the NaN value.

    ImprovementLuciadFusion

    Elevation controllers and vertical view classes have been improved to handle negative elevations and unknown elevations in a consistent way.

    ImprovementLuciadFusion

    TLcdETOPOModelDecoder is a new raster model decoder for the ETOPO2, ETOPO2v2, and ETOPO5 data sets.

    ImprovementTerrain Analysis Engine

    The package com.luciad.tea.hypsometry has been added, providing hypsometric functionality like computation and visualization of slope, orientation, and azimuth.

    ImprovementTerrain Analysis Engine

    Unknown, invalid and negative raster values are now handled more consistent. Raster values smaller than -20km or larger than 20km are assumed to be invalid. In those cases, an elevation value of Double.NaN is used. Please refer to the class TLcdElevationUtil for more information.

    ImprovementAviation Standards

    The decoders TLcdDAFIFAerodromeDecoder and TLcdDAFIFHeliportDecoder are now capable of decoding respectively airport and heliport communication records (regular records and remark records). These communication records are modeled by com.luciad.ais.model.service.TLcdFeaturedService and are available as a feature for the associated airport/heliport object (by default, this is TLcdFeaturedAerodrome). The corresponding feature name is ILcdDAFIFAerodromeFeature.AERODROME_COMMUNICATIONS. The communication records are decoded by default by TLcdDAFIFAerodromeDecoder and TLcdDAFIFHeliportDecoder. To prevent this, one can exclude ILcdDAFIFAerodromeFeature.AERODROME_COMMUNICATIONS from the list of features through the methods setAirportFeaturesToBeDecoded() and setHeliportFeaturesToBeDecoded() in respectively TLcdDAFIFAerodromeDecoder and TLcdDAFIFHeliportDecoder.

    The supported features for the communication object itself are listed in com.luciad.format.dafif.model.communication.ILcdDAFIFCommunicationFeature. By default, all these features are decoded by TLcdDAFIFAerodromeDecoder and TLcdDAFIFHeliportDecoder. To restrict this list, one can use the new method setCommunicationFeaturesToBeDecoded() in TLcdDAFIFAerodromeDecoder and TLcdDAFIFHeliportDecoder. Finally, the classes TLcdDAFIFAerodromeModelDescriptor and TLcdDAFIFHeliportModelDescriptor have two extra methods, setCommunicationDescriptor() and getCommunicationDescriptor(), that allow to set/retrieve a featured descriptor for the communication object.

    ImprovementAviation Standards

    The class TLcdAIXMDefaultLayerFactory has been extended with a protected method createGXYLayer(), which by default returns an instance of TLcdGXYLayer. This method is used to create a layer instance for each model.

    ImprovementAviation Standards

    The class TLcdARINCDefaultLayerFactory has been extended with a protected method createGXYLayer(), which by default returns an instance of TLcdGXYLayer. This method is used to create a layer instance for each model.

    ImprovementAviation Standards

    New ILcdARINCHandler implementations have been added to com.luciad.format.arinc.decoder to decode airport/heliport/enroute communications: TLcdARINCAirportCommunicationHandler, TLcdARINCHeliportCommunicationHandler and TLcdARINCEnrouteCommunicationHandler. All the handlers make use of the general service domain object in AIS (see com.luciad.ais.model.service) to model the communication objects. Decoded models have as model descriptor respectively an instance of TLcdARINCAirportCommunicationModelDescriptor, TLcdARINCHeliportCommunicationModelDescriptor and TLcdARINCEnrouteCommunicationModelDescriptor. The interface ILcdARINCCommunicationFeature represents general features of an ARINC communication object; ILcdARINCAerodromeCommunicationFeature and ILcdARINCEnrouteCommunicationFeature extend this interface to add more specific features for airports/heliports and enroutes.

    ImprovementAviation Standards

    A new ILcdAIXMHandler implementation has been added com.luciad.format.aixm.decoder to decode procedures (SID, STAR, IAP): TLcdAIXMProcedureHandler. The package com.luciad.format.aixm.model.procedure contains classes and interfaces for all procedure related aspects within AIXM.

    ImprovementAviation Standards

    TLcdDAFIFLayerConfiguration has been extended with new properties to set the icon size for all icon-based symbols.

    ImprovementAviation Standards

    TLcdARINCLayerConfiguration has been extended with new properties to set the icon size for all icon-based symbols.

    ImprovementAviation Standards

    TLcdAIXMLayerConfiguration has been extended with new properties to set the icon size for all icon-based symbols.

    ImprovementAviation Standards

    The class com.luciad.ais.symbology.icao.TLcdICAODefaultSymbolProvider has been extended with the methods setIconSize(int) and getIconSize(), which allow to change the icon size. The default value is still the same, namely 16. Furthermore, image icons are now lazy loaded instead of precomputed as in the past. Image icons that are never requested will therefore not be cached in memory anymore.

    ImprovementAviation Standards

    A new domain object is added to AIS to represent service objects (e.g. an Air Traffic Control service). The new package com.luciad.ais.model.service contains several interfaces and classes that can be used to model services. The AIS domain object factory com.luciad.ais.model.ALcdAISObjectFactory is extended with two factory methods to create service objects. Please refer to the AIS Developer's Guide and the reference guide for more details.

    ImprovementDefense Standards

    TLcdNITFModelDecoder now provides methods that can be overridden in order to modify the decoding of model references and raster bounds based on the NITF fields.

    ImprovementDefense Standards

    Added support for long floating point values in all bounding rectangle tables an LAT tables.

    ImprovementDefense Standards

    The VPF model decoder now supports databases that do not have a variable-length index file. If missing, the decoder will build an index in memory on-the-fly.

    Bug fixLuciadFusion

    TLcdGXYLayer no longer paints all objects of a bounded model when the edge of the projection is visible in the view or the view clip.

    Bug fixLuciadFusion

    TLcdSVGUnstyledXYShapeFactory did no longer allow to set the text on a text object.

    Bug fixLuciadFusion

    The GML3 VectorType is now properly supported.

    Bug fixLuciadFusion

    TLcdGXYZoomController: undo on the zoom controller did not respect the change in world/view origin. Therefore undoing a zoom operation restored the map to the correct scale, but not necessarily at the correct location.

    Bug fixLuciadFusion

    Fix in the encoding of the SLD FeatureTypeStyles. The default values of the scale denominators of the TLcdSLDRule objects are not encoded anymore.

    Bug fixLuciadFusion

    The license server now correctly handles empty properties in license files.

    Bug fixLuciadFusion

    TLcdTransverseMercator.world2lonlatOnEllipsoidSFCT no longer returns NaN in its results for some points near the edge of the projection.

    Bug fixLuciadFusion

    TLcdGnomonic.boundaryLats now returns correct results for all longitudes.

    Bug fixLuciadFusion

    TLcdEckertVI.world2lonlatOnEllipsoidSFCT no longer returns NaN in its results for some points near the edge of the projection.

    Bug fixLuciadFusion

    TLcdGnomonic.world2lonlatOnEllipsoidSFCT no longer returns NaN in its results for some points near the edge of the projection.

    Bug fixLuciadFusion

    TLcdVerticalPerspective.world2lonlatOnEllipsoidSFCT no longer returns NaN in its results for some points near the edge of the projection.

    Bug fixLuciadFusion

    TLcdStereographic.world2lonlatOnEllipsoidSFCT no longer returns NaN in its results for some points near the edge of the projection.

    Bug fixLuciadFusion

    TLcdOrthographic.world2lonlatOnEllipsoidSFCT no longer returns NaN in its results for some points near the edge of the projection.

    Bug fixLuciadFusion

    The raster tile decoders no longer use NIO by default, in order to avoid unexpected resource and locking problems.

    Bug fixAdvanced Raster Services

    TLcdGeoSPOTModelDecoder now correctly handles "SENSOR_OFFSET" keys in .RSC files.

    Bug fixAviation Standards

    The airspace decoders TLcdDAFIFAirspaceDecoder and TLcdDAFIFSpecialUseAirspaceDecoder did not correctly handle altitude values that were defined by 6 instead of 5 characters in a data record. In that case, the last character was skipped.

    Bug fixAviation Standards

    ILcdDAFIFMilitaryTrainingRoutePointFeature and ILcdDAFIFRefuelingTrackFeature contain several new features to represent altitude values. These new features supersede all previously existing altitude features for which the unit of measure was specified as a TLcdDistanceUnit. The new features have the same names as the originals, but use an additional "_MEASURE" suffix. The value of these new features is of type ILcdISO19103Measure, which provides both the altitude value and an appropriate unit of measure (a TLcdAltitudeUnit).

    Bug fixAviation Standards

    TLcdDAFIFMilitaryTrainingRouteDecoder and TLcdDAFIFRefuelingTrackDecoder now always fill in the altitude unit features of the decoded domain objects. Previously, altitudes expressed as Flight Levels would result in the altitude unit features being null.

    Bug fixAviation Standards

    The implementations of ILcdDefaultDisplayNameSettable.getDefaultDisplayName() in com.luciad.ais.model.* did not check whether the feature at the default display name index was set.

    Bug fixAviation Standards

    TLcdDAFIFLoader could not handle source paths that contained the prefix "file:".

    Bug fixDefense Standards

    The TILEREF coverage is now properly decoded.

    Bug fixDefense Standards

    A bug, causing a NullPointerException during the decoding of untiled feature classes, is fixed.

    Bug fixDefense Standards

    TLcdNITFModelDecoder now correctly decodes relative positioning of attached images.

    Bug fixDefense Symbology

    The label positions for some tactical point symbols in MIL-STD 2525b and APP-6A did not take the offset (if defined) into account.

    Bug fixDefense Symbology

    The icons for the MIL-STD 2525b/APP-6A symbols 'Antitank Obstacles: Tetrahedrons, Dragons Teeth, and Other Similar Obstacles' (MIL-STD 2525b: 2.X.3.1.3.3.1/2/3, G*M*OAOF--****X/G*M*OAOM--****X/G*M*OAOP--****X; APP-6A: 2.X.2.2.1.3.3, G*C*BOATD-*****), 'Nuclear Detination' (MIL-STD 2525b: 2.X.3.4.2, G*M*NZ----****X; APP-6A: 2.X.2.2.4.3, G*C*BWE---*****) and 'Biological/Chemical Release Event' (MIL-STD 2525b: 2.X.3.4.7.1/2, G*M*NEB---****X/G*M*NEC---****X; APP-6A: 2.X.2.2.4.10, G*C*BWK---*****) were not correct and have been fixed.

    Bug fixDefense Symbology

    The rendering of the Supply Route Symbols in MIL-STD 2525b (2.X.5.2.2.1/2/3/4/5) and APP-6A (2.X.2.4.2.2.1/2/3/4/5) has been significantly improved.

    Bug fixDefense Symbology

    Fixed a bug in TLcdAPP6AObjectCustomizer and TLcdMS2525bObjectCustomizer which sometimes caused the removal of a specified echelon when setting an object.

    Upgrade considerationLuciadFusion

    The com.luciad.format.xml and com.luciad.format.xml.schema packages have been refactored signifantly, influencing also some other packages making use of the XML framework (GML3, SLD, ...):
    • The interface ILcdXMLElementAdapter has been extended with extra methods for visiting an XML element; an XML element can now be inspected by passing an ILcdXMLElementVisitor to the adapter, which will call the visitor for each attribute/content/child element of the XML element being visited.
    • The abstract classes ALcdXMLElementAdapter and ALcdXMLTypedElementAdapter have been removed. They have been replaced by 4 new classes:
      • ALcdXMLIndexBasedElementAdapter
      • ALcdXMLTypedIndexBasedElementAdapter
      • ALcdXMLVisitorBasedElementAdapter
      • ALcdXMLTypedVisitorBasedElementAdapter
      The first two adapters replace the old adapters; extensions of these classes should override the index-based methods (getXXX(index) and getXXXCount()); the visitXXX() methods of these adapters delegate to the index-based methods. The other two adapters work in the opposite direction: extensions of these classes should override the visitor-based methods, and the index-based methods of these adapters delegate to the visitor-based ones. All existing adapter implementations should rename their super class from ALcdXML(Typed)ElementAdapter to ALcdXML(Typed)IndexBasedElementAdapter. New implementations of ILcdXMLElementAdapter should preferably extend one of the two visitor-based adapter classes, since these are easier to implement, less error-prone and more efficient. All existing adapters, available in the LuciadMap API, have beed adjusted to these changes.
    • New editable interfaces have been added for name and object stacks, ILcdXMLEditableNameStack and ILcdXMLEditableObjectStack. The default implementations, TLcdXMLNameStack and TLcdXMLObjectStack, have been updated to implement these interfaces.
    • A default implementation of ILcdXMLDocumentContext, TLcdXMLDocumentContext, has been made available in the API. Interface and implementation have additional startElement() and endElement() methods to control the XML stack depth.
    • A new Exception class has been introduced, TLcdXMLInterruptedException, which can be used to interrupt a running XML call.
    • The method signatures of several classes have been harmonized:
      • ILcdXMLElementAdapterAdapter.getAdapterForObject
      • ILcdXMLElementNameProvider.getElementNameForObject
      • ILcdXMLElementAdapter.getName
      They now all take as arguments a name and object stack, pointing to the parent XML name/object, and an additional name and object, identifying the XML name/object to be inspected/handled.
    • The order in which element name provider and element adapter provider are called by the XML encoder has been changed. The element name provider is no longer called directly by the encoder; all XML element names are retrieved now using the ILcdXMLElementAdapter.getName() method, even that of the root object. This implies that element adapter providers should be able to return element adapters for objects, without knowing the exact XML name. The setElementNameProvider() and getElementNameProvider() methods of the TLcdXMLEncoder class have been deprecated.
    • The ILcdXMLElementNameProvider.getElementNameForObject() method now has an additional TLcdXMLName argument, indicating the XML type to which the returned element name should belong.
    • XML element adapter libraries have been removed from the API. Composite adapter providers should now be constructed using the new TLcdXMLCompositeElementAdapterProvider class. Basic adapter providers for GML3, SLD, and so on, can be registered with a composite adapter provider, to create one large element adapter provider.

    Upgrade considerationLuciadFusion

    The method createColorModel of TLcdSLDSymbolizerPainterfactory has been removed as the color model can now be set in the implementation of ILcdSLDRasterPainterConfigurator. ILcdSLDRasterPainterConfigurator is a new interface that configures a raster painter for a given object so that a style defined in a TLcdSLDRasterSymbolizer is applied when rendering the object.

    Upgrade considerationTerrain Analysis Engine

    All classes have been improved to handle negative elevations and unknown elevations in a consistent way. Unknown elevations are now returned as Double.NaN, for the sake of the efficiency and simplicity of any code that processes elevations.

    Upgrade considerationAviation Standards

    A new interface ILcdEditableAirspaceAssociation has been introduced in the package com.luciad.ais.model.airspace, which defines the operations to edit the attributes and relationships of an airspace association. The class TLcdAirspaceAssociation now also implements this interface, next to ILcdAirspaceAssociation. The general domain object factory class com.luciad.ais.model.ALcdAISObjectFactory has been extended with a factory method createEditableAirspaceAssociation() to create objects of the type ILcdEditableAirspaceAssociation.

    Upgrade considerationDefense Symbology

    The class TLcdEditableAPP6AObject in the APP-6A API previously accepted symbol codes that represented directories, because they are defined in the APP-6A specification. These codes are now listed as invalid, because they do not represent a real symbol and cannot be drawn on map: when such a code is now set on a TLcdEditableAPP6AObject, an IllegalArgumentException will be thrown, as this was the default behavior for other invalid codes.

    6.1

    6.1.19

    ImprovementLuciadFusion

    An ILcdInputStreamFactory can now be configured on the TLcdXMLSchemaProvider.

    6.1.18

    ImprovementDefense Standards

    The protected fields of TLcdVPFFeatureClass are removed from the API, as they are unusable (the class cannot be extended).

    Bug fixLuciadFusion

    When the XML decoder encounters a valid XML element with no element reader associated, the default element reader is not invoked anymore. This solves some unexpected ClassCastException.

    Bug fixDefense Standards

    Feature classes containing primitives of type Connected Node are now supported properly (these feature classes were not always shown in the VPF tree).

    Bug fixDefense Standards

    An NullPointerException that was thrown in absence of certain VPF tables, is no longer thrown.

    6.1.17

    ImprovementLuciadFusion

    The GML3 element reader and object factory libraries no longer contain a default element reader and default object factory for decoding of unknown parts of XML as generic ILcdXMLElement objects (unknown parts are ignored now). Only for child elements of gml:AbstractFeature elements (typically the (geometric) properties of that element), a default reader and factory are available.

    Bug fixLuciadFusion

    The GML model and schema encoders used by the WFS now properly respect the feature type name specified in ILcdWFSFeatureType.

    Bug fixAviation Standards

    TLcdRefuelingTrackModelDescriptor no longer returns the same feature index for the RECEIVER_CHANNEL and TANKER_CHANNEL attributes defined in ILcdDAFIFRefuelingTrackFeature.

    Bug fixMaritime Standards

    Performance of selection has been improved signifantly for multileveled ECDIS models. Note that this optimization requires the use of the same TLcdS52GXYPainterProvider class for all layers in a catalogue layerlist. Please refer to the EcdisLayerFactory sample class for an example of how to do this.

    Bug fixMaritime Standards

    Selection visibility on Ecdis layers is improved; selected point, line and area objects are now outlined in a clearly distinguisable color.

    6.1.16

    Bug fixAviation Standards

    TLcdDAFIFMilitaryTrainingRouteDecoder no longer duplicates the ENROUTE_ALTITUDE_2_UNIT feature, and correctly reads the ENROUTE_ALTITUDE_2 value instead.

    6.1.15

    ImprovementLuciadFusion

    The WMS server developer guide has been extended with extra information about offering support for GetFeatureInfo requests. It now also includes an example of a ILcdWMSFeatureInfoRequestEncoder implementation.

    ImprovementDefense Symbology

    The classes TLcdEditableAPP6AObject, TLcdEditableMS2525bObject, TLcdDefaultAPP6AStyle and TLcdDefaultMS2525bStyle are now properly serializable.

    Bug fixAviation Standards

    The properties TLcdAIXMLayerConfiguration.CFG_GEOBORDER_ICONSTYLE_COLOR and TLcdAIXMLayerConfiguration.CFG_GEOBORDER_ICONSTYLE_SELECTIONCOLOR were not used in the past. This has been fixed.

    6.1.14

    ImprovementLuciadFusion

    The standard raster painters now have a property to change the contrast of rasters that are painted, by means of gamma correction.

    ImprovementLuciadFusion

    TLcdJetIndexColorModelFactory now also supports negative color indexes, which can be useful for creating hypsometric color models.

    Bug fixLuciadFusion

    TLcdJetIndexColorModelFactory no longer automatically extends the number of colors to a minimum of 256 colors, in order to avoid incompatibilities when creating BufferedImage instances.

    Bug fixLuciadFusion

    TLcdDMEDModelDecoder and TLcdDTEDDirectoryModelDecoder now (again) handle the minimum DTED level correctly.

    Bug fixLuciadFusion

    The contains2D method TLcdCartesian incorrectly handled some special cases (horizontal, vertical line segments).

    Bug fixLuciadFusion

    The parameters standard parallel, central meridian and azimuth were not stored correctly in the properties for oblique Mercator projections when these parameters were passed in the constructor of TLcdObliqueMercator.

    Bug fixLuciadFusion

    TLcdSymbol drew circles which were one pixel too big.

    Bug fixAviation Standards

    The icon used by com.luciad.ais.symbology.icao.TLcdICAODefaultSymbolProvider to represent a VORTAC object (see enhancement 2607) was corrupted in all previous 6.1 releases. This has been fixed.

    Bug fixDefense Standards

    The Java class returned by TLcdVPFModelDescriptor.getFeatureClass() now corresponds to the values that are returned in the ILcdFeatured VPF objects.

    Bug fixDefense Symbology

    TLcdEditableMS2525bObject and TLcdEditableAPP6AObject now allow to set custom ILcd2DEditablePointList implementations through the method set2DEditablePointList(ILcd2DEditablePointList). This generated a ClassCastException in the past. Note that custom implementations should also implement ILcdEditableRestrictedLengthPointList, as described in the documentation.

    Bug fixDefense Symbology

    A bug has been fixed in MIL-STD 2525b and APP-6A API which caused an incorrect rendering of the Joker and Faker affiliation frames for icon-based symbols. The geometry of these frames was based on the Hostile affiliation frame while it should be based on the Friendly affiliation frame according to the specification.

    Bug fixDefense Symbology

    Fixed a bug in TLcdAPP6AObjectCustomizer and TLcdMS2525bObjectCustomizer which sometimes caused an IllegalArgumentException when echelons were used in an 'Installation' symbol.

    6.1.13

    ImprovementLuciadFusion

    The GML3 decoder and encoder now support URI and URL types.

    ImprovementLuciadFusion

    XML schemas are now encoded with the elementFormDefault="qualified" attribute (some XML files did not validate against the schema, due to this missing attribute).

    ImprovementLuciadFusion

    The order in which the elements of a GML3 model are encoded, has been changed: geometric properties are now decoded at the end of the element, instead of at the beginning. The generated XML schema has been modified accordingly, and is further simplified.

    Bug fixLuciadFusion

    TLcdSLDSymbolizerPainterFactory did not support complex polygons correctly in the fill painter provider. As a result the holes in a complex polygon were filled when a fill style was applied in a polygon symbolizer.

    6.1.12

    ImprovementLuciadFusion

    LMAP-1440
    An interface ILcdWFSServiceMetaData has been introduced in the WFS package. By creating an ILcdWFSServiceMetaData in the command dispatcher factory, WFS users can customize the <Service> section of the WFS capabilities document.

    ImprovementLuciadFusion

    The WCS server now performs proper escaping of all user-specifiable values that appear in the GetCapabilities and DescribeCoverage responses.

    ImprovementLuciadFusion

    The WFS now performs proper escaping of all user-specifiable values that appear in the GetCapabilities response.

    Bug fixLuciadFusion

    TLcdLonLatBorderGridPainter now properly paints a border if the labels have been switched off.

    6.1.11

    Bug fixLuciadFusion

    The GML3 model encoder now handles models with an empty display name correctly (an IndexOutOfBoundsException was thrown before).

    6.1.10

    Bug fixLuciadFusion

    TLcdUtmMgrsUtil is refactored to:
    • return correct results when transforming LonLat to UTM MGRS when the resulting Y value was a multiple of 100K.
    • return correct results when transforming UTM MGRS to LonLat when the Y value was a multiple of 100K.
    • take into account the southern hemisphere northing offset
    • return correct results when transforming LonLat to UTM MGRS when the point was at the edge of 2 zones.

    Bug fixLuciadFusion

    The UTM grid now takes into account that the zones 31 through 37 are not uniform on the northern hemisphere.

    Upgrade considerationLuciadFusion

    TLcdUTMZonePainter now only paints one hemisphere of a zone. This is due to the fact that the reference for the northern hemisphere and for the southern hemisphere within a zone are different.

    6.1.09

    Bug fixMaritime Standards

    Sounding depths less than or equal to -10m (10m above sea level) are now supported (this generated a NullPointerException in previous version).

    Bug fixMaritime Standards

    S-52 colors now render correctly when different symbology instances are used within the same JVM. The static method TLcdS52Symbol.setColorProvider() method has been deprecated.

    6.1.08

    Bug fixLuciadFusion

    TLcdXMLEncoder now also escapes attribute values (before, only content was escaped).

    6.1.06

    ImprovementLuciadFusion

    The following methods have been introduced in com.luciad.ogc.sld.xml.TLcdSLDFeatureTypeStyleEncoder10:
    • setPrefixMap(ILcdPrefixMap), getPrefixMap(): allows to control the mapping between the fully qualified namespaces and their corresponding prefixes in the resulting XML document.
    • setDefaultNamespace(String), getDefaultNamespace(): allows to set the default namespace in the resulting XML document. This is the namespace for which no prefix will be used.

    ImprovementLuciadFusion

    The following methods have been introduced in com.luciad.wms.sld.xml.TLcdSLDStyledLayerDescriptorEncoder10:
    • setPrefixMap(ILcdPrefixMap), getPrefixMap(): allows to control the mapping between the fully qualified namespaces and their corresponding prefixes in the resulting XML document.
    • setDefaultNamespace(String), getDefaultNamespace(): allows to set the default namespace in the resulting XML document. This is the namespace for which no prefix will be used.

    ImprovementLuciadFusion

    Implementations of ILcdGML3AbstractFeature now return a shallow copy in their clone() implementation, instead of returning null.

    ImprovementAviation Standards

    The default configuration properties in TLcdAIXMLayerConfiguration are now fully documented.

    ImprovementAviation Standards

    The default configuration properties in TLcdARINCLayerConfiguration are now fully documented.

    Bug fixLuciadFusion

    The TLcdSVGModelEncoder can now encode non-ASCII characters correctly. This allows it to correctly encode characters such as the degree character.

    Bug fixLuciadFusion

    The EPSG resources are updated to EPSG database v6.11. To make use of this change update the jar lcd_epsg_resources.jar in your classpath.

    Bug fixLuciadFusion

    TLcdGeodeticReference now has a WGS 84 geodetic datum when the parameterless constructor is used.

    Bug fixLuciadFusion

    TLcdGXYPointListPainter now takes into account the mode of the painter when using the paint cache. Before, this could lead to incorrect results when painting the same object in the same layer twice with point list painters with different point list painter modes, POLYLINE and POLYGON for example.

    Bug fixLuciadFusion

    TLcdTFWRasterModelDecoder now positions decoded rasters properly shifted by half a pixel in both ordinates.

    Bug fixLuciadFusion

    TLcdPNMImageDecoder now avoids accidentally skipping bytes from URL input streams.

    Bug fixLuciadFusion

    TLcdBILTileDecoder now avoids accidentally skipping bytes from URL input streams.

    Bug fixDefense Standards

    Implementations of ILcdVPFFeature now return a correct attribute count. The getAttributeName(int aIndex) method now returns the correct name (it used to return the name of attribute[aIndex - 1]).

    Bug fixDefense Standards

    TLcdUSRPModelDecoder now correctly decodes TRANSH01.THF files pointing to multiple datasets.

    Bug fixDefense Standards

    TLcdNITFUncompressedImageDecoder now avoids accidentally skipping bytes from URL input streams.

    Bug fixDefense Standards

    TLcdNITFModelDecoder now avoids accidentally skipping bytes from URL input streams.

    Bug fixDefense Standards

    TLcdNITFModelDecoder now correctly uses the input stream factory for decoding the contained images.

    Bug fixDefense Standards

    TLcdNITFModelDecoder now supports decoding JPEG images from URLs.

    6.1.04

    Bug fixLuciadFusion

    Several painters no longer supported snapping when creating a new object. These painters now also accept snap targets when the objects they are editing are in an 'initial' state:
    • TLcdGXYBoundsPainter: when the bounds has width and height 0,
    • TLcdGXYArcPainter: when the A and B of the ellipse the arc is part of is 0,
    • TLcdGXYArcBandPainter: when the minimum and maximum radius of the arcband are 0,
    • TLcdGXYEllipsePainter: when the A and B of the ellipse are 0.

    Bug fixLuciadFusion

    TLcdUndoManager: Locks are now released before notifying listeners of change so these listeners can access the manager from another thread if necessary.

    6.1.01

    ImprovementLuciadFusion

    Magnetic north maps can now be loaded using an ILcdInputStreamFactory object. The input stream factory can be set on TLcdWMMModelDecoder and TLcdIGRFModelDecoder.

    ImprovementAviation Standards

    Support for the following geodetic datum codes has been added: ROM, BRN, DGI, IGL, DLX PRD and RNB. All geodetic datum codes defined by the AIXM 3.3 specification are now supported.

    Bug fixLuciadFusion

    A bug in TLcdXMLTypedElementAdapterProvider, causing an invalid adapter to be returned for some objects, was fixed. Data, decoded with the TLcdGML3ModelDecoder, can now be encoded again with the TLcdGML3ModelEncoder.

    Bug fixLuciadFusion

    TLcdColorMapCustomizer now correctly restores the colors when toggling from gradient to non-gradient mode and back.

    Bug fixLuciadFusion

    Use of layer codecs no longer cause a HeadLessException in a headless environment.

    Bug fixLuciadFusion

    TLcdSVGModelDecoder now correctly reads point coordinates for lines in scientific notation.

    Bug fixAviation Standards

    TLcdDAFIFLonLatParser did not correctly handle longitudes or latitudes that contained a single '/' character in the part which represent the 100th of a second, which is possible according to the DAFIF specification. In that case, the coordinates where moved to N00000000, E000000000.

    6.1

    ImprovementLuciadFusion

    The TLcdGML3ModelDecoder now automatically upgrades gml2:fid attributes to gml3:id attributes. The ILcdGML3AbstractGML.getId() method now returns the gml2:fid attribute value for GML2 datasets.

    ImprovementLuciadFusion

    TLcdGXYBufferPainter and TLcdGXYLonLatHeightBufferPainter have a width formatter to allow formatting of the width as a String when changing the width.

    ImprovementLuciadFusion

    TLcdGXYArcBandPainter has 4 formatters to control label display when editing the arc band: minRadiusFormat, maxRadiusFormat, centerPointFormat, anglesFormat.

    ImprovementLuciadFusion

    The package com.luciad.ogc.filter was extended. It now contains an API and implementation for decoding, encoding, evaluating and representation of OGC filters. The API is based on the OGC 02-059 and 04-095 Filter Encoding Implementation Specification, version 1.0 and 1.1. This specification describes an XML encoding of a system neutral representation of a query predicate. OGC filters are constructs used to constrain the property values of an object type for the purpose of identifying a subset of object instances. The package com.luciad.ogc.filter contains now the following subpackages:
    • com.luciad.ogc.filter.model: contains the domain model to represent OGC filters and expressions
    • com.luciad.ogc.filter.model.capabilities: contains the domain model to represent OGC filter capabilities
    • com.luciad.ogc.filter.xml: contains XML decoding and encoding facilities for OGC filters and filter capabilities. These facilities are built upon the general LuciadMap XML framework.
    • com.luciad.ogc.filter.xml.capabilities: contains XML decoding and encoding facilities for OGC filter capabilities. These facilities are built upon the general LuciadMap XML framework.
    • com.luciad.ogc.filter.evaluator: contains the implementation of the OGC Filter Evaluator. The OGC Filter Evaluator allows you to build an ILcdFilter that can be used for accepting or rejecting a given object or to build an ILcdPropertyRetriever than can be used for computing a property of a given object
    • com.luciad.ogc.filter.spatial: contains the implementation of the OGC Filter Spatial Evaluator that provides the ability to perform advanced spatial filtering

    ImprovementLuciadFusion

    TLcdGXYArcBandPainter now supports switching the min and max radius when editing either of the radii.

    ImprovementLuciadFusion

    If the shape that will snap implements ILcd3DEditable, the part of the shape that will snap assumes the 3 coordinates of the snap target for all editors that support snapping.

    ImprovementLuciadFusion

    A new sample is available, samples.wms.client.sld.MainApplet, that illustrates the use of an SLD-enabled WMS server at the client side.

    ImprovementLuciadFusion

    TLcdGXYEllipsePainter has support now to snap an end point of the major or minor axis of an ellipse.

    ImprovementLuciadFusion

    Methods have been added to allow snapping to invisible (not painted) snappable points (set/isSnapToInvisiblePoints) for all painters where a point defines the shape, but is not needed to paint the shape. Eg. if the center of a circle is not drawn, you can still snap to the center point if the snapToInvisiblePoints property is set to true.

    ImprovementLuciadFusion

    setModelModelTransformation have been added to all editors that support snapping, to enable snapping to points defined in other georeferences.

    ImprovementLuciadFusion

    All ILcdGXYPainter instances that provide a point as snaptarget now have a property snapIcon.

    ImprovementLuciadFusion

    Methods to paint the axis (set/isDrawAxis and set/isDrawAxisWhenSelected) and the axispoint handles (set/isDrawAxisPoints and set/isDrawAxisPointsWhenSelected) have been added to all painters which handle buffers. Editing by dragging a point or moving the axis is supported only when the point or axis is visible.

    ImprovementLuciadFusion

    Methods to paint the center point (set/isDrawCenter and set/isDrawCenterWhenSelected) have been added to all painters which handle rotational shapes i.e., arcbands, arcs, circles and ellipses. Editing by dragging a point is supported for a point only when it is visible.

    ImprovementLuciadFusion

    TLcdGXYEllipsePainter now has support for creating ILcdEllipse objects with three clicks.

    ImprovementLuciadFusion

    TLcdGXYEllipsePainter has changed the two click creation mechanism for ILcdEllipse objects: the rotation angle is now also adjusted, the major axis end point is set to the mouse position.

    ImprovementLuciadFusion

    TLcdGMLModelDecoder now returns a TLcd2DBoundsIndexedModelList instead of a TLcdModelList.

    ImprovementLuciadFusion

    The SLD-enabled WMS server now supports GetMap requests that use HTTP XML POST instead of HTTP GET. These type of requests are described in the OGC 02-017r1 Web Map Service Implementation Specification, Part 2: XML for Requests using HTTP POST. Note: servers that use the regular ALcdOGCWMSCommandDispatcherFactory and TLcdOGCWMSCommandDispatcher do not support these types of requests, since SLD support is required to handle them.

    ImprovementLuciadFusion

    The WMS server now contains support for OpenGIS Styled Layer Descriptors (SLD), as defined in the OGC 02-070 Styled Layer Descriptor Implementation Specification version 1.0. The following classes and packages are added:
    • com.luciad.wms.server.ALcdOGCSLDWMSCommandDispatcherFactory: this abstract class is an extension of the regular ALcdOGCWMSCommandDispatcherFactory that adds support for Styled Layer Descriptors. This class must be implemented by the user to create an SLD capable WMS server. The class samples.wms.server.OGCWMSCommandDispatcherFactory in the samples illustrates an example implementation.
    • com.luciad.wms.server.TLcdOGCSLDWMSCommandDispatcher: this class is an extension of the regular TLcdOGCWMSCommandDispatcher that adds support for Styled Layer Descriptors. This class must be used to handle WMS requests in an SLD capable WMS server. The class ALcdOGCSLDWMSCommandDispatcherFactory automatically registers an object of TLcdOGCSLDWMSCommandDispatcher on the servlet to handle all incoming requests.
    • com.luciad.wms.server.ALcdSLDWMSGXYLayerFactory: this abstract class is an implementation of ILcdWMSGXYLayerFactory, that is used by the server to create ILcdGXYLayer instances for all ILcdModels, with or without an SLD model. Implementations can be registered on the WMS server by implementing the method ALcdOGCSLDWMSCommandDispatcherFactory.createSLDWMSGXYLayerFactories(). This method replaces the previously used factory method createWMSGXYLayerFactories(), which is now declared final.
    • com.luciad.wms.server.ILcdRemoteOWSModelDecoder, ILcdRemoteOWSModelDecoderFactory, ILcdRemoteOWSModelProvider: these interfaces are used in the WMS server to decode ILcdModel objects based on remote data (typically located on a remote WFS or WCS server). Through the method ALcdOGCSLDWMSCommandDispatcherFactory.createRemoteOWSModelDecoderFactories(), the user can register one or more ILcdRemoteOWSModelDecoderFactory objects on the WMS server. By default, this method returns null, as this is an optional feature according to the SLD specification..
    • com.luciad.wms.sld.model: contains the domain model for Styled Layer Descriptors. This domain model builts upon the Feature Type Style domain model that is available in the package com.luciad.ogc.sld.model.
    • com.luciad.wms.sld.xml: contains an XML decoder and encoder for Styled Layer Descriptors. Both the decoder and encoder respectively built upon the Feature Type Style decoder and encoder that are available in the package com.luciad.ogc.sld.xml.

    To inform a client about the SLD support of the WMS server, TLcdOGCSLDWMSCommandDispacher uses the XML capabilities document that is sent to the client after a GetCapabilities request:
    • for version 1.1.1 and earlier, the XML capabilities document includes the XML element UserDefinedSymbolization, which is defined by the OpenGIS WMS 1.1.1 Capabilities DTD (see http://schemas.opengis.net/wms/1.1.1/WMS_MS_Capabilities.dtd). This element contains some attributes that indicate the SLD support.
    • for version 1.3.0, the OpenGIS WMS 1.3.0 Capabilities XML Schema does not include an SLD related XML element. Therefore, a custom LuciadMap WMS 1.3.0 Capabilities XML Schema is available (see build/wms/resources/schemas/wms/1.3.0/sld_capabilities_1_3_0.xsd), which extends the OpenGIS WMS 1.3.0 Capabilities Schema (see http://schemas.opengis.net/wms/1.3.0/capabilities_1_3_0.xsd). This extension adds the element UserDefinedSymbolization to the default schema, which was present in the OpenGIS WMS 1.1.1 Capabilities DTD.

    ImprovementLuciadFusion

    A new package, com.luciad.ogc.sld, was added. It contains an API and implementation for decoding, encoding and representation of OpenGIS SLD Feature Type Styles. The API is based on the OGC 02-070 Styled Layer Descriptor Implementation Specification, version 1.0. This specification allows user-defined symbolization of feature data, by determining which features or layers are rendered with which colors or symbols. The package com.luciad.ogc.sld contains the following subpackages:
    • com.luciad.ogc.sld.model: contains the domain model to represent Feature Type Styles.
    • com.luciad.ogc.sld.view.gxy: contains the GXY view representation of the Feature Type Style model applied to ILcdModel objects. The classes in this package enable conversion of a Feature Type Style model/ILcdModel combination into ILcdGXYPainter and ILcdGXYLayer instances which can be used in an ILcdGXYView.
    • com.luciad.ogc.sld.xml: contains an XML decoder and encoder for Feature Type Styles. The decoder and encoder are built upon the general LuciadMap XML framework.

    ImprovementLuciadFusion

    com.luciad.util.ILcdChangeListener and com.luciad.util.TLcdChangeEvent were added. They offer general purpose change listener support.

    ImprovementLuciadFusion

    TLcdPrintComponentAction and TLcdComponentPrintable now provide a more basic rasterized printing mode, in addition to the existing layered printing mode. It rasterizes all printed graphics in memory-efficient strips, without printing vector graphics in a separate layer on top.

    ImprovementLuciadFusion

    The WFS has been extended to support most of the WFS 1.1 specification:
    • GetFeature requests support the "resultType" parameter, allowing clients to retrieve the number of features matched by a request without having to retrieve the actual corresponding features.
    • Features can be retrieved in both GML2 and GML3 formats.
    • The OGC Filter 1.1 specification is supported.
    Please refer to the "Upgrade considerations" section for more information on how these changes may affect your application.

    ImprovementLuciadFusion

    Section 5.2.1 "Description of the default configuration format" in the WMS server developer guide has been extended with a description of how to configure the possible output formats for a GetFeatureInfo request.

    ImprovementLuciadFusion

    The class com.luciad.wms.server.viewencoder.TLcdGXYViewPNGEncoder, which is used by the WMS to encode images to PNG, has been updated with support for the native codecLib plugin for ImageIO. This plugin delivers a higher performance than the default JAI PNG encoder, which was used in the past. It also allows to control the compression to be used, which makes it possible to determine a trade-off between compression and speed; in contrast, the default JAI PNG encoder always uses best compression. To adjust the compression, the following two methods have been introduced: setCompressionLevel() and getCompressionLevel(). The codecLib plugin requires the installation of some extra libraries, which are available in the LuciadMap_xxx/lib directory in the LuciadMap WMS distribution. The following libraries are needed:
    • clibwrapper_jiio.jar: JAR file containing core JAI Image I/O class files
    • jai_imageio.jar: the codecLib JNI interfaces
    • the codecLib JNI libraries for your platform. The available platforms are Win32 (native/win32/clib_jiio*.dll), Linux i586 (native/linux/libclib_jiio.so), Linux AMD64 (native/linux64/libclib_jiio.so) and Solaris Sparc V9 (native/solaris_sparc/libclib_jiio.so, native/solaris_sparc/sparcv9+vis/libclib_jiio_vis.so or native/solaris_sparc/sparcv9+vis2/libclib_jiio_vis2.so).
    If one of these libraries is not found, the default PNG encoder in JAI will be used again instead of the ImageIO codecLib plugin.

    ImprovementLuciadFusion

    TLcdXMLSchemaDecoder.decodeSchema(aNamespaceURI, aSourceName) has been deprecated in favor of the method decodeSchema(aSourceName). The namespace is now read from the schema during the decoding.

    ImprovementLuciadFusion

    GML3 domain model objects implementing an ILcdShape interface, now also implement the editable extension, if there is one is available.

    ImprovementLuciadFusion

    LuciadMap now provides the interface ILcdEditableShapeList, which provides methods for adding and removing shapes to/from the shapelist, and notification of shape changes.

    ImprovementLuciadFusion

    ALcdXMLElementReader and ALcdXMLTypedElementReader now provide methods to control whether to trim XML character content or not.

    ImprovementLuciadFusion

    TLcdBILModelDecoder now supports a forced transparent color index.

    ImprovementLuciadFusion

    WCS GetCapabilities responses now also contain keywords for each coverage offering, if there are any defined.

    ImprovementLuciadFusion

    LuciadMap now contains a TLcdGML2ModelEncoder and corresponding adapter library, to encode LuciadMap models into a GML2 compatible XML document, using the same mechanism as the GML 3 model encoder.

    ImprovementLuciadFusion

    The XML decoder/encoder framework now provides better support for anonymous types and global elements. Element readers and adapters for these types and elements can now be registered directly on the corresponding reader/adapter providers (only global types could be registered before).

    ImprovementLuciadFusion

    The zoom controller of all samples now drags a rectangle from the left top to the right bottom, instead of from the center to the outside. This change can easily be reverted by passing 'true' to the 'setDragCentered' method in 'samples.toolBar.ToolBarSW' and 'samples.toolBar.ToolBarAWT'.

    ImprovementAdvanced GIS Engine

    The package com.luciad.ogc.filter.spatial contains classes to model enhanced spatial filtering according to the OGC 02-059 and 04-095 standards.

    ImprovementAviation Standards

    The mechanism that is used by the class com.luciad.ais.shape.TLcdDiscretizedLonLatGeoPath to prevent self-intersecting discretizations can now be controlled by the user of the API: the class has been extended with a protected method acceptCorrection(ILcdGeoPathLeg, int, ILcdPoint, ILcdPoint), which is invoked for each planned data correction. By default, this method returns true in all cases. Please refer to the javadoc of the class and the method for more details.

    ImprovementAviation Standards

    Support has been added for additional local horizontal datums in the method getLocalHorizontalDatum(String) in com.luciad.format.dafif.decoder.ALcdDAFIFDecoder: OEG, VOR, OGB, AFG, CHU, QAT, YAC, ZAN, LIB, LUZ, MIK, MAS, LEH.

    ImprovementAviation Standards

    The performance of the DAFIF data preparator (samples.decoder.dafif.datapreparator.DAFIFDataPreparator or com.luciad.format.dafif.tools.TLcdDAFIFDataPreparatorMain) has been greatly improved. This tool can be used to split large DAFIF files into smaller ones. The division of the DAFIF data is based on the two letter ICAO region found in each record.

    ImprovementAviation Standards

    The class com.luciad.ais.model.airspace.TLcdAirspace has been extended with a method getSegmentIndexForPoint(int), which returns the airspace segment that contains the discretized point at a given index.

    ImprovementAviation Standards

    Layers created with TLcdDAFIFDefaultLayerFactory now use a separate icon for VOR, VOR-DME and VORTAC objects, following the ICAO Annex 4 standard. In the past, the same icon was used for all VOR objects.

    ImprovementAviation Standards

    Layers created with TLcdARINCDefaultLayerFactory now use a separate icon for VOR, VOR-DME and VORTAC objects, following the ICAO Annex 4 standard. In the past, the same icon was used for all VOR objects.

    ImprovementAviation Standards

    Layers created with TLcdAIXMDefaultLayerFactory now use a separate icon for VOR, VOR-DME and VORTAC objects, following the ICAO Annex 4 standard. In the past, the same icon was used for all VOR objects.

    ImprovementAviation Standards

    The class com.luciad.ais.symbology.icao.TLcdICAODefaultSymbolProvider has been extended with a method setNavaidTypeIndex(int), which allows to set the index of a feature that specifies the navaid type; these types are defined in the type safe enumeration class TLcdNavaidType. When the index is specified, this feature is used to make a distinction between a VOR, a VOR-DME and a VORTAC object to provide a separate icon for these types following the ICAO Annex 4 standard. Otherwhise, the same icon is used for all VOR objects, as in the past.

    ImprovementDefense Standards

    TLcdVPFLibrary now returns its coverages in the order they are stored in the VPF database.

    ImprovementDefense Standards

    The VPF model descriptor now contains the sourcename, if the VPF data were loaded from a properties file.

    ImprovementDefense Standards

    With the new sample code, it's possible to customize the behaviour of the tree and layer manager, to pop up messages, to do a fit or to perform other actions, if the current Area of Interest doesn't overlap with the VPF library bounds.

    ImprovementDefense Symbology

    It is now possible in APP-6A and MIL-STD 2525b to render a limited set of arrows (see the list below) with a certain curvedness instead of painting them straight. This is meant to be used for aviation-related arrows, which indicate a certain movement of an aircraft; painting the arrow curved accents this relation. Next to the curved arrows, it is now also possible to render a limited set of areas (see the list below) with rounded corners. This can improve the visibility in some cases and also contributes to a more realistic rendering.

    Currently, the following areas can be painted with rounded corners:
    • Objective area (APP-6A: 2.X.2.1.5.3.5, MIL-STD 2525b: 2.X.2.5.3.5)
    • Strong point (APP-6A: 2.X.2.2.3.5, MIL-STD 2525b: 2.X.3.3.5)
    • Battle position (APP-6A: 2.X.2.1.4.1.2.*, MIL-STD 2525b: 2.X.2.4.3.1 and 2.X.2.4.3.1.1)
    The aviation-related arrows in APP-6A (situated in 2.X.2.1.5.2.1) and MIL-STD 2525b (situated in 2.X.2.5.2.1) can be painted curved.

    To control these new properties, the interfaces com.luciad.symbology.milstd2525b.view.gxy.ILcdMS2525bStyle and com.luciad.symbology.app6a.view.gxy.ILcdAPP6AStyle, and their respective implementations TLcdDefaultMS2525bStyle and TLcdDefaultAPP6AStyle are extended with several new methods:
    • setCornerSmoothness(double), getCornerSmoothness(): this property is used to indicate how much the corners of an area should be rounded. The argument is a number in the interval [0.0, 1.0]. A value of 0.0 indicates no rounding - this is the default value, as it corresponds to the behavior in the past; a value of 1.0 indicates maximum rounding.
    • setArrowCurvedness(double), getArrowCurvedness(): this property is used to control the curvedness of an arrow. The argument is a number in the interval [-1.0, 1.0]. A value of 0.0 indicates no curvedness - this is the default value, as it corresponds to the behavior in the past; a value of -1.0 or 1.0 indicates maximum curvedness, each in an opposite direction perpendicular to the axis of the arrow.

    Bug fixLuciadFusion

    The performance of the TLcdGXYLayerSubsetList class has been improved significantly. Other classes relying on this class (for example classes involving object selection) will also benefit from this improvement.

    Bug fixLuciadFusion

    When a new controller (TLcdGXYNewController) is left active after an object has been created, snapping will work for the first point of subsequent objects. Keep in mind that only objects which have an undefined state (eg. polygon, polyline, buffer) support snapping of the first point.

    Bug fixLuciadFusion

    TLcdBMPImageDecoder has been fixed.

    Bug fixLuciadFusion

    When one point of a selection of multiple points is snapped to a single point, the selection is moved as a whole and only the touched point is snapped.

    Bug fixLuciadFusion

    TLcdGXYArcPainter now has support for creating ILcdArc objects with three or five clicks.

    Bug fixLuciadFusion

    TLcdGXYArcBandPainter has support for modifying angles of arcbands objects.

    Bug fixLuciadFusion

    ALcdBounds.equals( null ) used to throw a NullPointerException instead of returning false.

    Bug fixLuciadFusion

    The methods elementChanged(Object, int) or elementsChanged(Vector, int) in com.luciad.ais.model.TLcdFeatureIndexedAnd2DBoundsIndexedModel did not update any registered indices.

    Bug fixLuciadFusion

    The method canAddElement(Object) in com.luciad.model.TLcdFeatureIndexedAnd2DBoundsIndexedModel throwed a NullPointerException when a unique index was defined on the model.

    Bug fixLuciadFusion

    TLcdGeodetic2Geodetic now supports bounds transformations.

    Bug fixLuciadFusion

    TLcdInputStreamUtil did not take into account reaching the end of the input stream in the methods readFully and skipAll. This could have resulted in infinite loops.

    Bug fixLuciadFusion

    The TLcdNoWarpRasterPainter and related painters now round correctly, avoiding occasional blank lines of pixels between raster tiles.

    Bug fixLuciadFusion

    TLcdMultivaluedRasterPainter now paints ILcdMultivaluedRaster instances, as documented, instead of just TLcdMultivaluedRaster instances.

    Bug fixLuciadFusion

    A race condition in com.luciad.format.xml.TLcdXMLName.getInstance() was fixed. Performance of the equals() method has been improved.

    Bug fixLuciadFusion

    The SHP model encoder did not encode the current day correctly when saving the DBF file.

    Bug fixAviation Standards

    The class com.luciad.format.arinc.decoder.TLcdARINCRunwayHandler didn't reset its internal state when decoding a new model, which caused problems when the same object of this class was used for multiple decoding steps.

    Bug fixAviation Standards

    TLcdARINCDecoder failed to close its input streams if an exception occured while decoding.

    Bug fixAviation Standards

    ALcdDAFIFMultiModelDecoder failed to close its input streams if an exception occured while decoding.

    Bug fixDefense Standards

    Grid referenced datasets are now supported.

    Bug fixDefense Symbology

    The MIL-STD 2525b and APP-6A painter for T-based symbols, L-based symbols and for the 'Final Protective Fire' symbol (2.X.4.2.6) showed some inacurracies while editing a symbol. These problems have been corrected.

    Bug fixInfrastructure Standards

    com.luciad.format.dwg.TLcdDWGModelDecoder now correctly sets the layer of elements of inserted blocks.

    Bug fixInfrastructure Standards

    com.luciad.format.dwg.TLcdDWGModelDecoder now correctly decodes the extrusion of LwPolyline and MLine objects.

    Upgrade considerationLuciadFusion

    The class TLcdGML3ModelEncoder now requires an ILcdXMLEditableSchemaProvider in its constructor, instead of an ILcdXMLSchemaProvider.

    Upgrade considerationLuciadFusion

    The interface com.luciad.format.gml3.model.base.ILcdGML3XLinkSimpleLink has been replaced by the com.luciad.format.xml.xlink.ILcdXMLSimpleLink interface.

    Upgrade considerationLuciadFusion

    ILcdWFSFilteredModelFactory:
    • The signature of createFilteredModel() was changed to include an ILcdWFSGetFeatureConstraints argument. ILcdWFSGetFeatureConstraints contains all parameters that can restrict the result of a GetFeature request, including a filter.
    • Filters are passed in as a TLcdOGCFilter object (contained in the ILcdWFSGetFeatureConstraints object) rather than as a JDOM element. Analogously, getFilterCapabilities() must return a TLcdOGCFilterCapabilities rather than a JDOM element.

    Upgrade considerationLuciadFusion

    ILcdWFSClientModelEncoderFactory:
    • The method createModelSchemaEncoder() has been added. This method shall return an ILcdWFSModelSchemaEncoder, which is responsible for encoding the result of a DescribeFeatureType request. The class TLcdWFSClientModelEncoderFactory can produce encoders for standard GML application schemas.
    • Both createModelSchemaEncoder() and createModelEncoder() have an argument of type ILcdWFSRequestContext, which contains context information about the request currently being handled.

    Upgrade considerationLuciadFusion

    ALcdOGCWFSCommandDispatcherFactory:
    • The registerFilterFactories() has been removed, as it is no longer applicable. Applications that require customized filtering behaviour may override the createFilteredModelFactory() method to return an extension of the new class TLcdWFSFilteredModelFactory. This class provides a hook similar to registerFilterFactories() to allow filtering customization. Please consult the reference documentation for details.
    • The class TLcdWFSClientModelEncoderFactory was made available as the default implementation of ILcdWFSClientModelEncoderFactory. This factory supports GML2 and GML3 output formats, and may be extended by applications that wish to add additional output formats. GML output will not be available unless the model encoder factory advertises it.

    Upgrade considerationLuciadFusion

    ILcdUndoable and TLcdUndoManager have been greatly enhanced, and now offer a full-blown and flexible undo/redo mechanism together with some new classes and interfaces. However, some method signatures of the aforementioned classes had to be changed.

    Upgrade considerationLuciadFusion

    The lcd_gml_resources.jar archive has been removed from the distribution: all OGC schemas used by LuciadMap are now grouped into one JAR file, lcd_ogc_schema_resources.jar.

    Upgrade considerationLuciadFusion

    The ILcdXMLElement and ILcdXMLElementAdapter interfaces are extended with methods to retrieve attribute and contents based on their names. The ILcdXMLEditableElement interface contains some additional methods for editing an XML element. All implementations of these interfaces are adapted accordingly. Classes extending from TLcdXMLElement or ALcdXMLTypedElementReader will not need to be modified - these two classes offer already default implementations for all new methods. Classes implementing the ILcdXMLElementAdapter interface directly might be refactored to extend the new class ALcdXMLElementAdapter. Other classes, implementing directly one or more of the modified interfaces will need to be adapted.

    Upgrade considerationLuciadFusion

    Undo/redo support of TLcdGXYNewController, TLcdGXYZoomController and TLcdGXYPanController has been deprecated and replaced with a new mechanism. Furthermore, these classes no longer implement ILcdUndoable and no longer set themselves to the TLcdUndoManager using a static method, thus avoiding a memory leak. Undo/redo support has been replaced with a new mechanism, using an 'addUndoableListener' method. Undo/redo support for creating new objects is now available in ALcdGXYNewControllerModel instead of in TLcdGXYNewController.

    Upgrade considerationLuciadFusion

    The method TLcdXMLEncoder.encode() is renamed to TLcdXMLEncoder.encodeXML().

    Upgrade considerationAviation Standards

    The method getLocalHorizontalDatum(String) in com.luciad.format.dafif.decoder.ALcdDAFIFDecoder now always throws an IllegalArgumentException when a geodetic datum code is not supported or unknown. In the past, this method returned null for a partial list of unsupported codes and generated an exception for the remaining unsupported codes, which was not consistent. All implementations of ALcdDAFIFDecoder have been updated to properly catch this exception, and add a corresponding message to the error message object (see ALcdDAFIFDecoder.getErrorMessage()).

    Upgrade considerationDefense Standards

    The methods
    • ILcdVPFLabel getPointLabel(ILcdVPFFeature aVPFFeature)
    • ILcdVPFLabel getLineLabel(ILcdVPFFeature aVPFFeature)
    • ILcdVPFLabel getAreaLabel(ILcdVPFFeature aVPFFeature)
    have been removed from the TLcdVPFGeoSymProvider class.

    Upgrade considerationDefense Standards

    The ILcdVPFFACCFeature has been added to the VPF package. This interface provides access to DIGEST FACC data (which is supported by VPF). ILcdVPFFeature now extends from this new interface, and GeoSym has been generalized to work with ILcdVPFFACCFeature instead of ILcdVPFFeature I.e., all objects implementing the FACC interface can be visualized now using GeoSym.

    Upgrade considerationDefense Standards

    The TLcdVPFPointFeature class is no longer available in the API. All properties of VPF domain objects can be accessed via the ILcdVPFFeature, ILcdFeatured and ILcdShape interfaces.

    Upgrade considerationInfrastructure Standards

    com.luciad.format.dgn.TLcdDGNEllipse2D now extends TLcdXYEllipse instead of TLcdXYArc.

    6.0

    6.0.14

    ImprovementLuciadFusion

    TLcdDMEDModelDecoder now handles swapped min/max values of the DMED bounding rectangle.

    ImprovementLuciadFusion

    The DMED/DTED model decoders now handle malformed two's complement negative elevation values more robustly.

    ImprovementLuciadFusion

    The DMED/DTED model decoders now try to create file names that work in more cases on case-sensitive file systems.

    ImprovementAdvanced Raster Services

    TLcdGeoSPOTModelDecoder now decodes files with fixed length records.

    ImprovementAdvanced Raster Services

    TLcdGeoSPOTModelDecoder now decodes rasters with transparent borders.

    ImprovementAdvanced Raster Services

    TLcdGeoSPOTModelDecoder now decodes tiled rasters.

    ImprovementAviation Standards

    The class com.luciad.format.aixm.decoder.TLcdAIXMAirspaceHandler, which is used to decode airspaces, contained a filter that removed all airspaces of type TLcdAirspaceType.PART. This filter has been removed to let the user choose whether these airspaces must be filtered or not. By implementing ILcdAIXMModelFilter, one can create a custom filter for the decoder.

    ImprovementDefense Standards

    TLcdUSRPModelDecoder now decodes USRP legends as properties of TLcdUSRPDatasetModelDescriptor.

    ImprovementDefense Standards

    TLcdUSRPModelDecoder now decodes USRP files containing deviant VDR:NOV fields of length 3.

    Bug fixLuciadFusion

    TLcd2DBoundsIndexedModel has been corrected to be thread-safe in its getBounds() method.

    Bug fixLuciadFusion

    TLcdComponentPrintable has been fixed to handle some complex combinations of transparency and transformations correctly.

    Bug fixLuciadFusion

    TLcdGeoTIFFModelDecoder now correctly computes the raster rotation from a given transformation matrix.

    Bug fixLuciadFusion

    TLcdDMEDModelDecoder now decodes the references specified in DTED cells, provided checkTilesImmediately is set to true.

    Bug fixLuciadFusion

    TLcdRaster no longer throws a NullPointerException due to rounding errors when computing tile coordinates.

    Bug fixLuciadFusion

    TLcdBILModelDecoder now decodes HDR files with fixed length records.

    Bug fixLuciadFusion

    TLcdDatabaseModelDescriptor is now properly serializable.

    Bug fixLuciadFusion

    TLcdRasterPainter and TLcdMultilevelRasterPainter now correctly handle rasters that are displayed in their model reference but that wrap around.

    Bug fixLuciadFusion

    TLcdJetIndexColorModelFactory no longer goes into an infinite loop when a color model is created for which the size is smaller than 1<<bits.

    Bug fixLuciadFusion

    TLcdSHPModelDecoder tried to create a model reference before checking whether the shp file could be read.

    Bug fixAdvanced Raster Services

    TLcdGeoSPOTModelDecoder now correctly handles UTM references on the Southern hemisphere.

    Bug fixTerrain Analysis Engine

    The line-of-sight computation was not complete when the raster was to be filled and the start angle was negative. Although all computations were performed, they were not all included in the resulting raster.

    Bug fixTerrain Analysis Engine

    The line-of-sight computation for a point and its environment sometimes produced a ArrayIndexOutOfBoundsException, due to a rounding error computing the number of angular steps.

    Bug fixTerrain Analysis Engine

    The bounds of the result of a line-of-sight computation between a point and its surroundings were incorrect when the outer arc of the area to compute was such that its bounds did not include the center, e.g. start angle equal to 35, arc angle equal to 45.

    Bug fixAviation Standards

    A bug has been fixed in TLcdARINCProcedureHandler which caused a wrong altitude setting for an ILcdProcedureLeg, when a procedure record contained the value 'V' for the altitude description.

    Bug fixAviation Standards

    A problem has been fixed in com.luciad.format.aixm.decoder.TLcdAIXMAirspaceHandler which sometimes caused an invalid airspace reference inside ILcdAirspaceAssociation objects, in the case the source data contained multiple level airspace associations.

    Bug fixAviation Standards

    An additional issue has been fixed in the class com.luciad.ais.shape.TLcdDiscretizedLonLatGeoPath, which sometimes resulted in the lack of a point on the boundaries of a discretized airspace segment of type SUB_POINT_LIST (e.g. a geoborder).

    Bug fixAviation Standards

    All ILcdAIXMHandler implementations now use WGE (WGS 1984) as default datum code instead, as defined in the AIXM 3.3 specification. In the past, domain objects without datum code were ignored and an error message was printed.

    Bug fixDefense Standards

    Latin-1 text fields are now supported (the VPF model decoder sometimes crashed during the decoding of datasets containing Latin-1 text fields).

    Bug fixDefense Standards

    TLcdUSRPModelDecoder now accepts "01.THF" extensions, instead of only full "TRANSH01.THF" file names.

    Bug fixMaritime Standards

    A bug in TLcdS52ComplexStroke, causing the stroke to use the fallback stroke on line segments were the pattern fits perfectly, is fixed.

    6.0.13

    ImprovementLuciadFusion

    TLcdGMLModelEncoder now has a refined canSave() and canExport() method, inspecting the model descriptor and the model's elements (both methods always returned true before).

    Bug fixDefense Standards

    The toString() method of VPF objects no longer throw an ArrayIndexOutOfBoundsException when no ILcdFeatured properties are available.

    6.0.12

    Bug fixAviation Standards

    Carriage returns and/or newlines in feature values of domain objects were ignored by the decoder.

    Bug fixMaritime Standards

    Transparency of S-52 symbols is now taken into account.

    Bug fixMaritime Standards

    A bug in TLcdS52ConditionalSymbology, causing an ArrayIndexOutOfBoundsException to be thrown sometimes when the style of a Light object is retrieved, is fixed.

    Bug fixMaritime Standards

    TLcdS52ConditionalSymbology no longer throws a NullPointerException when a style of a Light object is retrieved, that does not contain a Category of Light attribute.

    6.0.11

    Bug fixDatabase Connectors

    The model decoder now properly closes all its JDBC statements.

    6.0.10

    ImprovementLuciadFusion

    GML3 features implementing the ILcdShape interface now return a valid focus point, calculated based on the bounds of their geometric properties (a null value was returned before).

    6.0.09

    ImprovementLuciadFusion

    TLcdXMLSchemaDecoder now supports elements that have no explicit type definition (i.e., extending the xsd:anyType type).

    ImprovementAviation Standards

    A new method getSubPointlist() has been introduced in the class com.luciad.ais.model.airspace.TLcdSubPointlistAirspaceSegment, to allow the user to retrieve the associated ILcdPointList.

    Bug fixLuciadFusion

    TLcdComponentPrintable now works around Sun bug #4138921, which may cause an IllegalArgumentException when printing empty labels in JDK 1.4.2 or older.

    Bug fixLuciadFusion

    TLcdComponentPrintable now avoids disposing or finalizing Graphics instances too soon.

    Bug fixLuciadFusion

    TLcdDTEDModelDecoder now throws an IOException when a given DTED file has an invalid number of coordinates in an accuracy subregion outline.

    Bug fixDefense Symbology

    The classes TLcdAPP6AObjectIconProvider and TLcdMS2525bObjectIconProvider didn't update cached icons that used the default style, when this style was changed.

    Bug fixDefense Symbology

    The direction of movement indicator for MIL-STD 2525b and APP-6A icons of type 'Ground track' (part of the 'Warfighting' and 'Signals intelligence' domains) was not painted correctly, according to the MIL-STD 2525b/APP-6A standards. These indicators must start from the bottom of the frame of an icon, instead of from the center.

    6.0.08

    ImprovementLuciadFusion

    A memory leak has been closed in the handling of a feature request that contained a filter.

    ImprovementLuciadFusion

    TLcdXMLSchemaDecoder now supports nested attribute and element groups (groups, embedded in other groups were ignored before).

    ImprovementLuciadFusion

    TLcdGML3ModelDecoder and TLcdGML3ModelEncoder now have methods to retrieve reader, adapter, factory and name providers.

    ImprovementLuciadFusion

    TLcdXMLSchemaEncoder now supports the encoding of imported schemas, using the import tag.

    Bug fixWeather & Environment Standards

    com.luciad.format.grib.TLcdGRIBModelDescriptor now properly stores the level at which the parameter is defined.

    Bug fixWeather & Environment Standards

    com.luciad.format.grib.gxy.TLcdGRIBWindIcon has been corrected to draw the wind barbs on the left side of the arrow.

    Bug fixAviation Standards

    A bug has been fixed in the parsing mechanism of longitude and latitude coordinates: a fraction was always interpreted as the fraction for seconds, but this is not always correct as it sometimes represents the fraction for degrees or minutes, depending on the position of the period.

    Bug fixAviation Standards

    After decoding AIXM update files, the updated models now generate correct model changed events for each new, withdrawn or changed object.

    6.0.07

    ImprovementLuciadFusion

    The new sample samples.encoder.mif.Main illustrates the use of the TLcdMIFModelEncoder.

    Bug fixLuciadFusion

    The transformation between WGS84 and WGS72 UTM MGRS coordinates was incorrect. The conversion of the coordinate in local geocentric datum reference to global WGS 84 geocentric datum reference contained a sign error.

    Bug fixLuciadFusion

    TLcdGML3ElementAdapterLibrary now has a method createElementAdapter, which was missing in the API.

    Bug fixLuciadFusion

    TLcdGML3ModelDescriptor.getTypeName() now returns "GML3" instead of an empty String.

    Bug fixLuciadFusion

    The vertical view (TLcdVVJPanel) did not repaint correctly while a paint was being edited and either the starting point or the ending point are not at their default values.

    Bug fixLuciadFusion

    Setting a model with not model points on the VV model no longer causes a NullPointerException.

    Bug fixLuciadFusion

    TLcdMIFModelDecoder has been fixed to correctly decode string features containing commas.

    Bug fixTerrain Analysis Engine

    The vertical view profile sometimes had a gap beneath the main profile points. The smaller the distance between 2 consecutive points, the larger the gap was. This was due to a slight miscalculation of the stepLengthRatio for the points.

    Bug fixAviation Standards

    Additional improvements have been made to com.luciad.ais.shape.TLcdDiscretizedLonLatGeoPath to prevent self-intersecting discretizations.

    Bug fixAviation Standards

    An issue has been fixed in the class com.luciad.ais.shape.TLcdDiscretizedLonLatGeoPath that sometimes resulted in a wrong mapping between a point index and a geopath leg, which is used by the methods getLegForPoint() and getLegIndexForPoint(). In the case of SUB_POINT_LIST legs, the first point of the next leg was in some case assumed to be part of the SUB_POINT_LIST leg.

    Bug fixAviation Standards

    Fixed an issue in TLcdDAFIFProcedureDecoder that could make the decoder fail to retrieve runways referenced by a procedure leg.

    6.0.06

    ImprovementLuciadFusion

    The capabilities decoders for the default XML server configuration format, com.luciad.wms.server.config.xml.TLcdWMSCapabilitiesXMLDecoder and samples.wms.server.config.xml.WMSCapabilitiesXMLDecoder, now also accept the 'PaintStyle' element for layers with data sources other than ESRI Shape (.shp) or Oracle Spatial Object-Relational (.ora).

    ImprovementLuciadFusion

    TLcdGXYLayer now computes uniform precision estimates for the methods applyOnInteract and paint.

    Bug fixLuciadFusion

    When a layer style was sent that did not exist for a layer, the WMS returned an incorrect service exception report: the name of the wrong layer style was not mentioned. The service exception report now clearly describes that the requested layer style does not exist for the requested layer.

    Bug fixLuciadFusion

    TLcdGeoTIFFModelDecoder and TLcdTABRasterModelDecoder now correctly throw an IOException instead of an IllegalArgumentException upon encountering a problem in a TAB file.

    Bug fixLuciadFusion

    TLcdMAPModelDecoder now decodes the size and style of custom bitmap icons properly.

    Bug fixLuciadFusion

    TLcdMIFModelEncoder now encodes custom bitmap symbols and TrueType symbols.

    Bug fixLuciadFusion

    TLcdTransverseMercator no longer throws TLcdOutOfBoundsExeception for an area where the projection is valid. When not close to the central meridian and when the origin latitude was different from 0, the projection threw an out-of-bounds exception when it should not have. This was apparent in the projections sample for example, where the mouse location readout was blank for this area.

    Bug fixAdvanced Raster Services

    TLcdMrSIDModelDecoder now correctly throws an IOException instead of an IllegalArgumentException upon encountering a problem in a TAB file.

    Bug fixAdvanced Raster Services

    TLcdECWModelDecoder now correctly throws an IOException instead of an IllegalArgumentException upon encountering a problem in a TAB file.

    Bug fixAdvanced Raster Services

    TLcdMrSIDModelDecoder now correctly throws an IOException instead of an IllegalArgumentException upon encountering a problem in a an ERS file.

    Bug fixDefense Symbology

    The supported country code list in the MIL-STD 2525b and APP-6A package has been extended and is now fully up to date. The possible country codes are defined by the FIPS PUB 10-4 list, which can be found on http://earth-info.nima.mil/gns/html/fips10-4.html.

    6.0.05

    Bug fixLuciadFusion

    The class com.luciad.wms.client.model.TLcdOGCWMSProxyModelDecoder did not handle relative locations to a DTD or XML Schema when performing validation of a WMS capabilities document.

    Bug fixLuciadFusion

    TLcdGML3ModelDecoder now supports arcs and circles within multiGeometries.

    Bug fixLuciadFusion

    TLcdXMLSchemaElement.getReferencedElement() now loads the referenced schema automatically if it is not in memory yet, instead of returning null.

    6.0.04

    ImprovementLuciadFusion

    TLcdGML3ModelDecoder now supports the gml:ArcByCenterPoint and gml:CircleByCenterPoint elements. TLcdGML3ModelEncoder supports the encoding of ILcdArc and ILcdCircle objects to these GML elements.

    ImprovementLuciadFusion

    The class com.luciad.wms.client.model.TLcdOGCWMSProxyModelDecoder has been extended with three new methods to control the XML validation and the reference to external entities in a WMS capabilities document.
    • setValidating(boolean), isValidating(): specifies whether XML validation (DTD and XML Schema) is enabled for the WMS capabilities document provided by a server.
    • setEntityLocation(String aEntityID, URL aEntityLocation): sets the URL to be used for an entity defined in the WMS capabilities document provided by a server. A typical example of an entity definition in an XML document is a reference to a DTD or XML Schema. By using this method, one can replace such a reference with a reference to a locally stored copy of the DTD or XML Schema. If no locations are specified, the original entity locations defined in the XML document are used.

    Bug fixLuciadFusion

    If the icon of an ILcdAction wrapped in an TLcdSWAction was changed, the TLcdSWAction used to fire a property change event with instances of ILcdIcon in its old and new values, instead of instances of javax.swing.Icon.

    Bug fixLuciadFusion

    The painter that is used by com.luciad.wms.client.gxy.TLcdWMSProxyGXYLayerFactory for each new layer now uses an enhanced mechanism to synchronously load images that are returned by a WMS server. This new mechanism removes the occurrence of a deadlock, which was sometimes observed when starting a print job that involved the WMS layer.

    Bug fixLuciadFusion

    XML schema's, included or imported in another schema from a location on the internet are now resolved correctly by the XML schema decoder.

    Bug fixLuciadFusion

    TLcdXMLSchemaDecoder can now handle schema's using to the older version of the XMLSchema schema (http://www.w3.org/2000/10/XMLSchema instead of http://www.w3.org/2001/XMLSchema)

    Bug fixLuciadFusion

    TLcdGMLSchemaEncoder now properly declares the <FeatureCollection> element used as the root element of encoded GML files.

    Bug fixLuciadFusion

    TLcdGMLModelEncoder now escapes all characters that are invalid for use in XML element names.

    Bug fixLuciadFusion

    TLcdGMLModelEncoder now ignores domain objects of which the geometry cannot be described as GML, such as circles, arcs and text.

    Bug fixReal-time Engine

    The previous fix for this bug caused a severe performance degradation, checking whether the element changed was in the model through its integer index. The check is now performed using the spatial index of an element.

    Bug fixReal-time Engine

    TLcdSimulator no longer throws a NullPointerException when setting the date before setting a simulator model.

    6.0.03

    Bug fixLuciadFusion

    TLcdXMLSchemaProvider now tries to load each schema location only once (when a schema location was corrupted, it tried to reread the schema again, each time an XML element of that schema was encountered).

    Bug fixLuciadFusion

    TLcdGML3ModelDecoder can now handle URL sources (some URL's caused an exception during the decoding).

    Bug fixLuciadFusion

    TLcdGML3ModelDecoder now decodes the gml:location child element of gml:AbstractFeatureType elements. If the location element has a gml:_Geometry child, the bounds of this geometry are included in the bounds calculation of the feature.

    Bug fixDatabase Connectors

    The decoder now handles the SQL exception "All fragments of the Rtree index are empty", when decoding a model from an empty table. The problem only manifested itself if the spatial table never contained any rows.

    Bug fixInfrastructure Standards

    com.luciad.format.dgn.server.TLcdDGNMicroStationModelDecoder now properly takes into account the selection of user attributes to be decoded.

    6.0.02

    ImprovementLuciadFusion

    The schema documents that are present in the servlet sample have been updated to the latest versions published by OGC (17 May 2006).

    ImprovementLuciadFusion

    TLcdGeoTIFFModelDecoder now also supports transparency masks that are stored as separate images (with PhotometricInterpretation = 4) in the same GeoTIFF files as the actual images.

    Bug fixDefense Symbology

    The classes TLcdAPP6AIcon and TLcdMS2525bIcon are now made thread safe. In the past, these classes sometimes caused problems regarding the visualization in multithreaded environments.

    Bug fixInfrastructure Standards

    com.luciad.format.dgn.server.TLcdDGNMicroStationModelDecoder now properly takes into account the selection of levels to be decoded.

    6.0.01

    ImprovementWeather & Environment Standards

    com.luciad.format.grib.ILcdGRIBConstants has been added, collecting all GRIB constants for generated models and processes, for parameters, and for levels and layers in a single location.

    ImprovementWeather & Environment Standards

    com.luciad.format.grib.TLcdGRIBTileDecoder now supports numbers of packing bits that are larger than 16.

    Bug fixLuciadFusion

    The ILcdXMLDocumentContext that is managed by the TLcdXMLDecoder is now updated correctly when an XML element is read, for which no ILcdXMLElementReader is available.

    Bug fixLuciadFusion

    TLcdGML3ModelDecoder now supports the interior polygons of a gml:polygonPatch element (these were not read yet).

    Bug fixInfrastructure Standards

    com.luciad.format.dgn.server.TLcdDGNMicroStationModelDecoder now ignores dummy text elements corresponding to group data.

    Bug fixInfrastructure Standards

    com.luciad.format.dgn.server.TLcdDGNMicroStationModelDecoder now ignores empty cells, consistent with com.luciad.format.dgn.TLcdDGNModelDecoder.

    6.0

    ImprovementLuciadFusion

    TLcdSHPModelDecoder now also decodes SHX index files.

    ImprovementLuciadFusion

    LuciadMap now comes with an additional file Worlddata.zip containing detailed sample data files. New vector data are cities.mtm representing the cities of the world, and countries.mtm representing the countries of the world. They are stored in the efficient new MTM format, indexing a set of SHP files. New raster data are bluemarble.tif containing a Blue Marble satellite view of the earth, and etopo2.tif containing a visual representation of the ETOPO2 global relief data. They are stored as efficiently tiled, multilevel GeoTIFFs.

    ImprovementLuciadFusion

    TLcdGXYLayer now provides better precision estimates to the function that is passed to the applyOnInteract method.

    ImprovementLuciadFusion

    TLcdGXYLayer now provides better precision estimates to the function that is passed to the applyOnInteract method.

    ImprovementLuciadFusion

    The class com.luciad.wms.client.model.ALcdOGCWMSCapabilities has been extended with three new methods to retrieve extra information about the capabilities of a Web Map Service:
    • getGetFeatureInfoURL(): returns the URL prefix that must be used for GetFeatureInfo requests.
    • getSupportedFeatureInfoFormatCount(): returns the number of supported feature info formats by a Web Map Service.
    • getSupportedFeatureInfoFormat(int): returns the supported feature info format at a given index.

    ImprovementLuciadFusion

    The documentation now contains prerequisites for every Additional Component and Industry Specific Component. The prerequisites contain dependencies on
    • other LuciadMap specialized packages,
    • third party jars,
    • JDK versions,
    • operating systems.

    ImprovementLuciadFusion

    ILcdWFSFeatureType and its implementation TLcdWFSFeatureType have been extended with methods to define keywords, which are included in the FeatureTypeList section of the WFS capabilities if available.

    ImprovementLuciadFusion

    To ease the deployment of a WFS server, a sample Ant build script has been created: build/wfs/deploy_wfs.xml. A batch script for Windows and a shell script for Unix are available next to this file, to run the build script. As Ant and Proguard releases are needed to run the script, they are also available in the release, respectively in build/ant and build/proguard. The build script can be used to generate a deployment server package (with obfuscated code and a deployment license) or a development server package (with a development license), which can placed into a servlet container (e.g. Tomcat). The script contains also tasks to create WAR files instead of packages.

    ImprovementLuciadFusion

    To ease the deployment of a WCS server, a sample Ant build script has been created: build/wcs/deploy_wcs.xml. A batch script for Windows and a shell script for Unix are available next to this file, to run the build script. As Ant and Proguard releases are needed to run the script, they are also available in the release, respectively in build/ant and build/proguard. The build script can be used to generate a deployment server package (with obfuscated code and a deployment license) or a development server package (with a development license), which can placed into a servlet container (e.g. Tomcat). The script contains also tasks to create WAR files instead of packages.

    ImprovementLuciadFusion

    To ease the deployment of a WMS server, a sample Ant build script has been created: build/wms/deploy_wms.xml. A batch script for Windows and a shell script for Unix are available next to this file, to run the build script. As Ant and Proguard releases are needed to run the script, they are also available in the release, respectively in build/ant and build/proguard. The build script can be used to generate a deployment server package (with obfuscated code and a deployment license) or a development server package (with a development license), which can placed into a servlet container (e.g. Tomcat). The script contains also tasks to create WAR files instead of packages.

    ImprovementLuciadFusion

    The WMS server sample package has been extended with two new packages:
    • samples.wms.server.config.editor: this package contains a new sample representing a graphical configuration editor for the server capabilities.
    • samples.wms.server.config.xml: this package contains the source of a decoder for the server capabilities. This decoder uses the new LuciadMap decoder framework for XML data, available in the package com.luciad.format.xml in LuciadMap. The decoder is used by the samples.wms.server.config.editor sample to load server capabilities files.
    The purpose of this code is to enable WMS server developers to extend the default XML server configuration format without writing a whole new decoder. As in the past, one can use a custom server capabilities decoder in the server by extending the method createWMSCapabilitiesDecoder() in com.luciad.wms.server.ALcdOGCWMSCommandDispatcherFactory.

    ImprovementLuciadFusion

    A method createWCSCommandDispatcherInstance() has been added to ALcdOGCWCSCommandDispatcherFactory. This method is used to instantiate a TLcdWCSCommandDispatcher. By overriding this method, users can plug in their own extensions of TLcdWCSCommandDispatcher.

    ImprovementLuciadFusion

    A method createWFSCommandDispatcherInstance() has been added to ALcdOGCWFSCommandDispatcherFactory. This method is used to instantiate a TLcdWFSCommandDispatcher. By overriding this method, users can plug in their own extensions of TLcdWFSCommandDispatcher. Also note that this class was final prior to version 6.0; this is now no longer the case.

    ImprovementLuciadFusion

    There is a new multilevel tiled data format available, called MultiLevelTiled format (MTM). It consists of one Java properties file with the extension ".mtm" and a set of subdirectories, one for each level. Each subdirectory contains a set of files, one for each tile at that level. The number of tiles can be different between levels. Tiles are not required to be in a regular grid and they may overlap. Each tile may have a different data format. At runtime only the visible tiles from the appropriate level are decoded, loaded and cached for future usage.

    The decoder for .mtm files is TLcdMultilevelTiledModelDecoder, which returns a TLcdMultilevel2DBoundsIndexedModel (an already existing model) with a TLcdMultilevelTiledModelDescriptor. Requires Java2. The new MTM data format can be used to display the background data for the world.

    ImprovementLuciadFusion

    A new package, com.luciad.format.gml3, was added. It contains an API and implementation for decoding, encoding and representation of GML data. The API is based on the GML 3.1.0 specification, but the decoder is backwards compatible with older GML version, starting of GML 2.1.2. The decoder is built upon the general LuciadMap XML framework. Custom readers and/or object factories can be plugged into the framework, extending the GML decoder to support custom application schemas.

    ImprovementLuciadFusion

    A new package, com.luciad.format.xml, was added. It offers support for decoding of XML data in an event-driven way, comparable to SAX. The framework allows to plug multiple handlers in the decoder, each dedicated to one or more XML elements.

    ImprovementLuciadFusion

    WCS DescribeCoverage responses now also contain the bounds of the coverage in its native CRS, in addition to the already supplied WGS84 bounds.

    ImprovementLuciadFusion

    The GeoTIFF encoder used in the WCS now supports encoding of non-georeferenced images. If the model being encoded does not have an ILcdGeoReference, the resulting image will be a plain TIFF, without any GeoTIFF-specific tags.

    ImprovementLuciadFusion

    A new class com.luciad.ogc.common.log.TLcdOGCLogFilter has been added which can be used to log servlet requests for licensing purposes on behalf of Luciad.

    ImprovementLuciadFusion

    Support is added to have an ILcdModel that can be indexed on values of ILcdFeatured objects. These classes were added for this purpose: com.luciad.model.ILcdFeatureIndexedModel, ILcdFeatureIndexedAnd2DBoundsIndexedModel and TLcdFeatureIndexedAnd2DBoundsIndexedModel.

    ImprovementLuciadFusion

    com.luciad.gui.TLcdAWTUtil.centerWindow() and centerWindowOnScreen() now properly support multi screen setups if Java 1.4 or above is available.

    ImprovementLuciadFusion

    The WMS server now supports the UPDATESEQUENCE parameter:
    • The root element of the capabilities that are sent to the client contains an attribute "updateSequence", indicating its current version.
    • The optional UPDATESEQUENCE parameter in a GetCapabilities request will be decoded and compared with the current update sequence value of the capabilities. The response follows the OGC Web Map Service specification.
    Through the API, the update sequence value of the capabilities can be retrieved/updated: the class com.luciad.wms.server.model.ALcdWMSCapabilities has been extended with a method getUpdateSequence(), and its implementation com.luciad.wms.server.model.TLcdWMSCapabilities with a method setUpdateSequence(). The default configuration file decoder com.luciad.wms.server.config.xml.TLcdWMSCapabilitiesXMLDecoder sets an initial update sequence value when it has created a new ALcdWMSCapabilities object. When the capabilities are updated through the API (e.g. adding a new layer), the update sequence value should be updated accordingly, to indicate a new capabilities version.

    ImprovementLuciadFusion

    A GetFeatureInfo request for a particular layer will now also be delegated to its child layers.

    ImprovementLuciadFusion

    TLcdSWAction now makes sure all key-value pairs are equal between the wrapped ILcdAction and the javax.swing.Action

    ImprovementLuciadFusion

    TLcdLonLatFormatter now implements a new interface, ILcdLonLatFormatter.

    ImprovementLuciadFusion

    TLcdMultilevel2DBoundsIndexedModel now implements ILcdIntegerIndexedModel.

    ImprovementLuciadFusion

    TLcdMAPModelDecoder now decodes features from the DAT files corresponding to the geometries from the MAP files.

    ImprovementLuciadFusion

    TLcdBILModelDecoder now attaches TLcdBILModelDescriptor instances to decoded models.

    ImprovementWeather & Environment Standards

    com.luciad.format.grib.TLcdGRIBModelDecoder now supports user-defined parameter tables. The new jar lcd_grib_resources.jar contains standard parameter tables that are supported by default, as well as a number of additional parameter tables that can be loaded by the user.

    ImprovementAviation Standards

    A new ILcdARINCHandler implementation has been added to com.luciad.format.arinc.decoder to decode holdings: TLcdARINCHoldingHandler. Decoded models have as model descriptor an instance of com.luciad.format.arinc.model.procedure.TLcdARINCHoldingModelDescriptor. The interface ILcdARINCHoldingFeature represents the features of an ARINC holding object, and the class TLcdARINCHoldingFeatureClassMapper keeps track of their corresponding classes.

    ImprovementDefense Standards

    TLcdVPFGeoSymProvider now has a static getInstance() method, replacing the non-static getStyleProvider() method.

    ImprovementDefense Standards

    The existing VPF samples are replaced by two new ones, illustrating the use of the new code and API changes in 6.0:
    • The first sample illustrates the basic usage of VPF, i.e., how to set up a VPF model decoder and layer factory, and show some VPF data on a map.
    • The second sample illustrates the use of the new VPF tree and layer manager, included with the samples, and some other VPF functionality (use of the ModelType flag of the VPF decoder, use of GeoSym, auto-bounds mode)

    ImprovementDefense Standards

    A new class, TLcdVPFPainterProvider, was added to the VPF API, enabling the use of VPF in a way similar to other LuciadMap formats, i.e., by setting up a small layer factory that creates a layer and sets a dedicated painter provider on it. A sample layer factory is included with the samples, which should be preferred in new code above the deprecated TLcdVPFLayerFactory class. The new factory implements the ILcdGXYLayerFactory interface, which was missing in the latter one.

    ImprovementDefense Standards

    The elements() method of the VPF on-the-fly model (corresponding to the "empty model" in previous releases), does not return empty enumerations, as the empty model did. Instead, at the moment the model is accessed via its elements() method or via its ILcdIntegerIndexedModel interface, the model shall switch to in-memory mode. This change does not affect existing code, using the deprecated TLcdVPFDatabaseTree or TLcdVPFLayerFactory classes.

    ImprovementDefense Standards

    New sample code was added, containing functionality for
    • showing a VPF database structure in a tree, and letting users make a selection of feature classes of the database
    • synchronizing a selection of feature classes with a view, using a layer manager that adds/removes VPF layers to the view whenever the selection has changed
    This code replaces the VPF tree functionality included in the VPF API. The following classes are from now on deprecated, in favour of the new sample code:
    • TLcdVPFDatabaseTree
    • TLcdVPFDatabasePanel
    • TLcdVPFLayer
    • TLcdVPFLayerFactory
    These classes remain their functionality, but should no longer be used in new code.

    ImprovementDefense Standards

    The MemoryUsage property on the TLcdVPFModelDecoder class has become deprecated, as it wasn't used at all by the decoder (which memory usage model to use, used to be decided at the level of the TLcdVPFDatabaseTree and TLcdVPFLayerFactory). The VPF model decoder now has a property ModelType, which can be used to control the memory usage and performance of a VPF model. It replaces the corresponding functionality in the TLcdVPFDatabaseTree and TLcdVPFLayerFactory classes, as these classes have become depreacted.

    ImprovementDefense Standards

    A number of methods were added to TLcdVPFDatabaseGroup, TLcdVPFDatabase, TLcdVPFLibrary and TLcdVPFFeatureClass, to facilitate browsing through the VPF structure:
    • TLcdVPFDatabaseGroup.getDescription()
    • TLcdVPFDatabase.getLibraries()
    • TLcdVPFDatabase.getLibraries(ILcdBounds)
    • TLcdVPFLibrary.getPathName()
    • TLcdVPFLibrary.getCoverages()
    • TLcdVPFCoverage.getPathName()
    • TLcdVPFFeatureClass.getCoverage()
    The following methods are deprecated in favour of the new ones, but remain their functionality:
    • TLcdVPFLibrary.retrieveLibraries()
    • TLcdVPFLibrary.retrieveLibraries(ILcdBounds)
    • TLcdVPFFeatureClass.getVPFCoverage()

    ImprovementDefense Standards

    All decodeXXX methods of TLcdVPFDatabase and TLcdVPFLibrary are now called automatically the first time they're needed - they no longer have to be called manually by users. These methods are made deprecated, but still remain their functionality, i.e., all existing code should behave as before.

    ImprovementMaritime Standards

    Support for AML (Additionally Military Layers) data was added. AML object and attribute classes are available in the object and attribute class maps. The TLcdS57ModelDecoder.canDecode(String) method was refined to be able to differentiate between AML and S-63 files. A sample demonstrating how to load AML data and create a custom symbology was also added.

    ImprovementMaritime Standards

    The S-57 decoder now supports ARCC and AR2D records.

    Bug fixLuciadFusion

    Fixed an issue in TLcdOGCFilterDecoder that caused incorrect decoding of the upper boundary value of PropertyIsBetween elements.

    Bug fixLuciadFusion

    TLcdMercator now returns an empty array for boundaryLons() when the latitude passed is outside the latitude limit (89.5 degrees). TLcdLambertConformal now only returns boundaryLons if the latitude passed is within the latitude limits. Outside these limits an empty array is returned.

    Bug fixLuciadFusion

    TLcdGXYEditController did not take into account other selected objects when setUseEditingBoundsForRepaint was set to true. When multiple objects were selected and one of the selected objects was moved, only the object touched by the mouse was moved while dragging the mouse. When the mouse was released, all objects selected were moved.

    Bug fixLuciadFusion

    TLcdNoWarpRasterPainter and TLcdNoWarpMultilevelRasterPainter now work correctly when using an ILcdGXYViewXYWorldTransformation with non-uniform scaling on the X and Y axes.

    Bug fixLuciadFusion

    TLcdInputStreamFactory now provides a global flag to switch off the use of Java NIO. This allows to avoid input files (typically raster files) being locked by the NIO code, preventing them to be modified or removed in Windows.

    Bug fixLuciadFusion

    TLcdMIFModelDecoder now properly sets the feature classes in the TLcdMIFModelDescriptor.

    Bug fixGraph and Routing Engine

    A bug, causing the partitioned routing algorithm not to find the shortest route in some cases, was fixed.

    Bug fixDefense Standards

    Some large models which caused the VPF model decoder to throw an IllegalArgumentException, when running in full-model mode, can now be decoded correctly.

    Bug fixDefense Standards

    VPF no longer throws an exception or blocks when no DQT file is available and the getDataQualityDescriptor() method is executed on a database, library or coverage.

    Bug fixDefense Standards

    The paths to the GeoSym resources in the GeoSym resources library are now added as defaults to the VPF code. It is no longer necessary to explicitly initialize GeoSym paths. Existing code, relying on the old default paths, will not be affected by this change.

    Bug fixDefense Standards

    When using the new sample tree, an exception is no longer thrown when switching from an in-memory model to an on-the-fly model (a NullPointerException was thrown in some cases).

    Bug fixDefense Standards

    Fitting works now with the new samples in JDK1.2.

    Bug fixDefense Standards

    The new samples no longer flicker when using JDK1.2.

    Bug fixDefense Standards

    The new samples can deal with spaces in filenames.

    Bug fixDefense Standards

    VPF now supports uppercase names for all files.

    Bug fixMaritime Standards

    The decoder now verifies explicitly whether the end of the input stream has been reached, thereby no longer causing an OutOfMemoryException when reading corrupt S-57 files.

    Bug fixMaritime Standards

    The S-52 default style (a purple question mark and line) is now initialized correctly in the S-52 symbology.

    Upgrade considerationLuciadFusion

    TLcdContourFactory now creates ILcdValuedPolygons objects based on TLcdXYFloatPolygon instead of TLcdLonLatFloatPolygon in the method createContour(). If you require ILcdValuedPolygons objects based on TLcdLonLatFloatPolygon use the new TLcdLonLatContourFactory in the package com.luciad.geometry.ellipsoidal instead.

    Upgrade considerationLuciadFusion

    ILcdGXYView has been extended with a method
          setXYWorldReference( ILcdXYWorldReference aXYWorldReference, boolean aRepaint, boolean
          aAdjusting);
        
    The method with aAdjusting parameter was missing from the interface. It has been added to be consistent with setViewOrigin, setWorldOrigin and setScale.

    Upgrade considerationLuciadFusion

    ILcd2DEditablePointFactory and ILcd3DEditablePointFactory and their implementations TLcdLonLatPointFactory and TLcdXYPointFactory, and TLcdLonLatHeightPointFactory and TLcdXYZPointFactory, have been removed. The factories were used in TLcd2DEditablePointList/TLcd3DEditablePointList to create new ILcdPoint from coordinates given and could be set with a static method. TLcd2/3DEditablePointList has a protected method create2/3DEditablePoint which by default returns a TLcdXY(Z)Point. This method should be overwritten to simulate setting another ILcd2DEditablePointFactory. In the LuciadMap API this is done in the ALcd2/3DEditablePolyPoint. The extension TLcdLonLatPolypoint (and its extensions TLcdLonLat(Height)Polygon and TLcdLonLat(Height)Polyline) has been adapted to create TLcdLonLat((Height)Point objects on insertion of new points through the coordinates. Since this was the only use of the ILcd2/3DEditablePointFactory in the LuciadMap API, and all extensions of ALcd2/3DEditablePolyPoint have a constructor with an ILcd2/3DEditablePointList parameter, adapting your code consists of constructing the ALcd2DEditablePolyPoint with a TLcd2DEditablePointList that returns the same ILcd2DEditablePoint as your factory would. An example for LonLatPolygons is
          private class MyLonLatPointFactory implements ILcd2DEditablePointFactory {
    
          public ILcd2DEditablePoint create2DEditablePoint(double aX, double aY) {
          return new MyLonLatPoint( aX, aY );
          }
          }
    
          TLcd2DEditablePointList.set2DEditablePointFactory(new MyLonLatPointFactory());
    
          TLcdLonLatPolygon polygon = new TLcdLonLatPolygon();
        
    becomes
          private class MyLonLatPointList extends TLcd2DEditablePointList {
    
          protected ILcd2DEditablePoint create2DEditablePoint(double aX, double aY) {
          return new MyLonLatPoint( aX, aY );
          }
          }
    
          TLcdLonLatPolygon polygon = new TLcdLonLatPolygon(new MyLonLatPointList());
        
    This fix alleviates the user of having to set the point factory for the LuciadMap implementations, which could result in the TLcdLonLatPolygon containing TLcdXYPoint objects, for example.

    Upgrade considerationLuciadFusion

    ILcdGXYView has a missing method added. All properties except XYWorldReference influencing the 'position' of the view (scale, viewOrigin, worldOrigin) could be set using a method with 3 parameters, the property, a boolean indicating whether the view should be repainted and a boolean indicating whether other property changes would follow.

    Upgrade considerationLuciadFusion

    LuciadMap packaging has changed slightly:
    • The distribution will now unzip to LuciadMap_X.Y.Z, where X.Y.Z are the major, minor and patch number of the release.
    • The LuciadMap beans jar, lcd_beans.jar is no longer packaged in a separate zip file. It is now located in the lib directory in LuciadMap zip.
    • Third party jars no longer have prefixes prepended to designate their use in LuciadMap, for example raster_jai_core.jar is now jai_core.jar. The use of third party jars is now documented in the prerequisites pages of the HTML documentation (Technical Notes -> Prerequisites).

    Upgrade considerationLuciadFusion

    The class com.luciad.wms.client.model.ALcdWMSProxy has been extended with two new abstract methods to control an image caching property: setCacheImage() and isCacheImage(). Implementations of ALcdWMSProxy are recommended to take this property into account.

    Upgrade considerationLuciadFusion

    Some events were fired with property names not following the beans conventions. This is now fixed for:
    • TLcdGXYArcBandPainter: lineStyle, fillStyle,
    • TLcdGXYArcPainter: lineStyle,
    • TLcdGXYBufferPainter: drawAxis, fillStyle, lineStyle,
    • TLcdGXYCirclePainter: fillStyle, lineStyle,
    • TLcdGXYEllipsePainter: fillStyle, lineStyle,
    • TLcdGXYLonLatHeightBufferPainter: drawAxis, fillStyle, lineStyle,
    • TLcdGXYPointListPainter: fillStyle, lineStyle,
    • TLcdGXYTextPainter: fillStyle, fontStyle,
    • TLcdLonLatGridPainter: color, labelColor, labeled, labelFont, lonLatFormatter, slantedLabels, zeroColor,
    • TLcdUTMZonePainter: automaticRescaling, color, colorScales, cornerLabelColor, labelColor, labeled, labelFont, maxZoomForGridDetails, minimalZoomForLabels (was ScaleForLabels), paintGridWhenLabeling, quickDraw, scaled (was Scales), scaleDistance, UTMCoordinateSeparator.
    Note that this change will not have any effect at compile time, only at runtime. Wherever the property names are checked without ignoring the case, the code will have to be adapted to either ignore the case or to use the same case as the property names above.

    Upgrade considerationLuciadFusion

    com.luciad.view.TLcdLayeredSupport.addLayeredListener used to fire a LAYER_REMOVED and LAYER_ADDED event for every layer, but only to the ILcdLayeredListener that was just added. These events are no longer fired. For backward compatibility reasons, the old behavior can still be enabled by invoking this method: com.luciad.view.TLcdLayeredSupport.setFireInitialEvents( true ) or by setting the system property 'com.luciad.view.TLcdLayeredSupport.fireInitialEvents' below to 'true'. A system property can be set when Java is started using a command line parameter, for example: java -Dcom.luciad.view.TLcdLayeredSupport.fireInitialEvents=true -classpath ...

    Upgrade considerationLuciadFusion

    TLcdMapLonLatGridLayer now fires property change events with property names starting with lowercase characters. This will only show up at runtime, not at compile time. When checking for the property names use equalsIgnoreCase or adapt the property name.

    Upgrade considerationReal-time Engine

    TLcdSimulator fired events which were not according to the standard. Events for these properties used to start with capitals: maxCPUUsage, delayBetweenUpdateMs. This change will not have an effect at compile time, but may appear at runtime. Adapt the property change listeners to either ignore the case or to use the new property name.

    Upgrade considerationAviation Standards

    com.luciad.ais.model.ILcdFeatureIndexedModel, ILcdFeatureIndexedAnd2DBoundsIndexedModel and TLcdFeatureIndexedAnd2DBoundsIndexedModel were moved to the Core in package com.luciad.model. This means any code referring these classes will no longer compile. By just making these search and replaces in (the import statements of) the source code, things will compile again:
    • "com.luciad.ais.model.ILcdFeatureIndexedModel" -> "com.luciad.model.ILcdFeatureIndexedModel"
    • "com.luciad.ais.model.ILcdFeatureIndexedAnd2DBoundsIndexedModel" -> "com.luciad.model.ILcdFeatureIndexedAnd2DBoundsIndexedModel"
    • "com.luciad.ais.model.TLcdFeatureIndexedAnd2DBoundsIndexedModel" -> "com.luciad.model.TLcdFeatureIndexedAnd2DBoundsIndexedModel"

    5.3

    5.3.19

    ImprovementInfrastructure Standards

    com.luciad.format.dgn.ILcdDGNModelDecoder and its implementations have a new property useFloat that can specify to store decoded coordinates in float arrays, for reducing memory usage of the decoded models.

    Bug fixLuciadFusion

    The previous fix for this bug cased a new bug: the origin of the projection was not set correctly when constructing a TLcdPolarStereographic for the north pole.

    5.3.18

    ImprovementAdvanced Raster Services

    TLcdGeoSPOTModelDecoder now decodes metadata, which can be found through the decoded TLcdGeoSPOTModelDescriptor and TLcdGeoSPOTRaster instances.

    ImprovementAdvanced Raster Services

    The native ECW library is now available for Linux as well. It has been reduced to a single shared library on all platforms.

    Bug fixLuciadFusion

    TLcd2DBoundsIndexedModel now correctly updates its spatial index after allElementsChanged has been called.

    Bug fixDefense Standards

    The TLcdVPFLayerFactoryModel.setLabelIndices() and getLabelIndices() methods work correctly now, and can be used to configure the label indices to be used for the painting of VPF features.

    Bug fixDefense Symbology

    The MIL-STD 2525b and APP-6A API can now be used again in a headless environment. This was not possible from version 5.3 on.

    Upgrade considerationLuciadFusion

    Following controllers and action were registered with TLcdBeanManager by default when using the parameterless constructor:
    • TLcdGXYDragRectangleController
    • TLcdGXYEditController
    • TLcdGXYNewController
    • TLcdGXYNoopController
    • TLcdGXYOverviewController
    • TLcdGXYPanController
    • TLcdGXYSelectController
    • TLcdGXYZoomController
    • TLcdMapGridRulerController
    • TLcdMapRulerController
    • TLcdGXYSetControllerAction
    To avoid memory leaks, controllers are now no longer registered as beans with TLcdBeanManager by default. All constructors with the aRegisterInstance parameter are deprecated to discourage their use.

    5.3.17

    Bug fixLuciadFusion

    The class com.luciad.wms.server.TLcdOGCWMSCommandDispatcher used the ISO-8859-1 character encoding to send XML data (e.g. the capabilities) to the client instead of UTF-8, while the XML declaration tag in the data itself always specified the UTF-8 encoding. This caused problems when special characters were used, like the degree symbol. UTF-8 is now used as default character encoding.

    Bug fixLuciadFusion

    Unscaled text can now be scaled and rotated again. This was not possible from version 5.3 on.

    Bug fixLuciadFusion

    TLcd2DBoundsIndexedModelList no longer performs overly strict checks on the types of bounds of models that are added.

    Bug fixLuciadFusion

    TLcdCADRGModelDecoder and TLcdCADRGImageDecoder now have expandColorMap properties to expand CADRG color maps of decoded tiles to a full ARGB color model. This avoids problems in case of clashing color maps.

    Bug fixAviation Standards

    The class com.luciad.format.aixm.decoder.TLcdAIXMRunwayHandler now uses Double instances for the features ILcdRunwayFeature.WIDTH and ILcdRunwayFeature.LENGTH instead of Float instances, which was not correct according to the documentation of these features.

    5.3.16

    ImprovementLuciadFusion

    The package om.luciad.format.mif.gxy now supports MIF custom bitmap symbols.

    ImprovementAviation Standards

    The class com.luciad.ais.symbology.icao.TLcdICAOAirspaceDetailedLabelPainter has been extended with a new method setClassIndex(int), which is used to set the index of the airspace class feature (ILcdAirspaceFeature.CLASS). The airspace class feature will be used in the label to display the actual class instead of the airspace type feature, if the type feature has as value TLcdAirspaceType.CLASS.

    ImprovementDefense Symbology

    Support for a new symbol has been added to the MIL-STD 2525b API: the symbol has as unique code S*Z*------***** (hierarchy is 1.X), and it represents a general warfighting symbol with an unknown battle dimension.

    ImprovementDefense Symbology

    An enhancements has been made in the visualization of the APP-6A symbology: the icon for Maintenance Collection Point (2.X.2.4.1.8) was not available.

    Bug fixLuciadFusion

    The class com.luciad.wms.server.TLcdOGCWMSCommandDispatcher ignored the optional TRANSPARENT parameter in a GetFeatureInfo request, making it impossible to retrieve an image with a transparent background using this type of request. This issue has been fixed.

    Bug fixLuciadFusion

    When a new polyline or polygon was created with the TLcdGXYPointListPainter snapping of the first point to other points is now possible again.

    Bug fixLuciadFusion

    TLcdMAPModelDecoder now correctly decodes rectangles with swapped corner coordinates.

    Bug fixLuciadFusion

    TLcd2DBoundsIndexedModel now returns the full 3D bounds instead of just the 2D bounds.

    Bug fixLuciadFusion

    TLcdLonLatFormatter now works correctly when created with the parameterless constructor.

    Bug fixLuciadFusion

    TLcdSHPModelEncoder now checks whether a model is featured and whether it can export the feature classes in the canExport method.

    Bug fixWeather & Environment Standards

    com.luciad.format.grib.TLcdGRIBModelDecoder now properly uses its input stream factory for decoding the raster data.

    Bug fixAviation Standards

    An issue has been fixed in the class com.luciad.ais.shape.TLcdDiscretizedLonLatGeoPath, which sometimes resulted in the lack of a point on the boundaries of a discretized airspace segment of type SUB_POINT_LIST (e.g. a geoborder).

    Bug fixDefense Standards

    projection parameters are now read correctly from the library's GRT file.

    5.3.15

    ImprovementDefense Symbology

    The interfaces com.luciad.symbology.milstd2525b.view.gxy.ILcdMS2525bStyle and com.luciad.symbology.app6a.view.gxy.ILcdAPP6AStyle, and their respective implementations TLcdDefaultMS2525bStyle and TLcdDefaultAPP6AStyle are extended with new methods to control the affiliation color of symbols:
    • setAffiliationColor(int, Color), getAffiliationColor(int): Sets/returns the color for a given affiliation. These colors will be used for all icon symbols; for line symbols, affiliation colors are only used when the affiliation color mode has been enabled (see next item).
    • setAffiliationColorEnabled(boolean), isAffiliationColorEnabled(): When this mode is enabled, the color for unframed icon symbols, line symbols and off-set lines of icon symbols will automatically be adapted to the affiliation of a symbol. If the affiliation is not determined, the color returned by getColor() will be used; otherwhise, the affiliation color has precedence (see method getAffiliationcolor(int)). Note that the unframed icon symbols were always painted black in the past, regardless of the getColor() property, which was not entirely correct.
    Note that the setColor(Color) and setAffiliationColorEnabled(boolean) methods don't have any effect regarding Weather symbology (APP-6A: 3.X, MIL-STD 2525b: 5.X): this symbology defines its own colors (e.g. weather fronts).

    ImprovementDefense Symbology

    The interfaces com.luciad.symbology.milstd2525b.view.gxy.ILcdMS2525bStyle and com.luciad.symbology.app6a.view.gxy.ILcdAPP6AStyle, and their respective implementations TLcdDefaultMS2525bStyle and TLcdDefaultAPP6AStyle are extended with new methods to enabled/disable the automatic scaling of the font size for labels of icon symbols: setLabelFontScalingEnabled(boolean), isLabelFontScalingEnabled(). If enabled, the font size for labels around icon symbols will be scaled according to the size of the symbol. If disabled, the original size of the font returned by the method getLabelFont() will be used.

    Bug fixLuciadFusion

    The methods createImageInputstream() and createImage() in com.luciad.wms.client.model.ALcdWMSProxy now check whether there are any visible styled named layer objects registered before executing a GetMap request. If not, no request will be sent anymore because this was unnecessary. To provide backwards compatibility, createImage() will return null in that case and createImageInputstream() will throw an IOException, which is in both cases similar to the behaviour when a service exception report is received from the server.

    Bug fixLuciadFusion

    Labels for arcbands are painted at the same location regardless of whether the arcband is selected or not.

    Bug fixLuciadFusion

    Some ILcdGXYPainter implementations did not fire property change events consistently when a property was set. This is now adapted for the following properties:
    • ALcdGXYPainter: displayName,
    • TLcdGXYArcBandPainter: createCounterClockwise, drawCenterWhenSelected, mode, paintCache
    • TLcdGXYArcPainter: drawCenter, drawCenterWhenSelected, paintCache, snapIcon,
    • TLcdGXYAreaShapeListPainter: defaultColor, selectionColor,
    • TLcdGXYBoundsPainter: paintCache, snapIcon,
    • TLcdGXYBufferPainter: creationBufferWidth, mode, paintCache, snapIcon
    • TLcdGXYCirclePainter: displayCenter, displayCenterOnSelection, distanceFormat, editingLabel, editingLabelBackground, editingLabelFilled, editingLabelFont, editingLabelForeground, editingLabelFrame, mode, paintCache, pointFormat, snapIcon
    • TLcdGXYEllipsePainter: drawCenter, mode, paintCache, snapIcon,
    • TLcdGXYIconPainter: icon, selectionIcon, snapIcon,
    • TLcdGXYLonLatHeightBufferPainter: creationBufferWidth, mode, paintCache,
    • TLcdGXYPointListPainter: fillSelection, mode, moveOnlyOnEdit, paintCache, snapIcon,
    • TLcdGXYPointShapeListPainter: defaultIcon, selectionIcon,
    • TLcdGXYPolylineShapeListPainter: defaultColor, paintCache, selectionColor,
    • TLcdGXYShapeListPainter: editTouchedOnly, shapeGXYPainterProvider, shapeGXYEditorProvider
    • TLcdGXYTextPainter: creationMode, framed.

    Bug fixAviation Standards

    The geopath leg types GEODESIC_LINE, RHUMB_LINE, ARC and ARC_BY_EDGE in com.luciad.ais.shape.ILcdGeoPathLeg mentioned in their documentation that the geometry was determined by the previous leg and the current leg, which was not correct and did not correspond to the implementation in TLcdDiscretizedLonLatGeoPath. This implementation uses the next leg instead of the previous leg to determine the geometry. The documentation in ILcdGeoPathLeg has been updated accordingly.

    5.3.14

    ImprovementDefense Symbology

    A number of enhancements have been made in the visualization of the APP-6A and MIL-STD 2525b symbology:
    • Some point symbols erroneously contained example labels, like a number, on the place where labels for particular modifiers should be drawn. This was not correct and caused sometimes an overlap between the example label and a configured label. The following symbols have been adapted:
      • Point Of Interest (APP-6A: 2.X.2.1.1.1.1, MIL-STD 2525b: 2.X.2.1.1.2.4): the example character has been removed from the icon. The modifier ILcdAPP6ACoded.sUniqueDesignation / ILcdMS2525bCoded.sUniqueDesignation will be used as label on its position.
      • Air Control Point (APP-6A: 2.X.2.1.2.1.1, MIL-STD 2525b: 2.X.2.2.1.1): the example number has been removed from the icon. The modifier ILcdAPP6ACoded.sUniqueDesignation / ILcdMS2525bCoded.sUniqueDesignation will be used as label on its position.
      • Communications Checkpoint (APP-6A: 2.X.2.1.2.1.2, MIL-STD 2525b: 2.X.2.2.1.2): the example number has been removed from the icon. The modifier ILcdAPP6ACoded.sUniqueDesignation / ILcdMS2525bCoded.sUniqueDesignation will be used as label on its position.
      • Target reference point (APP-6A: 2.X.2.1.4.1.1, MIL-STD 2525b: 2.X.2.4.1.1): the example number has been removed from the icon. The modifier ILcdAPP6ACoded.sUniqueDesignation / ILcdMS2525bCoded.sUniqueDesignation will be used as label on its position.
      • Engineer Regulating Point (APP-6A: 2.X.2.2.2.2.8, MIL-STD 2525b: 2.X.3.2.2.8): the example number has been removed from the icon. The modifier ILcdAPP6ACoded.sUniqueDesignation / ILcdMS2525bCoded.sUniqueDesignation will be used as label on its position.
      • Decontamination Point symbols (APP-6A: 2.X.2.2.4.11.1/2/3/4/5/6/7, MIL-STD 2525b: 2.X.3.4.8.1/2/3/4/5/6/7): the example numbers have been removed from the icons. The modifier ILcdAPP6ACoded.sUniqueDesignation / ILcdMS2525bCoded.sUniqueDesignation will be used as label on their positions.
      • Point/Single Target (APP-6A: 2.X.2.3.1.1.1, MIL-STD 2525b: 2.X.4.1.1.1): the example text/numbers have been removed from the icon. The modifier ILcdAPP6ACoded.sUniqueDesignation / ILcdMS2525bCoded.sUniqueDesignation will be used as label in the upper-right corner. The modifier ILcdAPP6ACoded.sAdditionalInformation / ILcdMS2525bCoded.sAdditionalInformation will be used for the labels in the lower-left and lower-right corners; by using the separator character ':' in this modifier, one can create these two labels: the part before ':' will appear in the lower-right corner, while the part after ':' will appear in the lower-left corner.
      • Circular target (APP-6A: 2.X.2.3.1.1.2, MIL-STD 2525b: 2.X.4.1.1.3): the example text/number has been removed from the icon. The modifier ILcdAPP6ACoded.sUniqueDesignation / ILcdMS2525bCoded.sUniqueDesignation will be used as label in the center of the circle.
      • Fire Support Station (APP-6A: 2.X.2.3.1.2, MIL-STD 2525b: 2.X.4.1.2): the example number has been removed from the icon. The modifier ILcdAPP6ACoded.sUniqueDesignation / ILcdMS2525bCoded.sUniqueDesignation will be used as label on its position.
      • Nuclear Target (APP-6A: 2.X.2.3.3.9, MIL-STD 2525b: 2.X.4.1.1.2): the example text/numbers have been removed from the icon. The modifier ILcdAPP6ACoded.sUniqueDesignation / ILcdMS2525bCoded.sUniqueDesignation will be used as label on its position.
      • Combat Service Support Point symbols (APP-6A: 2.X.2.4.1.1/2/3/4/5/6/7/8/9/10/11/12/13, MIL-STD 2525b: 2.X.5.1.1/2/3/4/5/6/7/8/9/10/11/12/13): the example numbers have been removed from the icons. The modifier ILcdAPP6ACoded.sUniqueDesignation / ILcdMS2525bCoded.sUniqueDesignation will be used as label on their positions.
      • Ammunition Point symbols (APP-6A: 2.X.2.4.1.15.1/2, MIL-STD 2525b: 2.X.5.1.15.1/2): the example numbers have been removed from the icons. The modifier ILcdAPP6ACoded.sUniqueDesignation / ILcdMS2525bCoded.sUniqueDesignation will be used as label on their positions.
      • Checkpoint (APP-6A: 2.X.2.5.2.1, MIL-STD 2525b: 2.X.2.1.1.8.1): the example number has been removed from the icon. The modifier ILcdAPP6ACoded.sUniqueDesignation / ILcdMS2525bCoded.sUniqueDesignation will be used as label on its position.
      • Contact Point(APP-6A: 2.X.2.5.2.2, MIL-STD 2525b: 2.X.2.1.1.8.2): the example number has been removed from the icon. The modifier ILcdAPP6ACoded.sUniqueDesignation / ILcdMS2525bCoded.sUniqueDesignation will be used as label on its position.
      • Decision Point (APP-6A: 2.X.2.5.2.4, MIL-STD 2525b: 2.X.2.1.1.8.4): the example number has been removed from the icon. The modifier ILcdAPP6ACoded.sUniqueDesignation / ILcdMS2525bCoded.sUniqueDesignation will be used as label on its position.
      • Linkup Point (APP-6A: 2.X.2.5.2.5, MIL-STD 2525b: 2.X.2.1.1.8.5): the example number has been removed from the icon. The modifier ILcdAPP6ACoded.sUniqueDesignation / ILcdMS2525bCoded.sUniqueDesignation will be used as label on its position.
      • Passage Point(APP-6A: 2.X.2.5.2.6, MIL-STD 2525b: 2.X.2.1.1.8.6): the example number has been removed from the icon. The modifier ILcdAPP6ACoded.sUniqueDesignation / ILcdMS2525bCoded.sUniqueDesignation will be used as label on its position.
      • Rally Point (APP-6A: 2.X.2.5.2.7, MIL-STD 2525b: 2.X.2.1.1.8.7): the example number has been removed from the icon. The modifier ILcdAPP6ACoded.sUniqueDesignation / ILcdMS2525bCoded.sUniqueDesignation will be used as label on its position.
      • Release Point (APP-6A: 2.X.2.5.2.8, MIL-STD 2525b: 2.X.2.1.1.8.8): the example number has been removed from the icon. The modifier ILcdAPP6ACoded.sUniqueDesignation / ILcdMS2525bCoded.sUniqueDesignation will be used as label on its position.
      • Start Point (APP-6A: 2.X.2.5.2.9, MIL-STD 2525b: 2.X.2.1.1.8.9): the example number has been removed from the icon. The modifier ILcdAPP6ACoded.sUniqueDesignation / ILcdMS2525bCoded.sUniqueDesignation will be used as label on its position.
      • Waypoint (APP-6A: 2.X.2.5.2.10, MIL-STD 2525b: 2.X.2.1.1.8.10): the example number has been removed from the icon. The modifier ILcdAPP6ACoded.sUniqueDesignation / ILcdMS2525bCoded.sUniqueDesignation will be used as label on its position.
    • Point Of Departure (APP-6A: 2.X.2.1.5.1.1, MIL-STD 2525b: 2.X.2.5.1.1): this point symbol was not painted correctly and has been updated.
    • Supply Point symbols (APP-6A: 2.X.2.4.1.14.1/2/3/4/5/6/7/8/9/10/11, MIL-STD 2525b: 2.X.5.1.14.1/2/3/4/5/6/7/8/9/10/11): the label for the modifier ILcdAPP6ACoded.sUniqueDesignation / ILcdMS2525bCoded.sUniqueDesignation erroneously overlapped with the graphic inside the point symbol. This has been fixed.

    Bug fixDefense Symbology

    For a specific setup (Linux, JDK 1.4.2), loading an icon symbol via the APP-6A and MIL-STD 2525b API could lead to a deadlock. This issue has been fixed.

    5.3.13

    ImprovementDefense Symbology

    A number of enhancements have been made in the visualization of the APP-6A and MIL-STD 2525b symbology:
    • Minimum safe distance zone (APP-6A: 2.X.2.2.4.1, MIL-STD 2525b: 2.X.3.4.1): the circles are now also painted when one of the points is being edited or when the symbol is being translated.
    • Fortified Area (APP-6A: 2.X.2.1.1.3.2.8, MIL-STD 2525b: 2.X.2.1.3.4): the line segments are now connected, resulting in a fully closed area. A label for the modifier ILcdAPP6ACoded.sUniqueDesignation / ILcdMS2525bCoded.sUniqueDesignation has been added.
    • Encirclement (APP-6A: 2.X.2.1.6.1.1.1, 2.X.2.1.6.1.1.2; MIL-STD 2525b: 2.X.2.6.2.4): A label for the modifier ILcdAPP6ACoded.sUniqueDesignation / ILcdMS2525bCoded.sUniqueDesignation has been added.
    • Obstacle free area (APP-6A: 2.X.2.2.1.9): This symbol was erroneously painted as a point in the past; it is now painted as an area.
    • Obstacle restricted area (APP-6A: 2.X.2.2.1.9.1): This symbol was erroneously painted as a point in the past; it is now painted as an area.
    • Circular target (APP-6A: 2.X.2.3.1.1.2, MIL-STD 2525b: 2.X.4.1.1.3): this symbol is now represented as a circle with two points - circle center and circle point indicating the radius - instead of an icon. This makes it possible to change the radius. A label for the modifier ILcdAPP6ACoded.sUniqueDesignation has been added, following MIL-STD 2525b.
    • Fire Support Coordination Line (APP-6A: 2.X.2.3.2.1, MIL-STD 2525b: 2.X.4.2.1): By using the separator character ':' in the modifier ILcdAPP6ACoded.sUniqueDesignation / ILcdMS2525bCoded.sUniqueDesignation, one can create two labels: the text before ':' will be shown before the letters FSCL, while the other part of the text will be shown after the letters PL. Possible label overlappings have been removed.
    • Coordinated Fire Line (APP-6A: 2.X.2.3.2.2, MIL-STD 2525b: 2.X.4.2.2): By using the separator character ':' in the modifier ILcdAPP6ACoded.sUniqueDesignation / ILcdMS2525bCoded.sUniqueDesignation, one can create two labels: the text before ':' will be shown after the letters CFL, while the other part of the text will be shown after the letters PL. Possible label overlappings have been removed.
    • Restrictive Fire Line (APP-6A: 2.X.2.3.2.6, MIL-STD 2525b: 2.X.4.2.4): By using the separator character ':' in the modifier ILcdAPP6ACoded.sUniqueDesignation / ILcdMS2525bCoded.sUniqueDesignation, one can create two labels: the text before ':' will be shown after the letters RFL, while the other part of the text will be shown after the letters PL. Possible label overlappings have been removed.

    Bug fixInfrastructure Standards

    com.luciad.format.dwg.TLcdDWGModelDecoder now correctly handles polyline bulges larger than 1.

    5.3.12

    ImprovementLuciadFusion

    The clipping done in com.luciad.view.gxy.TLcdAWTPath has been further improved to avoid some spurious diagonal lines when zooming in a lot.

    ImprovementLuciadFusion

    The performance of TLcdSelectionSupport when selecting large numbers of objects has been improved.

    Bug fixLuciadFusion

    TLcdUTMGridLayer did not have a model reference. It now returns the reference of zone 30 in the northern hemisphere.

    Bug fixLuciadFusion

    TLcdUPSGridLayer: the model on the layer did not have any model reference. It now has the reference for the northern hemisphere. The layer also takes into account the icon set. The selected objects method of the layer now returns an empty enumeration instead of null.

    Bug fixAviation Standards

    TLcdDAFIFLoader didn't work correctly under JDK 1.5 when a DAFIF source path was used that contained spaces.

    Bug fixDefense Symbology

    It was wrongfully not possible to add a point on the last segment of an MIL-STD 2525b area using the CTRL key.

    5.3.11

    ImprovementAviation Standards

    The class com.luciad.format.aixm.decoder.TLcdAIXMModelDecoder makes it possible to set a custom ILcdInputStreamFactory, but this ILcdInputStreamFactory was never used when performing an AIXM update operation. This has been fixed.

    Bug fixLuciadFusion

    TLcdGXYLayerLabelPainter and TLcdGXYViewLabelPainter now handle multilabel painters correctly (previously, an IndexOutBoundsException was thrown in some cases).

    Bug fixLuciadFusion

    TLcdAdvancedMapRulerController used to indicate a wrong measurement if the ruler controller was deactivated, the projection was changed, the ruler was activated again and if it was set to display the projection plane distance.

    Bug fixInfrastructure Standards

    com.luciad.format.dwg.TLcdDWGModelDecoder now correctly decodes the thickness of LwPolyline objects.

    5.3.10

    ImprovementLuciadFusion

    TLcdCADRGImageDecoder now accepts invalid transparent output pixel codes in CADRG files.

    ImprovementDefense Symbology

    A number of enhancements have been made in the visualization of the APP-6A and MIL-STD 2525b symbology:
    • Boundaries (APP-6A: 2.X.2.1.1.2.1.1.1, 2.X.2.1.1.2.1.1.2, 2.X.2.1.1.2.1.1.3, 2.X.2.1.1.2.1.2, 2.X.2.1.1.2.1.3, 2.X.2.1.1.2.1.4; MIL-STD 2525b: 2.X.2.1.2.1): The scaling of the hostile indicator "ENY" label and the echelon/unique designator labels has been improved, to prevent overlapping. By using the separator character ':' in the modifier ILcdAPP6ACoded.sUniqueDesignation / ILcdMS2525bCoded.sUniqueDesignation, one can create two labels: the text before ':' will be used at one side of the boundary, the other part of the text at the other side.
    • Fort (APP-6A: 2.X.2.2.3.2; MIL-STD 2525b: 2.X.3.3.2): This symbol was erroneously painted as a point in the past; it is now painted as an area with proper decorations. A label for the modifier ILcdAPP6ACoded.sUniqueDesignation / ILcdMS2525bCoded.sUniqueDesignation has been added.
    • Mined Area (APP-6A: 2.X.2.2.1.6.9; MIL-STD 2525b: 2.X.3.1.6.4): The scaling of the mine indicator "M" and hostile indicator "ENY" has been improved. A label for the modifier ILcdAPP6ACoded.sAdditionalInformation / ILcdMS2525bCoded.sAdditionalInformation has been added.
    • Friendly encirclement (APP-6A: 2.X.2.1.6.1.1.1): This symbol was erroneously painted as a point in the past; it is now painted as an area with proper decorations.
    • Encirclement (APP-6A: 2.X.2.1.6.1.1.1, 2.X.2.1.6.1.1.2; MIL-STD 2525b: 2.X.2.6.2.4): When the orientation of the area was counter-clockwise, the decorations were painted at the wrong side of the polygon. This has been fixed.
    • Anti-tank ditch (APP-6A: 2.X.2.2.1.3.1): This symbol was not painted correctly in the past; it is now painted as a polyline with proper decorations.
    • General minefields (APP-6A: 2.X.2.2.1.6.1, 2.X.2.2.1.6.2 ; MIL-STD 2525b: 2.X.3.1.6.2): These areas are now filled with mines.
    • Anti-tank minefield (APP-6A: 2.X.2.2.1.6.5): This symbol was erroneously painted as a point in the past; it is now painted as an area filled with mines. A label for the modifier ILcdAPP6ACoded.sAdditionalInformation / ILcdMS2525bCoded.sAdditionalInformation has been added.
    • Scatterable mines (APP-6A: 2.X.2.2.1.6.6; MIL-STD 2525b: 2.X.3.1.6.1): This symbol was erroneously painted as a point in the past; it is now painted as an area filled with mines, together with the symbol indicator "S". Labels for the modifiers ILcdAPP6ACoded.sAdditionalInformation / ILcdMS2525bCoded.sAdditionalInformation, ILcdAPP6ACoded.sDateTimeGroup / ILcdMS2525bCoded.sDateTimeGroup have been added.

    Bug fixLuciadFusion

    TLcdLonLatFormatter now correctly rounds the least significant digits again, fixing a bug introduced in a previous minor update.

    5.3.09

    ImprovementLuciadFusion

    TLcdSHPModelEncoder supports encoding in different character sets.

    ImprovementLuciadFusion

    The new TLcdLonLatBorderGridPainter paints a maritime-style grid around the map.

    ImprovementLuciadFusion

    TLcdRaster no longer tries to access a tile in its constructor, thus avoiding unnecessary loading of tiles.

    ImprovementLuciadFusion

    TLcdGXYLayerLabelPainter and TLcdGXYViewLabelPainter have a new property labelPriorityProvider. Its type is the new interface ILcdGXYLabelPriorityProvider. It allows to specify priorities for labels that are decluttered.

    ImprovementLuciadFusion

    TLcdJPLGeodeticDatumFactory can create a RPF93 geodetic datum and has an alias for RT90 added. As a result model references with EPSG codes 2154, 2400, 3019-3024, 4124, 4171, 4369, 4370, 4964, 4965 can now be decoded by the TLcdEPSGReferenceParser.

    ImprovementLuciadFusion

    TLcdEPSGReferenceParser supports EPSG code 2400.

    ImprovementLuciadFusion

    The EPSG resources have been updated to EPSG database version 6.8. For the update to have effect the new version of the lcd_epsg_resources.jar should be put in the classpath.

    ImprovementLuciadFusion

    Raster model decoders that support the forcedTransparencyIndex property now also apply it to grayscale images.

    ImprovementDatabase Connectors

    The decoder now also supports reading features from other tables than the table containing the geometries.

    ImprovementDatabase Connectors

    TLcdOracleSpatialModelDecoder now also supports reading features from other tables than the table containing the geometries.

    Bug fixLuciadFusion

    WCS DescribeCoverage requests for an ILcdCoverageOffering with null bounds now produce a descriptive error message rather than an exception.

    Bug fixLuciadFusion

    TLcdLonLatHeightPolyline calculated its bounds in 2 instead of in 3 dimensions.

    Bug fixLuciadFusion

    Error message "Model changed received from model which is not contained in this view" used to be displayed when a model changed event was fired for a model of which the layer was added twice and removed once (or just added more often than it was removed).

    Bug fixLuciadFusion

    The warping raster painters no longer paint ghosting artifacts in some projections.

    Bug fixLuciadFusion

    The warping raster painters no longer produce blocky artifacts near the edges of the projections. They also properly paint rasters that wrap around the 180-degrees meridian.

    Bug fixLuciadFusion

    TLcdImageIcon now has an implementation for hashCode.

    Bug fixLuciadFusion

    TLcdSHPModelDecoder did not correctly decode polylineZ and polygonZ objects. As a result only the first object in the SHP file was decoded.

    Bug fixLuciadFusion

    TLcdGXYSelectController clear the previous selection when dragging in ALTERNATE mode. It now adds the objects selected in the rectangle to the current selection.

    Bug fixLuciadFusion

    TLcdGXYEditController now checks whether its selection is editable. If not, it reverts to the behaviour of the select controller. This allows dragging a rectangle from within a polygon, which was previously not possible, since the edit controller would try to edit the selected polygon.

    Bug fixLuciadFusion

    TLcdWKTReferenceParser did not correctly decode Lambert Conformal projections.

    Bug fixLuciadFusion

    Switching poles in a TLcdPolarStereographic projection gave incorrect results.

    Bug fixLuciadFusion

    The rotational parameters for some geodetic datums in TLcdJPLGeodeticDatumFactory were incorrect.

    Bug fixLuciadFusion

    Closing the OutputStream object in a custom implementation of ILcdModelEncoder resulted in a duplication of the result. This bug has been fixed.

    Bug fixLuciadFusion

    The list of TLcdImageIcon objects created stored in TLcdImageIcon contained duplicates, decreasing the caching performance.

    Bug fixLuciadFusion

    All ILcdISO19115Entity implementations now uniformly implement ILcdCollectionFeaturedDescriptor. Before, only ILcdISO19115Entity implementations with one or more multivalued features implemented this interface. The implementation for classes without multivalued features delegates to ILcdFeaturedDescriptor.getFeatureClass(int).

    Bug fixLuciadFusion

    TLcdMultivaluedRasterModelDescriptor has been fixed so the argument names of its constructor reflect the correct order of source name, type name, and display name.

    Bug fixLuciadFusion

    TLcdLonLatFormatter has been fixed to correctly format according to the DEC_MIN_1, DEC_MIN_2, and NSWE2. The formatter also supports new formats DEFAULT1, SHORT_DEC_DEG_x, SHORT_DEC_MIN_x, and SHORT_DEC_SEC_x.

    Bug fixLuciadFusion

    Each ALcdISO19103CodeList implementation that is not declared final now overrides the protected method addCode(ILcdISO19103Code) to check whether the supplied code has the correct type. For example, TLcdISO19115DateTypeCodeList now only accepts TLcdISO19115DateTypeCode instances. If the check fails, an IllegalArgumentException is thrown.

    Bug fixLuciadFusion

    TLcdPropertyCanvasSW no longer directly calls JComponent.paint.

    Bug fixLuciadFusion

    TLcdGXYPointListPainter and TLcdGXYBufferPainter will only accept snap targets when one of their points is touched. Point lists which are dragged by a segment over a point to which it can snap will no longer trigger painting a snap icon when no point of the point list is touched by the mouse.

    Bug fixDefense Standards

    TLcdNITFModelDecoder now correctly decodes the bounds of geodetic rasters that wrap around the 180-degrees meridian.

    Bug fixDefense Standards

    TLcdUSRPModelDecoder now correctly decodes the position of ASRP rasters with padding.

    Bug fixDefense Standards

    The data quality descriptor can now handle dqt files containing empty date attributes.

    Bug fixDefense Standards

    TLcdUSRPModelDecoder now correctly handles transparent colors.

    Bug fixMaritime Standards

    Using a custom ILcdInputStreamFactory no longer causes the checksum validation to fail.

    Bug fixMaritime Standards

    A bug, occuring when an object class of type soundings or meta coverage is excluded from the decoded model, is fixed.

    5.3

    ImprovementLuciadFusion

    TLcdMIFModelEncoder can have an ILcdOutputStreamFactory set. This factory is used to create output streams in the methods createBufferedWriter() and createMIDBufferedWriter().

    ImprovementLuciadFusion

    TLcdDistanceUnit, TLcdSpeedUnit and TLcdAltitudeUnit implement the new interface ILcdISO19103UnitOfMeasure.

    ImprovementLuciadFusion

    com.luciad.util.iso19103 contains utility classes as defined in the ISO standard 19103:
    • ILcdISO19103CodeList: an extendable list of constants.
    • ILcdISO19103Code: an element of a code list.
    • ILcdISO19103UnitOfMeasure: a general definition of units for measurements.
    • ILcdISO19103Measure: a general definition of a measurement.
    • ILcdISO19103Record: an interface for a dictionary, where values are referred to by String keys.
    • TLcdISO19103MeasureTypeCode: codes for types of measurement.

    ImprovementLuciadFusion

    ILcdCollectionFeaturedDescriptor is an extension to ILcdFeaturedDescriptor which adds a level of redirection for features which are multivalued. As a feature can be multivalued, the class of the feature is a collection, an Enumeration for example. This hides the class of the objects inside the collection. The ILcdCollectionFeaturedDescriptor allows to retrieve the class of elements in the collection.

    ImprovementLuciadFusion

    TLcdMultilevelRasterPainter, TLcdNoWarpMultilevelRasterPainter, and TLcdWarpMultilevelRasterPainter now provide utility methods to find the most suitable raster level in a multi-level raster, in a given context.

    ImprovementLuciadFusion

    com.luciad.metadata.iso19115 and com.luciad.metadata.iso19139 are two new packages which contain implementations for the ISO 19115 standard and ISO 19139 draft on metadata. ISO 19115 contains a comprehensive conceptual description of a metadata which can be associated to a dataset. The package com.luciad.metadata.iso19115 contains a java implementation of this schema. ISO 19139 describes an XML implementation of the ISO 19115 standard and describes how XML files containing metadata information should be structured. The package com.luciad.metadata.iso19139 enables decoding these XML files. As ISO 19139 is not yet an accepted standard this code has to be considered as beta code at least until the ISO 19139 is published as a standard.

    ImprovementLuciadFusion

    TLcdRasterModelDecoder now attaches TLcdRSTModelDescriptor instances or TLcdMultilevelRSTModelDescriptor instances to decoded models.

    ImprovementLuciadFusion

    TLcdJAIModelDecoder, TLcdTABRasterModelDecoder, and TLcdTFWRasterModelDecoder now attach TLcdJAIModelDescriptor instances or TLcdMultilevelJAIModelDescriptor instances to decoded models.

    ImprovementLuciadFusion

    TLcdGeoTIFFModelDecoder now attaches TLcdGeoTIFFModelDescriptor instances or TLcdMultilevelGeoTIFFModelDescriptor instances to decoded models.

    ImprovementLuciadFusion

    TLcdGXYLayerLabelPainter and TLcdGXYViewLabelPainter no longer keep a reference to the ILcdGXYLayer they last used.

    ImprovementLuciadFusion

    TLcdGXYLayer.applyOnInteract was keeping a reference to the ILcdFunction argument last passed when an TLcdOutOfBoundsException occurred.

    ImprovementLuciadFusion

    TLcdGXYSelectController no longer keeps dangling reference to ILcdGXYLayer is has last used.

    ImprovementLuciadFusion

    TLcdGXYMagnifierController now cleans up its listeners from the ILcdGXYView.

    ImprovementLuciadFusion

    TLcdTiled2DBoundsIndexedModel no longer keeps a dangling reference to the ILcdFunction that is passed in applyOnInteract2DBounds.

    ImprovementLuciadFusion

    These classes no longer keep a strong reference from the listener they add to an associated object to themselves (requires Java 1.2 or above to be available). The classes are: TLcdModelList, TLcdGXYLayerList, all ILcdGXYView implementations and TLcdLayer (TLcdGXYLayer is extension of TLcdLayer). This simplifies garbage collection of ILcdGXYView objects, ILcdGXYLayer objects, and so on. Prior to this enhancement, users of the API had to explicitly remove an object from its parent. For example, it was needed to use TLcdLayer.setModel( null ) to make sure a layer was garbage collected when the ILcdModel was still used elsewhere.

    ImprovementLuciadFusion

    These classes now clone their collection of listeners before firing an event: TLcdSelectionSupport, TLcdStatusEventSupport, TLcdGXYOverviewController, TLcdMapGeorefGridLayer, TLcdMapLonLatGridLayer, TLcdUPSGridLayer, TLcdUTMGridLayer, TLcdLayeredSupport and TLcdPropertyChangeDispatcher. This allows listeners to remove themselves while handling an event.

    ImprovementAdvanced Raster Services

    TLcdECWModelDecoder now attaches TLcdECWModelDescriptor instances to decoded models.

    ImprovementAdvanced Raster Services

    TLcdGeoSPOTModelDecoder now attaches TLcdGeoSPOTModelDescriptor instances to decoded models.

    ImprovementAdvanced Raster Services

    TLcdMrSIDModelDecoder now attaches TLcdMrSIDModelDescriptor instances to decoded models.

    ImprovementTerrain Analysis Engine

    TLcdTerrainRulerController is an TLcdAdvancedMapRulerController extension which takes into account the terrain underneath when computing the distance between consecutive points.

    ImprovementTerrain Analysis Engine

    TLcdTerrainDistanceUtil is a utility class that calculates the distance between two points taking into account the terrain underneath. To this end a terrain elevation provider (ALcdTerrainElevationProvider) and a segment scanner (ILcdSegmentScanner) should be provided. The segment scanner determines the path to follow between the two points. The terrain elevation provider provides the elevation data for the intermediate points generated by the segment scanner.

    ImprovementTerrain Analysis Engine

    TLcdGXYViewBasedTerrainElevationProvider and TLcdVVTerrainProfileModel no longer keep a strong reference from the listener they add to an associated object to themselves (requires Java 1.2 or above to be available). This simplifies garbage collection of these classes. Prior to this enhancement, it was necessary to use TLcdGXYViewBasedTerrainElevationProvider.setGXYView( null ) or TLcdVVTerrainProfileModel.setPointListGXYLayer( null ) to make sure a TLcdGXYViewBasedTerrainElevationProvider or TLcdVVTerrainProfileModel were garbage collected when the (terrain) layers were still used elsewhere.

    ImprovementInfrastructure Standards

    samples.decoder.dgn.MainApplet now illustrates the decoding and display of DGN files.

    ImprovementMaritime Standards

    TLcdS57Point now has a setter/getter pair for its minimum depth.

    ImprovementMaritime Standards

    The S-52 Presentation Library (style tables, conditional symbology) is upgraded to version 3.3.

    ImprovementMaritime Standards

    Two new classes, TLcdS57DepthAreaEdgeModel and ILcdS57DepthAreaEdge, are provided in the S-57 package, providing access to the individual edges of depth areas, and some of their properties thar are required for their visualisation in S-52. As a result, the safety contour can now be calculated more precisely, when the safety depth does not correspond to one of the predefined depth contours.

    ImprovementMaritime Standards

    Performance of the TLcdS57ModelDecoder is increased for models containing large numbers of points.

    ImprovementMaritime Standards

    A new class, TLcdS52CatalogueLayerList, was added, which enhances multileveling performance of S-52. This class depends on the JTS library, which is from now on included in the ECDIS module.

    ImprovementMaritime Standards

    Depth contour labels are painted now.

    Bug fixLuciadFusion

    TLcdSphereUtil did not return the correct point when looking for the closest point to a point on a geodetic segment when the point was one of the end points of the segment.

    Bug fixLuciadFusion

    TLcdSHPModelEncoder can encode BigInteger features as numericals. This is mainly a convenience for models produced by database model decoders. The TLcdSHPModelDecoder will not produce BigInteger objects when decoding the same dbf file.

    Bug fixLuciadFusion

    TLcdGXYLayer had no intention to stop painting when stopPainting() was called on a layer which had a ILcd2DBoundsIndexedModel.

    Bug fixLuciadFusion

    The fonts used to display MIF and MAP true type font symbols have a slightly larger size. In some cases the details of the symbols were lost because the font size was too small as compared to the size defined in the MAP file.

    Bug fixLuciadFusion

    TLcdVVJPanel has a new property snapViewToGrid which by default is true (for backward compatibility reasons). When switching to false the vertical view no longer snaps to multiples of 10,100,1000,... but instead shows a grid line with the actual minimum and maximum set to the view.

    Bug fixLuciadFusion

    TLcdSHPModelDecoder can have a character set set for DBF decoding. This enables decoding of DBF files with characters not in the ISO8859-1 set.

    Bug fixLuciadFusion

    TLcdGXYBoundsPainter no longer accepts a snap target if not one of the corner points is touched. This allows snapping only when one of the four corner points is over another point.

    Bug fixMaritime Standards

    The decimal value for sounding depths is shown now for depths less than 31 meters.

    Bug fixMaritime Standards

    Overscale indication is now painted only when the current map scale is more than two times larger than the compilation scale, as suggested in the updated S-52 specification.

    Bug fixMaritime Standards

    A bug in the update mechanism, causing some updated not being applied correctly, was fixed.

    Upgrade considerationLuciadFusion

    All domain objects of the core, such as TLcdXYCircle, TLcdLonLatEllipse and so on, and all optional modules now implement their ILcdCache using weak references to the keys. This allows cleaning up the value if a key is no longer strongly reachable. Although this change is marked incompatible, the actual incompatibilities you experience should be minimal. You will only be affected if you wrote your own code (an ILcdGXYPainter for example) that stores information in the ILcdCache of domain objects using an object as a key that is not strongly referenced elsewhere. For example, if you are using a construct similar to ILcdCache.insertIntoCache( new MyKey(), new MyValue ), you might experience a performance degradation for that specific part. If you use constructs similar to ILcdCache.insertIntoCache( this, new MyValue ), you will not be affected. If needed, the behavior of the caches can be reverted to its original behavior using com.luciad.util.TLcdCache.setUseWeakKeyReferences( false ).

    Upgrade considerationMaritime Standards

    The library no longer contains the Day White Back and Day Black Back color schemes (they are no long supported by the S-52 standard). The DAY_WHITE_BACK_COLORS and DAY_BLACK_BACK_COLORS constants defined in ILcdS52Symbology are deprecated and should no longer be used.

    Upgrade considerationMaritime Standards

    The conditional procedures variables defined in ILcdS52ConditionalSymbology are replaced by new ones, which no longer have a number in their name. The old ones, with numbers, are made deprecated and should no longer be used.

    Upgrade considerationMaritime Standards

    ILcdS57Object and its implementations now have a method getGroup(), returning the group to which the object belongs. Correspondingly, a method setGroup() has been added to ILcdS57EditableObject and its implementations.

    Upgrade considerationMaritime Standards

    TLcdS52ModelListBuilder now adds an additional model to the constructed modellist: a TLcdS57DepthAreaEdgeModel is added in the modellist containing line features with display priority 8. This model is contains the edges of all depth areas in the original model. These edges are the spatial components making up the depth areas, and are not S-57 objects themselves; they do not implement the ILcdS57Object interface.

    Upgrade considerationMaritime Standards

    Isolated dangers in shallow water can be painted now. ILcdS52ConditionalSymbology, TLcdS52ConditionalSymbology and TLcdS52GXYPainterProvider have a setter and getter added.

    5.2

    5.2.03

    ImprovementLuciadFusion

    TLcdMIFPenGXYPainterStyle and TLcdMIFBrushGXYPainterStyle now have public setters for the line style and fill style, respectively, making it easier to modify the default MIF symbolization.

    ImprovementLuciadFusion

    TLcdLonLatGridPainter now sends out PropertyChangeEvent objects with the correct old values.

    ImprovementLuciadFusion

    TLcdGXYViewFitAction will produce some output on TLcdLog when the fit failed and tracing is on.

    ImprovementLuciadFusion

    TLcdMapLocation will produce some output on TLcdlog when no view is set and tracing is on.

    ImprovementLuciadFusion

    TLcdGeoTIFFModelDecoder, TLcdTFWRasterModelDecoder, and TLcdBILModelDecoder now use filename extensions with matching case when looking for corresponding metadata files.

    ImprovementAdvanced Raster Services

    TLcdECWModelDecoder now uses filename extensions with matching case when looking for corresponding metadata files.

    ImprovementAdvanced Raster Services

    TLcdMrSIDModelDecoder now uses filename extensions with matching case when looking for corresponding metadata files.

    ImprovementAviation Standards

    The available configuration properties in com.luciad.format.aixm.TLcdAIXMLayerConfiguration are now fully documented.

    ImprovementAviation Standards

    The available configuration properties in TLcdDAFIFLayerConfiguration are now fully documented.

    ImprovementAviation Standards

    The available configuration properties in TLcdARINCLayerConfiguration are now fully documented.

    ImprovementInfrastructure Standards

    com.luciad.format.dgn.server.TLcdDGNMicroStationServlet now uses TLcdModelReferenceDecoder for trying to decode model references on the server side.

    Bug fixLuciadFusion

    Previously the TLcdGXYEditController would edit the selection even if it was not touched. This lead to unexpected results when selecting in ALTERNATE mode by dragging the mouse. The edit controller now checks whether at least one object in the selection is touched.

    Bug fixLuciadFusion

    TLcdGXYEditController wrongfully removed objects from the snappables when they were removed from the selection.

    Bug fixLuciadFusion

    TLcdVVJPanel has an extra property to set whether the label of a point should painted while editing the point. For backward compatibility the property is initialized to true.

    Bug fixLuciadFusion

    TLcdGXYNewController now asks the painter of the snap target to paint in SNAPS mode (usually this is a snap icon) when snapping to objects defined in another reference. Though snapping to objects defined in other references was enabled, it was not visually marked by the appearance of snap icons.

    Bug fixLuciadFusion

    TLcdModelList now also redispatches ALL_OBJECTS_CHANGED to its associated listeners.

    Bug fixDefense Standards

    TLcdNITFModelDecoder now handles NITF 2.0 files with geocentric references (ICORDS = "C").

    Bug fixInfrastructure Standards

    com.luciad.format.dgn.server.TLcdDGNMicroStationModelDecoder no longer throws a NullPointerException when decoding tags without transformations.

    Bug fixInfrastructure Standards

    com.luciad.format.dwg.TLcdDWGModelDecoder now correctly fills out the source name in the model descriptor.

    Bug fixInfrastructure Standards

    com.luciad.format.dwg.TLcdDWGModelDecoder now decodes bulges of LWPOLYLINE objects.

    Bug fixInfrastructure Standards

    com.luciad.format.dgn.server.TLcdDGNMicroStationClientModelDecoder now encodes the ampersands in its URLs.

    Bug fixMaritime Standards

    Pen width of symbols is taken into account now (was always 1 before).

    Bug fixMaritime Standards

    The fractional value of sounding points between 10 and 31 meters is shown now (only fractional values of sounding points under 10 meters were displayed before).

    Upgrade considerationAviation Standards

    Improvements have been made to com.luciad.ais.shape.TLcdDiscretizedLonLatGeoPath to prevent self-intersecting discretizations, which is typically caused by data inaccuracies. In particular, the discretization of ILcdGeoPathLeg instances of the type ILcdGeoPathLeg.ARC and ILcdGeoPathLeg.SUB_POINT_LIST are adapted to resolve these self-intersections. Additionally, the parameter list of an ILcdGeoPathLeg of type ILcdGeoPathLeg.ARC can now optionally be extended with a radius, which will be used in the case of an inaccurate arc center. This change will only be incompatible in some implementations which have an explicit check on the number of parameters associated with an ILcdGeoPathLeg instance of type ILcdGeoPathLeg.ARC: this was before exactly 4 but can now be 5.

    5.2.02

    ImprovementDefense Standards

    TLcdUSRPModelDecoder now uses filename extensions with matching case when looking for corresponding QAL/GEN files.

    Bug fixDefense Symbology

    The APP-6A symbols with coding scheme 'Military Operations' ('G' as first character) were only supported if they had 'Control Markings' as value for the 'Order Of Battle' ('X' as last character). This was not correct according to the specification and has been fixed: each 'Order Of Battle' value is now supported for these symbols.

    5.2.01

    ImprovementLuciadFusion

    TLcdDTEDColorModelFactory now creates a default ColorModel that also has colors for negative elevations (depths).

    Bug fixLuciadFusion

    TLcdMAPModelDecoder now properly decodes the color of TrueType font symbols.

    Bug fixLuciadFusion

    TLcdMAPModelDecoder and TLcdMIFModelDecoder now support the multipoint and collection geometry types (with new MIF shape classes TLcdMIFMultipoint and TLcdMIFCollection).

    Bug fixLuciadFusion

    TLcdGMLModelEncoder and TLcdGMLSchemaEncoder now prefix attribute names (obtained vian ILcdFeatured) with an underscore if they start with a numerical digit. XML does not allow element names to start with a digit, so this scenario previously resulted in unreadable GML files.

    Bug fixLuciadFusion

    The raster painters now properly take into account scaling of the Graphics objects when checking the densities of rasters to be painted.

    Bug fixLuciadFusion

    TLcd2DBoundsIndexedModel.applyOnInteract2DBounds now correctly applies the given function to points that are clumped together.

    Bug fixMaritime Standards

    Light descriptions (procedure LITDSN01) are painted now.

    Bug fixMaritime Standards

    Missing pattern fills in dredged areas are painted now.

    Bug fixMaritime Standards

    Soundings are now being painted when the display category is DISPLAY_BASE or STANDARD and the setDisplaySoundings flag is set on the S52 painter provider.

    5.2

    ImprovementLuciadFusion

    TLcdVVJPanel has a property buffered which when set to true caches the grid lines, the main profile and the subprofiles thus improving performance. The default value is false for backward compatibility reasons.

    ImprovementLuciadFusion

    TLcdPrintComponentAction now supports more flexible print scaling and better quality and memory usage.

    ImprovementLuciadFusion

    The new class TLcdGeoTIFFModelEncoder provides support for encoding raster models as GeoTIFFs.

    ImprovementLuciadFusion

    TLcdDefaultObjectInModelFilter has improved performance for ILcd2DBoundsIndexedModel implementations.

    ImprovementLuciadFusion

    TLcdGXYSelectController allows control over the fact whether interaction with the selection clip should be strict or not. Default setting is false for backwards compatibility. Setting this value to true can have an effect on performance if the view contains layers with data which is lazily loaded.

    ImprovementLuciadFusion

    TLcdVVJPanel has new methods getMin/MaxViewAltitude which return the model altitudes of the top and bottom pixels in the vertical view. This facilitates the transformation of pixel coordinates to model altitudes.

    ImprovementLuciadFusion

    The class com.luciad.view.gxy.controller.TLcdGXYContinuousPanController has been introduced. This extension of the standard pan controller allows for continuous panning, i.e. without blank borders around the edges of the view. The raster painters (TLcdRasterPainter and TLcdMultilevelRasterPainter) have been extended with new features that enhance the performance of continuous pan operations for raster data. A demonstration of these new features can be found in the samples.continuouspan package.

    ImprovementLuciadFusion

    A new interface ILcdWFSFilteredModelFactory has been introduced. ALcdOGCWFSCommandDispatcherFactory has been extended accordingly, with a new createFilteredModelFactory() method. This method can be overridden by applications that wish to extend or reimplement the filtering behaviour of the WFS. The default implementation performs filtering exactly as it was done in previous LuciadMap versions. Please refer to the API documentation for further details.

    ImprovementLuciadFusion

    The WFS now supports the MAXFEATURES parameter, allowing clients to restrict the number of features returned by a query.

    ImprovementLuciadFusion

    TLcdVVAltitudeRangeSliderJPanel listens to the vertical view jpanel to adapt its minimum and maximum when this is set by any other source than the slider.

    ImprovementLuciadFusion

    TLcdDefaultVVRenderer can have a formatter set to paint the labels of the points of the main profile.

    ImprovementLuciadFusion

    The TLcdDMEDModelDecoder and TLcdDTEDDirectoryModelDecoder now have the flag to fall back to higher resolution DTED levels set to false, by default. This is done to avoid unexpected long loading times when only high resolution DTEDs are available. The flag can still be set to true to obtain the previous default behavior.

    ImprovementLuciadFusion

    The TLcdDMEDModelDecoder, and TLcdDTEDDirectoryModelDecoder now allow to check the presence of DTED tiles immediately instead of lazily. Raster levels that are not present are not created.

    ImprovementLuciadFusion

    The TLcdDMEDModelDecoder, TLcdDTEDModelDecoder, and TLcdDTEDDirectoryModelDecoder now support geodetic datums other than the standard WGS84.

    ImprovementLuciadFusion

    The TLcdDMEDModelDecoder, TLcdDTEDModelDecoder, and TLcdDTEDDirectoryModelDecoder now also retrieve DTED metadata.

    ImprovementLuciadFusion

    The TLcdCADRGModelDecoder now also retrieves CADRG/CIB metadata.

    ImprovementLuciadFusion

    The new ILcdDatabaseEncoder2 interface supports updating by means of a single UPDATE statement instead of a DELETE statement followed by an INSERT statement. Apart from being more efficient, it also solves some problems with automatically generated keys.

    ImprovementLuciadFusion

    The vertical view has methods to retrieve and set the location of the vertical cursor at a point of the main profile.

    ImprovementDatabase Connectors

    Updating is now performed in a single UPDATE statement instead of a DELETE statement followed by an INSERT statement. Apart from being more efficient, it also solves some problems with automatically generated keys.

    ImprovementGraph and Routing Engine

    The setDecodeCurviMetricPositionMeasurement flag is removed from TLcdGDFModelDecoder. The data supplier name field in the header record is used now to detect whether the data are created by a provider not supporting the curvimetric position measurement field.

    ImprovementGraph and Routing Engine

    As of LuciadMap 5.2, this package is no longer BETA.

    ImprovementGraph and Routing Engine

    As of LuciadMap 5.2, this package is no longer BETA.

    ImprovementTerrain Analysis Engine

    TLcdP2PFactory and TLcdRadarP2PFactory have been enhanced. They have the ability to
    • support points in any reference,
    • support terrain data in any reference,
    • control the sampling rate of the underlying terrain data,
    • return a point list in any given reference.
    The results are stored in implementations of the ILcdExtendedPoint2Pointintervisibility which is an extension of ILcdPoint2PointIntervisibility. The result implements ILcdPointList with the input points contained as points in a given reference.

    ImprovementTerrain Analysis Engine

    TLcdLOSFactory and TLcdRadarCoverage have been enhanced. They have the ability to
    • support center points in any reference,
    • support terrain data in any reference,
    • return LOS/radar rasters in any reference, with a pixel density independent of the underlying terrain data,
    • return LOS/radar rasters which contain minimum or maximum or nearest neighbor values,
    • return LOS/radar rasters which contain altitudes above terrain or above mean sea level (AMSL),
    • control the sampling rate of the underlying terrain data.
    The resulting rasters are contained in a class which implements the new interface ILcdExtendedLineOfSightCoverage, an extension of ILcdLineOfSightCoverage.

    ImprovementTerrain Analysis Engine

    The profile view and the vertical view support negative altitudes (depths).

    ImprovementAviation Standards

    A new interface com.luciad.ais.model.aerodrome.ILcdRunwayClinePoint has been added to model centre line points of a runway. It has an editable extension ILcdEditableRunwayClinePoint, a default implementation TLcdRunwayClinePoint and a featured extension TLcdFeaturedRunwayClinePoint. The AIS domain object factory com.luciad.ais.model.ALcdAISObjectFactory is extended with two methods to create runway centre line points.

    ImprovementAviation Standards

    The package com.luciad.format.aixm is a new LuciadMap option, available since v5.2. This option can be used to decode AIXM data. A developer guide and a sample are included.

    ImprovementAviation Standards

    A new domain object is added to AIS to represent association-based airspaces. These airspaces are built from other airspaces (single or also association-based) using different geometric combinations or association types. The AIXM specification was taken as the basis for this domain object. The basic interface is com.luciad.ais.model.airspace.ILcdAssociationBasedAirspace, which extends from ILcdShapeList. It has an editable extension ILcdEditableAssociationBasedAirspace, a default implementation TLcdAssociationBasedAirspace and a featured extension TLcdFeaturedAssociationBasedAirspace. An association-based airspace contains one or more associations; these associations are represented by a new interface ILcdAirspaceAssociation, which has a default implementation TLcdAirspaceAssociation. An ILcdAirspaceAssociation contains an airspace (single or association-based), an association type and a sequence number. The association type is one of the types defined by the new type safe enumeration class TLcdAirspaceAssociationType. Furthermore, the interface com.luciad.ais.model.airspace.ILcdGenericAirspace is introduced to have a new top-level airspace; the interfaces ILcdAirspace and ILcdAssociationBasedAirspace are extensions from this general interface. The airspace painter com.luciad.ais.symbology.icao.TLcdICAOAirspacePainter and airspace label painters com.luciad.ais.symbology.icao.TLcdICAOAirspaceLabelPainter and com.luciad.ais.symbology.icao.TLcdICAOAirspaceDetailedLabelPainter are updated to provide support for ILcdAssociationBasedAirspace objects (next to the previously supported ILcdAirspace objects). The AIS domain object factory com.luciad.ais.model.ALcdAISObjectFactory is extended with two methods to create association-based airspaces.

    ImprovementAviation Standards

    A new ILcdARINCHandler implementation has been added to com.luciad.format.arinc.decoder to decode heliports: TLcdARINCHeliportHandler.

    ImprovementDefense Standards

    Data quality information is now available for VPF databases, libraries and coverage, via the new class TLcdVPFDataQualityDescriptor.

    ImprovementDefense Standards

    com.luciad.format.raster.TLcdUSRPModelDecoder now also supports TRANSH01.THF table of contents files.

    ImprovementDefense Standards

    com.luciad.format.raster.TLcdUSRPModelDecoder now also retrieves USRP/ASRP/ADRG metadata.

    ImprovementDefense Symbology

    The classes com.luciad.symbology.milstd2525b.view.swing.TLcdMS2525bObjectCustomizer and com.luciad.symbology.app6a.view.swing.TLcdAPP6AObjectCustomizer have been extended with two new constructors, which let the user supply an ILcdStringTranslator instance (see the package com.luciad.util). The API documentation contains a list of String objects for which the method translate(String) in ILcdStringTranslator will be invoked. By using a custom ILcdStringTranslator, one can provide support for a different language.

    ImprovementMaritime Standards

    TLcdS57CatalogueModelDecoder now supports different mechanisms of loading. Besides immediate loading all data, lazy loading using soft or weak references is supported now. The loading policy can be set via the setLoadingPolicy() method.

    ImprovementMaritime Standards

    TLcdS57CatalogueModelDecoder now supports multileveled data. Catalogues containing data on different levels will be decoded into a modellist, containing a model for each level.

    Bug fixLuciadFusion

    TLcdGMLModelEncoder now properly sets up default namespaces and other properties such that in its default state, it produces files which are readable by TLcdGMLModelDecoder.

    Bug fixLuciadFusion

    TLcdFeaturedPointGXYLayerCodec, TLcdFeaturedPolygonGXYLayerCodec and TLcdFeaturedPolylineGXYLayerCodec used 'new int[]{0}' as default feature indices. This means that if there is an ILcdFeaturedDescriptor, but no features are available (for example .dbf file cannot be read for .shp files), exceptions are thrown when labeling is enabled (or selection + selection labeled). They now use 'null' as default feature indices.

    Bug fixLuciadFusion

    TLcdMapLocation returns the string mi/pixel as unit for the scale expressed in miles per pixel.

    Bug fixLuciadFusion

    TLcdMIFModelDecoder returned a TLcdVectorModel when the decoded model contained only 1 point, regardless of the setting of useIndexedModel. It now returns a TLcd2DBoundsIndexedModel.

    Bug fixLuciadFusion

    The WMS now defers the sending of GetMap and GetFeatureInfo results until the features have been successfully encoded. This ensures that partially encoded data does not get sent to the client, only to be followed by a service exception report.

    Bug fixLuciadFusion

    The WFS now defers the sending of GetFeature results until the features have been successfully encoded. This ensures that partially encoded data does not get sent to the client, only to be followed by a service exception report.

    Bug fixLuciadFusion

    The WCS now defers the sending of GetCoverage results until the coverages have been successfully encoded. This ensures that partially encoded data does not get sent to the client, only to be followed by a service exception report.

    Bug fixDatabase Connectors

    The interpretation of geodetic arcs and circles has been improved.

    Bug fixTerrain Analysis Engine

    Line-of-sight rasters now also create images. As a result they can now also be painted by no warp raster painters.

    Bug fixAviation Standards

    The methods setBeginPoint(ILcdPoint) and setEndPoint(ILcdPoint) in the class com.luciad.ais.model.route.TlcdRouteSegment cloned the supplied point as an ILcd3DEditablePoint, making it impossible to retain specific implementations (e.g. featured) of ILcdPoint. This clone operation has now been removed.

    Bug fixInfrastructure Standards

    com.luciad.format.dgn.TLcdDGNMicroStationModelDecoder now decodes the correct positions and sizes of displayable tags.

    Bug fixMaritime Standards

    No S52 complex strokes are used when running Mac OS X (custom strokes are not supported yet in Mac OS X current Java distribution).

    Upgrade considerationLuciadFusion

    When doing a GetFeature request, earlier versions of the WFS looked for any <PropertyName> elements in the "wfs" namespace. The WFS specification, however, places these elements in the "ogc" namespace. The WFS has been modified to conform with the specification, which means that applications may need to be updated accordingly.

    Upgrade considerationGraph and Routing Engine

    The com.luciad.network.graph.partition package is extended with support for partitioned graph events.

    Upgrade considerationGraph and Routing Engine

    TLcdGDFMultilevelTiledModelEncoder now implements ILcdModelEncoder. The method encode has been renamed to export.

    Upgrade considerationGraph and Routing Engine

    The boolean argument 'inverseDirection' in ILcdEdgeValueFunction has been replaced by a typesafe enumeration com.luciad.network.graph.TLcdTraversalDirection.

    Upgrade considerationGraph and Routing Engine

    The editing methods (addNode, removeNode, ...) of ILcdEditableGraph and ILcdLimitedEditableGraph interfaces and their implementations do no long perform any checks on the validity of their arguments. The checks on the arguments have been formulated as preconditions now, and can be checked explicitly via the corresponding 'can...' method (canAddNode, canRemoveNode). As a consequence, editing performance of graphs is increased significantly.

    Upgrade considerationGraph and Routing Engine

    The network.graph.partition package has been reorganized. The interface ILcdBoundaryEditablePartitionedGraph and ILcdEditablePartitionedGraph have been removed. TLcdEditablePartitionedGraph has been renamed to TLcdPartitionedGraph and extends now TLcdLimitedEditablePartitionedGraph.

    Upgrade considerationGraph and Routing Engine

    Event support is added to all graph interfaces and implementations. All existing calls to graph methods, requiring an ILcdFireEventMode, can be called with ILcdFireEventMode.NO_EVENT to obtain the same effect as before.

    Upgrade considerationGraph and Routing Engine

    All model descriptor interfaces (ILcdGDFDatasetModelDescriptor, ILcdGDFLayerModelDescriptor, IlcdGDFSectionModelDescriptor) have been replaced by concrete classes.

    Upgrade considerationAviation Standards

    The interface com.luciad.ais.model.route.ILcdEditableRoute has been extended with two methods removeSegment(ILcdRouteSegment) and removeSegmentAt(int) which make it possible to remove ILcdRouteSegment objects. To remain compatible, each implementation of this interface (either directly or through an extension) should provide an implementation for these methods:
    • removeSegment(ILcdRouteSegment) removes the given ILcdRouteSegment object from the route.
    • removeSegmentAt(int) removes the ILcdRouteSegment with the given index from the route.

    Upgrade considerationAviation Standards

    The return type of the method getAirspace() in com.luciad.ais.symbology.icao.TLcdICAOAirspaceDetailedLabelPainter and in com.luciad.ais.symbology.icao.TLcdICAOAirspaceLabelPainter has been changed from ILcdAirspace to the more general interface ILcdGenericAirspace from which ILcdAirspace extends. It is however improbable that this method is called from user code.

    5.1

    5.1.08

    Bug fixLuciadFusion

    ALcdShapeList updates its focus point when a new set of shapes is set to the shape list.

    Bug fixAviation Standards

    When using the default constructor of TLcdDAFIFDefaultLayerFactory, each created layer was initially not visible.

    Bug fixAviation Standards

    When using the default constructor of TLcdARINCDefaultLayerFactory, each created layer was initially not visible.

    Bug fixInfrastructure Standards

    com.luciad.format.dwg.TLcdDWGModelDecoder no longer throws exceptions with "Unexpected handle code" for polygons without points.

    Bug fixMaritime Standards

    A problem with the visualization of complex polygons is fixed.

    5.1.07

    ImprovementLuciadFusion

    TLcdWKTReferenceParser now decodes the prime meridian and the angular units. This enables the TLcdEPSGReferenceParser to decode the following references:
    • France: EPSG codes 27571-27274, 27581-27584, 27591-27594, 2192
    • Cuba: EPSG codes 2085, 2086
    • Guatemala: EPSG codes 32061, 32062
    In order to decode these references correctly the lcd_epsg_resources.jar needs to be updated.

    Bug fixLuciadFusion

    Removed a possible deadlock during view painting when the paintInBackground was active on a view.

    Bug fixLuciadFusion

    TLcdGMLSchemaDecoder now recognizes elements of which the type is defined by a nested <simpleType> element. Such elements were previously ignored.

    Bug fixLuciadFusion

    TLcdDIMAPModelDecoder now properly fills out the source name in the decoded TLcdDIMAPModelDescriptor.

    Bug fixReal-time Engine

    TLcdTrackModel now implements the method allElementsChanged. This method rearranges the objects so that they are put in the correct bucket. In absence of this method objects were not painted when moving from one bucket to another with the original bucket not showing in the view while the new bucket shwoing in the view.

    Bug fixAviation Standards

    The class com.luciad.ais.shape.TLcdDiscretizedLonLatGeoPath has been extended with a method invalidate(), which makes it possible to discard the cached discretisation and recalculate it. This is necessary when an individual ILcdGeoPathLeg has been changed. Other domain object implementations of ILcdGeoPath that performed a discretisation using this class had the same problem: TLcdAirspace, TLcdHelipad and TLcdParachuteJumpArea. These classes have also been extended with a method invalidate().

    5.1.06

    ImprovementLuciadFusion

    TLcdBufferedTile now provides methods to retrieve the file name and image index of the tile that it reads.

    Bug fixDefense Symbology

    The sample ProGuard file luciadmap.pro did not contain the right commandos for the MIL-STD 2525b and APP6a symbology painters.

    5.1.05

    Bug fixLuciadFusion

    Fixed null pointer exception which sometimes occurred when resizing a view with paint in background enabled.

    Bug fixLuciadFusion

    Fixed deadlock when panning with paint in background enabled on a view.

    Bug fixLuciadFusion

    TLcdGXYBoundsPainter no longer paints the outline of the bounds when it is in FILLED mode. The outline is now only painted when the painter is in OUTLINED or OUTLINED_FILLED mode.

    Bug fixLuciadFusion

    TLcdMIFModelEncoder no longer returns true for canExport of an ILcdModel that contains a ILcdBounded object. ILcdBounded objects were not encoded anyway. Only ILcdBounds objects are encoded.

    Bug fixReal-time Engine

    TLcdSimulator now fires property change events for all of its properties.

    5.1.04

    ImprovementLuciadFusion

    Two extra classes have been added to the API, namely com.luciad.wms.client.model.ALcdOGCWMSCapabilities and com.luciad.wms.client.model.ALcdOGCWMSService. The class ALcdOGCWMSCapabilities contains information about the capabilities of a Web Map Service. It can be accessed via the method getWMSCapabilities() in com.luciad.wms.client.model.ALcdWMSProxy. Some of its information (like the layer descriptions) was already accessible via ALcdWMSProxy; this class now delegates to ALcdOGCWMSCapabilities to retrieve that information. The class ALcdOGCWMSService contains general information about a Web Map Service (corresponding to the 'Service' tag in the capabilities document). It can be accessed via the method getWMSService() in ALcdOGCWMSCapabilities.

    ImprovementMaritime Standards

    S-57 decoder performance is increased significantly. Especially models with lots of depth contours will benefit from this.

    Bug fixLuciadFusion

    When moving a point which was just selected, the selection changed event threw a NullPointerException when retrieving the change for that object. For this purpose the TLcdSelectionChangedEvent was adapted to accept 2 Vector objects with selected objects and deselected objects. It is up to the creator of the event that no object is in both of these vectors. To speed up performance one can now retrieve the selected objects and deselected objects separately through the methods selectedElements and deselectedElements.

    Bug fixLuciadFusion

    Featured models with featurenames longer than 11 were not exported correctly in SHP format. These feature names are now truncated at 11 characters.

    Bug fixLuciadFusion

    TLcdGXYTextPainter can have a null frame style set.

    Bug fixLuciadFusion

    The magnifier window (displayed when setting the TLcdGXYMagnifierController) now adapts to changes of its underlying view, for example a projection change.

    Bug fixLuciadFusion

    TLcdGXYLayerList fires property change events when the label, icon or GXYpen is set.

    Bug fixLuciadFusion

    TLcd2DBoundsIndexedModelList does not accepts TLcdVectorModel objects when added. The canAddModel method has been adapted.

    Bug fixLuciadFusion

    ALcdGXYSmartController is not dragging by default. The value returned by isDragging is now false on construction.

    Bug fixLuciadFusion

    TLcdGXYPointListPainter calls setupGraphicsForPoint before painting a point.

    Bug fixLuciadFusion

    The vertical view does not throw an exception any more when dragging the mouse while no model was set yet.

    Bug fixLuciadFusion

    TLcdGMLDecoder now correctly creates ILcdComplexPolygon objects when encountering a "MultiPolygon" element in the GML document. Before this fix, such elements would be decoded as ILcdShapeList objects.

    Bug fixLuciadFusion

    Some elements in TLcd2DRegularTiledBoundsIndexedModel: positioned outside the regular raster, within the raster but overlapping with multiple tiles, or within the raster but on a place where no tile exists, were skipped sometimes in applyOnInteract. A new constructor has also been added offering the possibility to auto-generate a regular raster

    Bug fixLuciadFusion

    TLcdVVJPanel sometimes displayed a non-empty filled subprofile when the minimum and maximum values were equal.

    Bug fixLuciadFusion

    The class com.luciad.format.database.gxy.TLcdDatabaseGXYPainterProvider now correctly handles shape lists when being used as an editor provider.

    Bug fixReal-time Engine

    TLcdTrackModel now checks whether it contains an object when elementChanged is called. Previously objects could have been added to the model this way.

    Bug fixTerrain Analysis Engine

    TLcdProfileViewJPanel no longer throws exceptions when the mouse is dragged and no profile is set yet.

    Bug fixMaritime Standards

    A special exception handler interface, ILcdS57InvalidCellExceptionHandler, is added to handle cell exceptions, and can be set on TLcdS57CatalogueModelDecoder, allowing to decode partly corrupted catalogues.

    Bug fixMaritime Standards

    The conditional symbology now always returns the same style for a given object.

    Bug fixMaritime Standards

    Paper chart symbols are painted correctly now (topmark symbols on lights and buoys were missing).

    Bug fixMaritime Standards

    The attribute and object class maps are updated (some definitions were missing).

    Bug fixMaritime Standards

    Directional lights are oriented right now (some were oriented the opposite direction).

    Bug fixMaritime Standards

    Depth values of S-57 objects are computed all now (some objects were having a NaN depth value).

    Bug fixMaritime Standards

    The safety contour is computed correctly now (some values were resulting in an incomplete contour).

    Bug fixMaritime Standards

    Points, lines and areas with the same display priority are painted in that order now (some points were hidden by areas having the same display priority).

    Bug fixMaritime Standards

    Display priority of paper chart symbols is correct now (some symbols were hidden due to a wrong display priority).

    Bug fixMaritime Standards

    Area fill patterns are painted correctly now (only part of the patterns were painted).

    Bug fixMaritime Standards

    Icons sizes of S-52 symbols are correct now (was fixed to 16x16 pixels).

    Bug fixMaritime Standards

    Text contents are shown correct now (the same text was displayed on different places before).

    Bug fixMaritime Standards

    Danger symbols on the center of lines are painted now (were missing before).

    Bug fixMaritime Standards

    Checksum verification of individual ENC cells is performed now. An new exception is added, TLcdS57InvalidCellException, that will be thrown whenever a checksum mismatch occurs.

    Bug fixMaritime Standards

    A class TLcdS52GXYLayerList was added, implementing the S-52 DATCVR procedure. This procedure describes how overscale indication and chart scale boundaries should be painted.

    Bug fixMaritime Standards

    TLcdS52GXYPainterProvider now implements ILcdGXYLayelPainterProvider, allowing to paint text always with display priority 8 (as required by S-52). (text was always painted together with the object to which it belonged).

    Bug fixMaritime Standards

    All S-57 domain objects, making up an S-57 model, now implement the java.io.Serializable interface,, allowing quick storage of manual updates.

    Bug fixMaritime Standards

    TLcdS57AttributeClassMap and TLcdS57ObjectClassMap now have a new method, getStringFromAttributeClass() and getStringFromObjectClass(), making it possible to do an inverse mapping, from attribute or object class code to string.

    Bug fixMaritime Standards

    TLcdS52Symbology has a method getPresentationLibraryVersion(), which can be used to retrieve the version of the presentation library that is implemented.

    Bug fixMaritime Standards

    Complex strokes (used to symbolize ferry routes etc.) are painted now. TLcdS52ComplexStroke has a new method, setAlternativeStroke(), which can be used to set a fallback-stroke that should be used whenever the primary (complex) stroke cannot be used.

    Bug fixMaritime Standards

    Unidentified objects are show as a question mark now, as required by the S-52 specification.

    Bug fixMaritime Standards

    Advanced text settings (font size, font style, offsets) are supported now.

    Bug fixMaritime Standards

    Support for text groups is added (offering the possibility to use a fine-grained text filter). TLcdS52GXYPainterProvider has a method setDisplayTextGroup() and getDisplayTextGroup() to control which text groups are shown. TLcdS52Text has additional method setTextGroup() and getTextGroup() to set and retrieve its text group.

    Bug fixMaritime Standards

    TLcdS52GXYPainterProvider and TLcdS52ConditionalSymbology now have a setSafetyDepth() and getSafetyDepth() method, allowing to set the safety depth (only safety contours were supported before).

    Bug fixMaritime Standards

    Light sectors (procedure LIGHTS05) are painted now. TLcdS52GXYPainterProvider has a method setDisplayFullLightSectorLines() and getDisplayFullLengthLightSectorLines(), to control how light sectors are painted.

    Bug fixMaritime Standards

    The SCAMIN attribute indicating the minimum scale for an S-57 object to be shown is supported now.

    Bug fixMaritime Standards

    Icons oriented w.r.t. the north (trafic arrows, lights sectors, ...) are rotated now when the map is rotated.

    Bug fixMaritime Standards

    The resource files objectclasses.txt and attributes.txt have been updated to include missing classes.

    Upgrade considerationLuciadFusion

    The model class com.luciad.model.TLcdModelList now also accepts other model descriptors than the default TLcdEditableModelListDescriptor. The impact of this change should be minimal as TLcdEditableModelDescriptor implements ILcdModelDescriptor.

    Upgrade considerationMaritime Standards

    ILcdS57ObjectClassMap now has a method getStringFromObjectClass().

    Upgrade considerationMaritime Standards

    ILcdS57AttributeClassMap now has a method getStringFromAttributeClass().

    Upgrade considerationMaritime Standards

    ILcdS52Text now has a method getTextGroup().

    Upgrade considerationMaritime Standards

    ILcdS52Symbology now has a method getPresentationLibraryVersion().

    Upgrade considerationMaritime Standards

    ILcdS52ConditionalSymbology now has a method getSafetyDepth() and setSafetyDepth().

    Upgrade considerationMaritime Standards

    TLcdS52Area now extends TLcdComplexPolgyon, allowing donut and island topologies (only simple polygons were supported before, resulting in wrong depth calculations on some places). It has no longer a constructor with a ILcd2DEditablePointList.

    5.1.03

    ImprovementDefense Standards

    A feature class selection can be set on the VPF tree via the TLcdVPFDatabasePanel.setSelection(TLcdVPFFeatureClass[]) method. The current selection can also be retrieved via the TLcdVPFDatabasePanel.getSelection() method.

    Bug fixDefense Standards

    models without a tileref are now decoded correctly (were returning a null model).

    5.1.02

    Bug fixLuciadFusion

    The SHP model decoder and encoder now use the ISO-8859-1 character set to decode/encode DBF files. This solves some problems with characters in the DBF file which were outside the classic ASCII range.

    Bug fixLuciadFusion

    Take some special cases for line segment intersection into account, i.e., two line segments on same meridian or on equator.

    5.1.01

    Bug fixLuciadFusion

    The methods createImageInputstream() and createImage() in com.luciad.wms.client.model.ALcdWMSProxy executed sometimes an unnecessary GetMap request to a LuciadMap Web Map Server when using certain projections, causing a performance penalty.

    Bug fixMaritime Standards

    com.luciad.format.s52.TLcdS52Symbology now selects the proper symbol when multiple symbols are present in the lookup table.

    Bug fixMaritime Standards

    com.luciad.format.s52.gxy.TLcdS52GXYPainterProvider now properly handles the special S-52 case of the ORIENT attribute, previously causing an exception.

    5.1

    ImprovementLuciadFusion

    TLcdLonLatParser takes commas into account as decimal separator char and TLcdLonLatFormatter can have a character set to separate the longitude and latitude coordinate.

    ImprovementLuciadFusion

    com.luciad.view.map.TLcdAdvancedMapRulerController is a tool to measure distances on the map. The visualisation of the distances is highly customizable using ILcdGXYPainter's, ILcdGXYEditor's and ILcdGXYLabelPainter's. Distances can be measured in different modes: geodesic distance, rhumbline distance and projection plane distance. samples.gxy.ruler.MainApplet shows how it can be used.

    ImprovementLuciadFusion

    com.luciad.gui.swing.TLcdColorMapCustomizer is a Customizer for a TLcdColorMap object. This enables visual and textual editing of color maps. Such a color map can be used to create a TLcdIndexColorModel. All this together allows to easily change the coloring of raster data, such as DTED or GRIB data, in the user interface. MainApplet in samples.gxy.colormap demonstrates this.

    ImprovementLuciadFusion

    Some new modeldescriptors are introduced to facilitate detection of the origin of data. Model decoders now produce models with a specific model descriptor:
    • com.luciad.format.magneticnorth.TLcdIGRFModelDecoder: com.luciad.format.magneticnorth.TLcdIGRFModelDescriptor
    • com.luciad.format.magneticnorth.TLcdWMMModelDecoder: com.luciad.format.magneticnorth.TLcdWMMModelDescriptor

    ImprovementGraph and Routing Engine

    This package is a new LuciadMap option since v5.1.

    ImprovementGraph and Routing Engine

    This package is a new LuciadMap option, provided as a BETA in LuciadMap v5.1.

    ImprovementAviation Standards

    A separate model descriptor for each domain object used by DAFIF has been introduced (as an extension of the corresponding general AIS model descriptor), to facilitate detection of the origin of data. DAFIF decoders now produce models using these specific model descriptors instead of the general AIS model descriptors.

    ImprovementAviation Standards

    A separate model descriptor for each domain object used by ARINC has been introduced (as an extension of the corresponding general AIS model descriptor), to facilitate detection of the origin of data. ARINC handlers now produce models using these specific model descriptors instead of the general AIS model descriptors.

    ImprovementAviation Standards

    A new domain object is added to AIS to represent geographical borders. The basic interface is com.luciad.ais.model.geoborder.ILcdGeoborder. This interface has a default implementation com.luciad.ais.model.geoborder.TLcdGeoborder and a featured extension com.luciad.ais.model.geoborder.TLcdFeaturedGeoborder. For a list of features and the corresponding class mappings, see com.luciad.ais.model.geoborder.ILcdGeoborderFeature and com.luciad.ais.model.geoborder.TLcdGeoborderFeatureClassMapper. The AIS domain object factory com.luciad.ais.model.ALcdAISObjectFactory is extended with two methods to create TLcdFeaturedGeoborder instances.

    ImprovementAviation Standards

    The interface com.luciad.ais.shape.ILcdGeoPathLeg is extended with a new leg type SUB_POINT_LIST. This leg type can be used to create geopath segments containing a subset of a pointlist, for example a geographical border. The subset is automatically determined in the context of a geopath: it consists of the points lying between the points that are repectively closest to the previous and the next geopath vertex. As a geographical border segment is often used in the context of airspaces, a new memory-efficient implementation of com.luciad.ais.model.airspace.ILcdEditableAirspaceSegment with SUB_POINT_LIST as leg type is introduced (com.luciad.ais.model.airspace.TLcdSubPointlistAirspaceSegment). This implementation uses a shared pointlist instead of copying the data like the default implementation com.luciad.ais.model.airspace.TLcdAirspaceSegment.

    ImprovementDefense Standards

    A new class, TLcdVPFDatabaseGroup, was added to the API, for working with multiple VPF databases.

    ImprovementDefense Standards

    TLcdVPFPropertiesUtil now contains a method createFeatureProperties that can generate VPF decoder properties for a given VPF feature class and bounds.

    ImprovementDefense Standards

    The VPF tree structure can be preloaded (setPreloadDatabaseTree), which avoids accessing the disk/CD every time a tree node is expanded.

    ImprovementDefense Standards

    com.luciad.format.raster.TLcdUSRPModelDecoder now supports UTM references on the southern hemisphere and UPS references on the poles.

    ImprovementDefense Standards

    com.luciad.format.raster.TLcdUSRPModelDecoder has an improved detection of ASRP versions.

    ImprovementDefense Symbology

    The ILcdGXYView implementations (that extend java.awt.Component) no longer recalculate their caches multiple times when one of the invalidate methods is called multiple times with the repaint flag set to true.

    ImprovementDefense Symbology

    A default style for MIL-STD 2525b or APP-6A can now be set on the icon provider (com.luciad.symbology.milstd2525b.view.TLcdMS2525bObjectIconProvider and com.luciad.symbology.app6a.view.TLcdAPP6AObjectIconProvider), the painter provider (com.luciad.symbology.milstd2525b.view.gxy.painter.TLcdMS2525bGXYPainterProvider and com.luciad.symbology.app6a.view.gxy.painter.TLcdAPP6AGXYPainterProvider) and the label painter provider (com.luciad.symbology.milstd2525b.view.gxy.painter.TLcdMS2525bGXYLabelPainterProvider and com.luciad.symbology.app6a.view.gxy.painter.TLcdAPP6AGXYLabelPainterProvider). This style will be used when a particular symbol doesn't have an associated style (by implementing ILcdMS2525bStyled or ILcdAPP6AStyled). The former methods to set a default icon size and default outline behaviour in some of these classes are now redundant and have been made deprecated.

    ImprovementDefense Symbology

    The line color/width for tactical graphics in MIL-STD 2525b and APP-6A can now be properly customized using the methods setLineColor() and setLineWidth() in com.luciad.symbology.milstd2525b.view.gxy.ILcdMS2525bStyle and com.luciad.symbology.app6a.view.gxy.ILcdAPP6AStyle.

    ImprovementDefense Symbology

    The interfaces com.luciad.symbology.milstd2525b.view.gxy.ILcdMS2525bStyle and com.luciad.symbology.app6a.view.gxy.ILcdAPP6AStyle, and their respective implementations TLcdDefaultMS2525bStyle and TLcdDefaultAPP6AStyle are extended with new methods to control the display behaviour of icon symbols:
    • setSymbolFrameEnabled(boolean), isSymbolFrameEnabled(): Sets/returns whether the symbol should be displayed framed. The frame corresponds to the affiliation icon that forms the background of a symbol (e.g. a blue square for friendly symbols).
    • setSymbolFillEnabled(boolean), isSymbolFillEnabled(): Sets/returns whether the symbol should be displayed filled. It replaces the method setOutlined(boolean aOutlined) which is now deprecated.
    • setSymbolIconEnabled(boolean), isSymbolIconEnabled(): Sets/returns whether the hierarchy icon inside the symbol should be displayed.
    A new child customizer to control these display options for styled icon symbols is introduced in the MIL-STD 2525b customizer (com.luciad.symbology.milstd2525b.view.swing.TLcdMS2525bObjectCustomizer) and the APP-6A customizer (com.luciad.symbology.app6a.view.swing.TLcdAPP6AObjectCustomizer). The former outline child customizer has been removed .

    ImprovementDefense Symbology

    The classes com.luciad.symbology.milstd2525b.view.swing.TLcdMS2525bObjectCustomizer and com.luciad.symbology.app6a.view.swing.TLcdAPP6AObjectCustomizer are extended with some protected methods that can be overriden to change its layout, to control which child customizers (e.g. the affiliation combobox) should be present/absent or to create own child customizers.

    ImprovementDefense Symbology

    The interfaces com.luciad.symbology.milstd2525b.view.gxy.ILcdMS2525bStyle and com.luciad.symbology.app6a.view.gxy.ILcdAPP6AStyle are extended with two new methods to control the hiding/displaying of each label of a symbol. These methods are:
    • setLabelEnabled(String aLabel, boolean aEnabled): This method sets whether the given label should be displayed or hided. The label must be identified using the static members of com.luciad.symbology.milstd2525b.model.ILcdMS2525bCoded for MIL-STD 2525b or com.luciad.symbology.app6a.model.ILcdAPP6ACoded for APP-6A.
    • isLabelEnabled(String aLabel): This method returns whether the given label will currently be displayed or hided.

    ImprovementMaritime Standards

    com.luciad.format.s57.TLcdS57ModelDecoder now has improved handling of NumberFormatExceptions due to unreadable input files.

    ImprovementMaritime Standards

    com.luciad.format.s57.TLcdS57CatalogueModelDecoder now allows delegation to a user-specified instance of com.luciad.format.s57.TLcdS57ModelDecoder.

    ImprovementS-63

    New package com.luciad.format.s63 for decoding S-57 data encrypted using the S-63 standard.

    Bug fixLuciadFusion

    The name of the layer style file that TLcdMultilevelRasterGXYLayerCodec (and the other layer codec implementations) tried to find was wrong when the path contains a dot (.), but the file does not contain a dot. For example, release\LuciadMap\5.0\LuciadMap\samples\Data\Dted\Alps\dmed

    Bug fixLuciadFusion

    The property change event fired when the model changes on a TLcdVVJPanel now includes the old and new values of the models.

    Bug fixLuciadFusion

    The EPSG reference parser API documentation contains a list of supported EPSG codes.

    Bug fixLuciadFusion

    TLcdOpenAction methods setPredefinedFileNames and getPredefinedFileNames have been added to replace setPredefinedFileNames and getPredefinedFileNames. These methods are now deprecated.

    Bug fixLuciadFusion

    The class com.luciad.wms.client.model.ALcdWMSNamedLayer has been extended with two methods, getMinScaleDenominator() and getMaxScaleDenominator. These methods retrieve the minimum and maximum scale range from a layer as defined in the WMS 1.3.0 specification.

    Bug fixLuciadFusion

    ALcdPoint implements the method hashCode, since it already implemented equals.

    Bug fixLuciadFusion

    com.luciad.format.raster.TLcdRasterPainter and com.luciad.format.raster.TLcdMultilevelRasterPainter no longer try to reuse a cached image when their ColorModel properties have changed.

    Bug fixDefense Symbology

    The classes com.luciad.symbology.app6a.view.gxy.painter.TLcdAPP6AGXYPainterProvider and com.luciad.symbology.app6a.view.gxy.painter.TLcdAPP6AGXYEditorProvider don't accept objects which do not implement the interface com.luciad.symbology.app6a.model.ILcdAPP6AShape. This is as before, but now a proper IllegalArgumentException is thrown when this condition is not satisfied. The documentation of these classes is also improved concerning this problem.

    Bug fixDefense Symbology

    The classes com.luciad.symbology.milstd2525b.view.gxy.painter.TLcdMS2525bGXYPainterProvider, com.luciad.symbology.milstd2525b.view.gxy.painter.TLcdMS2525bGXYEditorProvider and com.luciad.symbology.milstd2525b.view.gxy.painter.TLcdMS2525bGXYLabelPainterProvider don't accept objects which do not implement the interface com.luciad.symbology.ms2525b.model.ILcdMS2525bShape. This is as before, but now a proper IllegalArgumentException is thrown when this condition is not satisfied. The documentation of these classes is also improved concerning this problem.

    Bug fixDefense Symbology

    A correct implementation of the method equals() and hashCode() is now provided in com.luciad.symbology.app6a.model.TLcdEditableAPP6AObject.

    Bug fixDefense Symbology

    A correct implementation of the method equals() and hashCode() is now provided in com.luciad.symbology.milstd2525b.model.TLcdEditableMS2525bObject.

    Bug fixDefense Symbology

    The documentation in the interfaces com.luciad.symbology.milstd2525b.view.gxy.ILcdMS2525bStyle and com.luciad.symbology.app6a.view.gxy.ILcdAPP6AStyle has been improved. Some unused methods have been made deprecated.

    Bug fixMaritime Standards

    com.luciad.format.s57.TLcdS57ModelDecoder now decodes all sounding points again.

    Upgrade considerationLuciadFusion

    Deployment licenses are now expected to be in a file name deployment_license.txt instead of runtime_license.txt. The change is incompatible in the sense that the license may not be found if it is still in a file called runtime_license.txt. Note that this text file is looked for in the classpath and may be contained in a jar file. The name of the jar file is of no importance (as long as it is in the classpath). Renaming the jar file will thus not solve this incompatibility.

    5.0

    5.0.06

    ImprovementWeather & Environment Standards

    com.luciad.format.grib.TLcdGRIBModelDecoder.canDecode(String) now also returns true for compressed GRIB files.

    ImprovementWeather & Environment Standards

    com.luciad.format.grib.gxy TLcdGRIBGXYController now supports multi-valued GRIB values.

    ImprovementMaritime Standards

    com.luciad.format.s57.TLcdS57CatalogueModelDecoder now allows setting a selection of object classes to be decoded, like com.luciad.format.s57.TLcdS57ModelDecoder.

    Bug fixLuciadFusion

    com.luciad.format.raster.TLcdRasterPainter and com.luciad.format.raster.TLcdMultilevelRasterPainter have been fixed to throw PropertyChangeEvents again.

    Bug fixLuciadFusion

    The clipping done in com.luciad.view.gxy.TLcdAWTPath has been improved to avoid integer overflows.

    Bug fixLuciadFusion

    The WMS 1.3.0 service exception reports are now always well-formed XML.

    Bug fixLuciadFusion

    Some DTED level 2 files could not be read, due to the fact that the resolution and the number of horizontal/vertical lines was not encoded in 4 figures.

    Bug fixLuciadFusion

    For a specific setup (Linux, JDK 1.5.0, System look and feel), the TLcdGXYViewJJPanel caused a null pointer exception on instantiation.

    Bug fixLuciadFusion

    When using a spatial filter with a multiple geometries only the first geometry was taken into account.

    Bug fixDefense Symbology

    The arrow in the friendly aviation symbol from the tactical graphics group in MIL-STD 2525b (hierarchy 2.X.2.5.2.2.1) and APP-6A (hierarchy 2.X.2.1.5.2.2.1) is now positioned correctly.

    Bug fixDefense Symbology

    Removed possible occurrence of a NullPointerException when performing echelon-based operations in com.luciad.symbology.milstd2525b.view.TLcdMS2525bIcon and com.luciad.symbology.app6a.view.TLcdAPP6AIcon.

    Bug fixInfrastructure Standards

    com.luciad.format.dgn.TLcdDGNLevelSymbology now has a method to go from level index to level ID.

    5.0.05

    ImprovementMaritime Standards

    com.luciad.format.s57.TLcdS57ModelDecoder returns a model with a com.luciad.format.s57.TLcdS57ModelDescriptor, which now contains various metadata.

    Bug fixAviation Standards

    The default (selection) color in the airspace painter com.luciad.ais.symbology.icao.TLcdICAOAirspacePainter can now be customized: the (selection) color of the line style (see method setLineStyle()) will be used as default (selection) color when an airspace has no classification or when no specific classification - color match can be retrieved.

    Bug fixDefense Standards

    sample 2 works now on JDK 1.2.2 (getPath() in java.net.url was not supported in JDK 1.2.2).

    Bug fixDefense Standards

    TLcdVPFLayer.getBounds() throws a TLcdNoBoundsException now if the model is empty (returned null before).

    Bug fixDefense Standards

    TLcdVPFModelDescriptor.getFeatureCount() returns the correct number of features now.

    Bug fixDefense Standards

    The layout of the first sample is modified so that all labels are clearly readable now.

    Bug fixDefense Standards

    The border of checkboxes in the VPF database tree is completely visible now (was missing on the right side).

    Bug fixInfrastructure Standards

    com.luciad.format.dgn.TLcdDGNModelDecoder now has a display name that corresponds to the type name of com.luciad.format.dgn.TLcdDGNModelDescriptor.

    Upgrade considerationMaritime Standards

    com.luciad.format.s57.TLcdS57CatalogueModelDecoder now returns a model with a com.luciad.format.s57.TLcdS57CatalogueModelDescriptor (previously com.luciad.format.s57.TLcdS57ModelDescriptor). Its elements are still S-57 elements. Any "instanceof" tests should be extended, if models decoded from catalogues are to be taken into account.

    5.0.04

    ImprovementLuciadFusion

    The UTM grid layer can be based on any geodetic datum, not just WGS 84. The utility classes com.luciad.view.map.TLcdUTMMgrsUtil and com.luciad.view.map.TLcdMapLocation take this into account from now on.

    ImprovementAdvanced Raster Services

    The ECW native libraries have been updated with the latest versions.

    ImprovementAdvanced Raster Services

    TLcdMrSIDModelDecoder now works around the 254 file limit of the native MrSID library.

    Bug fixLuciadFusion

    The arcband painters isTouched sensitivity was hardcoded and not accessible in the class. This could result in unexpected behaviour when extending the method. The pens hotpoint size is now used as the sensitivity. Remark that by default this is less than the previous value.

    Bug fixLuciadFusion

    Setting a new model on a sub layer of a TLcdGXYLayerList caused a NoSuchElementException when removing the sub layer from the layer list.

    Bug fixLuciadFusion

    The TLcdMapJPanel sometimes displayed only the background when it was invalidated before it was visible and its size was changed shortly after.

    Bug fixLuciadFusion

    The buffer painter no longer stops creation of a buffer when the last point created was put on top of another point of that same buffer.

    Bug fixAdvanced GIS Engine

    The method checkTopology in com.luciad.geometry.topology.ALcd2DBasicBinaryTopologyMultiShape caused a IllegalArgumentException when passing an ILcdPoint implementation which was not an ILcdPolyPoint implementation. This happened if the first shape argument was a polygon and the second argument a ILcdPoint. The reverse case was handled correctly.

    Bug fixAdvanced GIS Engine

    The method checkTopology in com.luciad.geometry.topology.ALcd2DBasicBinaryTopologyMultiShape caused a ClassCastException when passing an ILcdPoint implementation which was not an ILcdPolyPoint implementation.

    Bug fixMaritime Standards

    com.luciad.format.s57.TLcdS57ModelDecoder now accepts files containing ISO/IEC 8211 strings with field terminators instead of unit terminators.

    5.0.03

    ImprovementLuciadFusion

    The API has been slightly relaxed to allow the implementation of custom WFS requests through the API:
    • The "final" modifier has been removed from the createCommandDispatcher() method of ALcdOGCWFSCommandDispatcherFactory;
    • The registerRequestHandler() method of ALcdOGCCommandDispatcher has been promoted from protected to public.
    This enables users to extend the WFS by installing their own implementations of the ILcdRequestHandler interface.

    ImprovementLuciadFusion

    The API has been slightly relaxed to allow the implementation of custom WCS requests through the API:
    • The "final" modifier has been removed from the createCommandDispatcher() method of ALcdOGCWCSCommandDispatcherFactory;
    • The registerRequestHandler() method of ALcdOGCCommandDispatcher has been promoted from protected to public.
    This enables users to extend the WCS by installing their own implementations of the ILcdRequestHandler interface.

    ImprovementLuciadFusion

    com.luciad.reference.format.TLcdEPSGReferenceParser has clearer error messages.

    ImprovementLuciadFusion

    com.luciad.reference.TLcdLambertFrenchGridReference supports a carto property to specify whether the zone number should be prefixed to the false northing.

    ImprovementLuciadFusion

    com.luciad.view.gxy.TLcdGXYViewFitAction reverts the view to a predefined scale if the layer to fit has bounds with width and height equal to 0. This is typical for layers with an ILcd2DBoundsIndexedModel containing only 1 point. This avoids extreme zoom in on this kind of layers.

    ImprovementLuciadFusion

    The SHP model encoder (com.luciad.format.shp.TLcdSHPModelEncoder)requires a ILcdFeaturedDescriptor instead of a TLcdFeaturedModelDescriptor to encode the features in a DBF file.

    ImprovementLuciadFusion

    The label painters com.luciad.view.gxy.TLcdGXYLabelPainter and com.luciad.view.gxy.TLcdGXYEditableLabelPainter have a method paintPin which can be overwritten to change the pin style.

    ImprovementLuciadFusion

    Most of the projections used a shared instance of a out of bounds exception (com.luciad.util.TLcdOutOfBoundsException) for performance reasons. When this exception is thrown and not caught, the stack trace could not be used to detect the origin of the exception. For debuggin purposes, the exception class now has a static method to return a new exception every time. The stack trace of the exception is then filled at the location it occurs.

    ImprovementLuciadFusion

    The method geodesicPointSFCT in com.luciad.geodesy.TLcdEllipsoid which computes a point at a fraction between two given points has improved accuracy.

    ImprovementLuciadFusion

    com.luciad.format.shp.TLcdSHPModelDecoder has a method setWithFeatures to turn of reading the DBF file.

    ImprovementTerrain Analysis Engine

    2 factories:
    • com.luciad.tea.TLcdRadarP2PFactory
    • com.luciad.tea.TLcdRadarCoverageFactory
    can display line-of-sight computations based on radar visibility .

    ImprovementInfrastructure Standards

    The painter styles now handle DGN V8 levels whose numbers differ from their indices (instead of throwing ArrayIndexOutOfBoundsExceptions).

    ImprovementMaritime Standards

    com.luciad.format.s57.TLcdS57ModelDecoder now has a significantly better performance.

    Bug fixLuciadFusion

    The icon painters method to return an icon based on the painter mode has been refined, since the icon painter painted the default icon on top of the selection icon when the layer was editable.

    Bug fixLuciadFusion

    Fitting to layers containing very large objects (compared to the scale) in a TLcdVector model is now more accurate. This voids the need to apply consecutive fit actions to achieve the correct result.

    Bug fixLuciadFusion

    The UTM grid parallels at the highest scale are now painted more accurately.

    Bug fixLuciadFusion

    The UTM grid is now painted when partially out of bounds on every zoom level.

    Bug fixLuciadFusion

    The grid pen (com.luciad.view.map.TLcdGridPen) did not construct its AWT path correctly for polygons. The one but last point of the point list was connected to the first point to close the polygon, instead of the last point of the point list.

    Bug fixLuciadFusion

    In a multiple selection a circle would move along when another object in the selection was being edited (in RESHAPED mode).

    Bug fixLuciadFusion

    An arc in a multiple selection did not move when the rest of the selection was moved if it was not touched by the mouse pointer.

    Bug fixLuciadFusion

    Very flat ellipses are now painted better. Parts of the ellipse were not painted before due to clipping settings which were too strict.

    Bug fixLuciadFusion

    com.luciad.format.raster.TLcdGeoTIFFModelDecoder correctly supports the french grid systems.

    Bug fixLuciadFusion

    The edit controller repaints even when the edited object no longer has bounds, for example, when the text of an ILcd2DEditableText is emptied.

    Bug fixLuciadFusion

    The text painter throws a TLcdNoBoundsException when the text is null or has zero length. This will avoid unclear exceptions when ILcdText creation is canceled when entering the text.

    Bug fixLuciadFusion

    When performing a GetFeature request in XML format, the "outputFormat" attribute is now no longer ignored.

    Bug fixLuciadFusion

    The polygon label painter (com.luciad.view.gxy.TLcdGXYPolygonLabelPainter) did not throw a no bounds exception when the object to which the label belonged was out of bounds. This had an effect amongst others on the label deconfliction.

    Bug fixLuciadFusion

    com.luciad.reference.format.TLcdWKTReferenceParser better parses projection parameters.

    Bug fixLuciadFusion

    When one of the models in a model list (com.luciad.model.TLcdModelList) did not contain any elements hasMoreElements returned false, while the next model(s) could still contain elements.

    Bug fixLuciadFusion

    com.luciad.geometry.cartesian.TLcdXYZRotation no longer throws a NullPointerException after changing one of the angles.

    Bug fixMaritime Standards

    Fixed an issue in the handling of update files that resulted in the decoder printing out warnings about missing elements in the file.

    5.0.01

    ImprovementLuciadFusion

    The release contains a sample Proguard configuration file for end user applications using LuciadMap.

    Bug fixLuciadFusion

    com.luciad.format.raster.TLcdGeoTIFFModelDecoder has clearer error messages when the reference cannot be decoded.

    Bug fixDefense Standards

    com.luciad.format.raster.TLcdUSRPModelDecoder has an improved handling of transparent colors.

    5.0

    ImprovementLuciadFusion

    com.luciad.beans.swing.TLcdPropertySheetSW and com.luciad.beans.awt.TLcdPropertySheetAWT throw an exception with a clearer message when cloning fails.

    ImprovementLuciadFusion

    com.luciad.format.gml.TLcdGMLModelDecoder uses the model descriptor to determine the attribute type if available. If that information is not available it falls back to the schema.

    ImprovementLuciadFusion

    All decoders by default do not use NIO, except for the tiledecoders in the raster package (com.luciad.format.raster.ALcdTile extensions).

    ImprovementLuciadFusion

    com.luciad.format.raster.TLcdCADRGModelDecoder has a stricter check for what it can decode ( a.toc instead of .toc).

    ImprovementLuciadFusion

    com.luciad.format.raster.TLcdCADRGModelDecoder supports C-89041A specification.

    ImprovementLuciadFusion

    com.luciad.util.TLcdSubEnumeration has the possibility to specify a key provider.

    ImprovementLuciadFusion

    com.luciad.view.gxy.TLcdGXYEditableLabelPainter has an extra property to configure the label text alignment. The label text can be placed right,left or centered next to the old mode which placed the text depending on the labels position with regard to the object.

    ImprovementLuciadFusion

    If a request specifies a bounding box that does not lie completely inside the bounds of the selected coverage, the WCS server will now return only the area for which the coverage is defined. Prior to version 4.4, the WCS would return an image that contained blank areas where the coverage was undefined.

    ImprovementAviation Standards

    ARINC has been separated from the AIS package. For changes and bug fixes prior to LuciadMap 4.4,please refer to releaseNotes_Ais.html.

    ImprovementAviation Standards

    DAFIF has been separated from the AIS package. For changes and bug fixes prior to LuciadMap 4.4, please refer to releaseNotes_Ais.html.

    ImprovementAviation Standards

    The bandwidth parameter in the method setBandWidth() in com.luciad.ais.symbology.icao.TLcdICAOAirspacePainter must now be specified in meters.

    ImprovementAviation Standards

    ARINC and DAFIF have been separated from the AIS package. For future changes and bug fixes, please refer to releaseNotes_Arinc.html and releaseNotes_Dafif.html.

    ImprovementDefense Symbology

    com.luciad.symbology.milstd2525b.view.TLcdMS2525bIcon supports the visual difference between present and anticipated status (respectively plain and dashed border).

    ImprovementDefense Symbology

    com.luciad.symbology.milstd2525b.model.TLcdMS2525bOrderOfBattleModifier is extended with a new type of order of battle "Control Markings".

    ImprovementDefense Symbology

    com.luciad.symbology.milstd2525b.model.TLcdMS2525bStatusModifier is extended with an Undefined status.

    ImprovementDefense Symbology

    com.luciad.symbology.milstd2525b.view.swing.TLcdMS2525bObjectCustomizer is extended with customizers for the status and the order of battle of a symbol.

    ImprovementDefense Symbology

    A method isSelectionOk() is added to com.luciad.symbology.milstd2525b.view.swing.TLcdMS2525bObjectCustomizer: this method lets the user check whether the current selection in the customizer is valid (e.g. the selection of a directory in the tree is invalid). Note: the property change event with name TLcdMS2525bObjectCustomizer.PROPERTY_SELECTION_OK is still present and thrown when the user selects a symbol.

    Bug fixLuciadFusion

    Creating a point list by snapping to existing points is now possible with the point list painter (com.luciad.view.gxy.TLcdGXYPointListPainter). When the icons of the points snapped to were big, this failed because the point was moved over such a distance that it was no longer recognized as being touched by the mouse.

    Bug fixLuciadFusion

    The point list painter com.luciad.view.gxy.painter.TLcdGXYPointListPainter incorrectly handled insertion of 3D editable points into a polygon.

    Bug fixLuciadFusion

    The arc painter and ellipse painter, com.luciad.view.gxy.painter.TLcdGXYArcPainter and com.luciad.view.gxy.painter.TLcdGXYEllipsePainter display cursors consistent with the behavior of the painter.

    Bug fixLuciadFusion

    TLcdGXYArcPainter and TLcdGXYArcbandPainter in com.luciad.view.gxy.painter are more consistent with regard to the painter mode HANDLES.

    Bug fixLuciadFusion

    com.luciad.view.gxy.controller.TLcdGXYEditController has a stricter check on the editor mode: for the editor mode RESHAPED, only the CTRL key has to be pressed.

    Bug fixLuciadFusion

    com.luciad.view.gxy.controller.TLcdGXYNewController threw a NullPointerException when no action was set to be triggered after creation. This was due to the new controller not implementing the paint method well.

    Bug fixLuciadFusion

    com.luciad.view.gxy.controller.TLcdGXYNewController no longer needs the mouse to move to perform a repaint. When the view was updated programmatically, the newly created object would disappear when it was not created entirely yet.

    Bug fixLuciadFusion

    The filled triangle mode in com.luciad.gui.TLcdSymbol uses the fill color passed.

    Bug fixLuciadFusion

    The method intersection2DLineSegmentsSFCT in com.luciad.geodesy.TLcdSphereUtil did not move the given point to the intersection point in a special case, although the point was computed correctly. This resulted in an incorrect number of intersection points (0 instead of 1).

    Bug fixLuciadFusion

    com.luciad.geodesy.TLcdSphereUtil occasionally had a numerical problem in closestPointOnGeodesic, which resulted in one of the end points being returned.

    Bug fixLuciadFusion

    com.luciad.format.raster.TLcdGeoTIFF better computes bounds of images referenced by multiple tie points.

    Bug fixLuciadFusion

    com.luciad.format.raster.TLcdRasterPainter supports wrap-around for rasters. This is useful for raster data spanning the whole globe.

    Bug fixLuciadFusion

    com.luciad.model.TLcdTiled2DBoundsIndexedModel returns null for the model reference if no submodels were added yet, instead of throwing an exception.

    Bug fixLuciadFusion

    com.luciad.format.mif.TLcdMIFModelDecoder sets the number of features to 0 if no MID file could be decoded. This prevents a difference between the number of features stated in the descriptor and the number of features of the objects in the model.

    Bug fixLuciadFusion

    com.luciad.format.gml.TLcdGMLSchemaEncoder handles all geometries even when the model is empty.

    Bug fixDefense Standards

    TLcdNITFModelDecoder now checks for the NSIF 1.0 format.

    Bug fixDefense Symbology

    Removed the possible occurrence of a NullPointerException in some MIL-STD 2525b painters and labelpainters.

    Bug fixDefense Symbology

    An IllegalArgumentException is thrown when providing an incorrect symbol (e.g. a symbol with an incorrect code according to the specification) in com.luciad.symbology.milstd2525b.model.TLcdEditableMS2525bObject, com.luciad.symbology.milstd2525b.view.gxy.TLcdMS2525bGXYPainterProvider, com.luciad.symbology.milstd2525b.view.gxy.TLcdMS2525bGXYEditorProvider, com.luciad.symbology.milstd2525b.view.gxy.TLcdMS2525bGXYLabelPainterProvider or com.luciad.symbology.milstd2525b.view.swing.TLcdMS2525bObjectCustomizer.

    Bug fixDefense Symbology

    When using offset dragging in MIL-STD 2525b, the object was dragged twice the distance.

    Bug fixDefense Symbology

    A number of icons are corrected according to the MIL-STD 2525b specification.

    Bug fixDefense Symbology

    The amount of property change events thrown by com.luciad.symbology.milstd2525b.view.swing.TLcdMS2525bObjectCustomizer is reduced: all the redundant events are removed.

    Bug fixDefense Symbology

    The painters for MIL-STD 2525b and APP-6A ignored the map rotation when drawing the movement direction.

    Bug fixInfrastructure Standards

    com.luciad.format.dwg.TLcdDWGModelDecoder now handles some R2000 files that contain an unknown data block.

    Bug fixMaritime Standards

    The decoder is more robust: it silently ignores missing fields instead of throwing null pointer exceptions.

    Upgrade considerationLuciadFusion

    com.luciad.gui.swing.TLcdBasicRangeSliderUI allows labels to be placed at non-integer values of the slider. This is useful for sliders with small ranges. The methods paintHorizontalLabel and paintVerticalLabel now have a double argument instead of an integer. This only has an influence if you have overridden these methods. The methods signature should then be changed.

    4.3

    4.3.13

    ImprovementLuciadFusion

    When creating objects to be inserted or updated in a model, the WFS now uses the model descriptor (ILcdFeaturedDescriptor) to determine attribute types, rather than looking for the subset of types that can be identified in an XML schema.

    4.3.12

    Bug fixDatabase Connectors

    The handling of primary features and feature classes has been improved.

    4.3.09

    ImprovementLuciadFusion

    Added WCS server optimizations that will lead to significant speedups when requesting coverages from a tiled or multilevel raster source.

    ImprovementAviation Standards

    Improved robustness and error handling of TLcdProcedureGeometryCalculator.

    4.3.08

    ImprovementLuciadFusion

    A test has been added to avoid a useless call to the Web Map Server, ie, if no layers are visible.

    Bug fixLuciadFusion

    com.luciad.view.gxy.controller.TLcdGXYSelectController deselects if there is no potential selection when in CHOOSE mode.

    Bug fixLuciadFusion

    com.luciad.format.raster.TLcdDTEDTileDecoder has support for tiling large DTED tiles.

    Bug fixLuciadFusion

    com.luciad.format.magneticnorth.TLcdIGRFMagneticNorthMap assumed a space between the last two columns, which newer data files do not have.

    4.3.07

    ImprovementLuciadFusion

    A bug fix within LuciadMap core require to use a new version of lcd_epsg_resources.jar.

    ImprovementLuciadFusion

    A bug fix within LuciadMap core requires an upgrade of lcd_epsg_resources.jar.

    Bug fixLuciadFusion

    Changing the altitude unit on the vertical view removed the point icons on some of the points.

    Bug fixLuciadFusion

    com.luciad.format.shp.TLcdSHPModelDecoder read Z and M values of polygonZ in reverse order.

    4.3.06

    ImprovementLuciadFusion

    com.luciad.reference.format.TLcdWKTReferenceParser and com.luciad.reference.format.TLcdEPSGReferenceParser have improved parsing. The EPSG resources jar has been updated to comply with the parser.

    ImprovementLuciadFusion

    com.luciad.shape.shape3D.TLcdLonLatHeightPolygon is the longitude-latitude equivalent of the TLcdXYZPolygon.

    ImprovementLuciadFusion

    Both the vertical view (com.luciad.view.vertical.TLcdVVJPanel) and the default implementation of the ILcdVVGridRenderer (com.luciad.view.vertical.TLcdDefaultVVGridRenderer) can have an altitude unit set to regulate the altitude scaling of the view and the labeling of the grid.

    Bug fixLuciadFusion

    The UTM zone painter (com.luciad.view.map.painter.TLcdUTMZonePainter) no longer paints the corner labels in incorrect places when part of the map has to be repainted.

    Upgrade considerationLuciadFusion

    com.luciad.view.gxy.TLcdGXYEditableLabelPainter, which allows moving of labels, stores the delta of a label position in screen coordinates with respect to the anchorpoint as computed by the painter for an object. Before, the delta was stored with respect to the label's original position. However, this did not take into account that the original position could change through label decluttering. This change has to be taken into account when the methods putDeltaLabelLocation and getDeltaLabelLocation are called from outside the class.

    Upgrade considerationLuciadFusion

    com.luciad.format.raster.TLcdRasterPainter and com.luciad.format.raster.TLcdMultilevelRasterPainter no longer extend com.luciad.format.ALcdRasterPainter but implement the new interface com.luciad.format.ILcdRasterPainter. The new implementations are smart in that they recognize whether warping of the raster is required or not, and then delegate to the warp- or no-warp-(multilevel)raster painter. The class TLcdWarpRasterPainter contains the code of the old TLcdRasterPainter and the class TLcdWarpMultilevelRasterPainter contains the code of the old TLcdMultilevelRasterPainter. This has to be taken into account when checking the classes against ALcdRasterPainter.

    4.3.05

    ImprovementLuciadFusion

    com.luciad.gui.TLcdImageIcon has a property sourceName to provide a reference to the source it was based on.

    ImprovementLuciadFusion

    com.luciad.util.TLcdLonLatCoord has its precision doubled when parsing a longitude or latitude string.

    Bug fixMaritime Standards

    com.luciad.format.s57.TLcdS57CatalogueModelDecoder closes all input streams it opens.

    Upgrade considerationLuciadFusion

    com.luciad.view.gxy.painter.TLcdGXYPointListPainter edits the point list by translating the whole point list (translate2D) instead of by moving the list one point at a time (translate2DPoint).

    4.3.04

    ImprovementAviation Standards

    Changes to DAFIF data preparator:
    • Added switch to disable output of bounds files.
    • Changed buffer sizes to improve read/write performance.
    • Added status listener mechanism with some basic progress messages.

    ImprovementAviation Standards

    The 3D procedure geometry calculator now also climbs during the transitions between two legs (i.e. during turns).

    Bug fixLuciadFusion

    Some decoders did not close all opened inputstreams:
    • com.luciad.format.svg.TLcdSVGModelDecoder
    • com.luciad.reference.TLcdModelReferenceDecoder

    Bug fixLuciadFusion

    The GML schema decoder tried to open the schema as a file, which caused a security exception in a sandbox environment. The decoder now falls back on alternatives to load the schema file.

    4.3.03

    ImprovementAviation Standards

    Improved the robustness of the DAFIF decoders when searching through auxiliary models (e.g. navaids).

    ImprovementAviation Standards

    The DAFIF decoders now support the "WGX" datum.

    4.3.02

    Bug fixLuciadFusion

    com.luciad.format.raster.TLcdCADRGModelDecoder filters out overview files and legend files.

    4.3.01

    ImprovementLuciadFusion

    Raster painters now support warping of raster images with different x and y scales. This enables the display of stretched images in a web map server, for example.

    ImprovementLuciadFusion

    The alias 'Luzon 1911' was added to the JPL geodetic datum factory.

    ImprovementAviation Standards

    The default DAFIF and ARINC layer factories now support configuration of airspace and procedure layers.

    Bug fixDatabase Connectors

    The creation of geodetic rectangles with width greater than 270 degrees, for spatial filtering in SQL, has been corrected.

    Bug fixDefense Symbology

    The customizer for MIL-STD 2525B objects only fires relevant property change events, events generated by Component settings are no longer fired.

    4.3

    ImprovementLuciadFusion

    All ILcdShape implementations in com.luciad.shape and subpackages have their serialVersionUID defined for more robust serialization.

    ImprovementLuciadFusion

    The 2D bounds indexed model based on the R-tree has been refactored to allow adding a higher number of identical elements (i.e. at the same location).

    ImprovementLuciadFusion

    Verify if formatted coordinate reference system (CRS) is supported by Web Map Service. If it is not try if other formats, ie, try EPSG, AUTO, AUTO2.

    ImprovementLuciadFusion

    The batik libraries have been updated to batik 1.5.1 release. This also removes a prior incompatibility with the DAFIF and ARINC optional modules.

    ImprovementLuciadFusion

    Support for WMS 1.3.0 has been added.

    ImprovementLuciadFusion

    Within the file web.xml a few initialization properties have changed.
    • srs.epsg.cfg has become crs.epsg.cfg
    • srs.auto.cfg has become crs.auto.cfg
    • crs.auto2.cfg has been added for the additional AUTO2 namespace of WMS 1.3.0

    ImprovementLuciadFusion

    The schema file structure has changed to include the additional required schema files.

    ImprovementLuciadFusion

    Debug output from the server has been improved to help diagnose failed transactions.

    ImprovementLuciadFusion

    The server supports WMS 1.3.0 requests.

    ImprovementAviation Standards

    Changes to the API parts that were previously available from AIS. These should have been rarely used in applications using ARINC or DAFIF decoders, as they were undocumented. If they were used explicitly in an application, the changes may not be compatible with that application.
    • com.luciad.ais.symbology.TLcdAISDefaultPointPainterSymbolProvider is now a standard ILcdObjectIconProvider. Support for separate selection or snap icons has been removed. This can be implemented by using separate instances of TLcdAISDefaultPointPainterSymbolProvider with different colors.
    • ILcdDomainFactory has been renamed and made into an abstract class ALcdAISDomainObjectFactory.

    ImprovementAviation Standards

    Changes to the DAFIF decoder:
    • Support for object filtering is added. The filter is applied before objects are added to the decoded model. Documentation and sample code for filtering has been added.
    • A TLcdDAFIFProcedureDecoder and TLcdDAFIFIndependentProcedureDecoder was added that decodes procedures from an DAFIF file.
    • Next to the TLcdDAFIFDefaultLayerFactory, a TLcdDAFIFLayerConfiguration class was added. It follows the same idea of specifying a number of style properties for DAFIF data, but can apply them on an exisiting layer.

    ImprovementAviation Standards

    Changes to the ARINC decoder:
    • Support for object filtering is added. The filter is applied before objects are added to the decoded model. Documentation and sample code for filtering has been added.
    • A TLcdARINCProcedureHandler was added that decodes procedures from an ARINC file.
    • Next to the TLcdARINCDefaultLayerFactory, a TLcdARINCLayerConfiguration class was added. It follows the same idea of specifying a number of style properties for ARINC data, but can apply them on an exisiting layer.
    • ILcdARINCHandler has support for accumulating error messages through the newModel method.

    ImprovementAviation Standards

    Support for Terminal Procedures (based on ARINC 424 version 15), including SID, STAR and IAP, is added to AIS.

    ImprovementAviation Standards

    The ARINC and DAFIF decoders are part of the AIS optional module. There are no separate zip files and developer guides for ARINC or DAFIF. These are replaced by a single zip file containing AIS and a single AIS_DeveloperGuide.pdf.

    ImprovementAviation Standards

    The API for AIS is opened up in 4.3. This means that all classes for domain objects, shapes, painters etc. used in AIS are now available in the API. Previous releases only provided a stripped down API for DAFIF (from 4.0) and ARINC (from 4.2) decoders. The availability of the full AIS API enables a more flexible use of DAFIF and ARINC data (e.g. writing custom label painters), and allows the development of AIS based applications that easily show aeronautical data on maps.

    ImprovementDefense Symbology

    The customizer of MIL-STD 2525b objects has a layout better suited for resizing.

    Bug fixLuciadFusion

    The DEM raster model decoder handles file containing negative values better.

    Bug fixLuciadFusion

    The CADRG raster model decoder can handle files with optional NITF headers.

    Upgrade considerationLuciadFusion

    com.luciad.view.gxy.controller.TLcdGXYSelectController has a new property mouseDraggedSensitivity which replaces the property mousePressedSensitivity. The property mousePressedSensitivity is now used to determine the size of the region in which selection will occur when a user clicks the mouse.

    Upgrade considerationLuciadFusion

    All multilevel raster painters (com.luciad.format.raster.TLcdMultilevelRasterPainter and com.luciad.format.raster.TLcdNoWarpMultilevelRasterPainter) have better algorithms to switch between raster levels. This prevents premature switching to high-resolution images.

    4.2

    4.2.17

    ImprovementLuciadFusion

    com.luciad.reference.format.TLcdEPSGReferenceParser decodes the RD1918 Dutch grid system reference.

    ImprovementLuciadFusion

    A 3D line is added (com.luciad.shape.shape3D.TLcdXYZLine).

    4.2.15

    ImprovementLuciadFusion

    com.luciad.shape.shape3D.TLcdXYZPolygon implements ILcdPolygon instead of ILcdPolyline as it should.

    ImprovementDefense Symbology

    com.luciad.symbology.milstd2525b.view.swing.TLcdMS2525bObjectCustomizer has been extended:
    • An information panel with the code of the currently selected symbol is added.
    • A a country customizer is added.
    • There is now the possibility of setting a filter. This filter determines which symbols (based on their hierarchy) are to be displayed in the customizer.

    Bug fixLuciadFusion

    com.luciad.view.gxy.painter.TLcdGXYArcBandPainter supports snapping of its center point to any point. For the snap target to be accepted, the arc band should be moved by dragging its center point.

    Bug fixLuciadFusion

    com.luciad.view.gxy.TLcdGXYSelectController no longer uses timings to detect double mouse clicks.

    4.2.14

    ImprovementLuciadFusion

    com.luciad.format.gml.TLcdGMLModelDecoder can have an input stream factory set.

    ImprovementLuciadFusion

    com.luciad.util.TLcdLonLatParser allows ordinates with leading '+' signs, for example for coordinates in NITF files.

    ImprovementLuciadFusion

    The WCS server now supports 16 bit paletted raster models as input (DTEDs are a typical example). The color palette, however, will be lost when requesting coverages from such models, and a 16 bit gray raster will be returned.

    4.2.13

    Bug fixLuciadFusion

    The select controller sometimes allowed selected objects which were not near the mouse pointer. This was due to an integer overflow.

    Bug fixLuciadFusion

    Icons are no longer painted in the middle of a component when the coordinates passed are negative.

    4.2.12

    ImprovementLuciadFusion

    com.luciad.geometry.cartesian.TLcdCartesian has a contains3D method.

    ImprovementLuciadFusion

    com.luciad.view.vertical.TLcdVVJPanel can display heights in different altitude units.

    ImprovementLuciadFusion

    3 shapes have been added:
    • com.luciad.shape.shape3D.TLcdXYZPolygon
    • com.luciad.shape.shape3D.TLcdXYZPolyline
    • com.luciad.shape.shape3D.TLcdXYZPolypoint

    ImprovementLuciadFusion

    com.luciad.util.TLcdSpeedUnit can be used to express speeds in different units, while com.luciad.text.TLcdSpeedFormat can be used to display speeds as text.

    ImprovementMaritime Standards

    com.luciad.format.s52.TLcdS52SymbologyDecoder can set the scale factor for symbols.

    ImprovementMaritime Standards

    Computation and handling of underlying and adjacent points, lines, and areas has improved.

    Bug fixLuciadFusion

    com.luciad.format.raster.TLcdGeoTIFFModelDecoder decodes geodetic datums for user defined grid references.

    Bug fixLuciadFusion

    com.luciad.format.mif.TLcdMIFModelDecoder allows for the text string to be on the next line following the type TEXT.

    4.2.09

    Bug fixMaritime Standards

    com.luciad.format.s52.gxy.TLcdS52GXYPainterProvider now clones all fields properly.

    4.2.08

    ImprovementLuciadFusion

    The server accepts requests with WMTVER as version parameter.

    Bug fixLuciadFusion

    com.luciad.shape.ALcdPoint.equals() returns false on null objects instead of throwing a NullPointerException.

    Bug fixLuciadFusion

    com.luciad.geometry.cartesian.TLcdContourFinder has the minimum number of points for a contour set to 4 instead of 5. This allows for contour generation for data sets where the data is all situated within 1 contour.

    Bug fixLuciadFusion

    com.luciad.format.raster.TLcdDEMModelDecoder handles rounding errors better. com.luciad.format.rater.TLcdDEMTileDecoder allows for variable-sized records.

    4.2.06

    Bug fixReal-time Engine

    com.luciad.realtime.TLcdTrackModel threw a NullPointerException when calling removeAllElements.

    4.2.05

    Bug fixMaritime Standards

    com.luciad.format.s57.TLcdS57ModelDecoder now has a default input stream factory and sets a model descriptor.

    4.2.04

    ImprovementLuciadFusion

    com.luciad.format.raster.TLcdGeoTIFFModelDecoder supports multilevel TIFF files.

    ImprovementTerrain Analysis Engine

    All heights greater than 32765 are regarded equal to 0. This has an effect on line-of-sight computations when data is missing.

    ImprovementMaritime Standards

    Circles can now be filled.

    Bug fixLuciadFusion

    com.luciad.view.gxy.TLcdGXYLayerList no longer returns null selected elements when two consecutive sublayers have no selected elements.

    Bug fixLuciadFusion

    elementsChanged in com.luciad.model.TLcd2DBoundsIndexedModel was not correctly implemented.

    4.2.03

    ImprovementLuciadFusion

    com.luciad.geodesy.TLcdSphereUtil is made thread safe.

    ImprovementLuciadFusion

    The WMS server passes all compliancy tests for WMS 1.1.1.

    Bug fixLuciadFusion

    com.luciad.geodesy.TLcdEllipsoid did calculate the intersection correctly for a degenerate case.

    Bug fixMaritime Standards

    com.luciad.format.s57.TLcdS57ModelDecoder is more robust in parsing numeric values.

    4.2.02

    ImprovementLuciadFusion

    com.luciad.view.gxy.TLcdGXYViewXYWorldTransformation can have different scale factors along x-axis and y-axis.

    ImprovementLuciadFusion

    com.luciad.wms.server.TLcdOGCWMSCommandDispatcher can set up views capable of different scale factor along x-axis and y-axis.

    ImprovementLuciadFusion

    com.luciad.wms.server.TLcdGXYViewPool can construct views able of setting different scale factor along x-axis and y-axis.

    Bug fixLuciadFusion

    com.luciad.reference.format.TLcdAUTOReferenceParser did not take the value of the standard parallel into account for equidistant cylindrical projection.

    Bug fixLuciadFusion

    The new level switching for multilevel raster painters was not always correct.

    4.2.01

    ImprovementLuciadFusion

    The PNM image decoder (com.luciad.format.raster.TLcdPNMImageDecoder) better handles comments in the header.

    ImprovementLuciadFusion

    com.luciad.geodesy.ILcdEllipsoid has a method forwardAzimuth. This makes the interface consistent with the method geodesicDistance. com.luciad.geodesy.TLcdEllipsoid implements this method.

    ImprovementLuciadFusion

    com.luciad.geodesy.TLcdEllipsoidUtil has a method intersects2DLS with longitude/latitude as doubles removing the requirement to pass an ILcdPoint instance.

    ImprovementLuciadFusion

    com.luciad.geodesy.TLcdSphereUtil has a forwardAzimuth to make the interface consistent with the method geodesicDistance.

    ImprovementLuciadFusion

    All com.luciad.projection.ILcdProjection implementations have better implementations of the clone method, avoiding the use of constructors.

    ImprovementLuciadFusion

    The transformation classes
    • com.luciad.transformation.TLcdGeodetic2Geodetic
    • com.luciad.transformation.TLcdGeodetic2Grid
    • com.luciad.transformation.TLcdGrid2Grid
    • com.luciad.transformation.TLcdModelXYWorldTransformation
    • com.luciad.transformation.TLcdTopocentricCoordSysTransfo2
    • com.luciad.transformation.TLcdTopocentricCoordSysTransformation
    have hashCode implementations.

    4.2

    ImprovementLuciadFusion

    The GeoTIFF decoder has support for additional grid references.

    ImprovementLuciadFusion

    Support for input streams using NIO has been added to com.luciad.io.TLcdInputStreamFactory and TLcdIOUtil. By default, when Java 1.4 or better is available, NIO input streams are used by these classes and the decoders that depend on them. This improves performance of the seek operation on input files, which is important for several decoders.

    ImprovementLuciadFusion

    Clients may request the WMS an image with a transparent background even if the map format they request does not support this. The WMS is then supposed to return an image with the background pixels set to value of BGCOLOR. A test has been added for formats that do not support a transparent background, ie, JPEG.

    ImprovementLuciadFusion

    The ILcdGXYLayer returned by the layer factory now returns the bounds based on the visible Web Map Server layers.

    ImprovementTerrain Analysis Engine

    Several classes have updated and extended reference documentation (Javadoc).

    ImprovementDefense Symbology

    Support for MIL-STD 2525b symbology (com.luciad.symbology.milstd2525b) is extended to all units, tactical and other symbols as defined in the MIL-STD 2525b standard. There is a new TLcdEditableMS2525bObject and a corresponding painter provider, editor provider and icon provider that support these. The package is backwards compatible, but several existing classes in com.luciad.symbology.milstd2525b have been deprecated in favor of the new ones. A sample MS2525b application for has been added.

    ImprovementMaritime Standards

    com.luciad.format.s52.gxy.TLcdS52GXYPainterProvider now has an additional setting that controls which objects are painted.

    Bug fixLuciadFusion

    TLcdGXYTextPainter did not edit non-scaled text correclty.

    Bug fixLuciadFusion

    TLcdGXYTextPainter did not rotate text correctly when a font style was set on the painter.

    Bug fixLuciadFusion

    Fixed painting of multi-labels by an ILcdGXYMultiLabelPainter on a TLcdGXYLayer when no label deconfliction was performed: Not all labels were painted.

    Bug fixLuciadFusion

    Fixed implementations of ILcdBounds methods contains2D and interacts2D in TLcdLonLatFloatPoint, TLcdLonLatPoint.

    Bug fixLuciadFusion

    TLcdEPSGReferenceParser did not always close the inputstream when parsing a reference.

    Bug fixLuciadFusion

    TLcdDialogManager cached dialogs, which could lead to small resource leaks and which ignored parent frame changes.

    Bug fixLuciadFusion

    Several classes implemented equals but not hashCode. hashCode has been added to:
    • com.luciad.format.shp.TLcdSHPModelReferenceDecoder, TLcdSHPPointZ, TLcdSHPPointM
    • com.luciad.geometry.cartesian.TLcdXYZRotation.java
    • com.luciad.projection.ALcd* and TLcd*

    Bug fixLuciadFusion

    Corrected exception handling in com.luciad.format.shp.TLcdSHPModelReferenceDecoder. This reference decoder sometimes returned a null reference instead of throwing an IOException.

    Bug fixLuciadFusion

    Clients may request the WMS an image with a transparent background even if the map format they request does not support this. The WMS is then supposed to return an image with the background pixels set to value of BGCOLOR. A test has been added for formats that do not support a transparent background, ie, JPEG.

    Bug fixDatabase Connectors

    The encoding of null objects has been fixed.

    Bug fixTerrain Analysis Engine

    TLcdGXYViewBasedTerrainElevationProvider did not take into account the property 'UseOnlyVisibleLayers' correctly. This could cause a null pointer exception.

    4.1

    4.1.09

    ImprovementLuciadFusion

    Layers displaying magnetic north calculations (com.luciad.format.magneticnorth.gxy.TLcdMagneticNorthGXYLayerFactory) now have a label painter assigned (com.luciad.format.magneticnorth.gxy.TLcdMagneticNorthGXYLabelPainter).

    ImprovementLuciadFusion

    The MIF model decoder (com.luciad.format.mif.TLcdMIFModelDecoder) truncates the file name to use as display name in the model descriptor for models produced.

    ImprovementLuciadFusion

    The GeoTIFF model decoder (com.luciad.format.raster.TLcdGeoTIFFModelDecoder) has support for UTM on the southern hemisphere and UPS on the poles.

    ImprovementLuciadFusion

    The multilevel raster painter has a property to store a border for larger cached images. This might allow for quicker panning actions, for example.

    ImprovementLuciadFusion

    The layer label painter (com.luciad.view.gxy.TLcdGXYLayerLabelPainter) and the view label painter (com.luciad.view.gxy.TLcdGXYViewLabelPainter) have a property to set the quality of label decluttering. A new higher quality algorithm can be used to place more labels in the view.

    ImprovementDefense Standards

    TLcdNITFModelDecoder can now read NITF 2.0 files without reference.

    Bug fixLuciadFusion

    The pan controller did not pan the view when moving out of the view slowly at the bottom or at the right, even when panOnMouseMoveExit or panOnMouseDragExit were set to true.

    Bug fixDefense Standards

    A VPF layer accepts null models.

    Bug fixDefense Standards

    A performance problem was fixed which occurred when using the GeoSym symbology.

    Bug fixInfrastructure Standards

    The painter styles now display the correct colors.

    Bug fixInfrastructure Standards

    com.luciad.format.dwg.TLcdDWGModelDecoder has been fixed for decoding block definitions and for decoding text in DWG R2000.

    Bug fixMaritime Standards

    com.luciad.format.s57.TLcdS57ModelDecoder now closes the input stream of the the update files.

    4.1.08

    ImprovementLuciadFusion

    The shape list painter (com.luciad.view.gxy.painter.TLcdGXYShapeListPainter) throws an IllegalArgumentException when a object other than an ILcdShapeList is set to it.

    Bug fixLuciadFusion

    The point list painter (com.luciad.view.gxy.painter.TLcdGXYPointListPainter) did not implement the method isTouched correctly.

    4.1.05

    Bug fixDatabase Connectors

    The swapping of coordinates when inserting points has been fixed.

    Bug fixMaritime Standards

    com.luciad.format.s57.TLcdS57ModelDecoder now handles update files.

    4.1.04

    ImprovementMaritime Standards

    com.luciad.format.s57.TLcdS57ModelDecoder now accepts zipped (extension .zip) or gzipped (extension .gz) files.

    Bug fixLuciadFusion

    The buffered image view (com.luciad.view.gxy.TLcdGXYViewBufferedImage) could get into an infinite loop when displaying a vector model.

    Bug fixLuciadFusion

    The no warp raster painter (com.luciad.format.raster.TLcdNoWarpRasterPainter) sometimes left one-pixel gaps between tiles, due to rounding errors.

    4.1.03

    ImprovementLuciadFusion

    The GML decoder takes into account schema files given through a URL.

    ImprovementLuciadFusion

    The CADRG decoder (com.luciad.format.raster.TLcdCADRGModelDecoder) supports the formats MIL-PRF-89038 and MIL-PRF-89041.

    ImprovementLuciadFusion

    The USRP/ASRP decoder (com.luciad.format.raster.TLcdUSRPModelDecoder) has
    • support for southern hemisphere UTM references and UPS references on the poles.
    • improved detection of ASRP versions.
    • handling of more than 256 colors.

    ImprovementLuciadFusion

    com.luciad.reference.TLcdUPSGrid is a new grid reference for data over the North Pole and South Pole. com.luciad.view.map.TLcdUpsMgrsUtil is a utility class to convert lonlat coordinates to UPS coordinates.

    ImprovementLuciadFusion

    com.luciad.reference.TLcdUTMGrid has a property to make the distinction between northern and southern hemisphere.

    ImprovementDefense Standards

    com.luciad.format.raster.TLcdUSRPModelDecoder now handles more than 256 colors.

    Bug fixMaritime Standards

    com.luciad.format.s57.TLcdS57ModelDecoder now handles buffered input streams.

    Bug fixMaritime Standards

    The LIGHTS05 procedure always returns a result.

    Upgrade considerationLuciadFusion

    com.luciad.transformation.TLcdUpsMgrsUtil has been removed. This class was copied to the package com.luciad.view.map earlier.

    4.1.02

    Bug fixLuciadFusion

    com.luciad.format.gml.TLcdGMLModelEncoder always writes the gml:boundedBy element, which is required for validation.

    Bug fixLuciadFusion

    com.luciad.format.gml.TLcdGMLModelDecoder did not accept geometries passed through the gml:GeometryPropertyType tag.

    4.1.01

    ImprovementLuciadFusion

    The GML decoder (com.luciad.format.gml.TLcdGMLModelDecoder) and the encoder (com.luciad.format.gml.TLcdGMLModelEncoder) include OGC schema validation.

    Bug fixLuciadFusion

    com.luciad.format.raster.TLcdGeoTIFFModelDecoder handles georeferences defined by single-tie point transformations better.

    4.1

    ImprovementLuciadFusion

    com.luciad.io.TLcdInputStreamFactory checks if a URL has the file protocol. If so it tries to open it as a file.

    Bug fixLuciadFusion

    com.luciad.model.TLcdOpenAction returns silently when no decoder is chosen from the list.

    Bug fixLuciadFusion

    com.luciad.format.shp.TLcdSHPModelEncoder throws an IllegalArgumentException when encoding a model which has no bounds, for example when it contains no objects.

    4.0

    4.0.09

    ImprovementLuciadFusion

    com.luciad.format.gml.TLcdGMLModelDecoder and com.luciad.format.gml.TLcdGMLModelEncoder can handle GML 2.

    ImprovementLuciadFusion

    com.luciad.projection.TLcdOrthographic has been optimized for better performance. It can take into account cached sine and cosine values.

    Bug fixLuciadFusion

    The arc band editor (com.luciad.view.gxy.TLcdGXYArcbandPainter) did not edit the arc band when the handles were dragged.

    Bug fixLuciadFusion

    com.luciad.reference.format.TLcdEPSGReferenceParser sometimes incorrectly parsed WGS84 references.

    Bug fixDefense Symbology

    The text modifiers panel for the MIL-STD 2525b unit symbols no longer requires enter to be pressed to retain the values.

    4.0.08

    Bug fixLuciadFusion

    com.luciad.projection.TLcdOrthographic switched coordinates when constructed with an ILcdPoint parameter.

    Bug fixLuciadFusion

    com.luciad.format.raster.TLcdGeoTIFFModelDecoder takes into account user-defined central meridians for Mercator projections.

    Bug fixLuciadFusion

    com.luciad.format.raster.TLcdDTEDDirectoryModelDecoder could not be constructed without initial bounds.

    4.0.06

    ImprovementLuciadFusion

    CGM has improved decoding and painting of line and fill styles.

    ImprovementLuciadFusion

    com.luciad.format.mif.TLcdMAPModelDecoder throws an IOException when the model reference could not be decoded. element. This allows for easier extension of the SVG format to custom formats.

    ImprovementLuciadFusion

    The svg package has some new classes and methods to allow easier decoding and encoding of extensions to the SVG format:
    • ILcdSVGModelDescriptorFactory creates model descriptors that take into account attributes of the root element of an SVG file.
    • the name of the root element and the grouping element can be retrieved as properties of the decoder.
    • the model encoder takes the model into account when writing the file header.

    Bug fixLuciadFusion

    com.luciad.geodesy.TLcdSphereUtil creates more precise buffer contours, by taking into account both forward and backward azimuth angles. This reduces effects on the buffer when it is in the neighborhood of the poles.

    Bug fixInfrastructure Standards

    com.luciad.format.dwg.TLcdDWGModelDecoder now handles Solid objects.

    Upgrade considerationLuciadFusion

    com.luciad.format.cgm.TLcdCGMFillStyle and com.luciad.format.cgm.TLcdCGMLineStyle have been moved to the com.luciad.format.cgm.gxy package and renamed to TLcdCGMFillGXYPainterStyle and TLcdCGMLineGXYPainterStyle.

    4.0.05

    Bug fixLuciadFusion

    com.luciad.format.raster.TLcdRenderedImageTile handles images with an alpha channel. This enables the use of TIFF images with transparency expressed per pixel.

    Bug fixLuciadFusion

    com.luciad.format.mif.TLcdMIFModelReferenceParser correctly handles unit conversion of custom defined datums.

    Bug fixLuciadFusion

    SRS token ending with spaces are now better handled.

    Bug fixAdvanced Raster Services

    Bounds were incorrectly handled when specified in the ECW file, while the model reference was not in the ECW file.

    Bug fixTerrain Analysis Engine

    Point-to-point line-of-sight computations take into account the unknown value for DTED data.

    Bug fixDefense Standards

    com.luciad.format.raster.TLcdUSRPModelDecoder can handle image files with alternative extensions.

    4.0.04

    ImprovementLuciadFusion

    com.luciad.gui.swing.TLcdRangeSlider has a basic UI implementation for XP. The implementation does not take into account the theme loaded in XP.

    ImprovementLuciadFusion

    com.luciad.shape.shape3d.ILcd3DEditablePolyline extends com.luciad.shape.shape2d.ILcd2DEditablePolyline

    ImprovementLuciadFusion

    com.luciad.transformation.ILcdModelModelTransformation has methods to transform bounds.

    ImprovementLuciadFusion

    com.luciad.transformation.TLcdGeoReference2GeoReference support transformations between geodetic references.

    ImprovementLuciadFusion

    com.luciad.transformation.TLcdGeodetic2Geodetic transforms from one geodetic reference to another geodetic reference.

    ImprovementLuciadFusion

    com.luciad.util.ILcdFeaturedDescriptorProvider is an interface to provide featured descriptors. com.luciad.model.TLcdFeaturedModelDescriptor implements this interface by always returning itself.

    ImprovementLuciadFusion

    The following painters com.luciad.view.gxy.painter support snapping to points of a model with a different model reference:
    • TLcdGXYArcPainter
    • TLcdGXYBoundsPainter
    • TLcdGXYBufferPainter
    • TLcdGXYCirclePainter
    • TLcdGXYEllipsePainter
    • TLcdGXYLonLatHeightBufferPainter
    • TLcdGXYPointListPainter

    ImprovementLuciadFusion

    com.luciad.view.map.TLcdMapLocation, com.luciad.TLcdUtmMgrsUtil and TLcdUTMZonePainter can have a separator character for UTM coordinate representations.

    Bug fixLuciadFusion

    com.luciad.shape.shape3d.TLcdLonLatHeightDome and com.luciad.shape.shape3D.TLcdLonLatHeightSphere have their altitude equal to the Z coordinate of the center point.

    Bug fixLuciadFusion

    com.luciad.gui.TLcdIconImageUtil contained a memory leak, the tracker did not release the images it loaded.

    Bug fixLuciadFusion

    com.luciad.format.mif.TLcdMIFModelDecoder did not read the pen for an arc correctly.

    4.0.03

    ImprovementLuciadFusion

    com.luciad.format.svg.TLcdSVGModelEncoder has methods to retrieve the file extension and the root element name.

    ImprovementLuciadFusion

    com.luciad.transformation.ILcdModelModelTransformation is an interface to describe coordinate transformations from one model reference to another model reference com.luciad.transformation.TLcdGeoReference2GeoReference implements this interface.

    ImprovementLuciadFusion

    com.luciad.geodesy.TLcdGeodeticDatumFactory includes the com.luciad.geodesy.TLcdGenericGeodeticDatumFactory for exporting geodetic datums.

    Bug fixLuciadFusion

    com.luciad.format.pol.TLcdPOLGeometryfactory only created closed geometries.

    4.0.02

    Bug fixLuciadFusion

    com.luciad.format.shp.TLcdSHPModelDecoder splits up numerical feature values, based on their type:
    • F: Float
    • B: Double
    • I : Integer
    • N : Double/Integer (when the number of decimals is 0, an Integer is returned)

    4.0

    ImprovementLuciadFusion

    com.luciad.format.cgm.TLcdCGMModelDecoder decodes the CGM format (Computer Graphics Metafile), as defined by the military standard MIL-STD-2301. com.luciad.format.cgm.gxy.TLcdCGMGXYPainterProvider provides painters for the decoded objects.

    ImprovementLuciadFusion

    com.luciad.format.mif.TLcdMIFModelDescriptor implements com.luciad.util.TLcdClassContentDescriptor.

    ImprovementLuciadFusion

    com.luciad.format.mif.TLcdMIFModelReferenceFormatter supports formatting com.luciad.projection.TLcdLambertAzimuthalEqualArea.

    ImprovementLuciadFusion

    com.luciad.format.pol contains classes to decode and encode pol format files as produced by the TAAM application of the Preston Group PTY Ltd.

    ImprovementLuciadFusion

    com.luciad.format.raster.TLcdBILModelDecoder can be customized to read any format of model reference.

    ImprovementLuciadFusion

    com.luciad.format.raster.TLcdDTEDModelDecoder and com.luciad.format.raster.TLcdDTEDDirectoryModelDecoder have additional properties for performance tuning.

    ImprovementLuciadFusion

    com.luciad.format.shp.TLcdSHPModelDescriptor implements com.luciad.util.TLcdClassContentDescriptor.

    ImprovementLuciadFusion

    com.luciad.geodesy.TLcdGenericGeodeticDatumFactory creates geodetic datums based on a set of 9 parameters.

    ImprovementLuciadFusion

    com.luciad.geometry.ILcdSegmentScanner implementations com.luciad.geometry.cartesian.TLcdGridSegmentScanner and com.luciad.geometry.ellipsoidal.TLcdGeodeticSegmentScanner can discretize a line segment into a set of points.

    ImprovementLuciadFusion

    com.luciad.gui.ILcdObjectIconProvider is extended with a method to notify whether an icon is available for an object.

    ImprovementLuciadFusion

    com.luciad.model.TLcdModelList is an com.luciad.model.ILcdModel implementation that contains a list of models.

    ImprovementLuciadFusion

    com.luciad.reference.TLcdSwissGridReference can be based on one of two grid systems (LV03 and LV95).

    ImprovementLuciadFusion

    com.luciad.reference.TLcdUTMGrid implements the toString method.

    ImprovementLuciadFusion

    com.luciad.reference.TLcdGeodeticReference has a method to set the geodetic datum.

    ImprovementLuciadFusion

    com.luciad.shape.shape3D contains new com.luciad.shape.ILcdShape implementations to model 3D objects:
    • TLcdLonLatHeightSphere
    • TLcdLonLatHeightDome
    • TLcdLonLatHeightBuffer
    • TLcdLonLatHeightPolyline
    • TLcdLonLatHeightPolypoint

    ImprovementLuciadFusion

    com.luciad.text.TLcdAltitudeFormat has the property userUnit renamed to displayUnit.

    ImprovementLuciadFusion

    com.luciad.transformation.TLcdGrid2Grid implements the equals method.

    ImprovementLuciadFusion

    com.luciad.util.ILcdContentDescriptor is deprecated in favor of com.luciad.util.ILcdClassContentDescriptor.

    ImprovementLuciadFusion

    com.luciad.util.ILcdPointFunction is an interface for a function that can be applied to a point.

    ImprovementLuciadFusion

    com.luciad.util.TLcdAltitudeUnit has his units renamed:
    • METRE_UNIT becomes METRE_AMSL
    • KM_UNIT becomes KM_AMSL
    • FT_UNIT becomes FEET_AMSL

    ImprovementLuciadFusion

    com.luciad.view.gxy.ILcdGXYLayerList defines an ordered list of com.luciad.view.gxy.ILcdGXYLayer and implements com.luciad.view.gxy.ILcdGXYLayer. This allows grouping of layers into themes.

    ImprovementLuciadFusion

    com.luciad.view.gxy.ILcdGXYMultilabelPainter is an interface for label painters which can paint multiple labels per object. Existing label decluttering algorithms takes this new type of label painter into account.

    ImprovementLuciadFusion

    com.luciad.view.gxy.painter.ArcPainter
    • can have a null style set
    • has a snap icon
    • can have its center always painted
    • allows snapping to its end points

    ImprovementLuciadFusion

    com.luciad.view.gxy.painter.TLcdGXYBufferPainter
    • has a snap icon
    • allows snapping to its contour

    ImprovementLuciadFusion

    com.luciad.view.gxy.painter.TLcdGXYCirclePainter
    • allows snapping to its center
    • allows snapping of its center to a point
    • can have its center always/never/on selection painted.
    • has a snap icon

    ImprovementLuciadFusion

    com.luciad.view.gxy.painter.TLcdGXYEllipsePainter has a snap icon.

    ImprovementLuciadFusion

    com.luciad.view.gxy.painter.TLcdGXYLonLatHeightBufferPainter is a painter for com.luciad.shape.shape3d.TLcdLonLatHeightBuffer objects.

    ImprovementLuciadFusion

    com.luciad.view.map.TLcdUPSGridLayer is new grid layer representing a UPS grid.

    ImprovementReal-time Engine

    com.luciad.realtime.TLcdTrackModel is an com.luciad.model.ILcdModel implementation that has less overhead than a com.luciad.model.TLcd2DBoundsIndexedModel for dynamic data without having to paint all objects in a model like a com.luciad.model.TLcdVectorModel.

    ImprovementReal-time Engine

    com.luciad.realtime.TLcdSimulatorModelList is a composite com.luciad.realtime.ILcdSimulatorModelList implementation.

    ImprovementTerrain Analysis Engine

    com.luciad.tea.ALcdTerrainElevationProvider provides height values for terrain. Extensions in the com.luciad.tea.package are:
    • TLcdDensityBasedRasterElevationProvider
    • TLcdFixedLevelBasedRasterElevationProvider
    • TLcdGXYViewBasedTerrainElevationProvider
    These elevation providers can be plugged into
    • TLcdProfileGenerator
    • TLcdTerrainSegmentScanner
    and are used by the TLcdTerrainProfileController and the TLcdVVTerrainProfileModel.

    ImprovementInfrastructure Standards

    com.luciad.format.dwg.TLcdDWGModelDescriptor now implements com.luciad.util.ILcdClassContentDescriptor.

    Bug fixLuciadFusion

    com.luciad.geodesy.TLcdSphereUtil returned incorrect values when checking the containment of points in polygons on the southern hemisphere.

    Bug fixDefense Symbology

    The Military Standard 2525b symbology codes where not correctly interpreted for joker and faker alliances.

    3.2

    3.2.21

    ImprovementLuciadFusion

    com.luciad.format.mif.TLcdMIFModelReferenceParser throws exceptions for unknown geodetic datums and projection mappings.

    ImprovementLuciadFusion

    com.luciad.format.shp.TLcdSHPModelEncoder encodes boolean features as Strings.

    ImprovementLuciadFusion

    com.luciad.geodesy.TLcdEllipsoidUtil has a method to calculate the intersection point of two line segments.

    ImprovementLuciadFusion

    com.luciad.view.gxy.TLcdAWTPath draws extremely long lines more accurate.

    ImprovementLuciadFusion

    com.luciad.view.map.TLcdMapLocation can display coordinates based on a given geodetic datum instead of always on WGS84.

    ImprovementLuciadFusion

    com.luciad.view.map.TLcdMapRulerController can express distances in millimeters.

    Bug fixLuciadFusion

    com.luciad.format.shp.TLcdSHPModelEncoder correctly encodes integer features into the dbf file.

    Bug fixLuciadFusion

    com.luciad.format.mif.TLcdMIFModelReferenceFormatter correctly formats Lambert conformal conical projections.

    3.2.20

    ImprovementLuciadFusion

    com.luciad.format.svg.TLcdSVGModelDecoder has a method that allows subclasses to decode files without having to use a SAX parser.

    Bug fixLuciadFusion

    com.luciad.format.svg.TLcdSVGUnstyledLonLatShapeFactory correctly decodes text instead of returning null.

    3.2.19

    ImprovementLuciadFusion

    com.luciad.format.raster.TLcdDTEDColorModelFactory now returns the color white for values above 3500 meters for the default color model.

    ImprovementLuciadFusion

    com.luciad.model.TLcdDefaultObjectInModelfilter is an com.luciad.util.ILcdFilter implementation that accepts only objects in a certain model.

    ImprovementLuciadFusion

    com.luciad.text.TLcdAltitudeFormat and com.luciad.util.TLcdDistanceFormat implement com.luciad.util.ILcdFormatter.

    ImprovementLuciadFusion

    com.luciad.util.TLcdLonLatFormatter formats longitude-latitude coordinates as decimals minutes.

    ImprovementLuciadFusion

    com.luciad.view.map.TLcdMapLocation includes a decimals minutes mode.

    ImprovementAdvanced Raster Services

    TLcdMrSIDModelDecoder is more memory efficient for large images.

    ImprovementInfrastructure Standards

    The package now supports more than 64 levels, for DGN V8.

    Bug fixLuciadFusion

    com.luciad.view.gxy.painter.TLcdGXYTextPainter correctly handles a cancel on the text input dialog.

    Bug fixLuciadFusion

    com.luciad.view.gxy.controller.TLcdGXYEditController and com.luciad.view.gxy.controller.TLcdGXYSelectController clear the 'rectangle' on a repaint when the rectangle consisted only of a horizontal line.

    Bug fixLuciadFusion

    com.luciad.format.raster.TLcdBILModelDecoder sometimes used an incorrect colormodel.

    Bug fixLuciadFusion

    com.luciad.reference.format.TLcdWKTReferenceParser throws ParseExceptions instead of returning null values.

    Bug fixDefense Symbology

    com.luciad.symbology.milstd2525b.model.TLcdEditableMS2525bUnit takes into account the MS2525b code in the equals method.

    3.2.18

    Bug fixLuciadFusion

    com.luciad.format.shp.TLcdSHPModelEncoder uses the same series of tests for encoding the header for the shp file as for encoding objects in the shp file. This ensures that the header states the correct type of the objects in the file.

    3.2.16

    ImprovementLuciadFusion

    com.luciad.format.mif.TLcdMIFModelDecoder can handle files with the NONE keyword.

    ImprovementLuciadFusion

    com.luciad.format.raster.TLcdJAIRasterModelDecoder was extended to handle multiple image files, in different tiles and levels.

    ImprovementLuciadFusion

    com.luciad.util.TLcdLicenseServer implements a license server which can be used to centralize the control of the number of floating licenses.

    ImprovementDefense Standards

    The following objects now implement com.luciad.shape.ILcdShape:
    • com.luciad.format.vpf.TLcdVPFAreaFeature
    • com.luciad.format.vpf.TLcdVPFLightLinFeature
    • com.luciad.format.vpf.TLcdVPFLineFeature,
    so that all objects in VPF models implement com.luciad.model.ILcdShape.

    Bug fixLuciadFusion

    com.luciad.format.mif.TLcdMIFModelDecoder no longer fails on the SMOOTH clause for PLINE objects.

    3.2.15

    ImprovementAdvanced Raster Services

    TLcdMrSIDModelDecoder can have a ILcdModelReferenceDecoder set. This allows the user to decode the reference from a custom formatted file.

    ImprovementAdvanced Raster Services

    TLcdECWModelDecoder can have a ILcdModelReferenceDecoder set. This allows the user to define his own reference format for the ECW files.

    3.2.14

    ImprovementLuciadFusion

    com.luciad.view.map.TLcdGeorefUtil has improved accuracy by a factor 2.

    ImprovementReal-time Engine

    com.luciad.realtime.TLcdSimulator handles changes in the simulator model by listening to change events of the property trackmodel. This avoids the need of setting a new track model every time a change occurs.

    3.2.12

    ImprovementLuciadFusion

    com.luciad.format.shp.TLcdSHPModelDecoder will decode references from a .PRJ files by default. If no such file is present it will look for a corresponding .ref file and decode that file. This behaviour can be changed by setting a com.luciad.model.ILcdModelReferenceDecoder.

    Bug fixLuciadFusion

    com.luciad.view.gxy.TLcdAWTPath explicitly checks for Windows 98 to set safe ordinate limits. This ensures better approximations on other platforms for very long lines.

    3.2.11

    ImprovementLuciadFusion

    com.luciad.format.mif.TLcdMIFModelReferenceParser uses a better geodetic datum for files containing geodetic datum id 1002.

    ImprovementLuciadFusion

    com.luciad.format.raster.TLcdJAIRasterModelDecoder supports overriding the images colormodel.

    ImprovementLuciadFusion

    com.luciad.gui.TLcdIconImageUtil had some methods deprecated which had unused parameters.

    ImprovementLuciadFusion

    com.luciad.reference.TLcdUTMGrid can be based on a geodetic datum other than WGS84. This is taken into account when importing from/exporting to properties.

    ImprovementLuciadFusion

    com.luciad.reference.format.TLcdWKTReferenceParser decodes an alternative format for geodetic datum names, where D_ precedes the name.

    3.2.10

    ImprovementLuciadFusion

    com.luciad.projection.TLcdOrthographic can take the height of a point into account.

    3.2.09

    ImprovementLuciadFusion

    com.luciad.format.svg.ILcdSVGShapeFactory has been extended to create shapes from the PATH element.

    ImprovementLuciadFusion

    com.luciad.format.svg.TLcdSVGModelDecoder can decode paths not containing curves.

    ImprovementLuciadFusion

    com.luciad.geodesy.TLcdNIMA8350GeodeticDatumFactory has been updated to include data of most recent documents.

    ImprovementLuciadFusion

    com.luciad.format.raster.TLcdTFWModelDecoder supports JPW/BPW files corresponding to JPEG/BMP images.

    ImprovementAdvanced GIS Engine

    com.luciad.geometry.cartesian.TLcdBasicBinaryTopology supports calculations with com.luciad.shape.ILcdArc and com.luciad.shape.ILcdArcBand objects.

    ImprovementDefense Standards

    The use of GeoSym in VPF layers can be turned off.

    Bug fixLuciadFusion

    com.luciad.projection.TLcdStereographic is now correctly created through the constructor with com.luciad.shape.ILcdPoint argument.

    Bug fixLuciadFusion

    com.luciad.format.mif.TLcdMIFModelDecoder can decode ellipses created by MapInfo which do not follow the standard.

    Bug fixLuciadFusion

    com.luciad.format.mif.TLcdMIFModelEncoder did not encode the radius of an ellipse correctly.

    3.2.07

    ImprovementLuciadFusion

    com.luciad.format.mif.TLcdMIFModelDecoder and com.luciad.format.mif.TLcdMIFModelEncoder decode and encode arc elements.

    ImprovementLuciadFusion

    com.luciad.format.shp.TLcdSHPModelEncoder can export models that contain com.luciad.shape.ILcdPolyline or com.luciad.shape.ILcdPolygon objects which are not in a com.luciad.shape.ILcdShapeList.

    ImprovementLuciadFusion

    Setting the property smartPan on com.luciad.view.gxy.TLcdGXYViewCanvas or com.luciad.view.gxy.TLcdGXYViewJPanel or one of its subclasses only has an effect when paintInBackground is false. This was disabled in version 3.2.

    Bug fixLuciadFusion

    com.luciad.format.mif.TLcdMIFModelEncoder wrote the Coordsys clause twice.

    Bug fixLuciadFusion

    com.luciad.format.mif.TLcdMIFModelEncoder encodes ellipses, arcs and circles created using delegation.

    3.2.06

    ImprovementLuciadFusion

    com.luciad.geodesy.TLcdJPLGeodeticDatumFactory has an alias for MGI.

    3.2.05

    ImprovementLuciadFusion

    the hardware keys can be installed on Solaris systems without having to change the read/write permissions on a tty.

    ImprovementLuciadFusion

    com.luciad.format.gml.TLcdGMLModelDecoder has a new property to indicate whether the x coordinate or the y coordinate is given first.

    ImprovementLuciadFusion

    com.luciad.format.gml.TLcdGMLModelDecoder can decode elements of type Box, while com.luciad.format.gml.TLcdGMLModelEncoder can encode com.luciad.shape.ILcdBounds objects into GML Box elements.

    ImprovementLuciadFusion

    com.luciad.view.gxy.controller.TLcdGXYEditController and com.luciad.view.gxy.controller.TLcdGXYNewController have a property to extend the clip with a margin on a clipped repaint of the view.

    Bug fixLuciadFusion

    Pan behavior was changed as of version 3.2.

    Bug fixLuciadFusion

    As of version 3.2, view implementations did not repaint correctly when the number of cached background layers was set to 0.

    3.2.04

    ImprovementLuciadFusion

    The following decoders update the descriptors of the resulting models with the classes of the objects loaded in that model:
    • com.luciad.format.mif.TLcdMAPModelDecoder
    • com.luciad.format.mif.TLcdMIFModelDecoder
    • com.luciad.format.shp.TLcdSHPModelDecoder

    ImprovementLuciadFusion

    com.luciad.text.TLcdAltitudeFormat allows to parse and format altitudes.

    ImprovementLuciadFusion

    com.luciad.util.TLcdAltitdeUnit defines altitude unit constants.

    ImprovementInfrastructure Standards

    com.luciad.format.TLcdDWGModelDescriptor now implements com.luciad.util.ILcdContentDescriptor

    3.2.03

    ImprovementLuciadFusion

    com.luciad.format.gml.TLcdGMLModelDecoder throws an IOException when decoding fails instead of returning a null model.

    Bug fixLuciadFusion

    Line-of-sight calculations take into account that both points should not be over a raster.

    Bug fixAdvanced Raster Services

    Decoding of ERS reference files has been improved.

    Bug fixInfrastructure Standards

    The handling of 3D transformations has been improved.

    3.2.02

    ImprovementLuciadFusion

    com.luciad.util.ILcdContentDescriptor is an interface that describes the classes a com.luciad.model.ILcdModel contains. Following model descriptors implement this interface:
    • com.luciad.format.mif.TLcdMIFModelDescriptor
    • com.luciad.format.shp.TLcdSHPModelDescriptor

    Bug fixLuciadFusion

    com.luciad.view.gxy.TLcdGXYLayer fires an event when its icon is set.

    3.2

    ImprovementLuciadFusion

    com.luciad.format.gml.TLcdGMLModelDecoder throws an IOException when decoding fails instead of returning a null model. This is more according to the com.luciad.model.ILcdModelDecoder interface.

    ImprovementLuciadFusion

    com.luciad.format.gml.TLcdGMLModelDecoder can have a com.luciad.model.ILcdModelReferenceDecoder set.

    ImprovementLuciadFusion

    The messages for exceptions generated by the following classes were clarified:
    • com.luciad.format.raster.TLcdGeoTIFFImageDecoder
    • com.luciad.format.raster.TLcdJAIRasterModelDecoder
    • com.luciad.format.raster.TLcdRasterModelDecoder
    • com.luciad.format.raster.TLcdTFWRasterModelDecoder
    • com.luciad.format.raster.TLcdBufferedTile
    This results in better messages presented by com.luciad.model.TLcdOpenAction.

    ImprovementLuciadFusion

    com.luciad.format.raster.ALcdRasterPainter has the property maxNoOfOutlineTiles deprecated in favor of maxNumberOfOutlineTiles.

    ImprovementLuciadFusion

    com.luciad.model.TLcdModelChangedEventSupport has a new method allElementsChanged. This fires an com.luciad.model.TLcdModelChangedEvent with ALL_OBJECTS_CHANGED added as mode. The hashtable of changes contains only the changes previous to and following the call to allElementsChanged. All subclasses of com.luciad.model.ALcdModel use this class to dispatch their model changed events.

    ImprovementLuciadFusion

    com.luciad.util.TLcdLonLatParser automatically recognizes longitude-latitude formats.

    ImprovementLuciadFusion

    All com.luciad.view.gxy.ILcdGXYView implementations except com.luciad.view.gxy.TLcdGXYViewBufferedImage and com.luciad.view.map.TLcdMapBufferedImage support painting in the background, com.luciad.view.gxy.ILcdGXYView has additional methods to invalidate its content and to return only after the updating has completely finished.

    ImprovementLuciadFusion

    Setting the property smartPan on com.luciad.view.gxy.TLcdGXYViewCanvas or com.luciad.view.gxy.TLcdGXYViewJPanel or one of its subclasses no longer has an effect.

    ImprovementReal-time Engine

    com.luciad.realtime.TLcdSimulator has a property to allow the application to manage the number of cached background layers.

    ImprovementDefense Standards

    com.luciad.format.vpf.TLcdVPFLayerFactory has a new property UseScaleRange which allows to use the scale ranges encoded in the vpf data.

    Bug fixLuciadFusion

    com.luciad.util.TLcdLonLatCoord takes into account NaN values for string representation of longitude/latitude coordinates.

    Bug fixLuciadFusion

    The model bounds to world bounds transformation calculations have been improved. Previously the upper right corner of the grid might not be painted in rare cases.

    Bug fixLuciadFusion

    com.luciad.view.gxy.TLcdGXYCirclePainter only paints editing labels when instructed so.

    Bug fixLuciadFusion

    com.luciad.view.gxy.TLcdGXYBoundsPainter can have its snap icon set.

    Bug fixLuciadFusion

    com.luciad.view.gxy.TLcdGXYIconPainter is adapted not to paint icons when they are positioned at very large AWT coordinates in order to avoid a breakdown on certain Windows OS.

    Bug fixLuciadFusion

    The following com.luciad.view.gxy.ILcdGXYPainter implementations in com.luciad.view.gxy.painter can now have null fill, line or font styles set:
    • TLcdGXYArcBandPainter
    • TLcdGXYArcPainter
    • TLcdGXYBufferPainter
    • TLcdGXYCirclePainter
    • TLcdGXYEllipsePainter
    • TLcdGXYPointListPainter
    • TLcdGXYTextPainter

    Bug fixLuciadFusion

    com.luciad.view.gxy.ILcdGXYLayer objects with null scale ranges are handled better in LuciadMap.

    Bug fixLuciadFusion

    com.luciad.util.TLcdLonLatFormatter has improved precision due to the improved handling of rounding errors.

    Bug fixLuciadFusion

    All com.luciad.model.ILcdModel implementations check if the model is empty on an allElementsRemoved call. If so, no event will be fired.

    Bug fixLuciadFusion

    com.luciad.model.TLcdModelChangedEventSupport has been adapted to allow listeners to remove themselves while processing an event.

    Bug fixLuciadFusion

    com.luciad.format.svg.TLcdSVGModelDecoder has improved checking of sourcenames when decoding.

    Bug fixLuciadFusion

    com.luciad.format.raster.TLcdJAIRasterModelDecoder has a better default value for pixel density.

    Bug fixLuciadFusion

    com.luciad.format.raster.TLcdGIFImageDecoder decodes the transparency index better.

    Bug fixInfrastructure Standards

    The new cell painter com.luciad.format.dgn.gxy.TLcdDGNCellGXYPainter now supports cells with holes.

    3.1

    3.1.22

    ImprovementLuciadFusion

    com.luciad.format.raster.ILcdMultilevelRaster can contain com.luciad.format.raster.ILcdRaster objects with different bounds.

    ImprovementLuciadFusion

    com.luciad.util.TLcdLicenseError is thrown when license checking fails.

    3.1.21

    ImprovementLuciadFusion

    com.luciad.model.TLcd2DBoundsIndexedModel is serializable.

    ImprovementLuciadFusion

    com.luciad.shape.shape3D.ILcdExtrudedShape is an interface for extruded shapes which replace com.luciad.shape.shape3D.ILcdExtrudeShape.

    ImprovementLuciadFusion

    com.luciad.shape.shape3D.ILcdEditableExtrudedShape is an interface for extruded shapes of which maximum and minimum Z values can be changed.

    ImprovementLuciadFusion

    com.luciad.shape.shape3D.TLcdExtrudedShape implements the above interfaces.

    3.1.20

    ImprovementLuciadFusion

    A set of 3D shapes have been added to the package com.luciad.shape.shape3d:
    • the interfaces:
      • ILcd3DEditablePolygon
      • ILcd3DEditablePolyline
      • ILcd3DEditablePolypoint
    • and their implementations:
      • TLcdXYZFloatLine
      • TLcdXYZFloatPolygon
      • TLcdXYZFloatPolyline
      • TLcdXYZFloatPolypoint

    ImprovementLuciadFusion

    com.luciad.util.ILcdOriented is an interface for objects that have an orientation.

    ImprovementLuciadFusion

    com.luciad.util.ILcdOrientationSettable is an interface for objects for which the orientation can be set.

    ImprovementDefense Standards

    com.luciad.format.TLcdVPFDatabasePanel and com.luciad.format.TLcdVPFDatabaseTree can have a default path for the database chooser.

    ImprovementDefense Symbology

    com.luciad.symbology.milst2525b.model.TLcdEditableMS2525bUnit implements com.luciad.util.ILcdOrientationSettable.

    ImprovementInfrastructure Standards

    com.luciad.format.dgn.TLcdDGNModelDecoder now supports the decoding of 3D shapes in floating point precision.

    Bug fixLuciadFusion

    com.luciad.view.gxy.painter.TLcdGXYTextPainter changes the edited text object after editing its representation in a dialog.

    Bug fixLuciadFusion

    com.luciad.view.gxy.controller.TLcdGXYMagnifierController no longer throws an exception when a layer is moved in the view before it is completely added.

    Bug fixLuciadFusion

    com.luciad.projection.TLcdCassini no longer throws an exception on a call to the toString method.

    3.1.19

    ImprovementLuciadFusion

    com.luciad.format.raster.TLcdGIFImageDecoder is a com.luciad.format.raster.ILcdTileDecoder to decode GIF images which is more memory-efficient than com.luciad.format.raster.TLcdImageDecoder.

    ImprovementLuciadFusion

    com.luciad.format.svg.ILcdShapeFactory has a new method endUnknownShape which is called whenever the SVG contenthandler reaches the end of an unknown element in an SVG file. This allows to make a distinction between nested unknown elements.

    ImprovementLuciadFusion

    com.luciad.util.TLcdDistanceUnit has a new unit: foot.

    ImprovementDefense Symbology

    When the jar containing the military standard 2525b symbols is not in the classpath a fail message is sent to the LuciadMap log instead of throwing a FileNotFoundException.

    ImprovementDefense Symbology

    com.luciad.symbology.milst2525b.view.gxy.TLcdMS2525bUnitIconPainterEditor can be extended.

    3.1.18

    ImprovementDefense Standards

    com.luciad.format.vpf.gxy.TLcdVPFGeoSym enables the user to choose whether to use the GeoSym symbology. By default the GeoSym symbology is turned on.

    ImprovementInfrastructure Standards

    com.luciad.format.dwg.TLcdDWGModelDecoder now supports Face3D and Solid primitives.

    3.1.17

    ImprovementLuciadFusion

    com.luciad.format.svg.TLcdModelEncoder throws an IOException when saving a file fails.

    ImprovementLuciadFusion

    com.luciad.model.TLcd2DBoundsIndexedModel has a constructor without initial bounds. The elements are then ordered using an R-tree instead of a BSP-tree. The bounds returned by the getBounds method will then be the strict union of all the models elements bounds.

    ImprovementLuciadFusion

    com.luciad.model.TLcd2DBoundsIndexedModel is serializable.

    ImprovementLuciadFusion

    com.luciad.util.TLcdBuffer is thread safe.

    3.1.16

    ImprovementLuciadFusion

    com.luciad.format.raster.TLcdMultilevelRasterPainter and com.luciad.format.raster.TLcdRasterPainter are thread safe on the condition that the shared buffer implementation is thread safe.

    ImprovementLuciadFusion

    com.luciad.format.svg.TLcdSVGModelDecoder throws an IOException when decoding fails instead of returning a null model.

    ImprovementReal-time Engine

    com.luciad.realtime.TLcdSimulator sets autoUpdate to false before calling setDate on the simulator model. This allows simulator models to generate model changed events without causing the view to repaint itself.

    ImprovementDefense Symbology

    com.luciad.symbology.milst2525b.view.gxy.TLcdMS2525bUnitIconPainterEditor can have custom icon providers.

    3.1.15

    Bug fixLuciadFusion

    The degrees character is represented by its unicode code throughout LuciadMap.

    3.1.14

    ImprovementLuciadFusion

    Mollweide has been added to the com.luciad.reference.format.TLcdAUTOReferenceFormatter and com.luciad.reference.format.TLcdAUTOReferenceParser classes.

    Bug fixLuciadFusion

    com.luciad.view.vertical.TLcdVVJPanel does not reset its leftscaling or rightscaling index when a ChangeEvent is fired.

    3.1.13

    ImprovementLuciadFusion

    com.luciad.geodesy.TLcdJPLEllipsoidFactory has increased precision for the WGS84 ellipsoid.

    ImprovementLuciadFusion

    com.luciad.geodesy.TLcdJPLGeodeticDatumFactory has new aliases "World Geodetic System 1972" and "World Geodetic System 1984" for WGS72 and WGS84.

    Bug fixLuciadFusion

    com.luciad.reference.format.TLcdWKTReferenceParser throws exceptions for an unknown geodetic datum or an unsupported projection.

    3.1.12

    ImprovementLuciadFusion

    com.luciad.format.mif.TLcdMIFModelReferenceFactory has been deprecated in favor of com.luciad.format.mif.TLcdMIFModelReferenceParser. The method createModelReference has been renamed to parseModelReference.

    ImprovementLuciadFusion

    com.luciad.format.mif.TLcdMIFModelReferenceFormatter is a class to convert model references into Strings.

    ImprovementLuciadFusion

    com.luciad.model.TLcdModelChangedEvent has a new mode ALL_OBJECTS_CHANGED to indicate that all objects of a model have changed. This can be used for models which are completely updated at regular time intervals.

    ImprovementLuciadFusion

    com.luciad.reference.format.TLcdAUTOReferenceFormatter takes the simple rectangular projection into account.

    ImprovementLuciadFusion

    com.luciad.reference.format.TLcdEPSGReferenceParser includes the Belgian Grid System 72.

    Bug fixLuciadFusion

    com.luciad.view.gxy.TLcdGXYTextPainter sometimes moved 3D points due to incorrect transformations.

    Bug fixLuciadFusion

    com.luciad.format.raster.TLcdCADRGModelDecoder sometimes positioned the raster incorrectly when reading an a.toc file.

    Bug fixInfrastructure Standards

    com.luciad.format.dgn.TLcdDGNModelDecoder now has improved support for scaling and fill colors of user defined fonts, and zero size text elements.

    3.1.11

    ImprovementInfrastructure Standards

    com.luciad.format.dgn.gxy.TLcdDGNCellGXYPainter has improved efficiency

    Bug fixInfrastructure Standards

    com.luciad.format.dgn.TLcdDGNCellGXYPainter can now paint unfilled cells with holes.

    Bug fixInfrastructure Standards

    com.luciad.format.dgn.TLcdDGNModelDecoder now decodes mirrored arcs correctly.

    3.1.08

    ImprovementLuciadFusion

    The following decoders have been adapted to avoid black borders around transformed rasters:
    • com.luciad.format.raster.TLcdJAIRasterModelDecoder
    • com.luciad.format.raster.TLcdTABRasterModelDecoder

    ImprovementLuciadFusion

    com.luciad.format.raster.TLcdJAIRasterModelDecoder can create a com.luciad.model.ILcdModel based on a java.awt.image.RenderedImage and properties set.

    ImprovementLuciadFusion

    com.luciad.format.raster.TLcdRenderedImageTile has a method to suggest an index for the color to be made transparent.

    ImprovementLuciadFusion

    com.luciad.format.raster.TLcdTFWRasterModelDecoder can have a com.luciad.model.ILcdModelReferenceDecoder set.

    ImprovementLuciadFusion

    A package com.luciad.reference.format has been added. This package contains classes to parse and format reference systems. The following formats for reference systems are available:
    • AUTO (as defined by openGIS)
    • European Petroleum Survey Group (EPSG)
    • Well Known Text format (WKT)
    • LuciadMap specific format.

    ImprovementLuciadFusion

    com.luciad.view.ILcdXYReferenceFormatter and com.luciad.view.ILcdXYWorldReferenceParser are new interfaces to transform com.luciad.view.ILcdXYWorldReference objects to and from Strings.

    ImprovementInfrastructure Standards

    com.luciad.format.dgn.TLcdDGNModelDecoder now handles solids and 3D surfaces.

    Bug fixLuciadFusion

    com.luciad.geodesy.TLcdGeodeticDatum checks the ellipsoid parameters for equality to the reference geodetic datum.

    Bug fixLuciadFusion

    com.luciad.format.raster.TLcdDTEDColorModelFactory handles incorrect properties better.

    3.1.07

    ImprovementLuciadFusion

    com.luciad.format.raster.TLcdDIMAPModelDecoder decodes data in the Digital Image Map (DIMAP XML) format.

    Bug fixLuciadFusion

    com.luciad.view.gxy.TLcdGXYLayer handles null scaleranges.

    Bug fixDefense Standards

    Setting the scale range on a com.luciad.format.vpf.TLcdVPFLayer to null caused a NullPointerException.

    3.1.06

    ImprovementLuciadFusion

    com.luciad.format.raster.TLcdGeoTIFFModelDecoder supports on the fly multilevel creation. This improves performance at the cost of some extra memory usage.

    ImprovementLuciadFusion

    iButton support has been extended to USB ports. The iButton is now supported on the following platforms:
    • serial adapter: Windows XP/NT/2000, Linux, Solaris
    • USB adapter: Windows XP/2000, Linux

    3.1.05

    ImprovementLuciadFusion

    com.luciad.format.raster.TLcdGeoTIFFModelDecoder supports rotated images (when specified by means of a transformation matrix and in combination with a gridreference).

    3.1.04

    ImprovementLuciadFusion

    The package com.luciad.symbology contains classes to represent object on the map with different symbols depending on the objects features.

    3.1.03

    Bug fixLuciadFusion

    com.luciad.view.gxy.TLcdAWTPath now deals with large coordinates better.

    3.1.02

    ImprovementLuciadFusion

    com.luciad.view.gxy.ILcdGXYView implements the interface com.luciad.view.gxy.ILcdGXYViewXYWorldTransformationProvider .

    ImprovementLuciadFusion

    com.luciad.view.gxy.ILcdGXYView supports clipped repainting with the method repaint(aX, aY, aWidth, aHeight). com.luciad.view.gxy.controller.TLcdGXYEditController and com.luciad.view.gxy.controller.TLcdGXYNewController have a property useEditingBoundsForRepaint which indicates wheter these controllers should repaint the whole view or not on editing. All painters now take into account the modes CREATING, RESHAPING, TRANSLATING when calculating the bounds.

    Bug fixLuciadFusion

    The method geodesicPointSFCT in com.luciad.geodesy.TLcdEllipsoid entered an infinite loop on erroneous input.

    3.1.01

    ImprovementLuciadFusion

    com.luciad.format.raster.TLcdCADRGModelDecoder can decode CARDG files which are composed of 3 byte images.

    ImprovementLuciadFusion

    com.luciad.view.vertical.ILcdVVRenderer has extra methods to allow pre- and postrendering when painting subprofiles.

    Bug fixLuciadFusion

    com.luciad.view.gxy.painter.TLcdGXYBoundsPainter painted bounds crossing the the date line (180 degrees E/W) incorrectly in some projections.

    Bug fixLuciadFusion

    com.luciad.view.gxy.controller.TLcdGXYOverviewController did not zoom in correctly when the ratio of the zoom levels was extremely high.

    3.1

    Bug fixLuciadFusion

    com.luciad.view.vertical.TLcdVVJPanel now fills subprofiles better.

    Bug fixLuciadFusion

    com.luciad.format.raster.TLcdCADRGModelDecoder returns a com.luciad.model.TLcd2DBoundsIndexedModel when decoding an a.toc file.

    Bug fixAdvanced Raster Services

    The caching behavior of the native libraries has been improved by always checking the closing views for ECW contents.

    3.0

    3.0.14

    Bug fixTerrain Analysis Engine

    com.luciad.tea.TLcdVVTerrainProfileModel takes into account multiple DTED rasters which are contained in the same model.

    3.0.10

    Bug fixTerrain Analysis Engine

    com.luciad.tea.TLcdVVTerrainProfileModel takes into account multiple DTED rasters. The profile is displayed for all polyline segments which do not cross raster boundaries.

    Bug fixTerrain Analysis Engine

    com.luciad.tea.TLcdTerrainProfileController works over multiple DTED rasters.

    3.0.09

    ImprovementLuciadFusion

    com.luciad.format.mif.gxy.TLcdMIFGXYLabelPainter can now be configured through feature indices.

    ImprovementLuciadFusion

    com.luciad.format.raster.TLcdNoWarpMultilevelRasterPainter and com.luciad.format.raster.TLcdNoWarpRasterPainter support rotation.

    ImprovementLuciadFusion

    com.luciad.format.raster.TLcdDEMModelDecoder supports data with lon lat geographical references.

    ImprovementLuciadFusion

    com.luciad.shape.TLcdSHPModelDecoder has a property decodingBounds. If different from null only objects overlapping with these bounds will be decoded.

    ImprovementAdvanced Raster Services

    TLcdECWModelDecoder accepts ERS reference files to decode the model reference.

    ImprovementAdvanced Raster Services

    TLcdMrSIDModelDecoder throws an IOException when no model reference can be found.

    ImprovementAdvanced Raster Services

    TLcdECWModelDecoder throws an IOException when no model reference can be found.

    Bug fixLuciadFusion

    The outline of rasters is drawn completely when the raster spans a complete hemisphere.

    Bug fixLuciadFusion

    com.luciad.gui.TLcdPrintComponentAction has a workaround for a JDK1.4.1 bug involving printing transparent objects.

    Bug fixLuciadFusion

    com.luciad.format.svg.TLcdSVGContentHandler decoded text and unknown shapes without adding them to the model.

    3.0.08

    ImprovementAdvanced Raster Services

    TLcdECWModelDecoder can now handle larger images (over 32768 pixels wide or high).

    ImprovementAdvanced Raster Services

    TLcdMrSIDModelDecoder can now handle larger images (over 32768 pixels wide or high).

    Bug fixLuciadFusion

    com.luciad.format.raster.TLcdTABRasterModelDecoder handles larger size images ( over 32768 pixels ).

    3.0.07

    Bug fixLuciadFusion

    com.luciad.format.raster.TLcdRasterModelDecoder had an incorrect default value set for the index of the forced transparent color. This resulted in CADRG-decoded tiles being turned black.

    3.0.06

    ImprovementLuciadFusion

    all com.luciad.reference.ILcdGeoReference implementations implement the method hashCode.

    ImprovementLuciadFusion

    the precision for all calculations involving the vertical view have increased.

    Bug fixLuciadFusion

    com.luciad.geometry.cartesian.TLcdCartesian handles degenerate cases better when computing the intersection of lines.

    Bug fixLuciadFusion

    com.luciad.geodesy.TLcdSphereUtil and com.luciad.geometry.cartesian.TLcdCartesian could return different results on calculating the number of intersection points of short line segments when the results should have been equal.

    3.0.05

    ImprovementLuciadFusion

    com.luciad.format.mif.TLcdMIFModelDecoder now also accepts TAB as separation character.

    ImprovementLuciadFusion

    com.luciad.format.svg.TLcdSVGModelEncoder and com.luciad.format.svg.TLcdSVGModelDecoder support 'unknown' shapes.

    ImprovementLuciadFusion

    com.luciad.geodesy.TLcdEllipsoid implements the method hashcode.

    ImprovementLuciadFusion

    all projections in com.luciad.projection implement the method hashcode.

    ImprovementLuciadFusion

    all com.luciad.reference.ILcdGridReference implementations implement the method hashcode.

    ImprovementAdvanced Raster Services

    MrSID files can now be read using rst files.

    ImprovementAdvanced Raster Services

    TLcdMrSidModelDecoder now supports GeoTIFF tags that specify model references.

    Bug fixLuciadFusion

    com.luciad.view.map.painter.TLcdLonLatGridPainter has improved continuity of labeling offsets near the bottom/top edges of the view when labels are not slanted.

    Bug fixInfrastructure Standards

    com.luciad.format.dgn.TLcdDGNModelDecoder now handles files with corrupt attribute lengths and empty/corrupt shared cell definitions better.

    3.0.04

    ImprovementLuciadFusion

    com.luciad.projection.TLcdTransverseMercatorSPCS has been deprecated in favor of com.luciad.projection.TLcdTransverseMercator. com.luciad.format.mif.TLcdMIFModelReferenceFactory, com.luciad.projection.TLcdUTM and com.luciad.reference.TLcdUTMGrid have been adapted.

    ImprovementAdvanced Raster Services

    ECW files can now be read using rst files.

    3.0.03

    ImprovementLuciadFusion

    com.luciad.util.TLcdQueu can now be cleared with the method clear.

    Bug fixLuciadFusion

    com.luciad.view.map.TLcdAzimuthRangeController caused a NullPointerException on terminateInteraction.

    3.0.01

    ImprovementLuciadFusion

    the method set/getModelRefGrid is deprecated in favor of set/getGridReference in the class com.luciad.transformation.TLcdGridReferenceUtil

    ImprovementLuciadFusion

    com.luciad.util.TLcdBuffer has the property allocateFullBufferSize set to true by default.

    3.0

    ImprovementLuciadFusion

    com.luciad.view.gxy.TLcdGXYMultiFontLabelPainter allows to paint labels using multiple fonts per label.

    ImprovementLuciadFusion

    com.luciad.reference.TLcdDHDNGridReference has been added to the list of available references.

    ImprovementLuciadFusion

    com.luciad.format.mif.TLcdMIFGXYPainterProvider is the recommended painter provider for layers containing models created by the com.luciad.format.mif.TLcdMIFModelDecoder and the com.luciad.format.mif.TLcdMAPModelDecoder as it takes into account the display hints of the format.

    ImprovementLuciadFusion

    com.luciad.gui.TLcdLayoutList has been deprecated in favor of com.luciad.gui.TLcdListLayout.

    ImprovementLuciadFusion

    com.luciad.reference.TLcdModelReferenceEncoder is a com.luciad.model.ILcdModelReferenceEncoder implementation that creates a .ref file ( as can be read by a com.luciad.format.shp.TLcdSHPModelDecoder for example).

    ImprovementLuciadFusion

    com.luciad.view.gxy.TLcdGXYLayer now supports multiple painter providers, allowing to return multiple painters per object. All objects in the layer are painted using the first painter provider, then the second painter provider ... .

    ImprovementLuciadFusion

    com.luciad.view.gxy.controller.ALcdGXYSmartController has a property RequestFocusOnMouseEntered to control whether the component containing the com.luciad.view.ILcdGXYView should request the focus when the mouse enters it. Until java 1.4 this was required to catch the key events fired from the keyboard to control the map, for example pan or zoom. In java 1.4 the AWT focus subsystem was redesigned in a way that this could lead to unwanted behaviour, the component containing the view would always come to the front when the mouse enters the map. In java 1.4 other mechanisms exist to catch the key events fired.

    ImprovementLuciadFusion

    com.luciad.view.gxy.painter.TLcdGXYCirclePainter has been extended to display information when editing an com.luciad.shape.ILcdCircle using com.luciad.text.TLcdDistanceFormat.

    ImprovementLuciadFusion

    com.luciad.view.gxy.painter.TLcdGXYPointListPainter has a property MoveOnlyOnEdit to set whether the com.luciad.shape.ILcdPoint can only move when being edited.

    ImprovementLuciadFusion

    A com.luciad.util.TLcdLonLatFormatter can be set to the com.luciad.view.map.TLcdMapLonLatGridPainter to format the grids labels.

    ImprovementLuciadFusion

    com.luciad.shape.TLcdValuedPolygon is a new shape to represent contours on a map. The factory com.luciad.geometry.cartesian.TLcdContourFactory can be used to create contours based on elevation data.

    ImprovementLuciadFusion

    com.luciad.projection.TLcdAlbersEqualAreaConic and com.luciad.projection.TLcdLambertAzimuthalEqualArea have been added to the list of projections.

    ImprovementLuciadFusion

    com.luciad.shape.shape3D.ILcdPlaneSet is a new shape to define a set of planes on different heights.

    ImprovementLuciadFusion

    com.luciad.transformation.TLcdGridRefUtil has been deprecated in favor of com.luciad.transformation.TLcdGridReferenceUtil.

    ImprovementLuciadFusion

    the com.luciad.format.mif package has improved support for decoding the MIF format: brushes, pens, symbols. com.luciad.format.mif.TLcdMIFBrush replaces com.luciad.view.TLcdFillStyle, and com.luciad.format.mif.TLcdMIFPen replaces com.luciad.view.TLcdLineStyle.

    ImprovementLuciadFusion

    com.luciad.format.mif.gxy.TLcdMIFGXYPainterProvider is a new painter provider that supports the standard MIF style. This class can probably replace any user-implemented painter provider.

    ImprovementLuciadFusion

    the painters com.luciad.format.raster.TLcdMultilevelRasterPainter and com.luciad.format.raster.TLcdRasterPainter now have support for globally reusing its internal image buffer, instead of creating one for each raster.

    ImprovementLuciadFusion

    com.luciad.format.shp.TLcdSHPModelDecoder can now use a com.luciad.reference.ILcdModelReferenceDecoder to decode its model reference.

    ImprovementLuciadFusion

    com.luciad.geodesy.TLcdSphereUtil now has better support for computing the intersection between two line segments.

    ImprovementLuciadFusion

    com.luciad.view.gxy.ILcdGXYViewXYWorldTransformationProvider is an interface that indicates that it can provide a valid com.luciad.view.gxy.ILcdGXYViewXYWorldTransformation for a com.luciad.view.gxy.ILcdGXYView. Within LuciadMap com.luciad.view.gxy.ILcdGXYView implementations are checked to see whether they also implement this interface whenever a com.luciad.view.gxy.ILcdGXYViewXYWorldTransformation is needed. If they do, they request the transformation from the provider. Otherwise, a default com.luciad.view.gxy.ILcdGXYViewXYWorldTransformation implementation, set up for the com.luciad.view.gxy.ILcdGXYView, is used.

    ImprovementInfrastructure Standards

    The new cell painter com.luciad.format.dgn.gxy.TLcdDGNCellGXYPainter now supports cells with holes.

    ImprovementInfrastructure Standards

    All GXY specific classes have been moved to the package com.luciad.format.dgn.gxy.

    Bug fixLuciadFusion

    com.luciad.format.raster.TLcdTABRasterModelDecoder now handles very large JPEG and BMP images more graciously.

    Bug fixLuciadFusion

    com.luciad.model.TLcd2DBoundsIndexedModel now correctly handles expanding bounds near the poles.

    Bug fixLuciadFusion

    When a SHP file was encoded with com.luciad.format.shp.TLcdSHPModelEncoder, the length of records in the accompanying DBF file was wrongly encoded when it exceeded 127.

    Bug fixLuciadFusion

    Editing a com.luciad.shape.shape3D.ILcd3DEditablePoint using the com.luciad.view.gxy.TLcdGXYIconPainter as an editor turned the z coordinate to 0 in some cases.

    Bug fixLuciadFusion

    The method setBackground in the ILcdGXYView implementations did not take into account the value of isAutoUpdate and always repainted the view.

    Bug fixLuciadFusion

    The model descriptor for models containing a grid now have Grid as value for name, type and displayname instead of UNKNOWN.

    Bug fixLuciadFusion

    The method modelPoint2WorldSFCT in com.luciad.transformation.TLcdGrid2Grid has better accuracy when dealing with two geodetic datums and/or projections.

    Bug fixLuciadFusion

    com.luciad.gui.TLcdLayoutList sometimes froze the application.

    Bug fixLuciadFusion

    com.luciad.view.gxy.TLcdGXYBufferPainter can now paint buffers with sharp angles.

    Bug fixLuciadFusion

    Selecting a com.luciad.shape.ILcdArc on the map fired a com.luciad.model.TLcdModelChangedEvent.

    Bug fixLuciadFusion

    The labels on the UTM grid (com.luciad.map.TLcdUTMGridLayer) were sometimes painted multiple times after a pan.

    Bug fixLuciadFusion

    com.luciad.view.map.TLcdMapLocation only displayed correct UTM coordinates if the world reference was based on WGS84.

    Bug fixTerrain Analysis Engine

    When 2 contour levels computed with com.luciad.tea.TLcdContourFinder are exactly the same, the lower of the two was not painted.

    Bug fixInfrastructure Standards

    Objects with holes are now painted properly.

    Upgrade considerationLuciadFusion

    PropertyChangeEvents fired in Luciad implementations of com.luciad.view.gxy.ILcdGXYView, com.luciad.view.TLcdLayer and com.luciad.view.gxy.TLcdGXYLayer started with capitals. The following properties now fire events starting with lowercase letters in accordance with Java standards:
    • com.luciad.view.gxy.ILcdGXYView implementations:
      • PaintingMode -> paintingMode
      • Scale -> scale
      • MinScale -> minScale
      • MaxScale -> maxScale
      • WorldOrigin -> worldOrigin
      • ViewOrigin -> viewOrigin
    • com.luciad.view.gxy.TLcdLayer:
      • Visible -> visible
      • Filter -> filter
      • Selectable -> selectable
      • Editable -> editable
      • Label -> label
    • com.luciad.view.gxy.TLcdGXYLayer:
      • ModelXYWorldTransfoClass -> modelXYWorldTransfoClass
      • Filter -> filter
      • Labeled -> labeled
      • PaintFromOverlaps -> paintFromOverlaps
      • ScaleRange -> scaleRange
      • LabelScaleRange -> labelScaleRange
      • SelectionLabeled -> selectionLabeled

    Upgrade considerationLuciadFusion

    Some com.luciad.model.ILcdModelEncoder implementations now have the ability to delegate the encoding of the model reference to a com.luciad.model.ILcdModelReferenceEncoder.

    2.1

    2.1

    ImprovementLuciadFusion

    com.luciad.format.raster.ALcdRasterPainter has a property PaintOutline to decide whether to paint the raster outline when the scale is outside the resolution factor interval.

    ImprovementLuciadFusion

    com.luciad.format.raster.TLcdDMEDModelDecoder has properties to fall back to higher or lower resolution data when the requested data is not available.

    ImprovementLuciadFusion

    com.luciad.format.raster.TLcdGradientIndexColorModelFactory has the possibility to set a transparent color to 1 index.

    ImprovementLuciadFusion

    com.luciad.format.raster.TLcdMultilevelRasterPainter and com.luciad.format.raster.TLcdRasterPainter have a property to control the precision of raster painting.

    ImprovementLuciadFusion

    com.luciad.geometry.cartesian.TLcdCartesian now has a method to check if a point is inside an ellipse.

    ImprovementLuciadFusion

    com.luciad.gui.swing.TLcdRangeSlider is displayed differently according to the Look and Feel.

    ImprovementLuciadFusion

    The latitude of a com.luciad.projection.ILcdTransverseCylindrical projection can now be set.

    ImprovementLuciadFusion

    com.luciad.shape.ILcdArc now has a method to compute the cornerpoint of an arc, while com.luciad.shape.shape2D.ILcd2DEditableArc has a method to move the corner point of the arc.

    ImprovementLuciadFusion

    com.luciad.util.TLcdLog can extract messages from Exceptions.

    ImprovementLuciadFusion

    com.luciad.view.gxy.TLcdGXYEditableLabelPainter displays the label pins only on moved labels.

    ImprovementLuciadFusion

    Arcbands can now be created clockwise or counterclockwise by the com.luciad.view.gxy.TLcdGXYArcBandController.

    ImprovementLuciadFusion

    com.luciad.format.raster.TLcdJetColorIndexModelFactory is a new ILcdColorModelFactory that creates java.awt.image.IndexColorModel objects with smoothly varying colors.

    ImprovementLuciadFusion

    com.luciad.gui.TLcdJava2Util is a class to hold some useful methods that require java 1.2 or higher.

    ImprovementLuciadFusion

    com.luciad.shape.ILcdEllipse has been added to the LuciadMap shapes. Two editable implementations are available:
    • com.luciad.shape.shape2D.TLcdLonLatEllipse
    • com.luciad.shape.shape2D.TLcdXYEllipse

    ImprovementLuciadFusion

    com.luciad.view.map.TLcdMapGeorefGridLayer is a grid layer that displays a georef grid.

    ImprovementLuciadFusion

    com.luciad.view.gxy.ILcdNotLabelDeconflictableLayer is a marker interface to denote layers which should not be taken into account by label deconfliction algorithms. This could be applied to grid layers for example.

    ImprovementLuciadFusion

    com.luciad.reference.ILcdModelReferenceDecoder, a interface to enable the decoding sources to create com.luciad.model.ILcdModelReference objects, has been added.

    ImprovementLuciadFusion

    com.luciad.view.gxy.painter.TLcdGXYShapeListPainter now also implements com.luciad.view.gxy.ILcdGXYEditorProvider.

    ImprovementLuciadFusion

    the precision of the method contains() in the class com.luciad.shape.shape2D.TLcdLonLatPolygon has been improved.

    ImprovementLuciadFusion

    A more accurate formula is now used for calculation of the geodesic distance on a sphere.

    ImprovementLuciadFusion

    com.luciad.view.gxy.painter.TLcdBufferPainter has extra modes OUTLINED_FILLED, OUTLINED_OPEN and OUTLINE_FILLED_OPEN. OPEN modes draw the buffer with open ends.

    ImprovementTerrain Analysis Engine

    Height contours based on raster maps can now be painted on maps.

    ImprovementTerrain Analysis Engine

    com.luciad.tea.TLcdTerrainProfileController and com.luciad.tea.TLcdTerrainProfileUtil can now also take height values of non visible layers into account.

    ImprovementDefense Standards

    A com.luciad.util.TLcdStatusEvent is generated on start and end when the view is updated in com.luciad.format.vpf.TLcdVPFDataBaseTree. Listeners can be added directly or via com.luciad.format.vpf.TLcdVPFDataBasePanel. This allows to show a message while loading vpf data.

    ImprovementDefense Standards

    com.luciad.format.vpf.TLcdVPFLayer now have featured label painters according to the following table:
    • com.luciad.format.TLcdVPFFeatureClass.LINE: com.luciad.view.gxy.TLcdGXYFeaturedPolylineLabelPainter
    • com.luciad.format.TLcdVPFFeatureClass.AREA: com.luciad.view.gxy.TLcdGXYFeaturedLabelPainter
    • com.luciad.format.TLcdVPFFeatureClass.POINT: com.luciad.view.gxy.TLcdGXYFeaturedLabelPainter

    ImprovementDefense Standards

    A com.luciad.util.ILcdStatusListener can listen to the com.luciad.format.vpf.TLcdVPFDataBasePanel and to the com.luciad.format.vpf.TLcdVPFDataBaseTree. Events are fired on start and end of updating the view for vpf data.

    ImprovementDefense Standards

    A com.luciad.format.vpf.ILcdVPFLayerFactoryModel can now be set to the com.luciad.format.vpf.TLcdVPFDataBasePanel and to the com.luciad.format.vpf.TLcdVPFDataBaseTree. This allows customizing the colors used by the themes in the vpf data.

    ImprovementInfrastructure Standards

    com.luciad.format.dgn.TLcdDGNModelDecoder now decodes 'place note' dimension elements.

    ImprovementInfrastructure Standards

    com.luciad.format.dgn.TLcdDGNModelDescriptor now has additional methods to retrieve information about reference files.

    ImprovementInfrastructure Standards

    com.luciad.format.dgn.TLcdDGNModelDecoder now has improved support for decoding model references.

    Bug fixLuciadFusion

    com.luciad.gui.TLcdLayoutList could get into an infinite loop in jdk1.4. The class now also takes the size of the parent component, including insets, into account when laying out components.

    Bug fixLuciadFusion

    ILcdGXYView implementations did not register themselves as a com.luciad.model.ILcdModelChangeListener to the new model of a layer whenever this layer was already added to the view.

    Bug fixLuciadFusion

    Using a different com.luciad.view.gxy.painter.TLcdGXYBufferPainter as painter and as editor prohibited editing a buffer object.

    Bug fixLuciadFusion

    com.luciad.view.gxy.controller.TLcdGXYSelectController and com.luciad.view.gxy.controller.TLcdGXYEditController did not set the correct mode on checking whether a selected objected was being edited.

    Bug fixLuciadFusion

    The magnifier controller, com.luciad.view.gxy.controller.TLcdGXYMagnifierController, did not repaint on changing the scale factor of the magnifier window.

    Bug fixLuciadFusion

    Since the number of pixels was expressed in integers, decoding huge rasters led to integer overflows. The number of pixels is now expressed as a double.

    Bug fixLuciadFusion

    Adding a grid layer to a com.luciad.view.map.TLcdMapJPanel always caused a repaint of the view, irrespective of the value of autoUpdate.

    Bug fixLuciadFusion

    The com.luciad.view.map.TLcdGeodeticPen did not paint bounds objects well when they overlapped the 180 degrees line in Equidistant Cylindrical or Mercator projection.

    Bug fixLuciadFusion

    The MIF model decoder did not take the unit of measure specified in the MIF file into account.

    Bug fixLuciadFusion

    The arc painter now also supports snapping.

    Bug fixLuciadFusion

    The buffer painter only snapped to other points when in creation mode.

    Bug fixLuciadFusion

    Sometimes the editing of an arc band by moving a point of it beyond the -180 degrees angle would cause the arcband to flip: it was drawn in the other direction.

    Bug fixLuciadFusion

    No labels were painted on the lon lat grid when only meridians or only parallels were visible.

    Bug fixLuciadFusion

    com.luciad.view.gxy.ALcdGXYPen assumed different instances of points were returned when retrieving points from a point list. This led to wrong results for the method isTouched() of the class com.luciad.view.gxy.painter.TLcdGXYPointListPainter.

    Bug fixLuciadFusion

    The method cartesianModelDistance of the class com.luciad.view.gxy.ALcdGXYPen did not take into account the differences in units of measure of the model reference and the view reference.

    Bug fixLuciadFusion

    Several memory leaks were closed to ensure proper garbage collection.

    Bug fixLuciadFusion

    com.luciad.shape.shape2D.TLcd2DEditablePointList now has a com.luciad.shape.shape2D.ILcd2DEditablePointFactory to create new com.luciad.shape.shape2D.ILcd2DEditablePoint objects. Two point factories are available:
    • com.luciad.shape.shape2D.TLcdLonLatPointFactory
    • com.luciad.shape.shape2D.TLcdXYPointFactory
    Previously all new points added via the GUI were of the type com.luciad.shape.shape2D.TLcdXYPoint.

    Bug fixTerrain Analysis Engine

    Line-of-sight rasters can now take multiple DTED raster into account, part of the same layer or dispersed over several layers.

    Bug fixTerrain Analysis Engine

    Line-of-sight rasters with a radius over 250 km were not painted. This was caused by an integer overflow.

    2.0

    2.0

    ImprovementLuciadFusion

    com.luciad.view.vertical package added. A vertical view can be used to visualize the third dimension of a list of points. See the user guide for a thorough explanation.

    ImprovementLuciadFusion

    com.luciad.view.gxy.controller.TLcdGXYMagnifierController allows the user to magnify a section of the map without the need to zoom in. Magnification area and factor can be controlled via the numeric pad.

    ImprovementLuciadFusion

    com.luciad.shape.ILcdComplexPolygon and its implementation com.luciad.shape.ILcdComplexPolygon are new classes for representing complex polygons, for example polygons with holes.

    ImprovementLuciadFusion

    com.luciad.view.gxy.TLcdGXYEditableLabelPainter enables the user to deconflict labels by moving the labels himself.

    ImprovementLuciadFusion

    com.luciad.shape.shape2D.TLcdXYText is a new com.luciad.shape.ILcdShape that implements com.luciad.shape.shape2D.ILcd2DEditableText and com.luciad.shape.ILcdText to allow the user to put scalable text on map. To paint the text a standard ILcdGXYPainter implementation com.luciad.view.gxy.TLcdGXYTextPainter is provided.

    ImprovementLuciadFusion

    com.luciad.format.mif.TLcdMIFModelEncoder lets the user encode vector data in the MIF format.

    ImprovementLuciadFusion

    com.luciad.format.raster.TLcdDMEDModelDecoder and com.luciad.format.raster.TLcdDTEDDirectoryModelDecoder now sustain shading.

    ImprovementLuciadFusion

    com.luciad.format.shp.TLcdSHPModelEncoder lets the user encode vector data in the SHP format.

    ImprovementLuciadFusion

    com.luciad.model.TLcdMultilevel2DBoundsIndexedModel will refer to an appropriate com.luciad.model.ILcd2DBoundsIndexedModel depending on a precision parameter.

    ImprovementLuciadFusion

    com.luciad.model.TLcdRegularTiled2DBoundsIndexedModel is composed of a regular tiled data set, where an individual tile implements com.luciad.model.ILcd2DBoundsInteractable. com.luciad.model.ILcdTileProvider is responsible for retrieving the requested tile.

    ImprovementLuciadFusion

    com.luciad.format.raster.TLcdDEMModelDecoder added. It allows you to decode individual DEM ( USGS Digital Elevation Model) files.

    ImprovementLuciadFusion

    com.luciad.format.raster.TLcdTFWRasterModelDecoder added. It allows you to decode TFW files (TIFF World Files), which specify a model reference for TIFF files.

    ImprovementLuciadFusion

    com.luciad.format.raster.TLcdBILModelDecoder added. It allows you to decode BIL ( Band InterLeaved by Line ) files.

    ImprovementLuciadFusion

    com.luciad.gui.TLcdPrintComponentAction is an action to print the contents of a component. It supports an advanced mode to enhance vector data printing and allow printing of transparent filled areas.

    ImprovementLuciadFusion

    com.luciad.beans.TLcdPropertyChangeEvent added. This is an extension of java.beans.PropertyChangeEvent with a property isAdjusting to denote if any related events will follow.

    ImprovementLuciadFusion

    com.luciad.gui.TTFIcon is a com.luciad.gui.ILcdIcon implementation which can be used to represent points with True Type Font characters. This is useful for symbolic fonts.

    ImprovementLuciadFusion

    com.luciad.gui.swing.TLcdRangeSlider is a component that lets the user graphically select a range by sliding a minimum and maximum knob within a bounded interval.

    ImprovementLuciadFusion

    com.luciad.io.ILcdInputStreamFactory and com.luciad.io.ILcdOutputStreamFactory define interfaces to allow the user to preprocess InputStream and OutputStream objects for decoding and encoding models.

    ImprovementLuciadFusion

    Memory efficient implementations are provided for some com.luciad.shape.ILcdShape classes in the package com.luciad.shape.shape2D:
    • ILcdPolygon: TLcdLonLatFloatPolygon, TLcdLonLatFloatPolygonCache, TLcdXYFloatPolygon, TLcdXYFloatPolygonCache
    • ILcdPolyline: TLcdLonLatFloatPolyline, TLcdLonLatFloatPolylineCache, TLcdXYFloatLine, TLcdXYFloatPolyline, TLcdXYFloatPolylineCache
    • ILcdPolyPoint: TLcdLonLatFloatPolyPoint, TLcdLonLatFloatPolyPointCache, TLcdXYFloatPolyPoint, TLcdXYFloatPolyPointCache

    ImprovementLuciadFusion

    com.luciad.transformation.TLcdGrid2Geocentric defines a transformation between an ILcdGridReference and an ILcdXYZWorldReference.

    ImprovementLuciadFusion

    com.luciad.view.gxy.TLcdFitSelectionInViewClipAction fits a view to the bounds of all selected selected objects in it.

    ImprovementLuciadFusion

    com.luciad.view.map.TLcdAzimuthRangeController interprets mouse events for displaying an azimuth range and an azimuth direction.

    ImprovementLuciadFusion

    A mechanism has been added in the form of the method writePropertiesSFCT()to export a model reference to a Properties object.

    ImprovementLuciadFusion

    com.luciad.io.TLcdIOUtil can be configured to open sources as files first.

    ImprovementLuciadFusion

    com.luciad.view.gxy.ALcdGXYPen has a method drawLineWithArrow() which can be used in com.luciad.view.gxy.ILcdGXYPainter implementations to draw lines with an arrow, thus avoiding costly use of Stroke objects.

    ImprovementLuciadFusion

    com.luciad.view.gxy.TLcdGXYViewCanvas and com.luciad.view.gxy.TLcdGXYViewJPanel have a method invokeLater() to put a Runnable object on the AWT thread. This can be used to emulate SwingUtilities.invokeLater() in an AWT application.

    ImprovementLuciadFusion

    com.luciad.view.gxy.TLcdGXYShapeListPainter now has a property to determine whether all shapes in the shapelist should be edited or only those touched by the mouse pointer.

    ImprovementLuciadFusion

    com.luciad.format.vpf.TLcdVPFLibrary and com.luciad.format.vpf.TLcdVPFDatabase now reference their source by a String in stead of a File. (option vpf/vmap)

    Bug fixLuciadFusion

    Labels on selected objects where painted when not required due to the interaction between com.luciad.view.gxy.TLcdGXYViewLabelPainter and com.luciad.view.gxy.TLcdGXYLayer

    Bug fixLuciadFusion

    The method removeAllElements( ILcdFireEventMode.FIRE_NOW ) on a com.luciad.model.ILcdModel did not automatically update the view.

    Bug fixLuciadFusion

    com.luciad.view.gxy.ILcdGXYView.removeAllLayers() implementations did not remove its listeners from the com.luciad.view.gxy.ILcdGXYLayer and com.luciad.model.ILcdModel objects. This prohibited garbage collection.

    Bug fixLuciadFusion

    com.luciad.gui.TLcdImageIcon returns a default icon when an image is not found.

    Bug fixLuciadFusion

    com.luciad.view.gxy.TLcdGXYPointListPainter used fill color to paint lines during editing.

    1.6

    1.6

    ImprovementLuciadFusion

    users can specify a transparent color index for rasters.

    ImprovementLuciadFusion

    com.luciad.gui.TLcdImageIcon images can be loaded from a URL.

    ImprovementLuciadFusion

    com.luciad.format.mif.TLcdMIFModelDecoder decodes MIF files more efficiently. The decoder can now use memory efficient float points.

    ImprovementLuciadFusion

    com.luciad.view.gxy.painter.TLcdGXYBoundsPainter can paint filled bounds.

    ImprovementLuciadFusion

    com.luciad.view.gxy.painter.TLcdGXYCirclePainter can paint filled circles.

    ImprovementLuciadFusion

    com.luciad.view.gxy.TLcdLonLatGridPainter paints a smoother grid.

    ImprovementLuciadFusion

    bounds in a geodetic model reference are now painted more accurately.

    ImprovementLuciadFusion

    label painters can display a different label when an object is selected.

    ImprovementLuciadFusion

    com.luciad.gui.swing.TLcdDialogManagerSW lets you display Luciad dialogs in swing.

    ImprovementLuciadFusion

    com.luciad.shape.shape2D.TLcd2DEditablePointListLonLatFloatArray and com.luciad.shape.shape2D.TLcd2DEditablePointListXYFloatArray are memory efficient implementations of com.luciad.shape.ILcd2DEditablePointList.

    ImprovementLuciadFusion

    com.luciad.shape.shape2D.TLcdLonLatLine and com.luciad.shape.shape2D.TLcdXYLine are implementations of com.luciad.shape.ILcd2DEditablePolyline with only 2 vertices.

    ImprovementLuciadFusion

    com.luciad.util.ILcdPasswordProvider provides methods to retrieve user/password combinations.

    Bug fixLuciadFusion

    Selection sometimes failed during shape editing.

    Bug fixLuciadFusion

    Creation and editing of a TLcdXYCircle showed a circle with half the intended radius.

    Bug fixLuciadFusion

    modeldescriptors did not return the correct source name of the model.

    Bug fixLuciadFusion

    com.luciad.view.TLcdGXYLayer takes only filtered objects into account when calculating the bounds.

    Bug fixLuciadFusion

    Selection in geodetic mode sometimes failed on big shapes.

    Bug fixLuciadFusion

    Extreme zooming-in on large shapes no longer causes a VM crash.

    Bug fixLuciadFusion

    The selected objects in the select controller and the layers are synchronized now.

    1.5

    1.5.07

    ImprovementLuciadFusion

    com.luciad.format.mif.TLcdMIFModelDecoder now decodes circles and rectangles.

    Bug fixLuciadFusion

    com.luciad.view.gxy.TLcdGXYLabelPainter now sets valid default positions for the labels.

    1.5.06

    ImprovementLuciadFusion

    com.luciad.format.raster.TLcdDMEDModelDecoder now handles more known variations of the DMED file format.

    ImprovementLuciadFusion

    com.luciad.format.mif.TLcdMIFModelDecoder now handles more variations of the MIF file format.

    ImprovementLuciadFusion

    com.luciad.view.gxy.painter.TLcdPointListPainter and com.luciad.view.gxy.paint.TLdcGXYIconPainter can handle com.luciad.shape.shape3D.ILcd3DEditableShape shapes.

    ImprovementLuciadFusion

    Longitude Latitude coordinates are formatted with a factor 2 increased precision.

    Bug fixLuciadFusion

    getAliasNames().findID(String) in com.luciad.geodesy.TLcdJPLGeodeticDatumFactory sometimes returned wrong id.

    Bug fixLuciadFusion

    Fit on user-defined layers always contained the point (0,0).

    1.5.01

    ImprovementLuciadFusion

    com.luciad.format.raster.TLcdDTEDModelDecoder has been renamed to com.luciad.format.raster.TLcdDTEDDirectoryModelDecoder. It can decode an entire directory of DTED files.

    ImprovementLuciadFusion

    The new com.luciad.format.raster.TLcdDTEDModelDecoder can decode individual DTED files.

    ImprovementLuciadFusion

    com.luciad.format.raster.TLcdAllRasterPainter has been renamed to com.luciad.format.raster.TLcdAllInMemoryRasterPainter.

    ImprovementLuciadFusion

    com.luciad.view.gxy.TLcdGXYLayerLabelPainter can cache the position of drawn labels.

    1.5

    ImprovementLuciadFusion

    The interface com.luciad.view.gxy.ILcdGXYPen and its implementations com.luciad.view.gxy.TLcdGXYPen, com.luciad.view.map.TLcdGeodeticPen, com.luciad.view.map.TLcdProjectionPen and com.luciad.view.map.TLcdGridPen have been tuned to improve performance. Two new classes/interfaces have been created for that purpose:
    • com.luciad.view.gxy.ILcdGeneralPath/TLcdGeneralPath describes a path in world coordinates, including possible line/polygon breaks. The path can be used to cache transformed shapes.
    • com.luciad.view.gxy.ILcdAWTPath/TLcdAWTPath: describes a path in AWT coordinates, including possible line/polygon breaks. An AWT path can paint itself as a polyline, a polygon, or a filled polygon.

    ImprovementLuciadFusion

    com.luciad.format.TLcdMultilevelRasterPainter and com.luciad.format.TLcdNoWarpMultilevelRasterPainter now have get/set methods for LevelSwitchScale which allow you to determine when to switch to another raster level.

    ImprovementLuciadFusion

    com.luciad.geodesy.TLcdEllipsoidUtil has a method to check if two geodesic line segments have an intersection.

    Bug fixLuciadFusion

    Painting labels with/without pins no longer interferes with label positioning.

    1.4

    1.4.04

    ImprovementLuciadFusion

    com.luciad.view.gxy.ILcdGXYController now has a method paint, which allows the controller to paint on top of its ILcdGXYView.

    ImprovementLuciadFusion

    com.luciad.view.ILcdGXYView has a method pan to allow panning when operating near the border of the view.

    ImprovementLuciadFusion

    com.luciad.view.ILcdGXYView has new methods to register LayerSelectionListener and ModelListener objects.

    ImprovementLuciadFusion

    com.luciad.view.gxy.TLcdGXYLayer now has methods to set/get the minimum size of objects that are to be painted. Not painting very small objects can increase performance significantly.

    ImprovementLuciadFusion

    com.luciad.format.raster.TLcdDTEDModelDecoder has been added. It allows you to decode DTED files organized in directories without a corresponding DMED file.

    ImprovementLuciadFusion

    com.luciad.view.gxy.TLcdGXYViewBufferedImage and com.luciad.view.map.TLcdMapBufferedImage have been added. These are LuciadMap views that do not have corresponding Components. They are accessible as off-screen images, which can be conveniently used in servlets, for instance. These classes are beta versions, and are not supported.

    ImprovementLuciadFusion

    com.luciad.format.raster.TLcdDTEDModelDescriptor and com.luciad.format.raster.TLcdDTEDMultilevelModelDescriptor have been removed. DTED models have com.luciad.format.raster.TLcdRasterModelDescriptor and com.luciad.format.raster.TLcdMultilevelRasterModelDescriptor descriptors.

    ImprovementLuciadFusion

    com.luciad.format.raster.TLcdGeoTIFFModelDecoder: the constructor no longer needs a buffer. Buffering is done by the JAI library.

    Bug fixLuciadFusion

    Objects in a layer which is out of scalerange can no longer be selected.

    Bug fixLuciadFusion

    Some GeoTIFF files caused a NullPointerException

    Bug fixLuciadFusion

    DTED did not fall back to lower level data in a browser.

    1.4

    ImprovementLuciadFusion

    com.luciad.format.raster.ILcdColorScheme and its implementations no longer exist. In general, it is not required, as a sensible default will be chosen. For special raster coloring needs, use com.luciad.format.raster.ILcdColorModelFactory and its implementations.

    ImprovementLuciadFusion

    The properties noOfSubTileColumns/Rows in .rst files have been replaced with the more general properties subTilePixelWidth/Height.

    ImprovementLuciadFusion

    com.luciad.reference.TLcdProjectionReference has been superseded by com.luciad.reference.TLcdGridReference. To update your code, change TLcdProjectionReference to TLcdGridReference. The TLcdGridReference constructor takes the geodetic datum and the projection in reverse order compared to the TLcdProjectionReference. Following parameters are set to correspond to TLcdProjectionReference by default:
    • false easting : 0
    • false northing : 0
    • scale : 1
    • unit of measure: 1
    • rotation : 0 .

    ImprovementLuciadFusion

    com.luciad.format.raster.ILcdTileInfo has been made public.

    Bug fixLuciadFusion

    Creating a new shape displays the first point immediately, which had unwanted effects on circles and arcs.

    Bug fixLuciadFusion

    Copyright message returned to the default Luciad copyright after obfuscation.

    Bug fixLuciadFusion

    When a new arc band was created with caching set to false, nothing was drawn.

    Bug fixLuciadFusion

    TLcdGroupbox: setComponent() added a component without a layout constraint, which caused a NullpointerException on IE4.0 .

    Bug fixLuciadFusion

    Removing an object from a model does not remove the object from the selection of the layers that display the model.