Skip to main content

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
warning

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.

tip

Using the Docker image eliminates the need to install native dependencies on the host system and provides a consistent, reproducible runtime environment.