GPS NMEAフォーマット

GNSS受信機を購入したので、流れてくるデータのフォーマットを調べてみた。
自分が受信機から出てくるデータを解析するために色々なWebサイトから拾って来てまとめたものなので間違いなどがありましたら、ご連絡いただけると幸いです。

https://ja.wikipedia.org/wiki/NMEA_0183

# メッセージ

## メッセージ種別

$トーカーID+センテンス

**主要トーカーID**
* BD,GB:北斗衛星導航系統(BeiDou)
* GA:Galileo
* GP:GPS
* GL:GLONASS
* GQ:準天頂衛星システム(QZSS

**センテンス**
* RMC:最小限のナビゲーション情報
* GGA:位置、時刻、Fixに関するデータ
* GSA:DOPと有効な衛星
* GSV:視界にある衛星
* VTG:地表における移動
* ZDA:時刻、日付のデータ
* GLL:地理的位置-緯度軽度

## メッセージの構造

```:メッセージ構造
$[トーカーID][データ],[データ],[データ],[データ],[データ],[データ]*[チェックサム]<CR><LF>
```
[データ]の数は、メッセージに依存します。

## RMC

測位情報が最小限にまとめられたセンテンス

|説明|フォーマット|補足|
|---|---|---|
|データタイプ|GxRMC|GP:GPS/SBAS、GL:GLONASS、GA:Galileo、GB:BeiDou、GQ:QZSS、GN:任意の衛星の組み合わせ|
|時刻|hhmmss.ss|協定世界時(UTC)での時刻。日本標準時は+9時間。|
|ステータス|A/V|A:有効、V:警告|
|緯度|10進数|dddmm.mmmm|
|南北|N/S|N:北緯、S:南緯|
|経度|10進数|dddmm.mmmm|
|東西|E/W|E:東経、W:西経|
|速度|000.0~999.0|地表における移動の速度[knot]|
|真方位|000.0~359.9|地表における移動の真方位[度]|
|日付|ddmmyy|協定世界時(UTC)での日付|
|磁気偏角|000.0~359.9|磁北と真北の間の角度の差[度]|
|磁気偏角の方向|E/W|E:東、W:西|
|モード|N/A/D/E/F/R|N:データなし、A:自律方式(Automnomous)、D:干渉測位方式(Differential GPS)、E:推定(Estimated)、F:RTK float、R:RTK fix|
|ナビゲーションステータス|V|V:利用不可能、NMEA 4.10以降でのみ利用可能|
|チェックサム|||

## GGA

時刻や位置とGPS関連の情報をまとめたセンテンス

|説明|フォーマット|補足|
|---|---|---|
|データタイプ|GxGGA|GP:GPS/SBAS、GL:GLONASS、GA:Galileo、GB:BeiDou、GQ:QZSS、GN:任意の衛星の組み合わせ|
|時刻|hhmmss.ss|協定世界時(UTC)での時刻。日本標準時は+9時間。|
|緯度|10進数|dddmm.mmmm|
|南北|N/S|N:北緯、S:南緯|
|経度|10進数|dddmm.mmmm|
|東西|E/W|E:東経、W:西経|
|品質||0:測位不能、1:標準測位サービス(SPS)モード、2:干渉測位方式(Differenctial GPS)モード、4:RTK fix、5:RTK float|
|使用衛生数||測位に使用した衛星数|
|水平精度低下率(HDOP)||衛星配置による精度劣化の垂直成分|
|アンテナ海抜高度||水平海面からの移動局アンテナの高さ|
|アンテナ海抜高度の単位|M|単位が[m]|
|ジオイド高さ||ジオイド高さ=楕円体高-海抜高度|
|ジオイド高さの単位|M|単位が[m]|
|DGPSデータの最後の有効なRTCM通信からの時間||最後に補正情報を受信してからの経過時間[sec]、空の場合はDGPS不使用|
|差動基準地点ID||補正情報を受け取った基準局ID|
|チェックサム|||

## GSA

現在使用されている衛星情報と精度低下率（DOP）情報がまとめられたセンテンス

|説明|フォーマット|補足|
|---|---|---|
|データタイプ|GxGSA|GP:GPS/SBAS、GL:GLONASS、GA:Galileo、GB:BeiDou、GQ:QZSS、GN:任意の衛星の組み合わせ|
|モード|M/A|M:手動、A:自動|
|特定タイプ|1/2/3|1:存在しない、2:2D fix、3:3D fix|
|衛星番号||使用中の衛星PRN番号、最大12個列挙|
|位置精度低下率(PDOP)||Position Dilution of Precision|
|水平精度低下率(HDOP)||Horizontal Dilution of Precision|
|垂直精度低下率(VDOP)||Vertical Dilution of Precision|
|チェックサム|||

## GSV

衛星情報がまとめられたセンテンス（一つのセンテンスにつき最大4行まで表示）

|説明|フォーマット|補足|
|---|---|---|
|データタイプ|GxGSV|GP:GPS/SBAS、GL:GLONASS、GA:Galileo、GB:BeiDou、GQ:QZSS、GN:任意の衛星の組み合わせ|
|総GSVセンテンス数||表示されるセンテンスの行数|
|センテンス番号||全行数のうち何行目のセンテンスか|
|ビュー内の総衛星数||確認可能な衛星数|
|衛生番号||1個目の衛生番号|
|衛星仰角|0~90|1個目の衛星の仰角[度]|
|衛星方位角|0~359|1個目の衛星の方位角|
|キャリア/ノイズ比|0~99|1個目の衛星の信号強度[dB]、C/No|
|衛生番号||2個目の衛生番号|
|衛星仰角|0~90|2個目の衛星の仰角[度]|
|衛星方位角|0~359|2個目の衛星の方位角|
|キャリア/ノイズ比|0~99|2個目の衛星の信号強度[dB]、C/No|
|衛生番号||3個目の衛生番号|
|衛星仰角|0~90|3個目の衛星の仰角[度]|
|衛星方位角|0~359|3個目の衛星の方位角|
|キャリア/ノイズ比|0~99|3個目の衛星の信号強度[dB]、C/No|
|衛生番号||4個目の衛生番号|
|衛星仰角|0~90|4個目の衛星の仰角[度]|
|衛星方位角|0~359|4個目の衛星の方位角|
|キャリア/ノイズ比|0~99|4個目の衛星の信号強度[dB]、C/No|
|シグナルID||受信した衛星信号を表す、衛星と周波数帯の組み合わせによってIDが決定|
|チェックサム|||

## VTG

地上速度と進行方向（トラック）の情報がまとめられたセンテンス

|説明|フォーマット|補足|
|---|---|---|
|データタイプ|GxVTG|GP:GPS/SBAS、GL:GLONASS、GA:Galileo、GB:BeiDou、GQ:QZSS、GN:任意の衛星の組み合わせ|
|真方位|000.0~359.0|地表における移動の真方位[度]|
|真北|T|[True course]|
|磁方位|000.0~359.9|地表における移動の磁方位[度]|
|磁北|M|[Magnetic course]|
|地上速度|000.0~999.9|地表における移動の速度[knot]|
|地上速度の単位|N|knot|
|地上速度|0000.0~1800.0|地表における移動の速度[km/h]|
|地上速度の単位|K|km/h||
|モード|N/A/D/E|N:データなし、A:自律方式(Autonomous)、D:干渉測位方式(Differential)、E:推定(Estimated)|
|チェックサム|||

## ZDA

時刻と日付情報がまとめられたセンテンス

|説明|フォーマット|補足|
|---|---|---|
|データタイプ|GxZDA|GP:GPS/SBAS、GL:GLONASS、GA:Galileo、GB:BeiDou、GQ:QZSS、GN:任意の衛星の組み合わせ|
|時刻|hhmmss.ss|協定世界時(UTC)での時刻。日本標準時は+9時間。|
|日||何日か|
|月||何月か|
|年||何年か|
|ローカルタイムゾーン(時)|00|常に00|
|ローカルタイムゾーン(分)|00|常に00|
|チェックサム|||

## Googleで使うとき

```:dddmm.mmmmを使う
N:北緯
S:南緯
E:東経
W:西経
ddd°mm'mm.mm"N, ddd°mm'mm.mm"E
```

## 参考

https://www.hiramine.com/physicalcomputing/general/gps_nmeaformat.html

https://ales-corp.co.jp/technical-information-nmea/