计算卫星位置的程序

计算卫星位置的程序
计算卫星位置的程序

计算卫星位置

一、C语言程序

#include

#include

#include

#define bGM84 3.986005e14

#define bOMEGAE84 7.2921151467e-5

void main()

{

long double roota=0.515365263176E+04; //轨道长半轴的平方根(根号a)

long double toe=0.720000000000E+04; //观测时刻toe

long double m0=-0.290282040486E+00; //参考时刻toe的平近点角

long double e=0.678421219345E-02; //轨道偏心率e

long double delta_n=0.451411660250E-08;//卫星的摄动改正数△n

long double smallomega=-0.258419417299E+01;//近地点角距ω

long double cus=0.912137329578E-05;//纬度幅角正弦调和项改正的振幅(弧度)long double cuc=0.189989805222E-06;//纬度幅角余弦调和项改正的振幅(弧度)long double crs=0.406250000000E+01;//轨道半径的余弦调和项改正的振幅(m)long double crc=0.201875000000E+03;//轨道半径的正弦调和项改正的振幅(m)long double cis=0.949949026108E-07;//轨道倾角的余弦调和项改正的振幅(弧度)long double cic=0.130385160446E-07;//轨道倾角的正弦调和项改正的振幅(弧度)long double idot=-0.253939149013E-09;//轨道倾角变化率I

long double i0=0.958512160302E+00; //轨道倾角(弧度)

long double bigomega0=-0.137835982556E+01;//升交点赤经

long double earthrate=bOMEGAE84; //地球自转的速率we

long double bigomegadot=-0.856928551657e-08;

long double t=0.720000000000E+04; //加入卫星钟差改正的归化时间

long double A;

long double n0=0,n,tk;

long double mk,ek,tak,ik,omegak,phik,uk,rk;

long double corr_u,corr_r,corr_i;

long double xpk,ypk,xk,yk,zk;

int i;

printf("输入的数据:\n");

printf("√a=%e \n",roota);

printf("toe=%e \n",toe);

printf("e=%e \n",e);

printf("i0=%e \n",i0);

printf("ω=%e \n",smallomega);

printf("△n=%e \n",delta_n);

printf("Ω0=%e \n",bigomega0);

printf("I=%e \n",idot);

printf("Cuc=%e \n",cuc);

printf("Crc=%e \n",crc);

printf("Crs=%e \n",crs);

printf("Cic=%e \n",cic);

printf("Cis=%e \n",cis);

printf("\n\n输出的结果为:\n",e);

A=roota*roota;

n0=sqrt(bGM84/(A*A*A));//平均角速度n0

printf("n0=%.10lf \n",n0);

tk=t-toe;//相对于参考时刻toe的归化时间tk

printf("tk=%.10lf \n",tk);

n=n0+delta_n;//加摄动改正后的卫星平均角速度

printf(" n=%.10lf \n",n);

mk=m0+n*tk;//卫星平近点角

printf("mk=%.10lf \n",mk);

ek=mk;

for(i=0;i<10;i++) ek=mk+e*sin(ek);//利用迭代法求偏近点角ek

printf("ek=%.10lf \n",ek);

tak=atan2(sqrt(1.0-e*e)*sin(ek),cos(ek)-e);//真近点角Vk的计算

printf("Vk=%.10lf \n",tak);

phik=tak+smallomega;//升交距角φk的计算

printf("φk=%.10lf \n",phik);

corr_u=cus*sin(2.0*phik)+cuc*cos(2.0*phik);//升交距角u的摄动改正δu printf("δu=%.10lf \n",corr_u);

corr_r=crs*sin(2.0*phik)+crc*cos(2.0*phik);//卫星矢量r的摄动改正δr printf("δr=%.10lf \n",corr_r);

corr_i=cis*sin(2.0*phik)+cic*cos(2.0*phik);//轨道倾角i的摄动改正δi printf("δi=%.10lf \n",corr_i);

uk=phik+corr_u;//升交距角u

printf("uk=%.10lf \n",uk);

rk=A*(1.0-e*cos(ek))+corr_r;//卫星矢量r

printf("rk=%.10lf \n",rk);

ik=i0+idot*tk+corr_i;//轨道倾角i

printf("ik=%.10lf \n",ik);

xpk=rk*cos(uk);//卫星在轨道平面坐标系的坐标

ypk=rk*sin(uk);

printf("ypk=%.10lf \n",ypk);

omegak=bigomega0+(bigomegadot-earthrate)*tk-earthrate*toe;//升交点经度Ωk的计算printf("Ωk=%.10lf \n\n",omegak);

xk=xpk*cos(omegak)-ypk*sin(omegak)*cos(ik);//地心固定坐标系的直角坐标

yk=xpk*sin(omegak)+ypk*cos(omegak)*cos(ik);

zk=ypk*sin(ik);

printf("Xk=%.4lf \n",xk);

printf("Yk=%.4lf \n",yk);

printf("Zk=%.4lf \n",zk);

}

二、计算结果

计算结果如截图所示:

卫星星历计算和轨道参数计算编程实习

专业:地图学与地理信息工程(印刷) 班级:制本49—2 学号:3272009010 姓名:张连杰 时间:2012/9/21 一、概述 在C++6.0中建立基于单文档的MFC工程,利用简洁的界面方便地由卫星轨道根数计算卫星的实时位置和速度,并可以根据卫星的星历反求出卫星轨道根数。 二、目的 通过卫星编程实习,进一步加深理解和掌握卫星轨道参数的计算和卫星星历的计算方法,提高编程能力和实践能力。 三、功能 1、由卫星位置与速度求取卫星轨道参数; 2、由卫星轨道参数计算卫星星历。 四、编程环境及工具 Windows7环境,VC++6.0语言工具 五、计划与步骤 1.深入理解课本上的星历计算方法和轨道根数的求取方法,为编程实习打下算法基础; 2.学习vc++对话框的设计和编程,解决实习过程中的技术难题; 3.综合分析程序的实现过程,一步步编写代码实现。 六、程序异常处理 1.在进行角度转换时候出现的问题导致结果错误。计算三角函数时候先要把角度转换成弧度进行计算,最后输出结果的时候需要再把弧度转换回角度输出。 2.在计算omiga值得时候的错误。对计算出的omiga值要进行象限的判断,如果不符合条件要加或减一个周期pi(因为是反正弦函数)。 七、原创声明 本课程设计报告及相应的软件程序的全部内容均为本人独立完成。其间,只有程序中的中间参量计算值曾与同学共同讨论。特此声明。 八、程序中的关键步骤和代码 1、建立基于单文档的名字为TrackParameter的MFC工程。 2、在资源视图里面增加一个对话框改属性ID为IDD_DIALOG1,在新的对话框IDD_DIALOG1上面添加控件按钮,并建立新的类CsatelliteDlg. 3、在菜单栏里面添加菜单实习一,并添加命令响应函数OnMenuitem32771(),在该函数中编写代码 CsatelliteDlg dlg; dlg.DoModal();

卫星坐标计算

GPS 卫星坐标计算 班级:08测绘一班 姓名:浦绍佼 学号:20080754

目录 实验目的: (3) 卫星坐标计算步骤: (3) 具体过程: (5) 四:运行与结果 (12) 五,心得体会: (13)

实验目的: 根据导航文件求出卫星坐标。 卫星坐标计算步骤: 一:计算平均角速度: n =;n0=;:由导航文件给出二:规划时刻:,为参考历元 三:平近点角: 四:偏近点角:+e;(此处进行迭代运算) 五:真近点角:; 六:升交点角距:; 七:摄动改正:顾及?,I,n的摄动变化以及正弦改正模型的振幅项,;则 升交点角距: 轨道向径:

轨道倾角: 式中:为参考时刻的升交角距; 八:改正后的升交角距: 改正后的轨道向径:; 改正后的轨道倾角:; 九:卫星在升交点轨道直角坐标系的坐标: ;: 十:升交点经度: 7.2921151467*rad/s;:升交点赤经变化率; :GPS周开始时刻的升交点经度; 十一:卫星在地固坐标系的空间直角坐标为: =R(-)(R(-) R(-), (R(-)为旋转矩阵,将其代入展开后得: ; ;

具体过程: 一:原始资料(卫星导航文件) 二:进行必要的界面设计:

三:编写代码: using System; using System.Collections.Generic; using https://www.360docs.net/doc/4514022660.html,ponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO; using System.Diagnostics; namespace 20080754 { public partial class Form1 : Form { private string stFilePath = string.Empty; public Form1() { InitializeComponent(); listView1.Columns.Add("序号", 40, HorizontalAlignment.Center); listView1.Columns.Add("星历参数", 80, HorizontalAlignment.Center); listView1.Columns.Add("参数值", 130, HorizontalAlignment.Center); listView1.GridLines = true; listView1.View = View.Details; listView1.HeaderStyle = ColumnHeaderStyle.Clickable; listView1.FullRowSelect = true;

最新导线测量的内业计算

导线测量的内业计算

第三节导线测量的内业 计算 导线测量内业计算的目的就是计算各导线点的平面坐标x、y。 计算之前,应先全面检查导线测量外业记录、数据是否齐全,有无记错、算错,成果是否符合精度要求,起算数据是否准确。然后绘制计算略图,将各项数据注在图上的相应位置,如图6-11所示。 一、坐标计算的基本公式 1.坐标正算 y 图6-10 坐标增量计算

根据直线起点的坐标、直线长度及其坐标方位角计算直线终点的坐标,称为坐标正算。如图6-10所示,已知直线AB 起点A 的坐标为(x A ,y A ),AB 边的边长及坐标方位角分别为D AB 和αAB ,需计算直线终点B 的坐标。 直线两端点A 、B 的坐标值之差,称为坐标增量,用Δx AB 、Δy AB 表示。由图6-10可看出坐标增量的计算公式为: ?? ? =-=?=-=?AB AB A B AB AB AB A B AB D y y y D x x x ααsin cos (6-1) 根据式(6-1)计算坐标增量时,sin 和cos 函数值随着α角所在象限而有正负之分,因此算得的坐标增量同样具有正、负号。坐标增量正、负号的规律如表6-5所示。 则B 点坐标的计算公式为:

?? ? +=?+=+=?+=AB AB A AB A B AB AB A AB A B D y y y y D x x x x ααsin cos (6-2) 例6-1 已知AB 边的边长及坐标方位角为 456380m 62.135'''?==AB AB D α,,若A 点的坐标为 m 82.658m 56.435==A A y x ,,试计算终点B 的坐 标。 解 根据式(6-2)得 6 .792456380sin m 62.135m 82.658sin .457456380cos m 62.135m 56.435cos ='''??+=+=='''??+=+=AB AB A B AB AB A B D y y D x x αα2.坐标反算 根据直线起点和终点的坐标,计算直线的边长和坐标方位角,称为坐标反算。如图6-10所示,已知直线AB 两端点的坐标分别为(x A ,y A )和(x B ,y B ),则直线边长D AB 和坐标方位角αAB 的计算公式为: 2 2AB AB AB y x D ?+?= (6-3) AB AB AB x y ??=arctan α (6-4) 应该注意的是坐标方位角的角值范围在0?~360?间,而arctan 函数的角值范围在-90?~+90?间,两

卫星导航定位算法与程序设计实验报告

2013 级测绘工程专业 卫星导航定位算法与程序设计 实 验 报 告 实验名称:卫星导航基本程序设计 班级: 学号: 姓名: 实验时间: 2016年6月28日~2016年6月30 中国矿业大学

目录 实验一时空基准转换 (2) 一、实验目的 (2) 二、实验内容 (2) 三、实验过程 (2) 四、实验感想 (6) 实验二RINEX文件读写 (6) 一、实验目的 (6) 二、实验内容 (7) 三、实验过程 (7) 实验三卫星轨道计算 (12) 一、实验目的 (12) 二、实验内容 (12) 三、实验过程 (12) 四、实验感想 (15)

实验一时空基准转换 一、实验目的 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”的头文件,建立类“CTimeT r”,创建变量“GPS Time”、“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) {

GPS卫星的坐标计算

第三章GPS 卫星的坐标计算 在用GPS 信号进行导航定位以及制订观测计划时,都必须已知GPS 卫星在空间的瞬间位置。卫星位置的计算是根据卫星导航电文所提供的轨道参数按一定的公式计算的。 3.1卫星运动的轨道参数 3.1.1基本概念 1.作用在卫星上力 卫星受的作用力主要有:地球对卫星的引力,太阳、月亮对卫星的引力,大气阻力,大气光压,地球潮汐力等。 中心力:假设地球为匀质球体的引力(质量集中于球体的中心),即地球的中心引力,它决定卫星运动的基本规律和特征,决定卫星轨道,是分析卫星实际轨道的基础。此种理想状态时卫星的运动称为无摄运动,卫星的轨道称为无摄轨道。 摄动力:也称非中心力,包括地球非球形对称的作用力、日月引力、大气阻力、大气光压、地球潮汐力等。摄动力使卫星运动产生一些小的附加变化而偏离理想轨道,同时这种偏离量的大小随时间而改变。此种状态时卫星的运动称为受摄运动,卫星的轨道称为受摄轨道。 虽然作用在卫星上的力很多,但这些力的大小却相差很悬殊。如果将地球引力当作1的话,其它作用力均小于10-5。 2.二体问题 研究两个质点在万有引力作用下的运动规律问题称为二体问题。 3.卫星轨道和卫星轨道参数 卫星在空间运行的轨迹称为卫星轨道。 描述卫星轨道状态和位置的参数称为轨道参数。 3.1.2卫星运动的开普勒定律 (1)开普勒第一定律 卫星运行的轨道为一椭圆,该椭圆的一个焦点与地球质心重合。此定律阐明了卫星运行轨道的基本形态及其与地心的关系。由万有引力定律可得卫星绕地球质心运动的轨道方程。r 为卫星的地心距离,as 为开普勒椭圆的长半径,es 为开普勒椭圆的偏心率;fs 为真近点角,它描述了任意时刻卫星在轨道上相对近地点的位置,是时间的函数。 (2)开普勒第二定律 卫星的地心向径在单位时间内所扫过的面积相等。表明卫星在椭圆轨道上的运行速度是不断变化的,在近地点处速度最大,在远地点处速度最小。 近地点 远地点 s s s s f e e a r cos 1)1(2+-=

卫星坐标计算实验

西南交通大学 《卫星坐标计算实验》 实验报告 专业: 班级: 姓名: 学号: 成绩: 2017年3月20日

一、实验步骤: 1、将星历文件中需要的数据作为矩阵导入MA TLAB 中的变量。 2、编写计算程序代码 1)计算平均角速度0n : 03GM n a = 2)改正平角速度n : 0n n n =+? 3)计算平近点角t M : 0()t e M M n t t =+?- 4)通过迭代计算,计算偏近点角t E : sin t t t E M e E =+ 5)计算真近点角ν: 21sin =atan cos t t e E E e ν-- 6)计算升交距角0u : 0u νω=+ 7)计算卫星轨道摄动项改正数: 2cos sin cos sin cos sin u u Cuc Cus r Crc Crs i Cic Cis ??? ?? ?? =??=+?=+?=+ 8)计算改正后的真近点角ν: 0t u u u =+? 9)计算改正后的向径t r : 0t r r r =+? 10)计算改正后的倾角t i : 0()t e i i i i t t =+?+?-

11)计算轨道平面内的坐标: cos sin 0t t t t t t t x r u y r u z ????????=???????????? 12)计算观测瞬间升交点的经度t l : 0()t e e e l l t t t ω=+Ω++ 13)计算旋转矩阵: 1000cos()sin()0sin()cos()x t t t t R i i i i ?? ??=-?????? cos()sin()0sin()cos() 000 1t t z t t l l R l l -????=?????? 14)卫星坐标: t z x t t X x Y R R y Z z ???? ??? ? =???????????? 15)计算钟差: 2012()()e e t a a t t a t t ?=+?-+?- 二、实现代码: function pos=SPOS(br,dt) GM=3.986005e+14; we=7.2921151467e-5; %a0 a1 a2 a0=br(1,2); a1=br(1,3); a2=br(1,4); % IODE Crs dn M0 Crs=br(2,2); dn=br(2,3); M0=br(2,4); % Cuc e Cus sqA Cuc=br(3,1); e=br(3,2); Cus=br(3,3); sqA=br(3,4); % toe Cic OM0 Cis toe =br(4,1); Cic =br(4,2); OM0 =br(4,3);

GPS广播星历计算卫星位置和速度-Read

“GPS广播星历计算卫星位置和速度” 及“GPS伪距定位”计算试验 1.试验内容及上交成果 1.1 试验内容 应用C语言按预定格式(函数、输入输出变量之名称、类型)编写“GPS广播星历计算卫星位置和速度”函数SatPos_Vel( )、“GPS伪距定位”函数Positioning( )。将此两个函数组成文件F2.cpp,并包含于文件GPS_Positioning.cpp中。编译、连接并运行文件GPS_Positioning.cpp,逐一时刻读取广播星历(Ephemeris.dat)、观测时间及伪距、卫星号(Observation.dat)信息,计算WGS84坐标系中观测时刻相应的卫星位置、速度以及载体位置,结果保存于文件Position.dat中。 1.2 上交成果 磁盘文件F2.cpp、Position.dat,并存于“学号作者中文姓名”目录中。 2.函数说明 2.1 星历文件读取函数 void EFileReading(Efile) 功能:读取星历文件,给星历数据结构体Ephemeris赋值。 输入变量:EFile 字符串,文件名。 2.2 观测数据读取函数 int ObsReading(fp_Obs,Time,Rho,Mark) 功能:从文件Observation.dat中读取某一时刻的伪距、卫星号。读取成功函数值返回“1”,失败返回“-1”(读错,或至文件尾)。 输入变量:fp_Obs 文件指针; 输出变量:Time double,时间(秒); Rho double[12],伪距(米); Mark int[12],卫星号,“-1”表示此通道无卫星、无伪距。 2.3 最小二乘估计函数 int LeastSquareEstimation(Y,A,P,m,n, X) 功能:最小二乘方法求解观测方程Y=AX+ε,其中观测值方差阵的逆阵为P(也称为权阵),得未知参数X。成功返回“1”,失败返回“-1”(亏秩)。 输入变量:Y double[m],观测方程自由项(米); A double[m×n],系数阵(无量纲),按第1行第1、2……n元素,

导线坐标内业计算

第三节 导线测量的内业 计算 导线测量内业计算的目的就是计算各导线点的平面坐标x 、y 。 计算之前,应先全面检查导线测量外业记录、数据是否齐全,有无记错、算错,成果是否符合精度要求,起算数据是否准确。然后绘制计算略图,将各项数据注在图上的相应位置,如图6-11所示。 一、坐标计算的基本公式 1.坐标正算 根据直线起点的坐标、直线长度及其坐标方位角计算直线终点的坐标,称为坐标正算。如图6-10 所示, y 图6-10 坐标增量计算

已知直线AB 起点A 的坐标为(x A ,y A ),AB 边的边长及坐标方位角分别为D AB 和αAB ,需计算直线终点B 的坐标。 直线两端点A 、B 的坐标值之差,称为坐标增量,用Δx AB 、Δy AB 表示。由图6-10可看出坐标增量的计算公式为: ???=-=?=-=?AB AB A B AB AB AB A B AB D y y y D x x x α αsin cos (6-1) 根据式(6-1)计算坐标增量时,sin 和cos 函数值随着α角所在象限而有正负之分,因此算得的坐标增量同样具有正、负号。坐标增量正、负号的规律如表6-5所示。 表6-5 坐标增量正、负号的规律 则B 点坐标的计算公式为: ???+=?+=+=?+=AB AB A AB A B AB AB A AB A B D y y y y D x x x x α αsin cos (6-2) 例6-1 已知AB 边的边长及坐标方位角为 456380m 62.135'''?==AB AB D α ,,若 A 点的坐标为

GPS卫星坐标计算

卫星定位技术与方法--根据广播星历参数计算卫星坐标 作业报告 指导教师:熊永良 班级:测绘二班 学生姓名:段海东 学生学号: 2 0 0 8 0 7 8 3 作业日期:2010 年12月08 日

目录 一. 已知数据 (2) 二. 计算步骤 (2) 1.平均角速度 (mean angular speed) (2) 2.规化时刻(normal time) (3) 3.平近点角(mean anomaly) (3) 4.偏近点角(eccentric anomaly) (3) 5.真近点角(true anomaly) (3) 6.升交距角(argument of ascending node) (3) 7. 轨道向径(Orbital radius) (3) 8. 扰动改正(Perturbed correction) (4) 10.卫星在升交点轨道直角坐标系中的坐标 (4) 11. 升交点经度(Longitude of ascending node) (5) 三. 源程序 (5) 四.程序运行结果 (14) 七.作业体会 (15)

根据广播星历参数计算卫星坐标 一. 已知数据: 根据以下的广播星历参数计算UTC2004年1月30日8点0分00秒—20分00秒,每隔一分钟的PRN7的卫星坐标。Compute the coordinate of PRN7 with interval of 1 minute. Navigation data: 卫星导航文件格式: 二. 计算步骤:The steps for satellite coordinates 1.平均角速度 (mean angular speed): ?n 由广播星历获得, GM=3.986005e+14 n n n ?+=03 0a GM n =

计算卫星位置的程序

计算卫星位置 一、C语言程序 #include #include #include #define bGM84 3.986005e14 #define bOMEGAE84 7.2921151467e-5 void main() { long double roota=0.515365263176E+04; //轨道长半轴的平方根(根号a) long double toe=0.720000000000E+04; //观测时刻toe long double m0=-0.290282040486E+00; //参考时刻toe的平近点角 long double e=0.678421219345E-02; //轨道偏心率e long double delta_n=0.451411660250E-08;//卫星的摄动改正数△n long double smallomega=-0.258419417299E+01;//近地点角距ω long double cus=0.912137329578E-05;//纬度幅角正弦调和项改正的振幅(弧度)long double cuc=0.189989805222E-06;//纬度幅角余弦调和项改正的振幅(弧度)long double crs=0.406250000000E+01;//轨道半径的余弦调和项改正的振幅(m)long double crc=0.201875000000E+03;//轨道半径的正弦调和项改正的振幅(m)long double cis=0.949949026108E-07;//轨道倾角的余弦调和项改正的振幅(弧度)long double cic=0.130385160446E-07;//轨道倾角的正弦调和项改正的振幅(弧度)long double idot=-0.253939149013E-09;//轨道倾角变化率I long double i0=0.958512160302E+00; //轨道倾角(弧度) long double bigomega0=-0.137835982556E+01;//升交点赤经 long double earthrate=bOMEGAE84; //地球自转的速率we long double bigomegadot=-0.856928551657e-08; long double t=0.720000000000E+04; //加入卫星钟差改正的归化时间 long double A; long double n0=0,n,tk; long double mk,ek,tak,ik,omegak,phik,uk,rk; long double corr_u,corr_r,corr_i; long double xpk,ypk,xk,yk,zk; int i; printf("输入的数据:\n"); printf("√a=%e \n",roota); printf("toe=%e \n",toe); printf("e=%e \n",e); printf("i0=%e \n",i0); printf("ω=%e \n",smallomega); printf("△n=%e \n",delta_n); printf("Ω0=%e \n",bigomega0); printf("I=%e \n",idot); printf("Cuc=%e \n",cuc);

卫星位置计算程序

#include #include"math.h" #include"float.h" using namespace std; double kpro(double mk,double e){ double f[2000],ek; int i=0; f[0]=mk; do{ f[i+1]=mk+e*sin(f[i]); i++; }while(abs(f[i+1]-f[i])>=0.005); ek=f[i+1]; return ek; } #define PI 3.14159265357589 int main(void){ double toc,a2,a1,a0,dotn,t1,m0,e,roota,toe,cic,crc,cis,crs,cuc,cus,omega0,omega,i0,omegadot,idot; double n,n0,dott,t,tk,mk,ek,vk,ak,u,r,i,uk,rk,ik,xk,yk,wk,we,x,y,z; int k,j; cout<<"输o?入¨?秒?数oy据Y参?数oy toc\n"; cin>>toc; cout<<"输o?入¨?秒?数oy据Y幂Y数oy\n"; cin>>k; toc=toc*pow(10,k); cout<<"输o?入¨?时o?à钟¨?修T正y2 a2\n"; cin>>a2; cout<<"输o?入¨?时o?à钟¨?修T正y1 a1\n"; cin>>a1; cout<<"输o?入¨?时o?à钟¨?修T正y0 a0\n"; cin>>a0; cout<<"输o?入¨?摄|?动?¥改?正y数oy dn\n"; cin>>dotn; cout<<"输o?入¨?观?测a时o?à间? t'\n"; cin>>t1; cout<<"输o?入¨?反¤??常?ê m0\n"; cin>>m0; cout<<"输o?入¨?偏?心?率¨o e\n"; cin>>e; cout<<"输o?入¨?长?è半??径?平?方¤?根¨′ roota\n"; cin>>roota; cout<<"输o?入¨?星?历¤¨2基¨′准á?时o?à间?系|ì数oy toe\n"; cin>>toe; cout<<"输o?入¨?星?历¤¨2基¨′准á?时o?à间?幂Y数oy\n"; cin>>j; toe=toe*pow(10,j); cout<<"输o?入¨?对?倾?角?余?¨¤弦¨?校?ê正y值|ì cic\n"; cin>>cic;

GPS卫星位置的计算

GPS卫星位置的计算 利用C++编写了一段能计算单一瞬时卫星坐标的程序,在运行程序之前,需做部分准备工作:(1)在F盘下建立一名为“单一卫星广播星历”的txt文件。 (2)从“广播星历.txt”文件中拷贝从卫星PRN号开始的8行数据到“单一卫星广播星历.txt”中 (3)在编辑选项中,将全部的“D”替换为“E”。 下面为我所选取的一个广播星历: 18 06 8 25 6 0 0.0-2.472363412380E-04-1.023*********E-12 0.000000000000E+00 1.410000000000E+02-1.721875000000E+01 4.502687555010E-09 1.413760604187E+00 -7.990747690201E-07 7.598234573379E-03 1.118145883083E-05 5.153709835052E+03 4.536000000000E+05-1.303851604462E-08-1.095067942661E-01 1.527369022369E-07 9.571235745530E-01 1.640000000000E+02-2.656176299285E+00-8.0374********E-09 -5.193073455211E-10 1.000000000000E+00 1.389000000000E+03 0.000000000000E+00 2.000000000000E+00 0.000000000000E+00-1.024*********E-08 1.410000000000E+02 4.464490000000E+05 4.000000000000E+00 程序设计部分: #include #include int main() { int i = 0; double n[50], n0, nn, t, tk, Mk, Ek, Vk, Yk, Gu, Gr, Gi, uk, rk, ik, xk, yk, zk, X, Y, Z, Lk, UT, yy, mm, JD, gpsz; FILE *fp; fp = fopen("F:\\单一卫星广播星历.txt", "r"); if (fp == NULL) { printf ("文件打开失败!\n"); return 0; } while (! feof (fp)) { fscanf(fp, "%lf", &n[i]); i++; } n0 = (sqrt(3986005E+8))/pow(n[17], 3); nn = n0 + n[12];/*计算卫星运行的平均角速度*/ UT = n[4] + (n[5] / 60) + (n[7] / 3600);/*民用日的时分秒化为实数时*/ if (n[1] >= 80)/*广播星历中年只有后两位,化为4位,参考1980年1月6日0点*/ { if (n[1] == 80 && n[2] == 1 && n[3] < 6) { n[1] = n[1] + 2000; } n[1] = n[1] + 1900;

卫星导航定位算法与程序设计_单点定位程序流程

GPS 单点定位程序流程 、计算流程 读取RINEX N 文件,将所有星历放到一个列表(数组) ephlst 中。 数据预处理 根据epoch 中的卫星号和历元时刻T R 在ephlst 查找相应的卫星星历, 1、 2、 读取RINEX 以件,读取一个历元观测值epoch 3、 4、 准则T R TOE 3600.0s 。 程序初始化,置测站概略位置为X r ,接收机钟差初值dt r 。 X o X 0 X Y dt Z 第一次迭代,取X 。 o cdt r 0 0 0 5、选择epoch 中一颗卫星S i 观测值,设其伪距为 S 6、计算卫星§的信号发射的概略时刻T*方法如下: a )卫星S i 的信号传播时间:0S Si / c dt r dt Si ;dt Si 为卫星钟差,需要进行相 对论改正; b )卫星S i 的信号发射时刻:T S T R Si ; c )卫星S i 在T Si 时刻的位置X S T Si X S Y Si Z Si d )对卫星位置X Si T Si 进行地球自转改正,得到 Xj e )根据X W i T Si 和测站概略位置X r 计算卫星和测站的几何距离 R S f )根据几何距离R Si 求信号传播时间I S R S /c

g ) 如果/ o S 10 7,则退出迭代。T 1Si T R :即为卫星信号发射时刻 h ) 否则0s i Si ,回带到b )进行迭代。 7、 求卫星§方向余弦 V V s i VW S 77S s 入入 I S 丫丫 s ZZ s A t o ' S — ,b i S ,炬’ S ,b ; 1 R i R S R S 8、 求卫星S 在观测方程式中的余数项: 其中: Si —— 卫星S j 的伪距观测值; R Si —— 卫星S 到测站的几何距离; c dt S 以米表示的卫星S i 的钟差; d trop —— 对流层延迟改正量,单位米,用简化的 hopfield 模型计算; d iono —— 电离层延迟改正量,单位米,采用无电离层伪距组合观测值时,此项为 0; D RTCM ——对伪距的差分改正值,此处为 0; 10、 重复第6— 9步,计算每颗卫星的系数和余数项 11、 将所有卫星的系数组成误差方程,以 x,y,z,cdt r 为未知参数进行求解,形 式应该是:AX L b S 0 t 1So 玻。 1 b? b* b ; 1 T S S S A 2 X x y z cdt L I s0 l S1 L l Si M M M M b S b Si b ; 1 i 0,1,L ,svnum 1 12、 求解法方程X A T PA 1 A T PL ,求出定位结果 |Si Si R Si c dt Si d trop d iono D RTC M 9、 选择epoch 中下一颗卫星S j 观测值,设其伪距为 S j

导线计算

6.4.1 导线布设形式 (一)导线 将测区内相邻控制点连成直线而构成的折线,称为导线。这些控制点称为导线点。导线测量就是依次测定各导线边的长度和各转折角值;根据起算数据,推算各边的坐标方位角,从而求出各导线点的坐标。 用经纬仪测量转折角,用钢尺测定边长的导线,称为经纬仪导线;若用光电测距仪测定导线边长,则称为电磁波测距导线。 (二)闭合导线

以高级控制点A、B中的A点为起始点,并以AB边的坐标方位角αAB为起始坐标方位角,经过1、2、3、4点仍回到起始点A,形成一个闭合多边形的导线称为闭合导线。 (三)附合导线 以高级控制点A、B中的B点为起始点,以AB边的坐标方位角αAB为起始坐标方位角,经过5、6、7、8点,附合到另外两个高级控制点CD中的C点,并以CD边的坐标方位角αCD为终边坐标方位角,这样的导线称为附合导线。 (四)支导线 从一个高级控制点C和一条高级边的坐标方位角αCD出发延伸出去的导线称为支导线。由于支导线缺少对观测数据的检核,故其 边数及总长都有限制。 6.4.2 踏勘选点及建立标志 选点前,应调查搜集测区已有地形图和高一级的控制点的成果资料,把控制点展绘在地形图上,然后在地形图上拟定导线的布 设方案,最后到野外去踏勘,实地核对、修改、落实点位。如果测区没有地形图资料,则需详细踏勘现场,根据已知控制点的分 布、测区地形条件及测图和施工需要等具体情况,合理地选定导线点的位置。 实地选点时,应注意下列几点: (1) 相邻点间通视良好,地势较平坦,便于测角和量距;

(2) 点位应选在土质坚实处,便于保存标志和安置仪器; (3) 视野开阔,便于施测碎部; (4) 导线各边的长度应大致相等,除特殊情形外,对于二、三级导线,其边长应不大于350m,也不宜小于50m,平均边长如表6.3和表6.4所示; (5) 导线点应有足够的密度,分布较均匀,便于控制整个测区。

C语言计算GPS卫星位置

C 语言计算G P S 卫星位置 1 概述 在用GPS 信号进行导航定位以及制订观测计划时,都必须已知GPS 卫星在空间的瞬间位置。卫星位置的计算是根据卫星电文所提供的轨道参数按一定的公式计算的。本节专门讲解观测瞬间GPS 卫星在地固坐标系中坐标的计算方法。 2 卫星位置的计算 1. 计算卫星运行的平均角速度n 根据开普勒第三定律,卫星运行的平均角速度n0可以用下式计算: 式中μ为WGS-84坐标系中的地球引力常数,且μ=3.986005×1014m 3/s 2。平均角速度n 0加上卫星电文给出的摄动改正数Δn ,便得到卫星运行的平均角速度n n=n 0+Δn (4-12) 2. 计算归化时间t k 首先对观测时刻t ′作卫星钟差改正 t=t ′-Δt 然后对观测时刻t 归化到GPS 时系 t k =t-t oc (4-13) 式中t k 称作相对于参考时刻t oe 的归化时间(读者注意:toc ≠toe )。 3. 观测时刻卫星平近点角M k 的计算 M k =M 0+n tk (4-14) 式中M 0是卫星电文给出的参考时刻toe 的平近点角。 4. 计算偏近点角E k E k =M k +esinE k (E k ,M k 以弧度计) (4-15) 上述方程可用迭代法进行解算,即先令E k =M k ,代入上式,求出E k 再代入上式计 算,因为GPS 卫星轨道的偏心率e 很小,因此收敛快,只需迭代计算两次便可求得偏近点角E k 。 5. 真近点角V k 的计算 由于:

因此: 6.升交距角Φk 的计算 ω为卫星电文给出的近地点角距。 7. 摄动改正项δu,δr,δi 的计算 δu,δr,δi 分别为升交距角u 的摄动量,卫星矢径r 的摄动量和轨道 倾角i 的摄动量。 8. 计算经过摄动改正的升交距角u k 、卫星矢径r k 和轨道倾角i k 9. 计算卫星在轨道平面坐标系的坐标 卫星在轨道平面直角坐标系(X 轴指向升交点)中的坐标为 10. 观测时刻升交点经度Ωk 的计算 升交点经度Ωk 等于观测时刻升交点赤经Ω(春分点和升交点之间的角距)与 格林泥治视恒星时GAST (春分点和格林尼治起始子午线之间的角距)之差, Ωk =Ω-GAST (4-23) 又因为: tk oe Ω+Ω=Ω (4-24) 其中Ωoe 为参与时刻t oe 的升交点的赤经; Ω 是升交点赤经的变化率,卫星电文每小时更新一次Ω和t oe 。 此外,卫星电文中提供了一周的开始时刻t w 的格林尼治视恒星时GAST w 。由于 地球自转作用,GAST 不断增加,所以: GAST=GAST w +ωe t (4-25) 式中ωe ×10-5rad/s 为地球自转的速率;t 为观测时刻。 由式(4-24)和(4-25),得: 由(4-13)式,得: 其中0oe w GAST Ω=Ω-,o Ω、Ω、oe t 的值可从卫星电文中获取。 11. 计算卫星在地心固定坐标系中的直角坐标

测绘中级 附合导线测量的内业计算的方法步骤

第三节 导线测量的内业计算 导线测量内业计算的目的就是计算各导线点的平面坐标x 、y 。 计算之前,应先全面检查导线测量外业记录、数据是否齐全,有无记错、算错,成果是否符合精度要求,起算数据是否准确。然后绘制计算略图,将各项数据注在图上的相应位置,如图6-11所示。 一、坐标计算的基本公式 1.坐标正算 根据直线起点的坐标、直线长度及其坐标方位角计算直线终点的坐标,称为坐标正算。如图6-10所示,已知直线AB 起点A 的坐标为(x A ,y A ),AB 边的边长及坐标方位角分别为D AB 和αAB ,需计算直线终点B 的坐标。 直线两端点A 、B 的坐标值之差,称为坐标增量,用Δx AB 、Δy AB 表示。由图6-10可看出坐标增量的计算公式为: ? ??=-= ?=-=?AB AB A B AB AB AB A B AB D y y y D x x x α αsin cos (6-1) y 图6-10 坐标增量计算

根据式(6-1)计算坐标增量时,sin 和cos 函数值随着α角所在象限而有正负之分,因此算得的坐标增量同样具有正、负号。坐标增量正、负号的规律如表6-5所示。 表6-5 坐标增量正、负号的规律 则B 点坐标的计算公式为: ? ??+=?+=+=?+=AB AB A AB A B AB AB A AB A B D y y y y D x x x x α α sin cos (6-2) 例 6-1 已知 AB 边的边长及坐标方位角为 456380m 62.135' ''?==AB AB D α ,,若 A 点的坐标为 m 82.658m 56.435==A A y x ,,试计算终点B 的坐标。 解 根据式(6-2)得 m 62.792456380sin m 62.135m 82.658sin m 68.457456380cos m 62.135m 56.435cos ='''??+=+=='''??+=+=AB AB A B AB AB A B D y y D x x α α 2.坐标反算 根据直线起点和终点的坐标,计算直线的边长和坐标方位角,称为坐标反算。如图6-10所示,已知直线AB 两端点的坐标分别为(x A ,y A )和(x B ,y B ),则直线边长D AB 和坐标方位角αAB 的计算公式为: 2 2AB AB AB y x D ?+?= (6-3) AB AB AB x y ??=arctan α

(完整版)闭合及附合导线测量内业计算方法

闭合及附合导线测量内业计算方法(好东西) 1. 导线方位角计算公式 当β为左角时 α前=α后+β左-180° 当β为右角时 α前=α后-β右+180° 2. 角度闭合差计算 fβ=(α始-α终)+∑β左-n*180° fβ=(α始-α终)-∑β右+n*180° 3. 观测角改正数计算公式 Vβ=±fβ/ n 若观察角为左角,应以与闭合差相反的符合分配角度闭合差,若观察角为右角,应以与闭合差相同的符合分配角度闭合差。 4. 坐标增量闭合差计算 ∑△X=X终-X始 ∑△Y= Y终-Y始 Fx=∑△X测-∑△X FY=∑△Y测-∑△Y 5. 坐标增量改正数计算公式 VX=- Fx/∑D3Di VY=-FY/∑D3Di2 2 所以:∑VX= - Fx ∑VY= - FY 6. 导线全长绝对闭合差 F=SQR(FX^2+FY^2) 7. 导线全长相对闭合差 K=F/∑D=1/∑D/F 8. 坐标增量计算

导线测量的内业方法 本人不才悉心整理出来的望能给同行业人士提供点资料 (一)闭合导线内业计算 已知A点的坐标XA=450.000米,YA=450.000米,导线各边长,各内角和起始边AB的方位角αAB如图所示,试计算B、C、D、E各点的坐标。 1 角度闭合差: 图6—8 闭合导线算例草图 角度的改正数△β为:

2、导线边方位角的推算 BC边的方位角 CD边的方位角 AB边的方位角 右角推算方位角的公式: (校核) 3、坐标增量计算 设D12、α12为已知,则12边的坐标增量为: 4、坐标增量闭合差的计算与调整 因为闭合导线是一闭合多边形,其坐标增量的代数和在理论上应等于零,即: 但由于测定导线边长和观测内角过程中存在误差,所以实际上坐标增量之和往往不等于零而产生一个差值,这个差值称为坐标增量闭合差。分别用表示: 缺口AA′的长度称为导线全长闭合差,以f表示。由图可知: 图6—9 闭合导线全长闭合差 导线相对闭合差。 对于量距导线和测距导线,其导线全长相对闭合差一般不应大于1/2000。

卫星坐标计算实验

《卫星坐标计算实验》 实验报告 专业: 班级: 姓名: 学号: 成绩: 2017年3月20日

一、实验步骤: 1、将星历文件中需要的数据作为矩阵导入MATLAB 中的变量。 2、编写计算程序代码 1)计算平均角速度0n : 0n = 2)改正平角速度n : 0n n n =+? 3)计算平近点角t M : 0()t e M M n t t =+?- 4)通过迭代计算,计算偏近点角t E : sin t t t E M e E =+ 5)计算真近点角ν: =atan cos t t E E e ν- 6)计算升交距角0u : 0u νω=+ 7)计算卫星轨道摄动项改正数: 2cos sin cos sin cos sin u u Cuc Cus r Crc Crs i Cic Cis ????? ?? =??=+?=+?=+ 8)计算改正后的真近点角ν: 0t u u u =+? 9)计算改正后的向径t r : 0t r r r =+? 10)计算改正后的倾角t i : 0()t e i i i i t t =+?+?-

11)计算轨道平面内的坐标: cos sin 0t t t t t t t x r u y r u z ????????=???????????? 12)计算观测瞬间升交点的经度t l : 0()t e e e l l t t t ω=+Ω++ 13)计算旋转矩阵: 1000cos()sin()0sin()cos()x t t t t R i i i i ?? ??=-?????? cos()sin()0sin()cos() 000 1t t z t t l l R l l -????=? ????? 14)卫星坐标: t z x t t X x Y R R y Z z ???? ??? ?=???? ???????? 15)计算钟差: 2 012()()e e t a a t t a t t ?=+?-+?- 二、实现代码: function pos=SPOS(br,dt) GM=+14; we=; %a0 a1 a2 a0=br(1,2); a1=br(1,3); a2=br(1,4); % IODE Crs dn M0 Crs=br(2,2); dn=br(2,3); M0=br(2,4); % Cuc e Cus sqA Cuc=br(3,1); e=br(3,2); Cus=br(3,3); sqA=br(3,4); % toe Cic OM0 Cis toe =br(4,1); Cic =br(4,2); OM0 =br(4,3);

相关文档
最新文档