.
2013 级测绘工程专业
卫星导航定位算法与程序设计
实 验 报 告
实验名称: 卫星导航基本程序设计 班 级: 学 号: 姓 名: 实验时间: 2016年6月28日~2016年6月30
中 国 矿 业 大 学
.
.
目录
实验一 时空基准转换 ...................................................... 2 一、实验目的 ........................................................... 2 二、实验容 ............................................................. 2 三、实验过程 ........................................................... 2 四、实验感想 ........................................................... 6 实验二 RINEX文件读写 .................................................... 7 一、实验目的 ........................................................... 7 二、实验容 ............................................................. 7 三、实验过程 ........................................................... 8 实验三 卫星轨道计算 ..................................................... 13 一、实验目的 .......................................................... 13 二、实验容 ............................................................ 13 三、实验过程 .......................................................... 13 四、实验感想 .......................................................... 16
.
.
实验一 时空基准转换
一、实验目的
1、加深对时空系统及其之间转换关系的理解 2、掌握常用时空基准之间的转换模型与软件实现 3、每人独立完成实验规定的容
二、实验容
本实验容包括:
容一:编程实现GPS起点1980年1月6日0时对应的儒略日 容二:编程实现2011年11月27日对应的GPS周数与一周的秒数 容三:在WGS84椭球的条件下,编程实现当中央子午线为117度时,计算高斯坐标x = 3548910.811290287, y = 179854.6172135982 对应的经纬度坐标?
容四:WGS84椭球下,表面x=-2408000; y=4698000;z= 3566000处的地平坐标系坐标为: e=704.8615;n=114.8683;u=751.9771的点对应的直角坐标为多少?
三、实验过程
1.针对第一、二部分容:
1.1解决思路:先建立” TimeStruct.h”的头文件,将格里高利历、GPS时间结构、儒略日时间结构共结构体的方式放在里面;在建立“TimeTr”的头文件,建立类“CTimeTr”,创建变量“GPSTime”、“Time”、”JulDay”,并且申明函数“TIME2JUL”、“TIME2GTIME”等,用这些函数分别实现所需要的转换。
.
.
1.2具体的实现函数:
“TIME2JUL”函数:
double CTimeTr::TIME2JUL()//TIME Time,JULIANDAY &JulDay {
double m,y; double D;
//h =Time.byHour+Time.byMinute/60.0+Time.dSecond/3600.00; if(Time.byMonth<=2) {
y=Time.wYear-1; m=Time.byMonth+12; } else {
y=Time.wYear; m=Time.byMonth; }
D=floor(365.25*(y+4716))+floor(30.6001*(m+1))+Time.byDay+Time.byHour/24.0-1537.5;
JulDay.lDay = int(D);
JulDay.lSecond = D-int(JulDay.lDay); return 0; }
“TIME2GTIME”:
void CTimeTr::TIME2GTIME() {
.
double JD; long m,y; int WN;
double Wsecend;
//UT=Time.byHour+Time.byMinute/60.0+Time.dSecond/3600.00; if(Time.byMonth<=2) { } else {
y=Time.wYear; m=Time.byMonth; y=Time.wYear-1; m=Time.byMonth+12;
.
}
}
JD=int(365.25*y)+int(30.6001*(m+1))+Time.byDay+Time.byHour/24.0+1720981.5; WN = floor((JD-2444244.5)/7.0); GpsTime.lWeek=WN;
Wsecend=(JD-2444244.5-7*WN)*604800; GpsTime.lSecond=Wsecend;
1.3实验结果:
2 针对第三部分容: 2.1解决思路:
运用实验指导书中提供的matlab高斯反算的代码,进行解算;将高斯反算的公式直接输成matlab代码,绕后在函数“function [B,L] = gauss_fansuan(x,y,L0)”中,将坐标x = 3548910.811290287,y = 179854.6172135982,L0 = 117,带入函数的坐边,即可得到所需要的经纬度。
2.2主要函数的代码:
function [B,L]=gauss_fansuan(x,y,L0) a=6378137;
f=1/298.257223563;
.