CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/pypi-pynmea2

Python library for parsing and generating NMEA 0183 protocol messages used in GPS and marine navigation systems

77

1.11x
Overview
Eval results
Files

depth-sonar.mddocs/

Depth and Sonar Sentences

Depth and sonar sentences provide water depth measurements from various types of depth finding equipment including echo sounders and sonar systems.

Depth Measurement Sentences

DBT - Depth Below Transducer

class DBT(TalkerSentence):
    """Depth Below Transducer."""
    
    depth_feet: str          # Depth in feet
    unit_feet: str           # 'f' for feet
    depth_meters: str        # Depth in meters
    unit_meters: str         # 'M' for meters
    depth_fathoms: str       # Depth in fathoms
    unit_fathoms: str        # 'F' for fathoms

DBS - Depth Below Surface

class DBS(TalkerSentence):
    """Depth Below Surface."""
    
    depth_feet: str          # Depth in feet
    feets: str               # 'f' for feet
    depth_meter: str         # Depth in meters
    meters: str              # 'M' for meters
    depth_fathoms: str       # Depth in fathoms
    fathoms: str             # 'F' for fathoms

DPT - Depth of Water

class DPT(TalkerSentence):
    """Depth of Water."""
    
    depth: str               # Water depth in meters
    offset: str              # Offset from transducer
    range: str               # Maximum range scale

Usage Examples

import pynmea2

# Parse depth below transducer
msg = pynmea2.parse("$SDDBT,12.3,f,3.7,M,2.0,F*35")
print(f"Depth: {msg.depth_feet} feet = {msg.depth_meters} meters = {msg.depth_fathoms} fathoms")
# Depth: 12.3 feet = 3.7 meters = 2.0 fathoms

# Parse depth below surface
msg = pynmea2.parse("$SDDBS,15.8,f,4.8,M,2.6,F*09")
print(f"Surface depth: {msg.depth_meter} {msg.meters}")  # 4.8 M

# Parse water depth with offset
msg = pynmea2.parse("$SDDPT,4.2,0.5,*4F")
print(f"Water depth: {msg.depth}m, Offset: {msg.offset}m")  # 4.2m, 0.5m
if msg.range:
    print(f"Range scale: {msg.range}")

# Create depth sentence
dbt_data = ['12.3', 'f', '3.7', 'M', '2.0', 'F']
depth_msg = pynmea2.DBT('SD', 'DBT', dbt_data)
print(str(depth_msg))  # $SDDBT,12.3,f,3.7,M,2.0,F*35

Unit Conversions

Common depth unit conversions:

  • 1 fathom = 6 feet = 1.8288 meters
  • 1 meter = 3.28084 feet
  • 1 foot = 0.3048 meters
import pynmea2

msg = pynmea2.parse("$SDDBT,12.3,f,3.7,M,2.0,F*35")

# Convert between units manually
feet_to_meters = float(msg.depth_feet) * 0.3048
meters_to_feet = float(msg.depth_meters) * 3.28084
fathoms_to_meters = float(msg.depth_fathoms) * 1.8288

print(f"Conversions:")
print(f"  {msg.depth_feet} ft = {feet_to_meters:.2f} m")      # 12.3 ft = 3.75 m
print(f"  {msg.depth_meters} m = {meters_to_feet:.2f} ft")    # 3.7 m = 12.14 ft  
print(f"  {msg.depth_fathoms} F = {fathoms_to_meters:.2f} m") # 2.0 F = 3.66 m

Install with Tessl CLI

npx tessl i tessl/pypi-pynmea2

docs

core-parsing.md

depth-sonar.md

gps-positioning.md

index.md

navigation-course.md

proprietary-sentences.md

stream-processing.md

utilities.md

wind-weather.md

tile.json