目录

  • 题目要求
  • 注意事项
  • 代码演示
  • 结果演示
  • 代码分享

题目要求

下面给出的是GPS号卫星在某年某月某日某时的广播星历数据,请根据该广播星历数据计算出某年某月某日某时某分时刻的卫星在地固系中的位置。

注意事项

  • 根据大家的私信和反馈,大多数人拿到代码之后直接打开星历文件打不开,可能是不太懂C#代码,在此说明,这里要用的广播星历数据只能是某一卫星某一时刻的一份数据,要单独从星历文件中复制到一个text文本中,并且保证每两个数据间有空格或Tab,并把所有的D通过text文本的替换功能换成e。具体格式如上图。
  • 很多同学在评论区问我要百度网盘链接,根据CSDN的要求,我在评论区没法发链接,发了过不了审核,可以关注收藏点赞私信我,我会在私信发链接。

代码演示

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace 广播星历计算卫星位置
{public partial class Form1 : Form{public Form1(){InitializeComponent();}double[] M = new double[40];private void button1_Click(object sender, EventArgs e){OpenFileDialog pOpenFileDialog = new OpenFileDialog();pOpenFileDialog.Title = "Selete a File";pOpenFileDialog.FileName = "";pOpenFileDialog.Filter = "Text File(*.txt)|*.txt";if (pOpenFileDialog.ShowDialog() == DialogResult.OK){StreamReader read = new StreamReader(pOpenFileDialog.FileName);string infor1 = read.ReadToEnd();read.Close();string mystring = infor1;string infor = mystring;string[] split = new string[] { " " };string[] arrs = infor.Split(split, StringSplitOptions.RemoveEmptyEntries);for (int i = 0; i < arrs.Length; i++){M[i] = double.Parse(arrs[i]);textBox1.Text += arrs[i] + " ";} }}private void button2_Click(object sender, EventArgs e){//计算时间double t, ty, tmon, td, th, tmin, ts;ty = (double.Parse(textBox2.Text) - M[1]) * 86400 * 30.6001 * 365.25;tmon = (double.Parse(textBox3.Text) - M[2]) * 86400 * 30.6001;td = (double.Parse(textBox4.Text) - M[3]) * 86400;th = (double.Parse(textBox5.Text) - M[4]) * 3600;tmin = (double.Parse(textBox6.Text) - M[5]) * 60;ts = (double.Parse(textBox7.Text) - M[6]);t = M[18] + ty + tmon + td + th + tmin + ts;//计算卫星平均角速度double n, n0;double GM = 3986004.418e008, a;a = Math.Pow(M[17], 2);n0 = Math.Sqrt(GM / (a * a * a));n = n0 + M[12];//计算平近点角double Mk;Mk = M[13] + n * (t - M[18]);//计算偏近点角double Ek, Ek1;Ek = Mk;Ek1 = Ek + M[15] * Math.Sin(Ek);do{Ek = Ek1;Ek1 = Mk + M[15] * Math.Sin(Ek);}while (Math.Abs(Ek1 - Ek) > 1.0e-12);//计算真近点角double Vk;Vk = Math.Atan(((Math.Sqrt(1 - M[15] * M[15])) * Math.Sin(Ek)) / (Math.Cos(Ek) - M[15]));//计算升交角距double ok;ok = Vk + M[24];//计算摄动改正项double ou, or, oi;ou = M[14] * Math.Cos(2 * ok) + M[16] * Math.Sin(2 * ok);or = M[23] * Math.Cos(2 * ok) + M[11] * Math.Sin(2 * ok);oi = M[19] * Math.Cos(2 * ok) + M[21] * Math.Sin(2 * ok);//改正double uk, rk, ik;uk = ok + ou;rk = a * (1 - M[15] * Math.Cos(Ek)) + or;ik = M[22] + oi + M[26] * (t - M[18]);//计算卫星在升交点轨道直角坐标系的坐标double xk, yk;xk = rk * Math.Cos(uk);yk = rk * Math.Sin(uk);//计算升交点经度double xt, we = 7.2921151467e-005;xt = M[20] + (M[25] - we) * (t - M[18]) - we * M[18];//计算卫星在地固坐标系中的空间直角坐标double X, Y, Z;X = xk * Math.Cos(xt) - yk * Math.Cos(ik) * Math.Sin(xt);Y= xk * Math.Sin(xt) + yk * Math.Cos(ik) * Math.Cos(xt);Z = yk * Math.Sin(ik);ListViewItem li = new ListViewItem();string T;T = textBox2.Text + "年" + textBox3.Text + "月" + textBox4.Text + "日" + textBox5.Text + "时" + textBox6.Text + "分" + textBox7.Text + "秒";li.Text = T.ToString();li.SubItems.Add(X.ToString("f3"));li.SubItems.Add(Y.ToString("f3"));li.SubItems.Add(Z.ToString("f3"));listView1.Items.Add(li);}}
}

结果演示

代码分享

链接: CSDN链接
https://download.csdn.net/download/QY1021371614/85092594
如果不能下载请私信博主,博主会尽量第一时间回复

C# 利用卫星星历计算卫星位置相关推荐

  1. 基于卫星星历计算卫星在CGCS2000大地坐标系中的坐标

    目录 一.北斗系统概述 1.空间星座 2.坐标系统 3.时间系统 二.实验目的 三.实验内容 四.实验过程 五.实验结果 一.北斗系统概述 1.空间星座 北斗卫星导航系统简称北斗系统,英文缩写为 BD ...

  2. 【python】读取卫星星历(RENIX 3.04)进行卫星位置的计算(北斗卫星专题)

    最近的卫星导航数据处理,老师让我们进行卫星位置的计算,从而使用绘图工具进行对卫星星下点的轨迹进行绘图,这里首先的步骤是读取卫星星历数据,计算卫星位置. 这次的课程目标主要是针对北斗卫星,进行对卫星位置 ...

  3. 用matlab计算卫星的瞬时位置,用MATLAB计算GPS卫星位置.PDF

    用MATLAB计算GPS卫星位置 高 新 技 术 用MATLAB计算GPS卫星位置 罗利娟 杨乐 (西安翻译学院 陕西西安 710061) 摘 要:本文主要介绍了GPs测量数据的常用格式RINEX标准 ...

  4. python读取导航电文并计算卫星位置

    python简单计算卫星位置 前言 一.思路 总的可分为两个部分:获取导航参数和计算卫星位置. ①获取导航参数:首先讲导航星历中的数据切片,存入csv文件中,再读取csv文件的数据并赋值给各参数 ②计 ...

  5. 用matlab计算卫星的瞬时位置,用MATLAB计算GPS卫星位置

    GPS定位的基本原理简单来说就是在多时候需要把来自不同型号的接收机的RINEX标准文件里不是单一的一个文WGS-84空间直角坐标系中,确定未知点与数据放在一块进行处理,这就需要数据件,而是包括如下几种 ...

  6. matlab计算空间坐标,通过matlab计算卫星位置

    卫星星历是描述卫星运动轨道的信息.也可以说卫星星历就是一组对应某一时刻的轨道参数及其变率.有了卫星星历就可以计算出任意时刻的卫星位置及其速度.GPS卫星星历分为预报星历和后处理星历.预报星历又称广播星 ...

  7. 基于MATLAB计算卫星位置

    matlab卫星定位 认识星历文件观测文件及位置计算 星历文件 观测文件 matlab面对对象卫星位置计算 卫星高度角方位角计算(待更新...) 认识星历文件观测文件及位置计算 初学者,欢迎指正批评. ...

  8. 利用广播星历计算卫星在ECEF下的坐标

    #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <stdlib.h> #include <ma ...

  9. 根据卫星电文计算GPS卫星位置

    n文件提供的轨道参数: PS:需要对文件内容格式做一定修改:D改成E/e,各个数据间以空格隔开 计算步骤参考武汉大学出版的<GPS测量原理及应用>(第四版)的4.3部分. 使用Java编写 ...

  10. 用c++根据轨道六根数计算卫星位置

    轨道六根数是描述卫星轨道的一组参数,包括: 轨道长半径(a):卫星轨道的半径,表示卫星到地球中心的平均距离. 轨道偏心率(e):卫星轨道的偏心率,表示轨道的椭圆程度. 轨道倾角(i):卫星轨道与地球赤 ...

最新文章

  1. Git fetch和git pull的区别
  2. python可视化多个机器学习模型在训练集(train set)上交叉验证(cross validation)的AUC值、可视化模型效能
  3. Windows 编译cython nms
  4. yum安装apache及问题解决
  5. linux子系统led,Linux设备驱动GPIO子系统
  6. java中使用jython_将Jython嵌入到您的Java代码库中
  7. python计算器教程,用Python程序制作一个简单的计算器
  8. docker镜像创建与优化
  9. 专业化分类服务,引领IDC行业发展新模式
  10. 免费PR模板 20个Premiere简单标题文字动画PR模板
  11. 深度学习:卷积神经网络从入门到精通
  12. Exploiting Deep Generative Prior for Versatile Image Restoration and Manipulation
  13. win10 路由虚拟服务器,水星 MW300R V10~V15 设置虚拟服务器操作说明 路由器
  14. STM32开发(2)----CubeMX的安装和使用
  15. 各种后缀名--使用什么软件打开
  16. 谷歌tts使用粤语读出内容
  17. Glide如何加载项目中的图片资源
  18. WORD、WPS中插入公式后行距变大怎么办
  19. Linux操作系统安装及服务控制
  20. 数据分析的标准流程,基本划分为哪几步?

热门文章

  1. 640-802 新版CCNA考试题库下载
  2. 机器视觉运动控制一体机应用例程|芯片引脚缺陷检测系统
  3. 工业面阵相机与源型PLC和漏型PLC外部触发接线
  4. PMP课程笔记:第11章 项目风险管理
  5. 服务器机柜设备信息卡,信息机房标识标准V.doc
  6. r语言如何计算t分布临界值_如何利用R语言进行meta分析—详细教程(2)
  7. 2022联想创新科技大会--智能为变革赋能
  8. python numpy安装失败_python 安装 numpy 教程及错误总结
  9. 安装win10+黑苹果双系统零基础教程
  10. Linux中VI / VIM 常用操作练习