Skip to content

Repository files navigation

tile57

⚓ Official nautical charts, ready to draw.
tile57 reads the electronic charts hydrographic offices publish and draws them the way the standard says they should look: in your app, on your server, or right in the browser.

🌊 Live demo  ·  📚 Docs  ·  License


Try it in your browser

Annapolis Harbor drawn by tile57

The live demo is an S-57/S-101 chart viewer in one page. Grab a free chart zip from NOAA, drop it on the map, and the page does the rest: it bakes the charts, keeps them in your browser, and draws them with WebGPU. Pan, zoom, and rotate a whole chart library. Nothing is uploaded and there is no server.

Warning

Not for navigation. This is not a certified navigation product. Do not use it to navigate. Refer to Known limitations.

What you can do with it

  • Build a chartplotter for desktop, mobile, embedded, or pure web. Point tile57 at a folder of charts and it becomes one seamless, queryable map.
  • Quilt a whole library. Charts at every scale stitch into one chart: the most detailed chart wins each stretch of water, the general chart fills around it, and a newer edition wins an overlap. Harbor to ocean is one continuous map, the way an ECDIS quilts.
  • Serve charts to any map client. Bake once and serve standard vector tiles with a matching style; MapLibre draws them out of the box.
  • Draw at full speed. tile57 hands your GPU a ready-to-draw scene. Pan, zoom, and rotate without rebuilding anything.
  • Put charts on paper. Finished PNG images and vector PDF pages, straight from the source data.
  • See the world under the chart. Satellite photos (MBTiles) and scanned raster charts (BSB/KAP) draw beneath the official one, which opens up so you can see through it. Every buoy, light, and depth stays on top.
  • Ask the chart questions. What is under the cursor, what the chart says about it, and the notes and diagrams it carries.

The portrayal is official, not a look-alike: tile57 runs the IHO's own portrayal rules against the chart's own records. It reads today's charts (S-57) and tomorrow's (S-101), and it embeds anywhere: one small library with no runtime dependencies.

Start here

brew install beetlebugorg/tap/tile57        # or grab a binary from Releases

tile57 bake ENC_ROOT -o out/                # every chart -> its own archive
tile57 png ENC_ROOT --view -76.48,38.974,15 --size 1600x1200 -o chart.png

Binaries for macOS, Linux, and Windows are attached to every release. Use the engine from C, Zig, JavaScript, or Go, or through the CLI. The docs cover everything else.

Build from source

git submodule update --init --recursive   # the vendored S-101 catalogue
zig build && zig build test               # needs Zig 0.16 only

AI-first development

This project is built with AI assistance. Use AI tools freely. The most useful contribution is a clear set of requirements, or a rough prototype of what you want, rather than a patch. Refer to the contributing guide.

License

tile57's own code is MIT © Jeremy Collins. It embeds the IHO S-101 Portrayal Catalogue (© IHO). It vendors nanosvg (zlib) and stb_image_write (public domain). NOAA ENC charts are U.S. public domain and not for navigation.

About

⚓ A high-performance, low-memory S-57/S-101/raster chart engine: vector tiles, S-101 styles, PNG, PDF, and C API.

Topics

Resources

Stars

5 stars

Watchers

1 watching

Forks

Releases

Used by

Contributors

Languages