S-57 (ENC) Hydrographic Data format

Liz Sanderson
Liz Sanderson
  • Updated


S-57 is an IHO standard format for storing hydrographic data. IENC is a standard for inland waterways. AML (Additional Military Layers) adds additional object classes to the S-57 feature set

Example Workspace

An example of reading S-57 and writing to an Esri Geodatabase is attached. This is loosely based on the NOAA ENC Handler data model. The workspace illustrates the use of FME to read S-57 data using Dynamic schema, as well as the Schema Mapper transformer writing to an Esri Geodatabase.

A second example is included that requires FME 2012 or higher. This example uses a new feature on the Geodatabase writer: the ability to use an Esri XML Workspace Document as the Geodatabase schema definition.

Another example of FME reading S57 data is on the NOAA website ENCDirect to GIS which use FME Server for self-serve ENC data downloads.


Q) Does the FME S57 reader support encrypted (S63) data?

A) A) Unfortunately our S57 reader only supports unencrypted data, as S63 is a protection scheme for ENC data rather than just a format and is usually distributed through official channels only.

Q) When I convert S57 to MapInfo I get the message "MapInfo file 'myfile.tab' could not be opened" or "unable to create new table" when I convert or open the TAB file in MapInfo. Why?

A) The issue is that the S57 schema has character fields that are 254 characters in size and therefore too long for MapInfo to handle correctly.
Because this is a limitation of MapInfo it is something that cannot be easily resolved by FME. You would have to truncate the S-57 fields. This limit does not apply to MapInfo Extended TAB.

Q) When I convert my S57 data none of the correct symbols or colors come through. Why?

A) According to the official S57 specification document...

"The model... does not contain any rules for the presentation or display of information... Therefore the presentation of information is considered to be independent of its storage. Different applications must provide their own specific presentation model"

In other words if you open the S57 data in an S57 viewing application then you will see symbols and colours not because the S57 data holds this information, but because the viewing application is automatically symbolising the data according to its own set of rules (its "presentation model"). IHO S-52 is the display specification standard for S-57 ENC.

If you convert the data from S57 to, say, MapInfo using FME all of the available information is carried across. You will not see the same display in MapInfo as in the S57 viewing application because MapInfo is not automatically symbolising the data (NB neither will the FME Universal Viewer).

Your options are to either use FME to set MapInfo format attributes to simulate the S57 viewer display, or by applying these properties within the MapInfo environment.

Q) When I convert my S57 data the soundings do not have an attribute for depth. Why?

A) Soundings are a 3D point in S-57. As with symbology, the only reason you are seeing text representing a sounding depth in your S57 data is that your S57 viewing application is automatically converting the Z value of the each sounding feature into an item of text annotation.

If you convert the data from S57 to another format, FME does not create an attribute to hold sounding depth because there is no such attribute in S57. Each sounding feature will be in 3D with the Z coordinate representing depth.

Because some formats (eg MIF) do not support 3 dimensions the Z coordinate is being lost. Therefore you are getting neither an attribute or a 3d feature.

The extremely simple solution to this is to add a CoordinateFetcher transformer in your workspace, just after the soundings Feature Type. A CoordinateFetcher will retrieve the Z value of every sounding feature and place that value into an attribute of your own creation.

Q) Can FME S-57 update files?

A) Yes, FME can read update files and also re-issue files

Q) Can FME writer S-57 data?

A) Yes, but you have to purchase a writer plug-in from SevenCs - www.sevencs.com


Q) Can I add custom attributes to the S57 reader

A) Yes. Below is a description of how you can add custom attributes to the S57 reader


Adding custom attributes to the S57 reader

It is possible to add new attributes to the S57 schema. You can edit the FME S57 configuration files which are in the folder:

<FME install>/s57 i.e. C:\apps\FME\s57

You can edit the following three files:




Make a copy of the files before editing them. Note: if you edit the files using Excel then you have to take additional steps to ensure the header record is not corrupted - I describe that below.

Attached are Excel files with highlights to show some example changes.

To add a new attribute you must update:

  • s57attributes.csv - defines the attributes, code and types. For example:

1119,Recommendations - Charting recommendations from the field,recomd,S,F

2011,Charting recommendation made by HSD relative to survey scale - not generalized to chart scale,hsdrec,E,F

Do NOT include commas in the Attribute description, unless you quote the description.

Class is F,N,S or $. Most attributes will be Class = F


  • s57expectedinput.csv - defines the attribute domain lists. Code = attribute code defined in the s57attributes.csv. ID is the domain code, Meaning is the description. For example for the "hsdrec" attribute defined above:





2011,5,Not Addressed

  • s57objectclasses.csv - add the attribute to the list of attributes for each ObjectClass. Usually, you'll append the new attribute to the list in column "Attribute_A" . For example: Code = 121 ObjectClass = Seabed Area


Two new attributes recomd & hsdrec. Note the trailing semi-colon ;


Header rows: The values in the header rows of all three files MUST be quoted, for example for s57attributes.csv the head is: "Code","Attribute","Acronym","Attributetype","Class"

If you edit the files in Excel, and then save as CSV, Excel may strip the quotes. Either copy the headers from a copy of the files, or manually add the quotes back.

Attached excel files illustrate the examples above. These are for illustration purposes only. You must make edits to the CSV files.s57attributes.xlsx s57expectedinput.xlsx s57objectclasses.xlsx

Was this article helpful?



Please sign in to leave a comment.