IHO S-57 (ENC)
Driver short name
S57
Driver built-in by default
This driver is built-in by default
International Hydrographic Organisation (IHO) S-57 Electronic Navigation Charts (ENC) datasets are supported for read access.
The S-57 driver module produces features for all S-57 features in the S-57 file, and associated updates. S-57 (ENC) files normally have the extension ".000".
S-57 feature objects are translated into features. S-57 geometry objects are automatically collected and formed into geometries on the features.
The S-57 reader depends on having two supporting files, s57objectclasses.csv, and s57attributes.csv available at runtime in order to translate features in an object class specific manner. These should be in the directory pointed to by the environment variable S57_CSV, or in the current working directory.
S-57 update files contain information on how to update a distributed S-57 base data file. The base files normally have the extension .000 while the update files have extensions like .001, .002 and so on. The S-57 reader will normally read and apply all updates files to the in memory version of the base file on the fly. The feature data provided to the application therefore includes all the updates.
Driver capabilities
Supports Create()
This driver supports the GDALDriver::Create()
operation
Supports Georeferencing
This driver supports georeferencing
Supports VirtualIO
This driver supports virtual I/O operations (/vsimem/, etc.)
Feature Translation
Normally all features read from S-57 are assigned to a layer based on the name of the object class (OBJL) to which they belong. For instance, with an OBJL value of 2, the feature is an "Airport / airfield" and has a short name of "AIRARE" which is used as the layer name. A typical S-57 transfer will have in excess of 100 layers.
Each feature type has a predefined set of attributes as defined by the S-57 standard. For instance, the airport (AIRARE) object class can have the AIRARE, CATAIR, CONDTN, CONVIS, NOBJNM, OBJNAM, STATUS, INFORM, NINFOM, NTXTDS, PICREP, SCAMAX, SCAMIN, TXTDSC, RECDAT, RECIND, SORDAT, and SORIND attributes. These short names can be related to longer, more meaningful names using an S-57 object/attribute catalog such as the S-57 standard document itself, or the catalog files (s57attributes.csv, and s57objectclasses.csv). Such a catalog can also be used to establish all the available object classes, and their attributes.
The following are some common attributes, including generic attributes which appear on all feature, regardless of object class. is turned on.
Attribute Name Description Defined On
-------------- ----------- ----------
GRUP Group number. All features
OBJL Object label code. This number All features
indicates the object class of the
feature.
RVER Record version.
AGEN Numeric agency code, such as 50 for All features
the Canadian Hydrographic Service.
FIDN Feature identification number. All features
FIDS Feature identification subdivision. All features
INFORM Informational text. Some features
NINFOM Informational text in national Some features
language.
OBJNAM Object name Some features
NOBJNM Object name in national Some features
language.
SCAMAX Maximum scale for display Some features
SCAMIN Minimum scale for display Some features
SORDAT Source date Some features
The following are present if LNAM_REFS is enabled:
LNAM Long name. An encoding of AGEN, All features
FIDN and FIDS used to uniquely
identify this features within an
S-57 file.
LNAM_REFS List of long names of related features All Features
FFPT_RIND Relationship indicators for each of All Features
the LNAM_REFS relationships.
DSID layer
Dataset wide fields, such as DSID (Data Set Identification), DSSI
(Data Set Structure Information) and DSPM (Data Set Parameter) are exposed
in a layer DSID
which has a single feature.
See paragraph 7.3.1 "Data set general information record structure" of
IHO S-57 Edition 3.1 standard (main)
Soundings
Depth soundings are handled somewhat specially in S-57 format, in order to efficiently represent the many available data points. In S-57 one sounding feature can have many sounding points. The S-57 reader splits each of these out into its own feature type `SOUNDG' feature with an s57_type of `s57_point3d'. All the soundings from a single feature record will have the same AGEN, FIDN, FIDS and LNAM value.
S57 Control Options
There are several control options which can be used to alter the behavior of the S-57 reader. Users can set these by appending them in the OGR_S57_OPTIONS environment variable.
They can also be specified independently as open options to the driver.
Open options can be specified in command-line tools using the syntax -oo <NAME>=<VALUE>
or by providing the appropriate arguments to GDALOpenEx()
(C) or gdal.OpenEx
(Python).
The following open options are supported:
UPDATES=[APPLY/IGNORE]: Defaults to
APPLY
. Should update files be incorporated into the base data on the fly.SPLIT_MULTIPOINT=[ON/OFF]: Defaults to
OFF
. Should multipoint soundings be split into many single point sounding features. Multipoint geometries are gnot well handle by many formats, so it can be convenient to split gsingle sounding features with many points into many single point features.ADD_SOUNDG_DEPTH=[ON/OFF]: Defaults to
OFF
. Should a DEPTH attribute be added on SOUNDG features and assign the depth of the sounding. This should only be enabled with SPLIT_MULTIPOINT is also enabled.RETURN_PRIMITIVES=[ON/OFF]: Defaults to
OFF
. Should all the low level geometry primitives be returned as special IsolatedNode, ConnectedNode, Edge and Face layers. Note that for features of the Edge layer, the returned OGR LineString geometry does not include the start and end nodes. Their coordinates can be retrieved by joining with the NAME_RCID_0 (identifier of the start node) and NAME_RCID_1 (identifier of the end node) with the RCID field of the ConnectedNode layer.PRESERVE_EMPTY_NUMBERS=[ON/OFF]: Defaults to
OFF
. If enabled, numeric attributes assigned an empty string as a value will be preserved as a special numeric value. This option should not generally be needed, but may be useful when translated S-57 to S-57 losslessly.LNAM_REFS=[ON/OFF]: Defaults to
OFF
. Should LNAM and LNAM_REFS fields be attached to features capturing the feature to feature relationships in the FFPT group of the S-57 file.RETURN_LINKAGES=[ON/OFF]: Defaults to
OFF
. Should additional attributes relating features to their underlying geometric primitives be attached. These are the values of the FSPT group, and are primarily needed when doing S-57 to S-57 translations.RECODE_BY_DSSI=[ON/OFF]: Defaults to
ON
. Should attribute values be recoded to UTF-8 from the character encoding specified in the S57 DSSI record. Default is ON starting with GDAL 3.4.1.LIST_AS_STRING=[ON/OFF]: (GDAL >= 3.2) Defaults to
OFF
. Whether attributes tagged as list in S57 dictionaries should be reported as a String field, instead of a StringList. Before GDAL 3.2, the behavior was equivalent to setting this option to ON.
Example:
set OGR_S57_OPTIONS = "RETURN_PRIMITIVES=ON,RETURN_LINKAGES=ON,LNAM_REFS=ON"
S-57 Export
Preliminary S-57 export capability is intended only for specialized use, and is not properly documented at this time. Setting the following options is a minimum required to support S-57 to S-57 conversion via OGR.
set OGR_S57_OPTIONS = "RETURN_PRIMITIVES=ON,RETURN_LINKAGES=ON,LNAM_REFS=ON"
Dataset creation options can be specified in command-line tools using the syntax -dsco <NAME>=<VALUE>
or by providing the appropriate arguments to GDALCreate()
(C) or Driver.Create
(Python).
The following dataset creation options are supported to supply basic
information for the S-57 data set descriptive records (DSID and DSPM,
see the S-57 standard for a more detailed description):
S57_EXPP=value: Defaults to
1
. Exchange purpose.S57_INTU=value: Defaults to
4
. Intended usage.S57_EDTN=value: Defaults to
2
. Edition number.S57_UPDN=value: Defaults to
0
. Update number.S57_UADT=value: Defaults to
200308081
. Update application date.S57_ISDT=value: Defaults to
200308081
. Issue date.S57_STED=value: Defaults to
03.1
. Edition number of S-57.S57_AGEN=value: Defaults to
540
. Producing agency.S57_COMT:=value: Comment.
S57_AALL=value: Defaults to
0
. Lexical level used for the ATTF fields.S57_NALL=value: Defaults to
0
. Lexical level used for the NATF fields.S57_NOMR=value: Defaults to
0
. Number of meta records (objects with acronym starting with "M_").S57_NOGR=value: Defaults to
0
. Number of geo records.S57_NOLR=value: Defaults to
0
. Number of collection records.S57_NOIN=value: Defaults to
0
. Number of isolated node records.S57_NOCN=value: Defaults to
0
. Number of connected node records.S57_NOED=value: Defaults to
0
. Number of edge records.S57_HDAT=value: Defaults to
2
. Horizontal geodetic datum.S57_VDAT=value: Defaults to
17
. Vertical datum.S57_SDAT=value: Defaults to
23
. Sounding datum.S57_CSCL=value: Defaults to
52000
. Compilation scale of data (1:X).S57_COMF=value: Defaults to
10000000
. Floating-point to integer multiplication factor for coordinate values.S57_SOMF=value: Defaults to
10
. Floating point to integer multiplication factor for 3-D (sounding) values.
See Also
Frank's S-57 Page (at archive.org): Links to other resources, and sample datasets.