Water Depth

From OpenStreetMap Wiki
Jump to navigation Jump to search

This page describes how water depths can be determined and used for a nautical chart.

For the deep ocean area see Meeresprofil. Suggested translation: Seabed profile/Sea Profile/Subsea Profile/Depth Profile


For nautical charts depth lines are important information.

With the knowledge of depth lines one can:

  • infer currents
  • navigate
  • see where to expect shallow water
  • see where to expect waves
  • see where to expect overfalls (Grundseeen)

In OpenStreetMap water depths are saved as contours. From this an established depth data model can be created with refined statistical methods. (Like that used in the CycleMap.)

Specific depths in the database must first be presented with tidal data, which can then be used to correct the sensor data.

Important disclaimer

Water depths in OSeaM are not to be used for navigation.

In the shipping trade the use of official maps required by law. Those maps are the most precise official maps of the location. Recreational vessels should also carry a current, official chart.

Down to 50m

Especially interesting are water depths from 0 to 50m in coastal areas, and associated waterway obstacles. Particularly in the range between 2m and 5m high measuring accuracy and correction are required. The skipper of a small boat with 2m draft can then with certainty decide where he still has enough water under the keel.

Depth measurements

There are many methods to measure the water depth:

Plumbing by hand

Felsbrocken kann man mit dem Dinghi und einem "Schraubenschlüssel an der Schnur" vermessen (das machen die "Grossen" auch nicht viel anders).

Oder noch sportlicher: mit ABC-Taucherausrüstung und Tiefenmesser...

Depth gauge

All ships have a depth gauge which directly shows the depth. Modern ships have the depth gauge in an integrated ECDIS and receive NMEA data from it. This data can be collected, and converted into xyzt GPX-Tracks to upload into the OSM database.


All large ships have a AIS on board. This will automatically transmit the position and the draft of the ship. The University of Athens maintains a worldwide network of data from AIS receivers on the web. [1]

This data can be accessed and converted to GPX. At least in heavily travelled areas, it can used be to at least identify the 'minimum water depth.'

A OSM own AIS Messstelle runs in Travemünde. (???) Unfortunately the data servers are only accessible offline.

Echo sounder

Professionals use an echo sounder for depth measurements. Maybe Garmin will integrate a depth gauge into a handheld GPS sometime?



Depth data needs to be corrected for tides.

For this you need x/y/z/t data. From the time and the position you can calculate the tidal variation and adjust the measured depth.

In waters with only slight tides (the Baltic Sea, Mediterranean) this could be omitted.

Sensor position

An offset for the mounting position of the sensor must be taken into account.

There are three standard variations in the measured value indication:

  • Water depth below water table
  • Water depth under keel
  • Water depth at sensor position

Online Correction

We could create a site where you can correct the measured depths with the tides.

Import and export of GPX and NMEA files should be possible.


GEBCO (General Bathymetric Chart of the Oceans) is a freely available data set with water depths of the shipping routes of the world's oceans. Data were collected with echo sounders. The data with a resolution of 1 arc minute (1852 m) are free, but the finer resolutions are restricted. The topography has been supplemented with satellite data.

NHD is an American waters database, which includes depth information. [2]

These data models are the same as the freely available elevation models - very crude and with gaps.

Using statistical methods, mass data (tracks from the harbor, anchorage, main routes) can be used to get very usable values for contour lines.

Chart datum

A yet-unsolved problem is the "Chart datum". For a world map this must somehow be uniform.



RMC (minimaler Datensatz)
       │         │ │         │ │          │ │    │     │      │    │  │
       │         │ │         │ │          │ │    │     │      │    │  └─>  Checksumme
       │         │ │         │ │          │ │    │     │      │    └─>  E/W
       │         │ │         │ │          │ │    │     │      └─>  Missweisung, Grad
       │         │ │         │ │          │ │    │     └─>  Datum in Tag, Monat, Jahr 
       │         │ │         │ │          │ │    └─>  Kurs über Grund, Grad rechtweisend
       │         │ │         │ │          │ └─>   Geschwindigkeit über Grund, Knoten 
       │         │ │         │ │          └─>  E/W
       │         │ │         │ └─>  Länge in Grad mit führenden Nullen und Minuten mit Nachkommastellen
       │         │ │         └─>  N/S
       │         │ └─>  Breite in Grad mit führenden Nullen und Minuten mit Nachkommastellen
       │         └─>  Status, V = Empfänger-Warnung
       └─>  UTC in Stunden, Minuten, Sekunden

Standard für Wassertiefe ist DPT:

DPT (Wasssertiefe)
$--DPT,##.##,##.##*hh<CR><LF>                   Deepth
       │     │     │ 
       │     │     └─>  Checksumme
       │     └─>  Offset des Sensors
       │           pos. = Distanz vom Sensor zur Wasserlinie
       │           neg. = Distanz vom Sensor zum Kiel
       └─>  Tiefe unter Sensor in Meter
DBK (Tiefe unter Kiel)
$xxDBK,###,f,##.##,M,###.#,F*hh<CR><LF>         Depth Below Keel 
       │     │       │       │
       │     │       │       └─>  Checksumme
       │     │       └─>  in Faden
       │     └─>  in Meter
       └─>  Tiefe unter Kiel in Fuss
DBS (Tiefe unter Wassrspiegel)
$xxDBS,###,f,##.##,M,###.#,F*hh<CR><LF>         Depth Below Surface 
       │     │       │       │
       │     │       │       └─>  Checksumme
       │     │       └─>  in Faden
       │     └─>  in Meter
       └─>  Tiefe unter Wasserspiegel in Fuss
DBT (Tiefe unter Sensor)
$xxDBT,###,f,##.##,M,###.#,F*hh<CR><LF>         Depth Below Transducer 
       │     │       │       │
       │     │       │       └─>  Checksumme
       │     │       └─>  in Faden
       │     └─> in Meter
       └─>  Tiefe unter Sensor in Fuss


       │  │       │  │
       │  │       │  └─>  NMEA-Checksum (optional) 
       │  │       └─>  Parameter n
       │  └─>  Parameter 1
       └─>  SeaTalk Command

SeaTalk Command
Command Inhalt Bemerkung
00 Depth Wassertiefe unter Sensor
50 Longitude
51 Latitude
54 UTC Time
56 Date