这个经历起源于一个名为卫星导航与定位的课程作业,由于是跨专业学生,加之经常翘课,最后老师来了个课后作业,搞得我一脸懵逼,一开始没什么兴趣做,毕竟与我专业不是特别相关,后来想想搞定这个相当于在GPS数据处理的门口踩上一脚,还是蛮值得的,于是在交作业的最后一天开干,终于在自己搜资料以及同学的帮助下,花了一天的时间将其搞明白了,才发现,GPS解码也就这回事! 哈哈!
前面都是废话,现在来干货!
(1)直接上RINEX格式说明文件,我用的是下面两个文档,一个简单的,一个详细的:
链接:http://pan.baidu.com/s/1jI3eZBo 密码:ka9v
再来更加干货的matlab程序代码,附带测试数据:http://download.csdn.net/detail/oshenxingtianxia/9875011
最后推荐一个牛逼的文件查看软件:UltraEdit (这个软件是个神奇的存在,成功读取文件,它功不可没,因为我可以看着文件内容读,以确认自己写的代码是否正确。)
(2)首先得弄清楚你的GPS数据是什么格式的,据说有蛮多种格式,笔者用的是RINEX格式的GPS观测文件,也是所谓得“O文件”。注意,RINEX格式也有版本区别。
(3)RINEX的GPS观测文件的存储结构:
主要包括一个文件头和数据记录,即文件前面是一个格式固定的文件头,后面全部是数据。把我难住的其实就只有一点:后面的记录数据是怎样存放的?
【1】数据存放特点:每行最多存80个字符。这个就导致后面存放的数据的行数的不确定性,不过规律是一样的。
【2】数据存放类型:
头文件中有以下内容:
22 L1 L2 C1 C2 P1 P2 D1 D2 S1# / TYPES OF OBSERV
S2 L5 C5 D5 S5 L7 C7 D7 S7 # / TYPES OF OBSERV
L8 C8 D8 S8 # / TYPES OF OBSERV
这个表示观测记录的数据类型,“22”表示总的观测值类型数量,存放时就按照这个顺序来存储,且间隔是固定的。如果观测的卫星没有这个数据就空着。
【3】数据记录部分的存储结构:
15 3 21 0 0 0.0000000 0 23R19G01G16G30G08G03G09G07R16G04G19G32
R21R10G27G23R09R20G11S20S38S33S35
前面是时间,“23”表示总的卫星数,后面是各个卫星名称的缩写,后面的观测数据也是按照这个顺序存放的,即当把相同时刻的卫星观测数据按照这个顺序存放,由于卫星数是个变数,导致后面的卫星数占的行数和一个历元占的行数也是不确定的。后面就是循环的了,下面你会看到:
15 3 21 0 0 30.0000000 0 23R19G01G16G30G08G03G09G07R16G04G19G32
R21R10G27G23R09R20G11S20S38S33S35
可以看到,采样间隔是30秒。
来个不一样的。
RINEX FILE SPLICE; other post-header comments skipped COMMENT (你没看错,你们居然还有这个,这里也让我懵逼半天)
15 3 21 1 0 0.0000000 0 28R19G01G16G30G28G03G17G09G07R22R16G04
G19G32R21R10R11G27G23R09R20G11E14S20
S38S33S35S36
上面的英文也会出现在记录文件中,略坑,卫星数也变了。 不过好在每个卫星的记录数据占的行数是固定的。
(4)就到这里了,相信跟我一样的门外汉也懂了吧。