GPS
卫星坐标计算
班级:08测绘一班
姓名:浦绍佼
学号:20080754
实验目的:
卫星坐标计算步骤:
一:计算平均角速度:
n = ;n0=;:由导航文件给出
三:平近点角:
四:偏近点角:+e;(此处进行迭代运算)
五:真近点角:;
七:摄动改正:顾及Ω,I,n的摄动变化以及正弦改正模型的振幅项,;则 升交点角距:
轨道向径:
轨道倾角:
式中:往复锯片为参考时刻的升交角距;
八:改正后的升交角距:
改正后的轨道向径:;
改正后的轨道倾角:;
九:卫星在升交点轨道直角坐标系的坐标:
;:
十:升交点经度:
7.2921151467* rad/s;:升交点赤经变化率;
:GPS周开始时刻的升交点经度;
十一:卫星在地固坐标系的空间直角坐标为:
=R(-)(R(-)
R(-), (R(-)为旋转矩阵,将其代入展开后得:
;
;
具体过程:
一:原始资料(卫星导航文件)
营养块
二:进行必要的界面设计:
电解阳极板
三:编写代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
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;
listView2.Columns.Add("时间", 60, HorizontalAlignment.Center);
listView2.Columns.Add("历元", 55, HorizontalAlignment.Center);
listView2.Columns.Add("X", 115, HorizontalAlignment.Center);
listView2.Columns.Add("Y", 115, HorizontalAlignment.Center);
listView2.Columns.Add("Z", 115, HorizontalAlignment.Center);
listView2.GridLines = true;
listView2.View = View.Details;
listView2.HeaderStyle = ColumnHeaderStyle.Clickable;
listView2.FullRowSelect = true;
}
private void listView1_SelectedIndexChanged(object sender, EventArgs e)
{
}
public void drsj(object sender, EventArgs e)
{
listView1.Items.Clear();
//读取相对路径
string str1 = AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
string filename = str1 + "GPS卫星导航文件.txt ";
//读取卫星广播星历文件
StreamReader readnavigation = new StreamReader(filename, Encoding.Default);
string myinfo = readnavigation.ReadToEnd();
readnavigation.Close();
//把卫星广播星历里的D改为e,以便后续计算
string myinfor = myinfo;
myinfor = myinfor.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++)