一、 核心关系与角色定位

想象一个完整的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,,*55

      GSA:(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*2C 

      GSV: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*65    


      RMC: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*7D

      VTG: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*3D

      DTM: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*4A

      GNS: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*52


      GLL:(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,观测类型代码较简单(如 C1L1)。

    • RINEX 3.xx当前推荐标准。完美支持所有GNSS系统(GPS, GLONASS, Galileo, BDS等),观测类型代码系统化(如 C1CL2W),兼容性更好。

    • 这里以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次。


三、 工作流程与转换关系

  1. 转换关系

    • 原始二进制 -> RINEX:这是最常见的转换。使用接收机厂商的软件或开源工具(如 RTKLIB 的 convbinTEQC)将接收机专有原始数据(如 .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数据流的关键。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐