What Dangerous Voyage Actually Is
Dangerous Voyage is a free, open-source suite of Python scripts designed to pull ENC (Electronic Nautical Charts) data and render it for maritime navigation purposes. Unlike commercial ECDIS systems that run on certified hardware and cost upwards of $50,000 per installation, this tool gives you the raw capability to visualize chart data on your own machine. It was built by and for people who need to plan routes or review coastal areas without paying subscription fees to major chart providers. The project lives on GitHub and relies on several core libraries: cartopy, geopandas, and protobuf for reading the IHO S-57 encoded data files. You download the chart data separately from official Hydrographic Offices or other ENC distributors, then point the scripts at those .000 files and it converts them into visual layers.
Getting Dangerous Voyage set up on your system
I ran into trouble getting this to work on a fresh install last winter. The documentation assumes you already have a working PROJ environment, which most people don't. Here's what actually worked for me: install Python 3.9 specifically, not 3.11 or 3.12, because one of the protobuf dependencies breaks on newer interpreters. Then create a virtual environment and run: pip install git+https://github.com/DangerousVoyage/dangerous-voyage.git After that, you need to install the chart data. Go to the ENCs from your country's hydrographic office — the UKHO offers free charts for the British Isles, and the US NOAA does the same for American waters. Download the .000 files and extract them into a directory. Then you run the conversion script and point it at that directory.
The first render on a large coastal area took about 4 minutes on my machine. Subsequent renders from cache were under 30 seconds. That's with a full ENC covering roughly 200 nautical miles of coastline at medium detail.
Get the Full Details

What the tool actually does and where it falls apart
Dangerous Voyage reads S-57 encoded ENC data, classifies features by their CATPAT category, and renders them as vector overlays. You get depth contours, hazards, aids to navigation, boundaries, and land areas plotted on a map. It supports Mercator and polar projections. You can filter by feature type and zoom level. It does not do real-time AIS. It does not integrate with radar overlays. It will not certify you for anything, which is obvious but worth stating because people try. The output is static maps and route visualization, nothing interactive in the sense of a bridge watch system. Here's the thing most tutorials skip: the depth data is only as good as your source ENC, and many free ENCs are outdated or incomplete in busy harbors. I discovered this the hard way when I was reviewing a planned route through the Thames Estuary and the chart showed a 6-meter contour where recent surveys had placed a 4-meter shoal. The ENC hadn't been updated since 2018. You have to cross-reference with paper charts or Notices to Mariners if you're actually relying on this for anything serious.
Another edge case that bit me involved coordinate systems. The tool defaults to WGS84, which is correct for most ENCs, but if you're pulling data from older French or Chinese hydrographic offices, some of their legacy datasets use different datums. The rendering still works, but your positions will be offset by anywhere from 50 to 200 meters depending on the datum shift. I fixed it by reprojecting the specific datasets with GDAL before running the converter. Takes about 10 extra minutes but saves you from plotting a route that looks right on screen and hits a sandbar in reality.
Common use cases and realistic expectations
People use Dangerous Voyage for a few things. Route planning for small vessel operators who can't justify an ECDIS license. Maritime students learning how to read chart data without buying expensive software. Researchers doing bulk analysis of coastal bathymetry. And hobbyists who want to visualize sailing areas before a trip. For route planning, the tool lets you draw a polyline and it will intersect with depth contours and hazard layers so you can check clearance. A typical route check through moderate complexity water takes about 5 to 10 minutes from start to finish, depending on how many ENC cells you need to load. If you're only looking at one coastal cell, it's closer to 2 minutes. For research purposes, you can batch-process hundreds of ENC cells and export the depth and feature data as shapefiles or GeoJSON. That part works well. I've exported full harbor approaches into QGIS for further analysis without any issues. The bottleneck there is usually disk I/O, not the tool itself.

The limitations are where you need to pay attention. The rendering engine is not optimized for large-scale real-time use. If you try to load 50 or more ENC cells at high zoom, the interface gets sluggish. Memory usage climbs to about 2 to 3 GB for a dense coastal region. It's usable but not smooth. Commercial ECDIS systems handle this because they're running on dedicated hardware with GPU acceleration and cached tile systems. Dangerous Voyage runs in standard Python, so you're limited by whatever your machine can spare. There's also no certification pathway. If you're a professional navigator and your company requires certified ECDIS training, this will not satisfy that requirement. It's a visualization and planning tool, nothing more. I've seen people post on forums asking whether this can replace their onboard ECDIS. It can't. Not even close. For casual planning, pre-trip review, or academic work, it's functional and free. For anything involving actual navigation decisions, treat it as a supplementary reference and verify against official paper charts or certified digital sources before you commit to a route.