S-57 and S-63 data are visualized as defined in the S-52 content display standard, as specified by the IHO. This specification defines a number of settings the user can control, for example:

  • Should depth soundings be displayed or not ?

  • What color should be used to indicate the safety depth ?

  • Use the day, dusk or night color scheme

The below images shows the same S-57 data being visualized with day and night settings

ecdis day
Figure 1. S-57 data displayed using the "day" settings
ecdis night
Figure 2. S-57 data displayed using the "night" settings

In the LuciadLightspeed API, these settings are available in the TLcdS52DisplaySettings class. For example to switch to night settings, you would use:

s52DisplaySettings.setColorType(ILcdS52Symbology.NIGHT_COLORS);

In order to apply those settings on your layer, you pass them to the layer builder (Lightspeed)

ILspLayer layer = TLspS52LayerBuilder.newBuilder()
                                     .model(model)
                                     .s52DisplaySettings(s52DisplaySettings)
                                     .build();

or to the layer factory (GXY) during layer creation.

TLcdS52GXYLayerFactory layerFactory = new TLcdS52GXYLayerFactory(s52DisplaySettings);
ILcdGXYLayer layer = layerFactory.createGXYLayer(model);

In a typical application, you should have a single TLcdS52DisplaySettings instance which is shared by all layers. This ensures that when you (or your application user) changes the display settings, it is applied on all layers.

The sample contains a UI panel which can be used to change the display settings. See the samples.decoder.ecdis.common.S52DisplaySettingsCustomizer class.