ChartX Server
S-57 (ENC) processing and vector tile server for ChartXβ
chartx-server is a Node.js based backend service that can read, process and serve S-57 Electronic Navigational Charts (ENCs) for use with the chartx web client. It converts raw ENC datasets along with any chart updates into optimized Mapbox Vector Tiles (MBTiles), enriches chart data with additional metadata and attributes, and serves all required assets through an Express HTTP server.
The server can run as a standalone application or be embedded into an existing Express application for advanced customization and integration.
Featuresβ
- π¦ Reads ENC charts and updates from the chart directory (Default:
./data/charts) - βοΈ Converts S-57 data into optimized MBTiles for vector tile serving
- π Automatically detects chart updates and regenerates tiles only when required
- π Generates a chart content hash to prevent unnecessary reprocessing
- π§ Adds derived attributes and metadata during processing
- πΊοΈ Serves MapLibre-compatible vector tiles
- π¨ Includes IHO presentation sprite sheets
- π€ Includes required font glyphs for chart text rendering
- π Serves all assets through an Express HTTP server
- π§© Can be embedded into other Express applications
- π οΈ Configurable via environment variables or command line arguments
Runtime Requirementsβ
The following native tools must be installed and available in PATH at runtime:
- GDAL (with S-57 support enabled)
- Tippecanoe
The application validates these dependencies on startup and will terminate with an error if either is missing.
Charts Directory Structureβ
data/
βββ charts/
βββ CELL1.000
βββ CELL1.001
βββ CELL2.000
Docker Imageβ
chartx-server is also available as a Docker image bundled with all required runtime dependencies, including GDAL (with S-57 support), Tippecanoe, and Node.js.
Using the Docker image eliminates the need to install native dependencies on the host system and provides a consistent, reproducible runtime environment.