This page shows the release notes of older versions up until the point that the new version was released.
For a full list of release notes of an old version, consult the documentation of that version.
For example if you want to see what is fixed in each 2019.1.x patch release, consult the
release notes in the documentation of the 2019.1 release.
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
ImprovementMaritime Standards
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
TLcdS52DisplaySettings
safetyContour
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
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
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
ILcdS57Object
s.
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.