一文搞懂导航电文
一文搞懂导航电文(以Rinex3.04为例)
一.什么是Rinex
RINEX(Receiver Independent Exchange Format/与接收机无关的交换格式)是一种在GPS测量应用中普遍采用的标准数据格式。该格式采用文本文件存储数据,数据记录格式与接收机的制造厂商和具体型号无关。
二.Rinex格式文件的下载方式
附上网址:
1.ftp://nfs.kasi.re.kr/ 与igs内容差不多,部分会缺,在电脑文件管理器中打开即可;
2.http://www.csno-tarc.cn/datacenter/ephemeris 选择广播星历下载即可,可选择日期,打开链接的方式同上;
3.cddss官网下载(不建议),需注册,下载比较繁琐;
(注:美国出于信息安全的考虑,关闭了所有通过ftp下载igs,cddss上的数据的途径,网上搜索下载Rinex格式文件的网站是会看到很多ftp链接里带有igs,cddss的,作者试过全都打不开)
4.https://igs.org/formats-and-standards/ 下载Rinex各版本格式说明文件,根据需要下载即可。
三.Rinex导航电文内容说明
Rinex格式的导航电文分为文件头和数据两部分,我们分别进行介绍:
(一)文件头
我们先看看Rinex3.04版本的说明文档中对文件头格式的说明:
我们发现图表的最后一列有一列FORMAT,这里的FORMAT指【FORTRAN 95/2003标准中的读写格式定义】
具体有:
- An: 表示以n个字符宽度输出字符串
- Fn.m: 表示以n个字符宽输出浮点数,小数点后占m个字符宽度
- In[.m]: 表示以n个字符宽输出整数,至少输出m位数字(不足以“0”补齐),方括号表示可选,In表示输出占n个字符宽的整数,即n位整数,不足也不需以“0”补齐
- nX: 表示向右跳过n个字符的宽度
- Tn: 表示输出位置移动到本行第n列
例如F9.2.11X就指表示以9个字符宽输出浮点数,小数点后占2个字符宽度,且向右跳过11个字符的宽度.
在了解了格式之后我们给出一个Rinex格式的文件的文件头结合上图介绍:
1 | 3.04 N: GNSS NAV DATA M: MIXED RINEX VERSION / TYPE |
先看第一行,“RINEX VERSION / TYPE”说明第一行写的是Rinex格式的版本和该文件的类型,”3.04”说明该文件是3.04版本的,我们想要读懂它就需要看Rinex304的说明文档,“N: GNSS NAV DATA”说明这是文件存的是导航电文数据,“M: MIXED”说明该文档存有多个导航系统的数据;
第二行“PGM / RUN BY / DATE”给出了创建当前文件的程序的名称是ssrcrin-13.7.0x,没有写创建当前文件的机构的名称,创建当前文件的时间是20220101 000000,格式是”yyyymmdd hhmmss”,采用的时间是”UTC”时间,即协调世界时;
第三行“END OF HEADER”说明文件头结束。
(二)数据
下图是Rinex3.04版本的说明文档中对数据格式的说明:
我们结合一颗GPS卫星的数据进行分析:
1 | G24 2022 01 01 02 00 00 2.766801044345E-04 7.958078640513E-13 0.000000000000E+00 |
解算卫星在WGS-84坐标系的坐标的参数有:
G24是卫星编号,后面4个数据分别是Toc、卫星钟差、卫星钟漂、卫星钟漂变化率,第二行是第二行4个数据分别是IODE、Crs、Δ n和M0,并在后面标好了单位,如Crs的单位是(meters)米,M0的单位是(radians)弧度。之后各行的数据对照官方文档一一对应即可。
四.总结
导航电文不难看懂,难的是耐下心来对照官方说明文档搞懂各行各个数据的意义,在读懂了导航电文的含义后,接下来的步骤就是解算卫星在WGS-84坐标系下的的坐标,我会在之后的文章中介绍。本文章仅代表个人观点和看法,难免会有错误和疏漏,如有错误希望大家可以和我指出ღ( ´・ᴗ・` )。
五.计算程序
计算部分按公式一步步推就行了,作者很懒,详细的步骤就不给出了,值得一提的是树上给的公式和常量很多是错的,所以建议根据PPT上的公式进行程序的编写,需要详细步骤的我推荐一下这篇文章:https://blog.csdn.net/tyst08/article/details/102462810,公式都是正确的,写的很详细很不错,可以一步步跟进编写。