《GPS数据处理》实验指导书
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《GPS数据处理》
实验指导书
(供测绘工程专业用)
(2013年)
戴吾蛟编
二零一三年四月
中南大学测绘与遥感科学系
前言
GPS数据处理实验是学习本门课程的重要环节之一,实验的设置是为了配合课堂教学,使学生熟练掌握和深入理解课堂教学内容,进一步强化GPS数据处理算法及流程。
实验内容
本门课程必做的实验有(在Visual C++.net 2008 环境下):
1.GPS卫星位置计算程序设计;
2.伪距单点定位程序设计;
3.GPS数据质量分析;
4.GPS工程控制网数据处理;
实验1 GPS 卫星位置计算程序设计
一、实验目的
∙ 熟悉导航文件数据格式及参数意义;
∙ 掌握利用导航星历数据进行卫星位置计算的详细步骤;
∙ 掌握卫星位置计算程序设计技巧;
二、实验内容与要求
设计一个卫星位置计算的函数;利用已有的RINEX 格式导航电文数据读写函数(NavFileRead.h, NavFileRead.cpp),从导航文件中读取数据,调用自己设计的卫星位置计算函数计算每颗卫星在星历发布时刻的卫星位置(double transtime; //电文发送时间(GPS 星期秒)),并保存至一个文件中。
计算的详细步骤:
1.计算真近点角f s
(1)计算平均角速度
(2)计算归化观测时间t k
t k -以参考时刻t oe 为基准的归化观测时间。
t'-为观测时刻卫星的钟面时
t -经卫星钟差改正的观测时刻
n
n n s km GM a GM n s ∆+==⎥⎦
⎤⎢⎣⎡=0232130)/(5.398600 (302400)604800;
(302400)604800k k k k if t t else if t t >-=<-+=则则2
0210)()(e oe t t a t t a a t t t t -'+-'+=∆∆-'=
(3)计算观测时刻t 的平近点角Ms 和偏近点角Es
令Ms=Es 进行迭代计算
(4)计算观测时刻的真近点角
2.计算升交距角及轨道摄动改正项
参考历元的升交距角:u 0=ωs +f s
摄动改正项
3.计算升交距角、卫星的地心距离及轨道倾角
4.计算卫星在轨道坐标系中的坐标(x,y,z )
s s s s k s s E e M E nt M M sin 0+=+=⎪⎪⎭⎪⎪⎬⎫--=--=s s s s s s s s s s E e E e f E e e E f cos 1sin )1(sin cos 1cos cos 212)2tan 11arctan(2)]/(cos )sin 1arctan[(2k s s s s s s s s E e e f e E E e f -+=--=0000002cos 2sin 2cos 2sin 2cos 2sin u C u C i u C u C r u C u C u ic is rc rs uc us +=+=+=δδδk s s s t i i i i r E e a r u
u u ++=+-=+=δδδ00)cos 1(
5.计算观测时刻升交点的经度
6.计算在协议地球系中的空间直角坐标
⎥⎥⎥⎦
⎤
⎢⎢⎢⎣⎡=⎥⎥⎥
⎦⎤⎢⎢⎢⎣⎡
0sin cos u r u r z y x )
/(10292115.7)(500s rad t t e
k -⨯=--Ω+Ω=ωωωλ ⎥⎥
⎥
⎦
⎤
⎢⎢⎢⎣⎡--=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡z y x i R R Z Y X )(
)(1
3λ⎥⎥⎥⎦
⎤⎢⎢⎢⎣⎡-=--i i i i
i i
i R R cos sin 0
cos cos cos cos sin sin sin cos sin cos )()(13λλλλλλλ
实验2 伪距单点定位程序设计
一、实验目的
∙熟悉RINEX观测文件的读写;
∙掌握卫星发射时刻位置的计算;
∙掌握伪距观测方程列立;
∙伪距观测方程系数计算及单点定位程序设计详细步骤。
二、实验内容
设计一个伪距单点计算的函数,并用测试数据进行测试。,其中RINEX格式导航电文数据读写函数(NavFileRead.h, NavFileRead.cpp)、RINEX格式观测数据读写函数(ObsFileRead.h, ObsFileRead.cpp)已给出,卫星位置计算函数为实验一设计的函数,电离层和对流层改正暂略。单颗卫星观测数据结构体及一个历元观测数据类如下:
//单颗卫星观测数据结构体
typedef struct
{
short satID;
double vCA;
double vY1;
double vY2;
double vL1;
double vL2;
double vD1;
double vD2;
float elevation;
float azim;
}observation;
//一个历元的观测数据类
class CEpochObs
{
public:
CEpochObs(void);
~CEpochObs(void);