GNSS数据通信相关数据格式(RINEX RTCM NMEA)
表示这一行的内容从第1列开始依次是:宽度为9位、小数点后有2位的单精度浮点数,11个空格,宽度为1的字符串,和19个空格。它将多个卫星、多个频点的原始观测数据(伪距、载波相位)及其变化率,以一种极其高效的方式打包。则表示这一行内容从第1列开始,将“3个空格、宽度为1的字符串和宽度为2的整型”这些内容重复7次。的定位、导航、时间信息,供上位机软件(如GIS采集软件、导航仪、船舶自动驾驶仪)直接显示和
一、 核心关系与角色定位
想象一个完整的GNSS数据从采集到应用的过程,这三种格式扮演着不同阶段的“语言”:
| 格式 | 主要角色 | 通信方向 | 时效性 | 数据内容 | 格式类型 |
|---|---|---|---|---|---|
| NMEA | 导航结果“汇报者” | 接收机 → 终端设备 | 实时 | 最终定位结果(位置、速度、时间等) | ASCII文本 |
| RTCM | 高精度“增强信使” | 基准站 → 流动站 | 实时 | 差分改正数据/原始观测值 | 二进制流 |
| RINEX | 事后分析“档案官” | 设备 → 存储/处理中心 | 事后 | 原始的观测值和导航电文 | ASCII文本 |
简单比喻:
-
NMEA 是接收机给你的最终成绩单(“我现在在东经116.4°,北纬39.9°”)。
-
RTCM 是学霸(基准站)传给学友(流动站)的解题步骤和修正提示,让你们都能考高分(实现厘米级精度)。
-
RINEX 是考试结束后,把所有的草稿纸、原题和你的答题过程都规整存档,供老师(科研/处理软件)详细批阅分析。
二、 各格式详解
1. NMEA:导航结果输出标准
-
目的:提供标准化的定位、导航、时间信息,供上位机软件(如GIS采集软件、导航仪、船舶自动驾驶仪)直接显示和使用。
-
特点:
-
可读性强:纯文本,以逗号分隔。
-
句子结构:每条语句以
$开头,紧跟一个5字符的语句标识符(如GPGGA),后接数据字段,以*和校验和结束。 -
通用性极高:是所有消费级和大多数专业级GNSS设备的标配输出。
-
-
常用语句示例:
-
GGA:(Global Positioning System Fix Data),里面包含全球定位信息、时间、位置和定位数据。
NMEA183标准中,GGA语句可以反馈当前当前定位方式( 单点,浮点,固定),具体描述如下:
$GPGGA,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<ll>,<12>,<l3>,<14>*<15><CR><LF>
字段 $GPGGA 语句意义-取值范围
<1>UTC 时间 :hhmmss.ss
2>纬度,格式:ddmm.mmmm 00
3>南北半球——N 南纬 S北纬
<4> 经度格式 : dddmm.mmmm -
<5>东西半球E表示东经:W 表示西经
<6>质量因子0=未定位,1= 单点解,2=差分定位,3=PPS 解,4RTK 固定解;5=RTK 浮点解;6=DR定位;7=手工输入模式,
8=GNSS+DR定位: 9=GNSS+固定解RTK+DR定位,10=GNSS+浮点解RTK+QDR定位
7>应用解算位置的卫星数
<8> HDOP,水平图形强度因了
9> 天线高程( 海平面)一
10>天线高程单位(m)–m
大地水准面起伏地球球面相对大地水准面的高度
<12>大地水准面起伏单位(m)-m
<13>差分GPS 数据期 差分时间(从最近一次接收到差分信号开始的秒数,如果不是差分定位将为空),不使用 DGPS 时为空
<14>基准站号0000~1023:不使用 DGPS 时为空
<15>校验码$GPGGA,064929.00,3115.034619,N,12136.726590,E,1,08,1.0,52.1,M,10.0,M,,*55GSA:(GPS DOP and Active Satellites)参与定位的 GNSS 卫星 ID 号、精度因子等,当前卫星信息,输出精度因子和有效卫星。
用来定位卫星,GSA语句提供当前用于定位的卫星信息。
GNSS 的当前卫星和精度因子,包括可见卫星PRN号,以及PDOP、HDOP、VDOP。
格式:$GNGSA,<1>,<2>,<3>,<3>,,,,,<3>,<3>,<3>,<4>,<5>,<6>,<7>*<8><CR><LF><1>.模式M=手动,A = 自动
<2>.定位类型_1= 未定位,2 = 二维定位,3 = 三维定位
<3>.PRN 数字-01 至 32 表天空使用中的卫星编号,最多可接收12颗卫星信息。正在用于解算位置的卫星号(0132,前面的0也将
被传输)。
<4>.PDOP位置精度因子0~500
<5>.HDOP水平精度因子0~500
<6>.VDOP垂直精度因了0~500
<7>.星座ID_ 1,GPS 2,GLONASS 3,GALILEO 4BDS 5,QZSS 6,IRNSS
<8>.Checksum.(检查位).例子:$GPGSA,A,3,04,16,26,27,28,29,31,32,,,,,2.2,1.4,1.7,1*2CGSV:GPs Satellites in View-GSV,可见卫星信息。GSV语句用于反馈当前所能搜索到的卫星信息GPs 可见星的方位角、俯仰角、信噪比
等每条语句最多包括四颗卫星的信息,每颗卫星的信息有四个数据项,即:(4)-卫星号,(5)-他角,(6) - 方位角,(7) - 信噪比。
数据格式:$GPGSV,<1>,<2>,<3>,<4>,<5>,<6>,<7>,…,<4>,<5>,<6>,<7>*hh(CR)(LF)
帧头 $GPGSV,语句ID,表明该语句为GPS Satellites in View(GSV)可见卫星信息
<1>:本次GSV语句的总数目(1 - 3)
<2>:本条GSV语句编号
<3>:当前可见卫星总数(00 - 12)(前导位数不足则补0)
<4>:PRN 码(伪随机噪声码)(01 - 32)(前导位数不足则补0)
<5>:卫星仰角(00 - 90)度(前导位数不足则补0)
<6>:卫星方位角(00 - 359)度(前导位数不足则补0)
<7>:信噪比(00-99)dbHz
hh:校验值例子:
$GPGSV,3,1,12,03,00,000,43,04,27,317,45,16,58,260,51,26,71,330,54,1*6D
$GPGSV,3,2,12,27,25,187,41,28,49,071,49,29,22,047,45,31,62,032,52,1*6A
$GPGSV,3,3,12,32,23,153,41,40,00,000,37,41,00,000,44,50,00,000,44,1*65RMC:Recomended Minimum Specific GPS/TRANSIT Data-RMC ,推荐的最小具体 GNSS 数据,相当于GGA的缩小版。
RMC 语可提供当前最基本的定位信息,包括时间、经结度、速度等.对于一般的
GPS动态定位应用,RMC 语句完全满足要求。下表详细说明RMC 语句中的各个字段:格式:$GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>*hh<CR><LF>
<1> UTC时间:hhmmss.ss——000000.00~235959.99
<2> 状态,有效性 ——A表示有效;V表示无效
<3> 纬度格式:ddmm.mmmm——0000.00000~8959.9999
<4> 南北半球——N北纬;S南纬
<5> 经度格式:dddmm.mmmm——00000.0000~17959.9999
<6> 东西半球——E表示东经;W表示西经
<7> 地面速度——000.00~999.999
<8> 速度方向——000.00~359.99
<9> 日期格式,日月年——010100~123199
<10> 磁偏角,单位:度——00.00~99.99
<ll> 磁偏角方向——E表示东;W表示西
<12> 模式指示及校验和—— A=自主定位,D=差分,E=估算,N=数据无效
例子:
$GPRMC,064925.95,A,3115.034504,N,12136.726581,E,0.0,,041223,6.6,W,A,V*7DVTG:Track Made Good and Ground Speed-VTG,矢量跟踪与对地速度
格式:$GNVTG,<1>,T,<2>,M,<3>,N,<4>,K,<5>*<6><CR><LF><1> 以真北为参考基准的地面航向——000.000~359.999
<2> 以磁北为参考基准的地面航向——000.000~359.999
<3> 地面速率——000.000~999.999节
<4> 地面速率——0000.0~1851.8公里/小时
<5> 模式指示——A=自主定位,D=差分,E=估算,N=数据无效(仅NMEA0183 3.00版本输出)
<6> hh 校检位例子:
$GNVTG,,T,,M,0.0,N,0.0,K,A*3DDTM:Datum (DTM)大地坐标系信息
格式:$GNDTM,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>*<9><CR><LF>
<1>本地坐标系代码 W84,P90
<2>坐标系子代码空
<3>纬度偏移量
<4>纬度半球N(北半球)或S( 南半球 )
<6>经度半球E( 东经)或W( 西经)
<7>高度偏移量
<8>坐标系代码 W84
<9>校验码例子:
$GNDTM,P90,,0000.000023,S,00000.000001,W,0.987,W84*4AGNS:GNSS定位数据
格式:$GNGNS,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>.<9>,<10>,<11>,<12>,<13>,*<14><CR><LF>
<1>UTC时间:定位时间 hhmmss.ss
<2>纬度: ddmm.mmmmm-
3> 南纬北纬: 北纬N,S南纬
4>经度:dddmm.mmmmm
5>东经西经: 东经E,西经W
<6>定位模式:N-未定位,A-已定位,D-普通差分定位,P-高精度定位,R-RTK定位固定解,F-RTK定位浮点解,E-估算值,M-注入位
置;S-模拟输入
<7>定位P星:参与定位卫星
<8>HDOP :水平精度因子,0-500
<9>海拔: 单位:米
<10>大地水准面: 地球球面相对人地水准面的高度
<11>差异数据时间: GN开头时为空
<12>基准站ID: GN开头时为空
<13>导航状态 C=告警,S=安全,U=不安全,V=无效例子:
$GNGNS,064841.95,3115.038242,N,12136.726526,E,AANNN,12,0.6,62.1,10.0,,,V*52GLL:(Geographic position)地理定位信息,经纬度,UTC时间和定位状态。输出大地坐标信息。
格式:$GPGLL,<1>,<2>,<3>,<4>,<5>,<6>,<7>*61
<1> 纬度:ddmm.mmmmm——0000.00000~8959.9999
<2> 南纬或北纬——北纬N,S南纬
<3> 经度:dddmm.mmmmm——0000.00000~17959.99999
<4> 东、西经 ——东经E,西经W
<5> UTC时间——hh:mm:ss
<6> 数据状态——A有效,V无效
例子:
$GPGLL,2431.25310,N,11806.15429,E,081401.00,A,A*61
-
-
版本:
NMEA 0183是目前的主流版本。更新的NMEA 2000基于CAN总线,速率更高,用于车辆、船舶内部网络。
2. RTCM:实时差分数据传输标准
-
目的:为实现实时动态差分定位(RTK, DGNSS)提供数据链路协议。它是基准站向流动站播发改正信息的“语言”。
-
特点:
-
高效紧凑:二进制格式,节省带宽。
-
抗误码:包含帧头、消息ID、数据长度、校验和等,保证数据传输的可靠性。
-
模块化:定义了数百种不同类型的“消息”,每种承载特定信息。
-
-
核心消息系列(RTCM 3.x, 当前主流):
-
MSM消息:革命性的核心。它将多个卫星、多个频点的原始观测数据(伪距、载波相位)及其变化率,以一种极其高效的方式打包。这是实现多系统、多频率、高并发RTK的关键。
-
MSM4:提供“整周模糊度”数据,用于经典RTK。 -
MSM5/7:提供“浮点模糊度”和信噪比等更丰富信息,用于PPP-RTK等新技术。
-
-
辅助消息:
-
1005/1006:基准站坐标信息。 -
1074/1077:对应GPS的MSM消息。 -
1084/1087:对应GLONASS的MSM消息。 -
1094/1097:对应Galileo的MSM消息。 -
1124/1127:对应BDS的MSM消息。
-
-
-
传输方式:可通过串口、电台直接传输,或通过 NTRIP 协议在互联网上传输(即网络RTK/CORS)。
-
RCTM v3.3版本支持的数据类型:
-

-

-

3. RINEX:观测数据存储与交换标准
-
目的:统一和标准化来自不同厂商、不同型号接收机的原始观测数据和导航电文,使其能被任何第三方后处理软件读取,用于事后精密定位。
-
特点:
-
独立于接收机:是数据“普通话”,打破了厂商壁垒。
-
可读性:ASCII文本,人类可阅读。
-
结构清晰:包含文件头和数据体,组织严谨。
-
-
核心文件类型:
-
观测文件(.yyO):存储原始的伪距、载波相位、多普勒、信噪比等观测值。是后处理解算的原料。
-
导航文件(.yyN):存储广播星历和卫星钟差参数。
-
气象文件(.yyM):存储测站的温、压、湿数据。
-
-
版本演进:
-
RINEX 2.xx:主要支持GPS和GLONASS,观测类型代码较简单(如
C1,L1)。 -
RINEX 3.xx:当前推荐标准。完美支持所有GNSS系统(GPS, GLONASS, Galileo, BDS等),观测类型代码系统化(如
C1C,L2W),兼容性更好。 -
这里以RINEX3.05版本的导航数据文件来举例:
-
RINEX格式的导航文件分为头部部分和内容部分,头部部分主要是信息介绍及电离层参数等信息。
-

-

-

-

-

-

-

-
下面是我用BNC软件和python脚本根据基准站的RTCM数据量生成的RINEX格式的星历文件头部部分:
-

下面是RNIEX协议的GPS导航数据部分 -

-

-
下面是用BNC软件和python脚本根据基准站的RTCM数据量生成的RINEX格式的星历文件导航数据部分:

RINEX格式说明采用的是Fortran程序设计语言中的格式说明方式,一个格式说明项通常具有如下形式:
[r] fw.[m]
其中:
-
r:重复因子,表示后面的内容将重复的次数,该部分是可选的。
-
f:数据类型符,在RINEX格式的说明中,用到了如下数据类型:
-
X:空格 -
A:字符型 -
I:整型 -
F:单精度浮点型 -
D:双精度浮点型
-
-
w:字段宽度。
-
m:在字段中最少的数字或字符数。当数据类型为单精度浮点型或双精度浮点型时,表示小数位数,该部分是可选的。
例如:
-
格式说明符
F9.2,11X,A1,19X表示这一行的内容从第1列开始依次是:宽度为9位、小数点后有2位的单精度浮点数,11个空格,宽度为1的字符串,和19个空格。 -
格式说明符
3F14.4表示这一行内容从第1列开始依次是:3个宽度为14、小数点后有4位的单精度浮点数。 -
格式说明符
7(3X,A1,I2)则表示这一行内容从第1列开始,将“3个空格、宽度为1的字符串和宽度为2的整型”这些内容重复7次。
三、 工作流程与转换关系
-
转换关系:
-
原始二进制 -> RINEX:这是最常见的转换。使用接收机厂商的软件或开源工具(如
RTKLIB的convbin、TEQC)将接收机专有原始数据(如.ubx,.sbf,.t02)转换为RINEX。 -
RTCM -> RINEX:部分高级软件可以从RTCM数据流中解码并生成RINEX文件,用于记录实时作业的原始数据。
-
RINEX/原始数据 -> NMEA:任何接收机或处理软件都可以根据解算出的位置生成NMEA语句输出。
-
四、 总结与选型建议
| 需求场景 | 应使用/关注的格式 |
|---|---|
| 开发一个导航或位置显示应用 | 直接读取并解析 NMEA 语句(尤其是GPGGA/GNRMC)即可。 |
| 搭建或使用RTK/CORS系统 | 必须理解并使用 RTCM 3.x(尤其是MSM系列消息)。数据链路配置是关键。 |
| 进行测绘工程的事后数据解算 | 收集并处理 RINEX 观测文件和相应的精密星历(SP3)。 |
| 从接收机中导出原始数据用于分析 | 首先将其转换为 RINEX 格式,这是通用“货币”。 |
| 评估接收机原始数据质量 | 使用 TEQC 等工具分析 RINEX 文件。 |
核心要点:NMEA用于“结果”,RTCM用于“实时增强”,RINEX用于“原始档案”。理解这三者的分工与合作,是掌握GNSS数据流的关键。
更多推荐
所有评论(0)