GPS raw 데이터 분석 - NMEA(GPGGA, GRPMC)
NMEA란
NMEA(NMEA 0183)은 시간, 위치, 방위 등의 정보를 전송하기 위한 규격이다.
미국 NMEA(The National Marine Electronics Association)에서 정의해두었다.
NMEA약어에서 알 수 있듯 항해 데이터를 위한 규격으로 선박의 전자 장비들 간 통신을 위해 만든 규격이었다.
현재는 위치 정보(GPS/GNSS)관련 데이터의 표준 프로토콜로 널리 사용된다.
NMEA 핵심 용도 : 시간(Time), 위치(Position), 속도(Velocity), 방위(Bearing)등의 정보를 전송
NMEA 적용 분야 : 해양 장비 외에도 항공, 측량, GIS(지리정보시스템)을 비롯해 휴대폰 GPS앱에서 위치 데이터를 추출하는 등 육상 분야에서도 광범위하게 사용된다.
NMEA 규격
NMEA의 개념보다 중요한 것이 NMEA 규격을 해석하고 활용하는 것이다.
다음은 필자가 실제 GPS앱을 통해 저장한 NMEA 데이터 예시이다.
$GPGGA,080014.00,3736.09244,N,12651.87374,E,1,08,0.00,11.4,M,,,,*3A
$GPRMC,080014.00,A,3736.09244,N,12651.87374,E,0.000,193.8,271125,,,A*56
$GPGGA,080020.00,3736.09244,N,12651.87374,E,1,08,0.00,11.4,M,,,,*3D
$GPRMC,080020.00,A,3736.09244,N,12651.87374,E,0.000,127.4,271125,,,A*52
$GPGGA,080032.00,3736.09244,N,12651.87374,E,1,08,0.00,11.4,M,,,,*3E
$GPRMC,080032.00,A,3736.09244,N,12651.87374,E,0.000,127.4,271125,,,A*51
$GPGGA,080035.00,3736.09244,N,12651.87374,E,1,08,0.00,11.4,M,,,,*39
$GPRMC,080035.00,A,3736.09244,N,12651.87374,E,0.000,127.4,271125,,,A*56
$GPGGA,080044.00,3736.09244,N,12651.87374,E,1,08,0.00,11.4,M,,,,*3F
$GPRMC,080044.00,A,3736.09244,N,12651.87374,E,0.000,127.4,271125,,,A*50
$GPGGA,080050.00,3736.09244,N,12651.87374,E,1,08,0.00,11.4,M,,,,*3A
$GPRMC,080050.00,A,3736.09244,N,12651.87374,E,0.000,127.4,271125,,,A*55
$GPGGA,080102.00,3736.09244,N,12651.87374,E,1,08,0.00,11.4,M,,,,*3C
$GPRMC,080102.00,A,3736.09244,N,12651.87374,E,0.000,127.4,271125,,,A*53
$GPGGA,080105.00,3736.09244,N,12651.87374,E,1,08,0.00,11.4,M,,,,*3B
$GPRMC,080105.00,A,3736.09244,N,12651.87374,E,0.000,127.4,271125,,,A*54
$GPGGA,080114.00,3736.09244,N,12651.87374,E,1,08,0.00,11.4,M,,,,*3B
$GPRMC,080114.00,A,3736.09244,N,12651.87374,E,0.000,127.4,271125,,,A*54
$GPGGA,080120.00,3736.09244,N,12651.87374,E,1,08,0.00,11.4,M,,,,*3C
$GPRMC,080120.00,A,3736.09244,N,12651.87374,E,0.000,127.4,271125,,,A*53
$GPGGA,080132.00,3736.09244,N,12651.87374,E,1,08,0.00,11.4,M,,,,*3F
$GPRMC,080132.00,A,3736.09244,N,12651.87374,E,0.000,127.4,271125,,,A*50
$GPGGA,080135.00,3736.09244,N,12651.87374,E,1,08,0.00,11.4,M,,,,*38
2개의 문장이 함께 오는 것을 확인할 수 있다. - GPGGA, GRPMC
따로 분리해야하기 때문에 각각의 정보에 대한 개념을 잡고 가자
두 문장의 동일한 점은 쉼표(,)로 각 필드(데이터 항목)을 순서대로 해석한다는 것이다.
GPGGA Global Positioning System Fix Data
정확한 3차원 위치, 정확도 지표(HDOP), 가시 위성 수를 제공
$GPGGA,080014.00,3736.09244,N,12651.87374,E,1,08,0.00,11.4,M,,,,*3A
| 순서 | 필드 | 내용해석 |
| 2 | 080014.00 | UTC 기준 시각 : 08시 00분 14.00초 (한국은 +9해주면 됨) |
| 3, 4 | 3736.09244,N | 위도 : 37 ° 36.09244' 북위 |
| 5, 6 | 12651.87374,E | 경도 : 126 ° 51.87374' 동경 |
| 7 | 1 | GPS품질 표시 : 1 = 유효한 GPS Fix (2는 DGPS, 0은 무효), 데이터 신뢰도 확인 |
| 8 | 08 | 가시 위성 수: 8개 |
| 9 | 0.00 | HDOP(수평 정밀도 저하율) : 0.00 |
| 10, 11 | 11.4, M | 해수면 위 고도 : 11.4m (수신기 높이) |
GRPMC Recommended Minimum Navigation Data
시간, 날짜, 위치, 속도, 방위 등 항해에 필요한 최소한의 핵심 정보를 제공
| 순서 | 필드 내용 | 해석 | |
| 2 | 080014.00 | UTC 시각: 08시 00분 14.00초 | 시간 추출 (GPGGA와 동일) |
| 3 | A | 상태: A = Active (데이터 유효), V = Void (무효) | 데이터 유효성 확인 |
| 8 | 0.000 | 노면 속도 (Speed Over Ground): 0.000 노트 | 이동 측량 (속도 변화 분석) |
| 9 | 193.8 | 노면 방위 (Track Angle): 193.8도 | 이동 측량 (방향 분석) |
| 10 | 271125 | UTC 날짜: 2025년 11월 27일 | 날짜 기록 |
셀프 Q&A
스마트폰에서 NMEA 규격을 정의 ?
GPS에서 오는 신호를 가공한 NMEA 표준 출력 포맷이다.
GPS에서는 전파 신호를 지속적으로 송출하고 GNSS칩이 내장된 스마트폰에서 정확한 현재 위치를 초당 여러번 계산한다.
계산된 위치 정보는 스마트폰 OS와 앱들이 사용할 수 있도록 정해진 형식으로 제공된다.
이 때 NMEA 형식의 데이터 스트림도 특정 앱이나 앱 개발자가 접근할 수 있도록 형성된다.