GPS卫星坐标计算

合集下载

GPS卫星的坐标计算

GPS卫星的坐标计算

GPS卫星的坐标计算第三章GPS 卫星的坐标计算在⽤GPS 信号进⾏导航定位以及制订观测计划时,都必须已知GPS 卫星在空间的瞬间位置。

卫星位置的计算是根据卫星导航电⽂所提供的轨道参数按⼀定的公式计算的。

3.1卫星运动的轨道参数3.1.1基本概念 1.作⽤在卫星上⼒卫星受的作⽤⼒主要有:地球对卫星的引⼒,太阳、⽉亮对卫星的引⼒,⼤⽓阻⼒,⼤⽓光压,地球潮汐⼒等。

中⼼⼒:假设地球为匀质球体的引⼒(质量集中于球体的中⼼),即地球的中⼼引⼒,它决定卫星运动的基本规律和特征,决定卫星轨道,是分析卫星实际轨道的基础。

此种理想状态时卫星的运动称为⽆摄运动,卫星的轨道称为⽆摄轨道。

摄动⼒:也称⾮中⼼⼒,包括地球⾮球形对称的作⽤⼒、⽇⽉引⼒、⼤⽓阻⼒、⼤⽓光压、地球潮汐⼒等。

摄动⼒使卫星运动产⽣⼀些⼩的附加变化⽽偏离理想轨道,同时这种偏离量的⼤⼩随时间⽽改变。

此种状态时卫星的运动称为受摄运动,卫星的轨道称为受摄轨道。

虽然作⽤在卫星上的⼒很多,但这些⼒的⼤⼩却相差很悬殊。

如果将地球引⼒当作1的话,其它作⽤⼒均⼩于10-5。

2.⼆体问题研究两个质点在万有引⼒作⽤下的运动规律问题称为⼆体问题。

3.卫星轨道和卫星轨道参数卫星在空间运⾏的轨迹称为卫星轨道。

描述卫星轨道状态和位置的参数称为轨道参数。

3.1.2卫星运动的开普勒定律(1)开普勒第⼀定律卫星运⾏的轨道为⼀椭圆,该椭圆的⼀个焦点与地球质⼼重合。

此定律阐明了卫星运⾏轨道的基本形态及其与地⼼的关系。

由万有引⼒定律可得卫星绕地球质⼼运动的轨道⽅程。

r 为卫星的地⼼距离,as 为开普勒椭圆的长半径,es 为开普勒椭圆的偏⼼率;fs 为真近点⾓,它描述了任意时刻卫星在轨道上相对近地点的位置,是时间的函数。

(2)开普勒第⼆定律卫星的地⼼向径在单位时间内所扫过的⾯积相等。

表明卫星在椭圆轨道上的运⾏速度是不断变化的,在近地点处速度最⼤,在远地点处速度最⼩。

近地点远地点ss s s f e e a r cos 1)1(2+-=(3卫星运⾏周期的平⽅与轨道椭圆长半径的⽴⽅之⽐为⼀常量,等于GM 的倒数。

GPS经纬度的表示方法及换算

GPS经纬度的表示方法及换算

想要认识GPS中的经纬度,就必须先了解GPS,知道经纬度的来源:1. GPS系统组成GPS是Gloabal Positioning System 的简称,意为全球定位系统,主要由地面的控制站、天上飞的卫星、咱们手里拿的接收机三大块组成,我们所使用的GPS包括手持机和车载导航机本质上都是GPS接受机。

2. GPS接收机接收机大大小小,千姿百态,有袖珍式、背负式、车载、船载、机载什么的。

一般常见的手持机接收L1信号,还有双频的接收机,做精密定位用的。

3. 坐标系地形图坐标系:我国的地形图采用高斯-克吕格平面直角坐标系。

在该坐标系中,横轴:赤道,用Y表示;纵轴:中央经线,用X表示;坐标原点:中央经线与赤道的交点,用O表示。

赤道以南为负,以北为正;中央经线以东为正,以西为负。

我国位于北半球,故纵坐标均为正值,但为避免中央经度线以西为负值的情况,将坐标纵轴西移500公里。

北京54坐标系:1954年我国在北京设立了大地坐标原点,采用克拉索夫斯基椭球体,依此计算出来的各大地控制点的坐标,称为北京54坐标系。

GS84坐标系:即世界通用的经纬度坐标系。

6度带、3度带、中央经线。

我国采用6度分带和3度分带:1∶2.5万及1∶5万的地形图采用6度分带投影,即经差为6度,从零度子午线开始,自西向东每个经差6度为一投影带,全球共分60个带,用1,2,3,4,5,……表示。

1∶1万的地形图采用3度分带,从东经1.5度的经线开始,每隔3度为一带,用1,2,3,……表示,全球共划分120个投影带4. 经纬度的来源为了精确地表明各地在地球上的位置,人们给地球表面假设了一个坐标系,这就是经纬度线。

那么,最初的经纬度线是怎么产生又是如何测定的呢公元344年,亚历山大渡海南侵,继而东征,随军地理学家尼尔库斯沿途搜索资料,准备绘一幅“世界地图”。

他发现沿着亚历山大东征的路线,由西向东,无论季节变换与日照长短都很相仿。

于是做出了一个重要贡献——第一次在地球上划出了一条纬线,这条线从直布罗陀海峡起,沿着托鲁斯和喜马拉雅山脉一直到太平洋。

GPS卫星坐标计算

GPS卫星坐标计算

GPS卫星坐标计算GPS(全球定位系统)是一种通过地球上的卫星提供位置和时间信息的导航系统。

GPS卫星坐标计算是指根据接收到的卫星信号来确定观测站位于球面上的位置。

GPS系统是由一组位于中轨道上的卫星组成,它们每天绕地球运行两次,以提供全球的覆盖范围。

每个卫星都携带有高精度的原子钟,用来产生精确的时间信号。

GPS接收机位于地面上,它接收到来自多颗卫星的信号,并测量信号的到达时间和卫星位置。

经过计算,接收机可以确定自身的空间坐标。

计算GPS卫星坐标的过程可以分为以下几个步骤:1.接收卫星信号:GPS接收机通过天线接收到来自多颗卫星的信号。

2.测量信号到达时间:接收机测量每个信号的到达时间,这需要精确的时钟。

由于GPS接收机一般没有原子钟那样的高精度时钟,所以需要利用接收到的卫星信号来校准本地时钟。

3.计算卫星位置:GPS接收机需要知道每颗卫星在接收时间点的准确位置。

每颗卫星通过广播自身的位置和时间信息,接收机可以根据接收到的信号来计算卫星的位置。

4.求解距离:接收机通过测量信号到达时间和卫星位置计算出距离。

由于信号的传播速度是已知的大约是光速,我们可以根据距离和到达时间计算出信号的传播时间。

5.根据接收到的信号来计算自身的位置。

接收机通过多个卫星信号的距离来确定自身的位置,这涉及到多种解算方法,例如最小二乘估计等。

接收机需要至少接收到四颗卫星的信号来解算自身的位置。

这些步骤涉及到大量的数学和物理计算,例如测量时间、测量距离、计算坐标等。

为了提高计算的精度,还需要考虑一些因素,例如信号传播时的大气延迟等。

总的来说,GPS卫星坐标计算是一项复杂而精确的工程,涉及到多个步骤和数学模型。

随着技术的不断进步,GPS定位的精度和可靠性也在不断提高,为导航、地球科学等领域的应用提供了重要的支持。

GPS卫星的坐标计算

GPS卫星的坐标计算

第三章GPS 卫星的坐标计算在用GPS 信号进行导航定位以及制订观测计划时,都必须已知GPS 卫星在空间的瞬间位置。

卫星位置的计算是根据卫星导航电文所提供的轨道参数按一定的公式计算的。

3.1卫星运动的轨道参数3.1.1基本概念 1.作用在卫星上力卫星受的作用力主要有:地球对卫星的引力,太阳、月亮对卫星的引力,大气阻力,大气光压,地球潮汐力等。

中心力:假设地球为匀质球体的引力(质量集中于球体的中心),即地球的中心引力,它决定卫星运动的基本规律和特征,决定卫星轨道,是分析卫星实际轨道的基础。

此种理想状态时卫星的运动称为无摄运动,卫星的轨道称为无摄轨道。

摄动力:也称非中心力,包括地球非球形对称的作用力、日月引力、大气阻力、大气光压、地球潮汐力等。

摄动力使卫星运动产生一些小的附加变化而偏离理想轨道,同时这种偏离量的大小随时间而改变。

此种状态时卫星的运动称为受摄运动,卫星的轨道称为受摄轨道。

虽然作用在卫星上的力很多,但这些力的大小却相差很悬殊。

如果将地球引力当作1的话,其它作用力均小于10-5。

2.二体问题研究两个质点在万有引力作用下的运动规律问题称为二体问题。

3.卫星轨道和卫星轨道参数卫星在空间运行的轨迹称为卫星轨道。

描述卫星轨道状态和位置的参数称为轨道参数。

3.1.2卫星运动的开普勒定律 (1)开普勒第一定律卫星运行的轨道为一椭圆,该椭圆的一个焦点与地球质心重合。

此定律阐明了卫星运行轨道的基本形态及其与地心的关系。

由万有引力定律可得卫星绕地球质心运动的轨道方程。

r 为卫星的地心距离,as 为开普勒椭圆的长半径,es 为开普勒椭圆的偏心率;fs 为真近点角,它描述了任意时刻卫星在轨道上相对近地点的位置,是时间的函数。

(2)开普勒第二定律卫星的地心向径在单位时间内所扫过的面积相等。

表明卫星在椭圆轨道上的运行速度是不断变化的,在近地点处速度最大,在远地点处速度最小。

近地点远地点ss s s f e e a r cos 1)1(2+-=(3卫星运行周期的平方与轨道椭圆长半径的立方之比为一常量,等于GM 的倒数。

GPS导航定位原理以及定位解算算法

GPS导航定位原理以及定位解算算法

GPS导航定位原理以及定位解算算法GPS(全球定位系统)是一种基于卫星信号的导航系统,用于确定地球上任意点的位置和时间。

GPS导航定位的原理基于三个基本原则:距离测量、导航电文和定位解算。

首先,定位解算的基本原理是通过测量卫星与接收器之间的距离差异来确定接收器的位置。

GPS接收器接收卫星发射的信号,并测量信号从卫星到接收器的时间延迟。

通过已知卫星位置和测量时间延迟,可以计算出接收器与卫星之间的距离。

至少需要接收到4个卫星信号才能进行定位解算,因为每个卫星提供三个未知数(x、y、z三个坐标)和一个时间未知数。

其次,GPS导航系统通过导航电文提供的卫星轨道参数来计算卫星的精确位置。

每个卫星通过导航电文向接收器传递关于卫星识别码、卫星轨道和钟差等数据。

接收器使用这些参数来计算卫星的准确位置。

最后,通过定位解算算法,将接收器收到的卫星信号和导航电文中的轨道参数进行计算,可以确定接收器的位置。

定位解算算法主要有两种:三角测量法和最小二乘法。

三角测量法基于三角学原理,通过测量多个卫星与接收器之间的距离差异,然后根据这些距离差异以及卫星的位置信息来计算接收器的位置。

这种算法的优势是计算简单,但受到测量误差的影响较大。

最小二乘法是一种数学优化方法,通过最小化接收器位置与测量距离之间的误差平方和来求解接收器的位置。

该方法考虑到了测量误差的影响,并通过对多个卫星信号进行加权以提高解算的准确性。

除了上述的定位解算算法,GPS导航系统还使用了差分GPS和惯性导航等技术来提高定位精度和可靠性。

差分GPS通过接收器与参考站之间的信号比对,消除了大部分的误差,提高了定位精度。

惯性导航通过测量加速度和角速度来估计接收器的位移,可以在信号丢失或弱化的情况下提供连续的导航定位。

综上所述,GPS导航定位通过距离测量、导航电文和定位解算算法来确定接收器的位置。

通过接收到的卫星信号和导航电文中的轨道参数,定位解算算法能够计算出接收器的位置,并提供准确的导航信息。

GPS卫星定位坐标计算及程序设计

GPS卫星定位坐标计算及程序设计

GPS卫星定位坐标计算及程序设计GPS卫星定位是一种利用全球定位系统(GPS)卫星接收并处理信息来确定位置的技术。

它使用三个或更多GPS卫星的信号来计算接收器的位置。

GPS卫星发送包括时间和位置信息的无线电信号,接收器接收这些信号并通过计算信号的传播时间,确定接收器所在的位置。

GPS坐标系统使用经度和纬度来表示地理位置。

经度是指地球上其中一点距离本初子午线(格林尼治子午线)的角度,取值范围为0-180度,东经为正,西经为负。

纬度是指地球上其中一点距离赤道的角度,取值范围为0-90度,北纬为正,南纬为负。

通过计算GPS卫星的信号传播时间,我们可以确定接收器所在位置的经度和纬度,并将其表示为GPS坐标。

要进行GPS卫星定位坐标计算,可以按照以下步骤进行:1.获取GPS卫星信号:使用GPS接收器接收GPS卫星发送的信号。

每个GPS接收器一般都能接收多达24颗卫星的信号。

2.计算信号传播时间:通过记录信号发送和接收的时间差,可以计算出信号从卫星到达接收器的传播时间。

由于信号的传播速度是已知的(约为300,000公里/秒),可以根据传播时间计算出信号传播的距离。

3.确定卫星位置:由于我们知道每个GPS卫星的位置信息,可以根据信号传播距离计算出接收器和每个卫星之间的距离差。

通过多个卫星的距离差,可以确定接收器所在的位置。

4.计算经度和纬度:使用三角函数和数学模型,通过接收器和卫星之间的距离差,可以计算出接收器的经度和纬度。

5.显示位置信息:将计算得到的经度和纬度转换为可读的格式,并显示在GPS接收器或其他设备上。

1.数据传输:首先需要确保GPS接收器能够接收和传输卫星信号的数据。

可以使用串行通信接口(如RS-232)或USB接口,将接收器与计算机或其他设备连接起来。

2.数据接收和处理:编写程序来读取接收器传输的信号数据,包括卫星信号的传播时间、卫星位置信息等。

根据所选的编程语言和平台,可以使用相应的库和函数来实现数据读取和处理的功能。

GPS经纬度的表示方法及换算

GPS经纬度的表示方法及换算

想要认识GPS中的经纬度,就必须先了解GPS,知道经纬度的来源:1. GPS系统组成GPS是Gloabal Positioning System 的简称,意为全球定位系统,主要由地面的控制站、天上飞的卫星、咱们手里拿的接收机三大块组成,我们所使用的GPS包括手持机和车载导航机本质上都是GPS接受机。

2. GPS接收机接收机大大小小,千姿百态,有袖珍式、背负式、车载、船载、机载什么的。

一般常见的手持机接收L1信号,还有双频的接收机,做精密定位用的。

3. 坐标系地形图坐标系:我国的地形图采用高斯-克吕格平面直角坐标系。

在该坐标系中,横轴:赤道,用Y表示;纵轴:中央经线,用X表示;坐标原点:中央经线与赤道的交点,用O表示。

赤道以南为负,以北为正;中央经线以东为正,以西为负。

我国位于北半球,故纵坐标均为正值,但为避免中央经度线以西为负值的情况,将坐标纵轴西移500公里。

北京54坐标系:1954年我国在北京设立了大地坐标原点,采用克拉索夫斯基椭球体,依此计算出来的各大地控制点的坐标,称为北京54坐标系。

GS84坐标系:即世界通用的经纬度坐标系。

6度带、3度带、中央经线。

我国采用6度分带和3度分带:1∶2.5万及1∶5万的地形图采用6度分带投影,即经差为6度,从零度子午线开始,自西向东每个经差6度为一投影带,全球共分60个带,用1,2,3,4,5,……表示。

1∶1万的地形图采用3度分带,从东经1.5度的经线开始,每隔3度为一带,用1,2,3,……表示,全球共划分120个投影带4. 经纬度的来源为了精确地表明各地在地球上的位置,人们给地球表面假设了一个坐标系,这就是经纬度线。

那么,最初的经纬度线是怎么产生又是如何测定的呢公元344年,亚历山大渡海南侵,继而东征,随军地理学家尼尔库斯沿途搜索资料,准备绘一幅“世界地图”。

他发现沿着亚历山大东征的路线,由西向东,无论季节变换与日照长短都很相仿。

于是做出了一个重要贡献——第一次在地球上划出了一条纬线,这条线从直布罗陀海峡起,沿着托鲁斯和喜马拉雅山脉一直到太平洋。

gps原理公式

gps原理公式

gps原理公式全球定位系统(GPS)原理是基于三角测量的方法来确定地球上某个位置的经度、纬度和海拔高度。

其工作原理如下:1. 卫星发射信号:GPS系统由一组地球轨道上的卫星组成,它们向地面发射无线电信号。

这些信号包括卫星的精确时钟信息以及卫星的编号。

2. 接收机接收信号:GPS接收机用天线接收到卫星发射的信号。

接收机将信号转换为电信号,并进行放大和处理。

3. 三角测量测距:接收机同时接收到多颗卫星发射的信号后,根据信号的传播时间差来计算距离。

这是通过衡量信号接收时间和发射时间之间的差异来实现的。

传播时间差越大,距离越远。

4. 数据处理:接收机将接收到的信号和测距数据传输给计算机进行处理。

计算机分析信号传播时间差以及卫星位置信息,使用三角定位算法来计算接收机所在位置的经度、纬度和海拔高度。

5. 定位结果显示:计算机计算出接收机所在位置后,将结果显示在GPS设备的屏幕上,用户可以通过地图或其他导航功能来了解自己的位置和导航方向。

GPS定位公式:根据三角定位算法,可以使用以下公式计算接收机的位置:(x,y,z): 接收机所在位置的直角坐标(t1,t2,t3): 接收到信号的时间差(x1,y1,z1): 第一个卫星的位置坐标(x2,y2,z2): 第二个卫星的位置坐标(x3,y3,z3): 第三个卫星的位置坐标通过上述数据,可以使用以下公式计算接收机的经度和纬度:x = [(t1 - t2) * c * x3 - (t1 - t3) * c * x2] / [2*(x1-x2)*(t1-t3) +2*(x1-x3)*(t1-t2)]y = [(t1 - t2) * c * y3 - (t1 - t3) * c * y2] / [2*(y1-y2)*(t1-t3) +2*(y1-y3)*(t1-t2)]z = [(t1 - t2) * c * z3 - (t1 - t3) * c * z2] / [2*(z1-z2)*(t1-t3) +2*(z1-z3)*(t1-t2)]其中,c为光速。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

卫星定位技术与方法--根据广播星历参数计算卫星坐标作业报告指导教师:***班级:测绘二班学生姓名:***学生学号: 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 coordinates1.平均角速度 (mean angular speed):∆n 由广播星历获得, GM=3.986005e+14n n n ∆+=030a GMn =2.规化时刻(normal time):t0已知(由广播星历获得),t 为GPS 周秒3.平近点角(mean anomaly):M0已知(由广播星历获得)4.偏近点角(eccentric anomaly):迭代求解:初始值取E=M ,以弧度为单位5.真近点角(true anomaly):6.升交距角(argument of ascending node):ω近地点角距(argument of perigee)7. 轨道向径(Orbital radius ):k k t n M M ⋅+=0)cos 1(k k E e a r ⋅-⋅=e E E e V k kk --=cos sin 1arctan 2k k k E e M E sin ⋅+=0t t t k -=ωφ+=k 0V8. 扰动改正(Perturbed correction ):• 升交角距(Argument of ascending node )• • 轨道向径(Orbital radius )• 轨道顷角(Orbital inclination )是升交角距 (the argument of ascending node)9. 改正后升交角距、轨道向径、轨道倾角改正后升交角距(Corrected argument of ascending nod )改正后的轨道向径(Corrected orbital radius)改正后的轨道倾角(Corrected orbital inclination )10.卫星在升交点轨道直角坐标系中的坐标:如下图所示0φ00i 2sin 2cos φφδiS iC C C +=00r 2sin 2cos φφδrS rC C C +=00u 2sin 2cos φφδuS uC C C +=rk k )cosE e 1(a r δ+⋅-⋅=u0k u δφ+=ki 0k t )IDOT (i i ++=δ11. 升交点经度(Longitude of ascending node ):如下图所示12. 在地固坐标系中的卫星位置(Expressed in spheric coordinate system )三. 源程序:using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.IO;using System.Text.RegularExpressions;kk k k k k sinu r y cosu r x ==s/rad 102921151467.7t t )(5-e 0e k e 0t ⨯=--Ω+Ω=ωωωλekk k k k k k k k k i y Z i y x Y i y x sin cos cos sin sin cos cos k k k k k =+=-=X λλλλnamespace Test{public partial class Form1 : Form{public Form1(){InitializeComponent();listView1.Columns.Add("序号", 40);listView1.Columns.Add("星历内容", 130);listView1.Columns.Add("导航数据", 130);listView1.GridLines = true; //显示表格线listView1.View = View.Details;//显示表格细节listView1.HeaderStyle = ColumnHeaderStyle.Clickable;//对表头进行设置listView2.Columns.Add("时间", 60);listView2.Columns.Add("x坐标", 150);listView2.Columns.Add("y坐标", 150);listView2.Columns.Add("z坐标", 150);listView2.GridLines = true; //显示表格线listView2.View = View.Details;//显示表格细节listView2.HeaderStyle = ColumnHeaderStyle.Clickable;//对表头进行设置}private void button1_Click(object sender, EventArgs e){//读取相对路径string str1 =AppDomain.CurrentDomain.SetupInformation.ApplicationBase;string filename = str1 + "navigation data.txt ";//读取卫星广播星历文件StreamReader myreader = new StreamReader(filename, Encoding.Default);string myinfo = myreader.ReadToEnd();myreader.Close();//把卫星广播星历里的D改为e,以便后续计算string mystring = myinfo;string myinfor = mystring;myinfor = mystring.Replace("D", "e");//把数据分开读入到一个数组中存储string[] split = new string[] { " " };string[] arrs = myinfor.Split(split,StringSplitOptions.RemoveEmptyEntries);double[] M = new double[arrs.Length];//星历代码string[] N = new string[arrs.Length];N[0] = "PRN"; N[1] = "Yer"; N[2] = "Mon"; N[3] = "day"; N[4] = "H"; N[5] = "M"; N[6] = "sec"; N[7] = "a0"; N[8] = "a1"; N[9] = "a2"; N[10] = "IODE"; N[11] = "Crs"; N[12] = "delta-n"; N[13] = "M0";N[14] = "Cuc"; N[15] = "e"; N[16] = "Cus"; N[17] = "sqrt(a)"; N[18] = "t0e"; N[19] = "Cic"; N[20] = "omega0"; N[21] = "Cis"; N[22] = "i0"; N[23] = "Crc"; N[24] = "omega"; N[25] = "omega-spot";N[26] = "IDOT"; N[27] = "Codes on L2 channel"; N[28] = "GPS Week"; N[29] = "L2 P data flag";N[30] = "SV accuracy"; N[31] = "SV health"; N[32] = "TGD"; N[33] = "IODC Issue of Data";N[34] = "Transmission time of message";//把卫星广播星历读入到数组中for (int i = 0; i < arrs.Length; i++){ListViewItem li = new ListViewItem();li.Text = (i + 1).ToString();li.SubItems.Add(N[i]);li.SubItems.Add(arrs[i]);listView1.Items.Add(li);M[i] = double.Parse(arrs[i]);}double t0e=460800.00;double t;double[] XK = new double[21];double[] YK = new double[21];double[] ZK = new double[21];for (int l = 0; l < 21;l++ ){//计算平均角速度double GM = 3986004.418e008;double n, n0;n0 = Math.Sqrt(GM / (Math.Pow(M[17], 6)));n = M[12] + n0;//规划时刻t=t0e+l*60;double tk = t-t0e;double Mk = M[13] + n * tk;// 迭代计算平近点角的计算double Ek, Ek1;Ek = Mk;Ek1 = Mk + M[15] * Math.Sin(Ek);do{Ek = Ek1;Ek1 = Mk + M[15] * Math.Sin(Ek);}while (Math.Abs(Ek1 - Ek) > 1e-15);//计算真近点角double Vk = Math.Atan(((Math.Sqrt(1 - M[15] * M[15]) * Math.Sin(Ek))) / (Math.Cos(Ek) - M[15]));//反正切值的象限处理double A1 = Math.Atan(((Math.Sqrt(1 - M[15] * M[15]) * Math.Sin(Ek))));double A2 = Math.Cos(Ek) - M[15];if (Vk < 0){if (A1 < 0 && A2 > 0){Vk += 2 * Math.PI;}if (A1 > 0 && A2 < 0){Vk += Math.PI;}}else{if (A1 <= 0 && A2 <= 0)Vk = Vk + Math.PI;}//计算升交角距double fk = Vk + M[24];//摄动改正值的计算double du = M[14] * Math.Cos(2 * fk) + M[16] * Math.Sin(2 * fk);double dr = M[23] * Math.Cos(2 * fk) + M[11] * Math.Sin(2 * fk);double di = M[19] * Math.Cos(2 * fk) + M[21] * Math.Sin(2 * fk);//摄动改正double uk = fk + du;double rk = Math.Pow(M[17], 2) * (1 - M[15] * Math.Cos(Ek))+ dr;double ik = M[22] + di + M[26] * tk;//计算卫星在升交点轨道直角坐标系的坐标double xk = rk * Math.Cos(uk);double yk = rk * Math.Sin(uk);//计算升交点经度double we = 7.2921151467e-05;double jdt = M[20] + (M[25] - we) * tk - we * M[18];//卫星在地固坐标系中的空间直角坐标XK[l] = xk * Math.Cos(jdt) - yk * Math.Cos(ik) * Math.Sin(jdt);YK[l] = xk * Math.Sin(jdt) + yk * Math.Cos(ik) * Math.Cos(jdt);ZK[l] = yk * Math.Sin(ik);}//输出卫星在地固坐标系中的空间直角坐标for (int i = 0; i < 21; i++){ListViewItem list = new ListViewItem();list.Text = "第" + i.ToString() + "分钟";list.SubItems.Add(XK[i].ToString());list.SubItems.Add(YK[i].ToString());list.SubItems.Add(ZK[i].ToString());listView2.Items.Add(list);}}private void button2_Click(object sender, EventArgs e) {//读取相对路径string str1 =AppDomain.CurrentDomain.SetupInformation.ApplicationBase;string filename = str1 + "navigation data.txt ";//读取卫星广播星历文件StreamReader myreader = new StreamReader(filename, Encoding.Default);string myinfo = myreader.ReadToEnd();myreader.Close();//把卫星广播星历里的D改为e,以便后续计算string mystring = myinfo;string myinfor = mystring;myinfor = mystring.Replace("D", "e");//把数据分开读入到一个数组中存储string[] split = new string[] { " " };string[] arrs = myinfor.Split(split, StringSplitOptions.RemoveEmptyEntries);//星历代码string[] N = new string[arrs.Length];N[0] = "PRN"; N[1] = "Yer"; N[2] = "Mon"; N[3] = "day"; N[4] = "H"; N[5] = "M"; N[6] = "sec"; N[7] = "a0"; N[8] = "a1"; N[9] = "a2"; N[10] = "IODE"; N[11] = "Crs"; N[12] = "delta-n"; N[13] = "M0";N[14] = "Cuc"; N[15] = "e"; N[16] = "Cus"; N[17] = "sqrt(a)"; N[18] = "t0e"; N[19] = "Cic"; N[20] = "omega0"; N[21] = "Cis"; N[22] = "i0"; N[23] = "Crc"; N[24] = "omega"; N[25] = "omega-spot";N[26] = "IDOT"; N[27] = "Codes on L2 channel"; N[28] = "GPS Week"; N[29] = "L2 P data flag";N[30] = "SV accuracy"; N[31] = "SV health"; N[32] = "TGD"; N[33] = "IODC Issue of Data";N[34] = "Transmission time of message";//把卫星广播星历文件内容输出到listView进行查看for (int i = 0; i < arrs.Length; i++){ListViewItem li = new ListViewItem();li.Text = (i + 1).ToString();li.SubItems.Add(N[i]);li.SubItems.Add(arrs[i]);listView1.Items.Add(li);}}}}四.程序运行结果:星历内容的读取、显示:卫星坐标计算结果:运行界面:作业体会:此次作业,收获颇多。

相关文档
最新文档