Import, structuring and use of official nautical charts in a robust spatial database
S57Manager is a QGIS plugin that enables the structured import, validation and visualization of ENC (S-57) nautical charts using PostGIS or GeoPackage.
Introduction
Nautical charts in S-57 format (ENC – Electronic Navigational Charts) are official, structured, complex datasets with rich semantics. While they are widely used in professional navigation systems, their direct use in a general-purpose GIS such as QGIS remains challenging.(->Why ENCs (S-57) are complex data)
The S57Manager plugin was created to address this issue:
to provide a reliable, structured and reproducible solution for importing, storing and displaying S-57 data in QGIS, relying on modern spatial databases.
In this first article, we present S57Manager as a whole, then focus on the PostGIS option, which is particularly well suited for professional, collaborative and multi-project workflows.
The plugin implements the automation of the processing chain described in the following two articles:
✔ centralized storage ✔ high performance on large datasets ✔ advanced spatial queries ✔ multi-user access ✔ controlled backups and updates ✔ integration into existing GIS workflows
3. Configuring PostGIS mode in S57Manager
3.1 Connection settings
Connection settings for the Postgresql/postgis database are configured directly in QGIS. The plugin searches for and displays the connections available in the current project:
3.2 Structure of generated tables
When you click OK in the previous dialog box, the plugin checks for the existence of five schemas in the selected database and creates them if necessary:
enc, main schema where all imported S57 files will be stored
linesenc,pointsenc and polysenc, temporary import schemas. They host ogr imports to enable the necessary operations on the geometries. Once the processing is complete and the final data has been copied to the enc schema, they are emptied.
encm, not currently used but planned for future versions.
The ENC schema contains all the tables from the S57 files.
Separation by geometry type (points: pt_, lines: li_, polygons: pl_)
S-57 object tables
Relationship tables
RCID identifier management
👉 The schema is designed to be readable, documentable, and queryable.
4. Importing an S-57 ENC into PostGIS
4.1 Launching the import
The plugin searches for and loads all .000 files in the directory and subdirectories and performs the following:
selection of S-57 files
progress tracking
display of detailed logs
4.2 Control and validation of ENC data in PostGIS
Importing ENC data into PostGIS is only a first step. Before any cartographic or analytical use, it is essential to carry out rigorous quality control.
As ENC data are standardized and critical for maritime safety, any structural or interpretative error may lead to inconsistent—or even dangerous—results.
Quality control relies on three complementary pillars:
verification of imported layers
geometric integrity
attribute consistency
4.2.1 Verification of imported layers
After importing into PostGIS, the first check is to ensure that all expected object classes are present.
Presence and completeness
Depending on the ENC content, one should notably find:
hydrographic objects (depth areas, soundings)
coastline and land areas
aids to navigation
hazards and obstructions
regulated or special areas
The absence of a layer may indicate:
an error during import
unintended filtering
incompatibility with the S-57 version used
Logical organization
In PostGIS, data can be organized:
by schema (hydrography, navigation, regulations, etc.)
by geometry type (points, lines, polygons)
by S-57 object class
Clear structuring facilitates:
maintenance
understanding by third parties
automation of processing
👉 S57Manager helps maintain a readable organization compatible with GIS best practices.
4.2.2 Geometric integrity
ENC data rely on shared and topological geometries, which makes their import more delicate than a classic vector dataset.
Valid geometries
It is essential to verify that:
polygons are closed
geometries are not self-intersecting
lines are not degenerated
points are not unnecessarily duplicated
In PostGIS, validation functions make it possible to:
detect invalid geometries
correct them if necessary
document anomalies
An invalid geometry may:
prevent display in QGIS
distort area or distance calculations
block subsequent spatial operations
Topological consistency
Even if S-57 topology is not always preserved exactly after import, certain rules must remain consistent:
a depth area must not arbitrarily overlap a land area
the coastline must correspond to the land/sea boundary
point objects must be located in logically compatible areas
These checks are particularly important during data aggregation or generalization.
4.2.3 Attribute consistency
S-57 attributes are both rich and constrained. They must be checked with the same level of care as geometries.
Presence of essential attributes
Each object class includes attributes that are:
mandatory
conditional
optional
The absence of a key attribute may indicate:
an import error
misinterpretation of the S-57 schema
information loss during conversion
Coded values and domains
Many attributes use:
coded numeric values
closed lists defined by the IHO
It is crucial to verify that:
values fall within authorized domains
codes match their intended meaning
fields do not contain aberrant values
An incorrect value can affect:
cartographic interpretation
object hierarchy
display or priority rules
Semantic consistency
Finally, some checks are a matter of nautical common sense:
a hazard cannot be located on land
an aid to navigation must be consistent with its environment
a regulated area must have a compatible type and category
These cross-checks are often facilitated by:
PostGIS spatial queries
joins between layers
visualization in QGIS
Why these checks are essential
PostGIS offers exceptional analytical power, but it does not automatically correct semantic or normative inconsistencies.
In the case of ENC data:
data quality directly conditions reliability
errors may propagate through analyses
an initial quality check prevents downstream issues
👉 S57Manager follows this approach: not merely importing data, but importing it cleanly, with respect for both the structure and the nautical meaning of the data.
5. Use in QGIS
5.1 Display by object families
Given the richness and density of ENC data, displaying all layers simultaneously quickly results in an unreadable map. A recommended practice is to organize the display by object families, i.e. by major functional groups sharing a common nautical logic.
In QGIS, this organization can be implemented through:
layer groups,
shared styles by family,
conditional display filters,
or distinct schemas on the PostGIS side.
Displaying data by family offers several advantages:
it facilitates progressive map reading by revealing information through logical layers;
it allows quick visual checks of data consistency (missing objects, positional anomalies);
it prepares the ground for advanced styling, close to S-52 rules, without attempting to reproduce them fully.
👉 S57Manager follows this logic by preserving a structure compatible with ENC object families, allowing users to build readable, scalable QGIS projects adapted to their needs.
5.2 Filtering displayed layers
The “ENC Tools” menu allows filtering of displayed layers according to usage and/or display scale.
Filtering by purpose
ENCs are designed for very different uses, ranging from route planning to coastal or port navigation. This diversity is formalized by the concept of purpose, which corresponds to the cartographic usage level of the data (general, coastal, approach, harbour, etc.).
Applying a purpose-based filter makes it possible to display only objects relevant to a given context, avoiding visual clutter and unnecessary information at the considered scale. An object that is valid in a general navigation ENC may become inappropriate—or even misleading—in a harbour context, and vice versa.
In a PostGIS / QGIS environment, this filtering can be implemented:
via attributes inherited from the ENC import,
through SQL views dedicated to each purpose,
or via scale-dependent visibility rules.
The benefits are multiple:
improved cartographic readability, adapted to the expected level of detail;
consistency between scale, usage and content;
a solid basis for differentiated styles according to navigation context.
👉 S57Manager facilitates this filtering by preserving purpose information during import and enabling layers and queries to be structured according to targeted uses, without imposing rigid symbolization.
Display scale
In ENCs, scale is not a simple cartographic parameter: it conditions the very validity of the displayed information. Each object is designed to be interpreted within a given scale range, closely linked to its purpose and level of generalization.
Displaying an object outside its scale domain may lead to:
loss of readability (excessive object density),
false precision (over-detailed objects at small scale),
or even misinterpretation by the end user.
Managing display scale therefore makes it possible to:
automatically adapt layer visibility to zoom level,
preserve consistency between geometric detail and usage context,
bring QGIS behaviour closer to that of an ECDIS, while retaining GIS flexibility.
In a PostGIS or GeoPackage architecture, this logic can be implemented through:
scale ranges defined at layer level,
views or queries filtering objects according to the current scale,
or a combined purpose/scale approach for finer control.
👉 S57Manager provides tools to define and adjust minimum and maximum display scales for selected layers, enabling progressive, readable cartography consistent with the ENC philosophy, without unnecessarily complicating the QGIS project.
5.3 Custom symbolization
When S-57 layers are loaded directly, they appear as points, lines and polygons with default symbology, far removed from a nautical chart. S57Manager makes it possible to directly apply an ECDIS-like symbolization.
This requires two steps:
Installing the required SVG symbols These symbols are included in the plugin and are installed in the user profile by clicking the “Install SVG symbol library” button in the S57 Options dialog.
Installing default symbolization in the PostGIS database The “Install default S57 symbology” button checks whether the layer_styles table exists in the public schema of the PostGIS database.
If it does not exist, it is created and the default symbology for the 260 S-57 layers is added.
If it already exists, the default symbologies for the 260 layers are added to the existing ones.
Conclusion
The PostGIS mode of S57Manager provides a robust solution for the long-term integration of ENC data into a professional GIS. It is clearly aimed at environments where durability, performance and collaboration are essential criteria.
Geopackage : A lightweight, autonomous and portable solution for marine data
Introduction
While PostGIS is ideal for structured, collaborative and multi-project professional environments, it is not always necessary — nor desirable — for all use cases.
For:
one-off or exploratory studies,
embedded or mobile projects,
data exchange between organizations,
or offline usage,
the GeoPackage (GPKG) format represents a simple, robust and standardized alternative.
In this article, we explore the GeoPackage mode of S57Manager, designed to offer the same level of structuring, control and data exploitation as the PostGIS mode, without any server dependency.
👉 The plugin automates the processing chain described in the following articles:
ENC charts in GeoPackage with QGIS – Final version: Part 1
ENC charts in GeoPackage with QGIS – Final version: Part 2
1. Why choose GeoPackage?
GeoPackage is a widely adopted OGC standard in the GIS ecosystem.
Its key advantages include:
single-file storage,
OGC standard format,
portability (USB drive, external disk, cloud),
versioning capabilities,
compatibility with QGIS, ArcGIS and GDAL/OGR.
👉 It is particularly suitable for:
engineering consultancies,
field or onboard missions,
inter-agency data sharing,
low-connectivity or offline contexts.
👉 In S57Manager, GeoPackage is not a degraded mode: it follows the same structural principles as PostGIS, adapted to file-based storage.
2. Configuring GeoPackage mode
2.1 Creating or selecting a GeoPackage
The user defines the working directory used for GeoPackages.
The plugin uses four GPKG files:
enc.gpkg → main file containing the final result (up to ~260 S-57 tables)
three temporary import GeoPackages:
pointsENC.gpkg
linesENC.gpkg
polysENC.gpkg
These files are used as intermediate steps during the import process.
Plugin behavior:
GeoPackages are automatically created if they do not exist;
existing files are reused;
the enc.gpkg file is progressively enriched with each import.
👉 As with PostGIS mode, the internal structure is fully managed by S57Manager, ensuring consistency and reproducibility.
2.2 Layer organization
Data organization follows the same principles as in PostGIS:
one table per S-57 object class,
clear separation between point, line and polygon geometries,
consistent naming and attributes across both modes.
This consistency enables:
smooth migration between GeoPackage and PostGIS,
easier interpretation by third parties,
reuse of styles and workflows.
👉 A QGIS project built on GeoPackage can later be migrated to PostGIS without changing layer logic.
3. ENC → GeoPackage import
ENC import into GeoPackage relies on the same processing chain as PostGIS mode:
decoding via GDAL / OGR,
logical interpretation of S-57 objects,
geometry-based separation,
creation of normalized final tables.
The difference lies only in the storage backend.
The plugin guarantees:
identical logging,
the same validation checks,
no functional loss compared to PostGIS.
👉 Choosing GeoPackage is therefore an architectural choice, not a compromise on data quality.
4. Data control and consistency in GeoPackage
Even with file-based storage, ENC data remains:
standardized,
semantically rich,
critical from a navigational perspective.
The data checks described in the PostGIS article therefore remain fully applicable:
presence of expected layers,
geometry validity,
consistency of coded attributes,
overall nautical logic.
👉 QGIS allows most of these checks directly on GeoPackage through:
geometry validation tools,
expressions and filters,
internal SQL queries.
5. Working with ENC layers locally in QGIS
Working in QGIS is identical to the PostGIS workflow:
display by ENC object families,
filtering by purpose,
scale-dependent rendering,
nautical-oriented styles.
Performance is generally very good for:
limited spatial extents,
single-user workflows,
embedded projects.
👉 GeoPackage enables clear, progressive and coherent cartography, without requiring server infrastructure.
6. PostGIS / GeoPackage comparison
Criterion
PostGIS
GeoPackage
Multi-user
✅
❌
Large datasets
✅
⚠️
Portability
❌
✅
Simplicity
⚠️
✅
Deployment
Server
File
Offline use
❌
✅
Embedded projects
❌
✅
👉 The two approaches do not compete — they complement each other.
Conclusion
The GeoPackage mode of S57Manager makes ENC data accessible without heavy infrastructure, while preserving:
ENC semantic richness,
rigorous data structuring,
consistent exploitation in QGIS.
It naturally complements the PostGIS approach, making S57Manager a versatile tool adaptable to:
institutional environments,
lightweight, mobile or exploratory use cases.
Import NOAA ENC nautical charts directly into QGIS with S57Manager
ENC (Electronic Navigational Charts) are now the standard for digital marine cartography.
With the latest update to the S57Manager plugin, QGIS now features a module dedicated to the official NOAA ENC catalog, allowing users to easily search, filter, and import ENC cells directly from the QGIS interface.
This new tool greatly simplifies the work of users working with marine, port, or coastal data.
🔎 The NOAA ENC catalog: what is it?
The NOAA (National Oceanic and Atmospheric Administration) provides an official catalog containing several thousand ENC cells covering:
U.S. coastlines,
ports and harbors,
estuaries,
inland waterways.
Each ENC cell is described by:
a unique identifier (e.g. US5NYCDF),
a purpose (usage level, from overview to very high detail),
a nominal scale,
a precise geographic extent,
an official download URL.
Until now, accessing this catalog required external tools or manual searches. The NOAA module in S57Manager completely changes this workflow.
🧩 A NOAA module fully integrated into S57Manager
The new NOAA module is fully integrated into S57Manager and follows its core philosophy:
centralize all ENC-related tools in a single, coherent and efficient interface.
From QGIS, users can now:
load the official NOAA catalog (XML),
browse the complete list of available ENC cells,
dynamically filter the catalog,
import only the cells that are truly relevant.
🎛️ Filters designed for real cartographic workflows
The NOAA module provides several combinable filters.
🔹 Filtering by purpose
NOAA ENC cells are classified by purpose (1 to 6):
Purpose
Usage
1
Overview
2
General
3
Coastal
4
Approach
5
Harbor
6
Berthing / Detail
Users can precisely select the desired usage levels.
🔹 Filtering by scale
Each ENC cell has a nominal scale (e.g. 1:10,000; 1:50,000). The module allows defining minimum and maximum scales to avoid loading:
overly generalized data,
or excessively detailed data.
💡 Tip: Purpose 5 and 6 cells typically use very fine scales (≈ 1:2,000 to 1:12,000). To display them correctly, it is recommended to set the minimum display scale around 1:1,500.
🔹 Filtering by QGIS map canvas extent
This is one of the strongest features of the module.
Users can choose to list only ENC cells that intersect the current QGIS map canvas extent.
Workflow:
zoom to your area of interest,
activate the extent filter,
only relevant ENC cells are listed.
Technically, this relies on:
NOAA extents stored in EPSG:4326,
automatic reprojection to the current QGIS CRS.
⬇️ Importing a NOAA ENC cell in just a few clicks
Once a cell is selected:
the ENC file is downloaded from the official NOAA URL;
it is validated and processed by the S57Manager S-57 workflow;
layers are imported into the configured GeoPackage or PostGIS database;
standard S57Manager organization and symbology are automatically applied.
No manual handling is required.
🌍 Multilingual and fully integrated in QGIS
Like the rest of S57Manager, the NOAA module is:
fully multilingual (FR / EN / ES / PT),
compatible with recent QGIS versions (Qt6),
fully consistent with other ENC tools in the plugin.
It is not a standalone tool, but a natural extension of the ENC workflow in QGIS.
Conclusion
With this new NOAA module, S57Manager reaches a new milestone:
direct access to the official ENC catalog,
precise data selection,
fast and controlled import,
seamless integration into QGIS.
Whether you work on:
port cartography,
coastal analysis,
inland waterway management,
or institutional marine data,
this module provides a real productivity gain and better control over ENC data.
Exploring ENC Data Before Import: The NOAA Catalogue at the Service of S57Manager
Working with ENC (S-57) data presents a very specific challenge: their richness and complexity make any “blind” approach inefficient. Even before discussing data import or structuring in QGIS, a fundamental question arises: which charts should be loaded, and why choose these rather than others?
This is precisely where the NOAA ENC catalogue comes into play — a resource that is still largely underused by GIS professionals.
After presenting how to import ENC S-57 data into QGIS with S57Manager — first using PostGIS, then GeoPackage — this final article focuses on a crucial but often overlooked step: exploring and selecting the relevant ENC cells upstream of the import process, using the official NOAA ENC catalogue.
ENC Data: Abundance That Complicates Choice
Unlike conventional GIS datasets, an ENC does not correspond to a single map covering a given area. Instead, it belongs to a set of chart cells, each defined by:
a precise geographic extent,
a nominal scale,
a cartographic usage (overview, coastal, approach, harbour, berth…),
a navigation purpose.
For the same geographic area, several ENC cells may overlap at different scales. Importing all available ENC data without prior selection quickly leads to:
oversized databases,
unreadable QGIS projects,
degraded performance,
and above all, a loss of cartographic meaning.
Before exploiting ENC data, it is therefore essential to understand and contextualize it.
The NOAA ENC Catalogue: A Key but Raw Resource
NOAA (National Oceanic and Atmospheric Administration) provides an official ENC catalogue, distributed as an XML file compliant with ISO standards (notably ISO 19115).
For each ENC cell, the catalogue contains:
a unique identifier (cell_id),
a name,
a scale,
a usage / purpose,
a geographic extent,
an official download URL.
In theory, all the information required for informed selection is available. In practice, however, this catalogue is difficult to exploit:
XML format is hard to read,
no direct spatial visualization,
consultation often limited to specialized tools or ad hoc scripts.
The challenge is therefore clear: transform this technical catalogue into a usable GIS layer in QGIS.
From XML Catalogue to a Spatial Index Layer
Once the NOAA catalogue is properly parsed, it becomes possible to extract the geographic extents of all ENC cells and convert them into polygons.
The result is a spatial index layer, typically stored in a GeoPackage, containing:
one polygon per ENC cell,
essential attributes:
cell_id
name
scale
purpose
This layer is lightweight, stable, and only needs to be generated once. It does not contain any detailed nautical geometry — only chart extents.
Loading and Exploring NOAA Extents in QGIS
Once loaded into QGIS, this index layer becomes a highly effective exploration tool:
transparent polygons to preserve background readability,
visible outlines to distinguish cells,
labels displaying the cell identifier,
easy overlay with:
a study area,
an existing project,
field data.
Within seconds, it becomes possible to:
identify which ENC cells actually cover the area of interest,
compare available scales,
understand the charting logic,
avoid unnecessary imports.
Here, QGIS fully regains its role as a spatial analysis tool, not just a data viewer.
From Exploration to Import: Integration with S57Manager
The true value of this index layer emerges when it is connected to S57Manager.
Directly from QGIS, the user can:
visually explore ENC extents,
select a relevant cell,
trigger the import of that cell via a QGIS action.
This workflow enables:
targeted imports,
fine control over data volume,
alignment between operational needs and loaded data,
full compatibility with both storage modes supported by S57Manager:
PostGIS,
GeoPackage.
The workflow shifts from “import then sort” to “understand, select, then import.”
Conclusion: Bringing Intelligence Upstream
By exploiting the NOAA catalogue as a GIS layer, working with ENC data becomes clearer and more efficient. Instead of suffering from the complexity of S-57 data, GIS professionals regain control from the very first step: exploration, selection, and decision-making.
Combined with S57Manager, the NOAA catalogue is not an auxiliary tool, but the first building block of a coherent processing chain:
catalogue → selection → import → exploitation
A step too often overlooked — yet essential for working confidently with complex nautical data in QGIS.