Decoding NMEA Sentences
NMEA sentences (pronounced nee-ma), are a standard format of data output for all GPS receivers. In other words, it’s the language GPS receivers use to communicate the data they produce and receive, such as time, latitude, longitude, altitude, GPS health, speed, etc.
NMEA stands for National Marine Electronics Association, the agency responsible for standardizing the language. The sentences were created as a means for marine electronics to all speak the same language, thus enabling digital communication between different devices.
The sentence structure consists of a string of comma separated values, beginning with a ‘$’ and ending with a checksum. They look like this:
Each sentence is referred to as a message and tells useful information about the receiver and its positioning. The output above was obtained from a u-blox C94-M8P. Let’s take a closer look at the GNGGA sentence to understand what each field means. Note the contents of each field will be the same for all GGA sentences but minor variations may occur from one GNSS receiver to the next.
Message Identifier: Identifies the source and type of information. The first two letters denote the Talker ID, identifying the source of the information. This sentence is a GN message, or Global Navigation Satellite System (GNSS), meaning a combination of navigation systems was used to obtain the message data. Common talker ID’s are listed below.
The next three letters define the message content. GGA denotes GPS fix data. Some common messages are listed below.
|GGA||GPS position, time, and fix data|
|GLL||Latitude and longitude data|
|GNS||GNSS position, time, and fix data|
|GRS||GNSS range residuals (error-related data)|
|GSA||Satellite information and dilution of precision (DOP: see HDOP below)|
Time: Universal Time Coordinated (UTC) in hhmmss.ss.
Latitude: Latitude in decimal degrees (ddmm.mmmm).
North/South Indicator: North or south of the Equator.
Longitude: Longitude in decimal degrees (ddmm.mmmm).
East/West Indicator: East or west of the Prime Meridian.
Quality Indicator: The quality of the GNSS data — what kind of fix the receiver has obtained.
0 — No fix
1 — Standard GPS (2D/3D) fix
2 — Differential GPS (DGPS) fix
3 — Precise Positioning System (PPS) fix — for government use only
4 — RTK fixed solution
5 — RTK float solution
6 — Estimated (Dead Reckoning, or DR) fix
Satellites Used: Number of satellites used in solution.
HDOP: Horizontal Dilution of Precision — a measure of confidence in the solution. Lower numbers indicate a higher confidence level. Thus, the 99.99 shown here denotes highly inaccurate measurements. Refer to Wikipedia’s Dilution of Precision article for more information.
Altitude: Altitude above mean sea level.
Units: Units used for altitude or geoidal separation (M = meters).
Geoidal Separation: Difference between the reference ellipsoid and mean sea level based on the geodetic model WGS84.
DGPS Station ID: ID of the differential reference station used for DGPS. Blank when DGPS is not used.
Checksum: Used for data validation.
The GNGGA sentence provides all the data one needs for most GNSS analysis and is what we’ll use when we write our script converting latitude, longitude, altitude (LLA) to a north, east, down (NED) coordinate system. However, other sentences may be useful, depending on your navigation needs. Below are some great resources I used in compiling this information.
u-blox 8 / M8 Receiver Description (pdf) — Includes a full breakdown of all NMEA sentences used in u-blox 8 / M8 receivers.
Trimble’s NMEA-0183 Overview
ESRI’s article on Mean Sea Level, GPS, and the Geoid
Eric Raymond’s extensive page on NEMA sentences