open-gnss

Open GNSS - Existing Formats

This document contains some details about existing file formats and their contents.

It is copy / pasted from the gps-wizard documentation and as such it defines the formats in the standardised types of the Python project.

No changes have been made to the text so bear that in mind when reading through the list of fields.

FIT

FIT Name Description Name Type Units Resolution
timestamp Date + Time ts float64 s -
position_lat 1 Latitude lat float64 deg 1 x 10-7
position_long 1 Longitude lon float64 deg 1 x 10-7
distance Cumulative Distance dist float64 m 1 x 10-3
altitude 2 3 Altitude - - - -
enhanced_altitude 3 Altitude ele float64 m 2 x 10-1
speed 2 4 Speed - - - -
enhanced_speed 4 Speed sog float32 m/s 1 x 10-3
vertical_speed 5   roc float32 m/s 1 x 10-3
cog 6 7 Course Over Ground cog float32 deg 1 x 10-3
Sat 6 Satellites sat uint8 - -
hdop 6 8 HDOP hdop float32 - 1 x 10-1
heart_rate Heart Rate hr uint16 bpm -

Notes:

  1. Latitude + longitude are converted to degrees and rounded to 7 decimal places; see section below.
  2. Altitude and speed are unused because enhanced altitude and speed are better; see section below.
  3. Altitude and enhanced altitude are recorded to the nearest 0.2m.
  4. Speed and enhanced speed are recorded in mm/s, providing up to 3 decimal places for m/s.
  5. Vertical speed is only present in Suunto FIT files.
  6. COG, satellites and HDOP are only available in COROS FIT files.
  7. COG is currently an integer in COROS FIT files. Decimal places have been requested.
  8. HDOP provides exactly 1 decimal place in COROS FIT files.

GPX

GPX Name Description Name Type Units Resolution
lat 1 Latitude lat float64 deg 1 x 10-7
lon 1 Longitude lon float64 deg 1 x 10-7
ele 2 Elevation ele float64 m 1 x 10-3
time Date + Time ts float64 s 1 x 10-3
course / cog 3 4 5 Course Over Ground cog float32 deg 1 x 10-3
speed 3 6 Speed Over Ground sog float32 m/s 1 x 10-3
sat Satellites sat uint8 - -
hdop 7 HDOP hdop float32 - 1 x 10-2
hr / heart_rate 8 Heart Rate hr uint16 bpm -

Notes:

  1. Latitude and longitude are rounded to 7 decimal places by the GPX reader; see comments below.
  2. Elevation does not have a fixed precision but will rarely be more than 3 decimal places.
  3. Course over ground and speed over ground are only supported natively by GPX 1.0; see comments below.
  4. Course over ground is automatically rounded to 3 decimal places by the GPX reader.
  5. Course over ground is incorrectly named in COROS files and GPX exports from GPSResults; “cog” instead of “course”.
  6. Speed over ground does not have a fixed precision but will rarely be more than 3 decimal places.
  7. HDOP does not have a fixed precision but will rarely be more than 2 decimal places.
  8. Heart rate is supported by the Garmin TrackPointExtension schema and ClueTrust GPXData schema.

NMEA

The RMC message contains the core data; latitude, longitude, speed and course.

NMEA Name Raw Name Type Name Type Units Resolution
UTC hhmmss f8 ts float64 s 1 x 10-3
Status status U1 - - - -
Latitude 1 lat f8 lat float64 deg 1 x 10-7
N or S ns U1 - - - -
Longitude 1 lon f8 lon float64 deg 1 x 10-7
E or W ew U1 - - - -
Speed over Ground 2 sog f4 sog float32 m/s 1 x 10-3
Track Made Good (True) 3 cog f4 cog float32 deg 1 x 10-3
Date 4 ddmmyy u4 ts float64 s 1 x 10-3
Magnetic Variation magVar f4 - - - -
E or W magVarEw U1 - - - -
FAA Mode Indicator 5 faaMode U1 - - - -
Nav Status 6 navStatus U1 - - - -

Notes:

  1. Latitude and longitude is provided in degrees and minutes in the NMEA format. The internal conversion to degrees is rounded to 7 decimal places.
  2. Speed over ground is provided in knots in the NMEA format. The internal conversion to m/s is rounded to 3 decimal places.
  3. Course over ground / track made good is automatically rounded to 3 decimal places.
  4. Two digit years are since 1 Jan 1980.
  5. FAA mode indicator is NMEA 2.3 and later.
  6. Nav status is NMEA 4.1 and later.

GGA - Global Positioning System Fix Data

The first few fields are unused because they are also present in the corresponding RMC message.

NMEA Name Raw Name Type Name Type Units Resolution
UTC - - - - - -
Latitude - - - - - -
N or S - - - - - -
Longitude - - - - - -
E or W - - - - - -
GPS Quality Indicator quality u1 - - - -
Number of Satellites numSv u1 sat uint8 - -
Horizontal Dilution of Precision 1 hdop f4 hdop float32 - 1 x 10-2
Altitude from MSL 2 alt f8 ele float64 m 1 x 10-3
Units of Altitude altUnit U1 - - - -
Geoidal Separation geoSep f4 - - - -
Units of Geoidal Separation geoSepUnit U1 - - - -
Age of differential GPS data dgpsAge u2 - - - -
Differential reference station ID dgpsId u2 - - - -

Notes:

  1. HDOP does not have a fixed precision but will rarely be more than 2 decimal places.
  2. Altitude does not have a fixed precision but will rarely be more than 3 decimal places.

Latitude and Longitude in NMEA

GPS / GNSS chips outputting NMEA data typically provide a maximum precision of ddmm.mmmmm for latitude and dddmm.mmmmm for longitude. Since the mm before the decimal point is whole minutes (00 - 60), overall resolution is only 60% of the SiRF and ublox binary formats which provide 7 decimal digits.

SBP

SiRF Name Raw Name Type Name Type Units Resolution
HDOP hdop u1 hdop float32 - 2 x 10-1
Number of SVs in Fix sv_count u1 sat uint8 - -
UTC Milliseconds utc_millisecs <u2 ts float64 s 1 x 10-3
UTC Packed Datetime utc_packed_datetime <u4 ts float64 s 1 x 10-3
Satellite ID List sv_ids <u4 svids uint32 - -
Latitude latitude <i4 lat float64 deg 1 x 10-7
Longitude longitude <i4 lon float64 deg 1 x 10-7
Altitude from MSL altitude_msl <i4 ele float64 m 1 x 10-2
Speed Over Ground (SOG) sog <u2 sog float32 m/s 1 x 10-2
Course Over Ground (COG, True) cog <u2 cog float32 deg 1 x 10-2
Climb Rate climb_rate <i2 roc float32 m/s 1 x 10-2
Speed Dilution of Precision sdop u1 sdop float32 m/s 1 x 10-2
Vertical Speed Dilution of Precision vsdop u1 vsdop float32 m/s 1 x 10-2

SBN

The SiRF binary format consists of 91 to 97 byte messages which mainly originate from the Geodetic Navigation Data.

The first 91 bytes are standard SiRF and remaining bytes are specific to Locosys; unfiltered SOG + COG, SDOP and VSDOP.

SiRFDrive fields are always set to zero on the GT-11 and GT-31, so they can safely be ignored.

SiRF Name Raw Name Type Name Type Units Resolution
Message ID 1 message_id u1 - - - -
Nav Valid 2 nav_valid >u2 - - - -
Nav Type 3 nav_type >u2 - - - -
Extended Week Number extended_week_no >u2 - - - -
TOW time_of_week >u4 - - - -
UTC Year utc_year >u2 ts float64 s 1 x 10-3
UTC Month utc_month u1 ts float64 s 1 x 10-3
UTC Day utc_day u1 ts float64 s 1 x 10-3
UTC Hour utc_hour u1 ts float64 s 1 x 10-3
UTC Minute utc_minute u1 ts float64 s 1 x 10-3
UTC Second utc_millisecs >u2 ts float64 s 1 x 10-3
Satellite ID List sv_ids >u4 svids uint32 - -
Latitude latitude >i4 lat float64 deg 1 x 10-7
Longitude longitude >i4 lon float64 deg 1 x 10-7
Altitude from Ellipsoid altitude_ellipsoid >i4 - - - -
Altitude from MSL altitude_msl >i4 ele float64 m 1 x 10-2
Map Datum 4 map_datum u1 - - - -
Speed Over Ground (SOG) sog >u2 sog float32 m/s 1 x 10-2
Course Over Ground (COG, True) cog >u2 cog float32 m/s 1 x 10-2
Magnetic Variation 5 magnetic_variation >i2 - - - -
Climb Rate climb_rate >i2 roc float32 m/s 1 x 10-2
Heading Rate - SiRFDrive heading_rate >i2 - - - -
Estimated Horizontal Position Error ehpe >u4 ehpe float32 m 1 x 10-2
Estimated Vertical Position Error evpe >u4 evpe float32 m 1 x 10-2
Estimated Time Error - SiRFDrive ete >u4 - - - -
Estimated Horizontal Velocity Error - SiRFDrive ehve >u2 - - - -
Clock Bias 6 clock_bias >i4 - - - -
Clock Bias Error - SiRFDrive clock_bias_error >u4 - - - -
Clock Drift 6 clock_drift >i4 - - - -
Clock Drift Error - SiRFDrive clock_drift_error >u4 - - - -
Distance - SiRFDrive distance >u4 - - - -
Distance Error - SiRFDrive distance_error >u2 - - - -
Heading Error - SiRFDrive heading_error >u2 - - - -
Number of SVs in Fix sv_count u1 sat uint8 - -
HDOP hdop u1 hdop float32 - 2 x 10-1
Additional Mode Info 7 additional_mode_info u1 - - - -
Unfiltered Speed Over Ground 8 unfiltered_sog >u2 sogu float32 m/s 1 x 10-2
Unfiltered Course Over Ground 8 unfiltered_cog >u2 cogu float32 m/s 1 x 10-2
Speed Dilution of Precision 9 sdop u1 sdop float32 m/s 1 x 10-2
Vertical Speed Dilution of Precision 9 vsdop u1 vsdop float32 m/s 1 x 10-2

Notes:

  1. Message ID is always 41 (geodetic navigation data), so it is ignored.

  2. Navigation valid is always zero or one on the GT-11 and GT-31 and is currently ignored.

  3. Navigation type is described in the SiRF binary protocol.

  4. Map datum is typically 21 (WGS-84), so it is ignored.

  5. Magnetic variation is always zero on the GT-11 and GT-31, so it is ignored.

  6. Clock bias and clock drift are currently ignored.

  7. Additional mode information is always zero on the GT-31 and always zero or one on the GT-11, so it is ignored.

  8. Unfiltered SOG + COG were added by SiRF and Locosys for the GT-11.

  9. SDOP and VSDOP were added by SiRF and Locosys for the GT-31, GW-62 and GW-60.

UBX

UBX Name Raw Name Type Name Type Units Resolution
GPS time of week iTOW <u4 - - - -
Year (UTC) year <u2 ts float64 s 1 x 10-3
Month (UTC) month u1 ts float64 s 1 x 10-3
Day (UTC) day u1 ts float64 s 1 x 10-3
Hour (UTC) hour u1 ts float64 s 1 x 10-3
Minute (UTC) min u1 ts float64 s 1 x 10-3
Second (UTC) sec u1 ts float64 s 1 x 10-3
Validity flags valid u1 - - - -
Time accuracy estimate tAcc <u4 - - - -
Fraction of second (ns) nano <i4 ts float64 s 1 x 10-3
GNSS fix type (includes DR) fixType u1 fix uint8 - -
Fix status flags flags u1 - - - -
Additional flags flags2 u1 - - - -
Number of satellites used numSV u1 sat uint8 - -
Longitude lon <i4 lat float64 deg 1 x 10-7
Latitude lat <i4 lon float64 deg 1 x 10-7
Height above ellipsoid height <i4 - - - -
Height above mean sea level hMSL <i4 ele float64 m 1 x 10-3
Horizontal accuracy estimate hAcc <u4 hacc float32 m 1 x 10-3
Vertical accuracy estimate vAcc <u4 vacc float32 m 1 x 10-3
NED north velocity 1 velN <i4 - - - -
NED east velocity 1 velE <i4 - - - -
NED down velocity 2 velD <i4 roc float32 deg 1 x 10-3
Ground Speed (2-D) gSpeed <i4 sog float32 m/s 1 x 10-3
Heading of motion (2-D) headMot <i4 cog float32 deg 1 x 10-3
Speed accuracy estimate sAcc <u4 sacc float32 m/s 1 x 10-3
Heading accuracy estimate headAcc <u4 cacc float32 deg 1 x 10-3
Position DOP pDOP <u2 pdop float32 - 1 x 10-2
Additional flags flags3 <u2 - - - -
Reserved reserved <u4 - - - -
Heading of vehicle headVeh <i4 - - - -
Magnetic declination magDec <i2 - - - -
Magnetic declination accuracy magAcc <u2 - - - -

Notes:

  1. NED north + east velocity are recorded by the FlySight GPS.
  2. NED down velocity is the opposite of rate of climb (ROC).