2024.0

2024.0.03

Bug fixMaritime Standards

LCD-13463
Fixed an issue in internal bounds handling: a ClassCastException could happen when cloning a cell model bounds.

2023.0

2023.0

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

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.

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

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

2022.0.11

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

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.

2021.1

2021.1.14

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

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.

2021.0

2021.0.01

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.

2020.1

2020.1.22

Bug fixMaritime Standards

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

2020.1.15

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.

2020.1.12

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

2020.0

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

2019.1

2019.1.10

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.

2019.1.06

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

Bug fixMaritime Standards

LCD-11106
Resolved a very rare issue where polygons were wrongly displayed with holes and spikes.

2019.0

2019.0.10

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

2019.0.06

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

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

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.

2018.0

2018.0.09

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.

2017.1

2017.1.01

Bug fixMaritime Standards

LCD-9534
TLcdSLDFeatureTypeStyleDecoder didn't correctly decode SLD files that contain an S52Symbolizer.

2017.0

2017.0.06

Bug fixMaritime Standards

LCD-9382
In some cases when using AML, objects below other objects were selected instead of the topmost object.

2017.0

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.

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

2015.1

2015.1.17

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

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.

2015.0

2015.0.11

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()

2015.0

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.

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.

2014.1

2014.1.08

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.

2014.1.07

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

2014.0.13

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.

2014.0.11

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.

2014.0.08

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

2014.0.01

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

2013.1

2013.1.40

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

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.

2013.1.27

ImprovementMaritime Standards

LCD-5004
You can now specify a custom ILcdS52Symbology on TLspS52LayerBuilder. If necessary, you can also specify a custom TLcdS57ProductConfiguration or TLcdS52ProductConfiguration.

2013.1.24

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

Bug fixMaritime Standards

Some AML attributes (PRODCT,sorfir,sorlst) did not have display names for their attribute values. This has been fixed.

2013.1.04

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

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

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.

2013.1

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.

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

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

ImprovementMaritime Standards

LCD-4188
A bug in the evaluation of AML file names, prohibiting AML models from being encoded, has been fixed in TLcdS57ModelEncoder.

2013.0.16

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

ImprovementMaritime Standards

TLcdS57ModelDecoder and TLcdS57CatalogueModelDecoder now throw an IllegalStateException in their canDecodeSource() and decode() methods if they are not properly configured.

2013.0.12

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.

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

2013.0.06

Bug fixMaritime Standards

LCD-3991
TLcdS57CatalogueModelDecoder.canDecode() now returns true for directories, to be consistent with decode(), which supports the decoding of directories.

2013.0.04

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

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.

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.

2013.0

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.

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.

2012.1

2012.1.12

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.

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

2012.1.08

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

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.

2012.1.04

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

2012.1.01

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

2012.0.18

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.

2012.0.12

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

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

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

2012.0.01

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.

11.0

11.0.27

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

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

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

Bug fixMaritime Standards

Rotated icons are no longer painted if the mandatory orientation attribute is not present.

11.0.01

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

11.0

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.

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.

10.1

10.1.29

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

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

Bug fixMaritime Standards

A potential threading issue in the S-52 rendering engine has been fixed.

10.1.14

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 fixMaritime Standards

An issue with the decoding of polygons, causing polygons with inner holes to be closed incorrectly, 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 fixMaritime Standards

TLcdS57ModelDecoder does no longer fail on reading invalid issue dates in ENC cells. Invalid issue dates are ignored now.

10.1.06

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

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

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.

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.

10.0

10.0.19

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.

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

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.

10.0

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

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.

9.1.15

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

Bug fixMaritime Standards

LMAP-3446
Ecdis models and model decoder are now thread-safe.

9.1.01

Bug fixMaritime Standards

S-57 lines and areas are now thread-safe for reading access.

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

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.

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

ImprovementMaritime Standards

Methods were added to TLcdS57AttributeClassMap and TLcdS57ObjectClassMap that allow to retrieve all attribute or object classes in the class map.

9.0.20

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

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 fixMaritime Standards

Some missing AML entries where added to the AML resource files.

9.0.17

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

8.2

8.2.15

ImprovementMaritime Standards

LMAP-3051
The TLcdS57ModelDecoder can now handle vector records in which the VRPT-SG2D field order has been switched.

Bug fixMaritime Standards

LMAP-3050
The TLcdS57ModelDecoder has been adapted to be able to handle multiple FSPT records in one feature record.

8.2.13

ImprovementMaritime Standards

Support for the AML object and attribute catalogue has been upgraded to v3.0.1.

8.2.01

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

8.1.05

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

8.0

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.

Bug fixMaritime Standards

LMAP-2498
A problem with the decoding of AR2D fields was fixed.

8.0

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.

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

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

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

7.1

7.1.18

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

Bug fixMaritime Standards

The clone() methods of some painters in the S-52 package were fixed.

7.1.08

ImprovementMaritime Standards

TLcdS57ModelDecoder can now read S-57 files containing fields with trailing zero's.

7.1.06

Bug fixMaritime Standards

A dependency on JDK 1.5 was removed.

7.0

7.0

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.

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

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.

6.1

6.1.17

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

6.0.14

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

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

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

5.3

5.3.09

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

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

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

5.2.01

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

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

5.1

5.1.08

Bug fixMaritime Standards

A problem with the visualization of complex polygons is fixed.

5.1.04

ImprovementMaritime Standards

S-57 decoder performance is increased significantly. Especially models with lots of depth contours will benefit from this.

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

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

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.

Bug fixMaritime Standards

com.luciad.format.s57.TLcdS57ModelDecoder now decodes all sounding points again.

5.0

5.0.06

ImprovementMaritime Standards

com.luciad.format.s57.TLcdS57CatalogueModelDecoder now allows setting a selection of object classes to be decoded, like com.luciad.format.s57.TLcdS57ModelDecoder.

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.

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

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

ImprovementMaritime Standards

com.luciad.format.s57.TLcdS57ModelDecoder now has a significantly better performance.

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

Bug fixMaritime Standards

The decoder is more robust: it silently ignores missing fields instead of throwing null pointer exceptions.

4.3

4.3.05

Bug fixMaritime Standards

com.luciad.format.s57.TLcdS57CatalogueModelDecoder closes all input streams it opens.

4.2

4.2.12

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.

4.2.09

Bug fixMaritime Standards

com.luciad.format.s52.gxy.TLcdS52GXYPainterProvider now clones all fields properly.

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

ImprovementMaritime Standards

Circles can now be filled.

4.2.03

Bug fixMaritime Standards

com.luciad.format.s57.TLcdS57ModelDecoder is more robust in parsing numeric values.

4.2

ImprovementMaritime Standards

com.luciad.format.s52.gxy.TLcdS52GXYPainterProvider now has an additional setting that controls which objects are painted.

4.1

4.1.09

Bug fixMaritime Standards

com.luciad.format.s57.TLcdS57ModelDecoder now closes the input stream of the the update files.

4.1.05

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.

4.1.03

Bug fixMaritime Standards

com.luciad.format.s57.TLcdS57ModelDecoder now handles buffered input streams.

Bug fixMaritime Standards

The LIGHTS05 procedure always returns a result.