《GPS数据处理》实验指导书.doc
文本预览下载声明
《GPS数据处理》
实验指导书
(供测绘工程专业用)
(2013年)
戴吾蛟 编
二零一三年四月
中南大学测绘与遥感科学系前言
GPS数据处理实验是学习本门课程的重要环节之一,实验的设置是为了配合课堂教学,使学生熟练掌握和深入理解课堂教学内容,进一步强化GPS数据处理算法及流程。
实验内容
本门课程必做的实验有(在Visual C++.net 2008 环境下):
GPS卫星位置计算程序设计;
伪距单点定位程序设计;
GPS数据质量分析;
GPS工程控制网数据处理;
实验实验目的二实验内容double transtime; //电文发送时间(GPS星期秒)1.计算真近点角fs
(1)计算平均角速度
(2)计算归化观测时间tk
tk-以参考时刻toe为基准的归化观测时间。
t-为观测时刻卫星的钟面时
t-经卫星钟差改正的观测时刻
(3)计算观测时刻t的平近点角Ms和偏近点角Es
令Ms=Es进行迭代计算
(4)计算观测时刻的真近点角
2.计算升交距角及轨道摄动改正项
参考历元的升交距角:u0=(s+fs
摄动改正项
3.计算升交距角、卫星的地心距离及轨道倾角
4.计算卫星在轨道坐标系中的坐标(x,y,z)
5.计算观测时刻升交点的经度
6.计算在协议地球系中的空间直角坐标
实验2 伪距单点定位程序设计
一、实验目的二实验内容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);
public:
short nSatCount;//卫星数
double GpsWeek;//观测时间GPS周
double GpsSecond;////观测时间GPS秒
observation* Obs;
bool SetSize(short nSat);
};
//按照Rinex标准格式(2.0以上)读取一个历元的数据
short ReadStandardEpochObs(FILE *pObsFile, CEpochObs *pEObs, char **ObsType, short ObsTypeCount);
//民用时至GPS时转换函数
void DateTimeToWeekTOW(short year, short month, short day, short hour, short min, double sec, long *Week, double *TOW);
具体计算步骤:
将导航文件中所有卫星的星历全部读取,并存入ephemeris数组中 ;
调用相关函数读取一个历元的观测数据;
从ephemeris数组中找出当前历元第一颗观测卫星的导航数据,(注意一个导航文件中对一颗卫星来时可能有不同时间的星历数据,因此要查找当前历元最相近时间的星历数据)
计算卫星的钟差 (dt),调用卫星钟差改正函数Dt();
计算信号发射时刻
TTrans = TTag – (C1/C + dt)
6.计算信号发射时刻卫星位置(调用实验一设计的函数)
7.计算卫星至测站之间几何距离(考虑地球自转改正)
do
{
r0 = sqrt(pow(*rx,2.)+pow(*ry,2.)+pow(*rz,2.));
theta = r0/C*W;
//对距离分量进行地球自转改正
*rx = satx - recx+ theta*recy
*ry = saty - recy- theta*recx;
*rz = satz - recz;
*r = sqrt(pow(*rx,2.)+pow(*ry,2.)+pow(*rz,2.));
}while(fabs(r0-*r)1.e-3); //迭代求解
8- 计算常数项(闭合差,不考虑对流层及电离层延迟)
W = C1 – (Ro2 - (c dt))
9. 计算误差方程系数(设计矩阵)
A1 = -Rox / Ro2
A2 = -Roy / Ro2
A3 = -Roz / Ro2
A4 = c
10.重复3~9步,计算全部所有卫星观测方程的系数阵A和常数项W
1
显示全部