通过广播星历文件计算过卫星的轨迹并与精密星历作比较,计算残差并绘图,具体效果参看下图。

// 全局变量
public static class SystemConstant
{public static double omegae = 7.2921151467e-5;  //地球自转角速度public static double mu = 3.986005e14; //地球引力常数
}//精密星历Reader
using System;
using System.Collections.Generic;
using UnityEngine;
using System.IO;
public class PrecisionEphemerisReader
{public PrecisionEphemerisReader(int headline=22){FileHeadLine = headline;}private int FileHeadLine;/// <summary>/// 加载精密星历文件/// </summary>public PrecisionEphemerisFile LoadPrecisionEphemerisFile(string Path){PrecisionEphemerisFile PrecisionEphemerisFile = new PrecisionEphemerisFile();using (StreamReader reader = File.OpenText(Path)){//加载文件头{PrecisionEphemerisFile.FileHead.Clear(); //清空数据for (int i = 0; i < FileHeadLine; i++){PrecisionEphemerisFile.FileHead.Add(reader.ReadLine());}while (true){string value = reader.ReadLine();if (value != "EOF"){PrecisionEphemerisModle modle = new PrecisionEphemerisModle();modle.TimeStamp = ResloveTimeStamp(value);// Debug.Log(ResloveTimeStamp(value).ToString());for (int i = 0; i < 32; i++){SatelliteInfo info = ResolveSatelliteInfo(reader.ReadLine());modle.SatelliteInfos.Add(info);// Debug.Log(info.LogSatelliteInfo()); }PrecisionEphemerisFile.Modles.Add(modle);}else{break;}}return PrecisionEphemerisFile;}}/// <summary>/// 解析时间戳/// </summary>/// <param name="info"></param>/// <returns></returns>private DateTime ResloveTimeStamp(string info){string[] infos = info.Split(new string[] {" "}, StringSplitOptions.RemoveEmptyEntries);int year = int.Parse(infos[1]);int mouth = int.Parse(infos[2]);int day = int.Parse(infos[3]);int hour = int.Parse(infos[4]);int minnute = int.Parse(infos[5]);//Int32 seconds=Int32.Parse(infos[6]);;return new DateTime(year, mouth, day, hour, minnute, 0);}/// <summary>/// 解析卫星信息/// </summary>/// <param name="info"></param>/// <returns></returns>private SatelliteInfo ResolveSatelliteInfo(string info){string[] infos = info.Split(new string[] {" "}, StringSplitOptions.RemoveEmptyEntries);if (infos.Length == 9){SatelliteInfo m_SatelliteInfo=new SatelliteInfo();m_SatelliteInfo.SatelliteID = infos[0];m_SatelliteInfo.X_Coordinate =double.Parse(infos[1])*1000;m_SatelliteInfo.Y_Coordinate =double.Parse(infos[2])*1000;m_SatelliteInfo.Z_Coordinate =double.Parse(infos[3])*1000;m_SatelliteInfo.Clock_Microsec =double.Parse(infos[4]);m_SatelliteInfo.X_sdev =int.Parse(infos[5]);m_SatelliteInfo.Y_sdev =int.Parse(infos[6]);m_SatelliteInfo.Z_sdev =int.Parse(infos[7]);m_SatelliteInfo.C_sdev = int.Parse(infos[8]);return m_SatelliteInfo;} if(infos.Length == 5){SatelliteInfo m_SatelliteInfo=new SatelliteInfo();m_SatelliteInfo.SatelliteID = infos[0];m_SatelliteInfo.X_Coordinate =double.Parse(infos[1])*1000;m_SatelliteInfo.Y_Coordinate =double.Parse(infos[2])*1000;m_SatelliteInfo.Z_Coordinate =double.Parse(infos[3])*1000;m_SatelliteInfo.Clock_Microsec =double.Parse(infos[4]);return m_SatelliteInfo;}return new SatelliteInfo();}
}public class PrecisionEphemerisFile
{public List<string> FileHead = new List<string>();public List<PrecisionEphemerisModle> Modles = new List<PrecisionEphemerisModle>();/// <summary>/// 返回头文件的字符串/// </summary>/// <returns></returns>public string FileHeadInfo(){if (FileHead.Count > 0){string temp = String.Empty;foreach (var item in FileHead){temp = temp + item + "\r\n";}return temp;}else{return "没有文件头信息";}}public string ContentInfo(){if (Modles.Count>0){string temp = string.Empty;foreach (var item in Modles){temp = temp + item.TimeStamp + "\r\n";temp = temp + item.LogInfos() + "\r\n";}return temp;}else{return "数据为空";}}
}public class PrecisionEphemerisModle
{public DateTime TimeStamp = new DateTime();public List<SatelliteInfo> SatelliteInfos = new List<SatelliteInfo>();public string LogInfos(){string temp=String.Empty;foreach (var item in SatelliteInfos){temp = temp + item.LogSatelliteInfo()+"\r\n";}return temp;}
}public class SatelliteInfo
{public string SatelliteID=String.Empty;public double X_Coordinate;public double Y_Coordinate;public double Z_Coordinate;public double Clock_Microsec;public int X_sdev;public int Y_sdev;public int Z_sdev;public int C_sdev;public string LogSatelliteInfo(){if (SatelliteID != String.Empty){return String.Format("卫星ID:{0}; X坐标:{1},Y坐标:{2}, Z坐标:{3}, Clock_Microsec:{4},X_sdev:{5},Y_sdev:{6},Z_sdev:{7},C_sdev:{8} ",SatelliteID,X_Coordinate,Y_Coordinate,Z_Coordinate,Clock_Microsec,X_sdev,Y_sdev,Z_sdev,C_sdev);}return "卫星信息为空";}
}//广播星历Reader
using System;
using System.Collections.Generic;
using System.IO;
using UnityEngine;public class BroadcastEphemerisReader
{public BroadcastEphemerisReader(int fileHeadLine=8){FileHeadLine = fileHeadLine;}private int FileHeadLine ;public BroadcaseEphemerisFile LoadBroadcastEphemerisFile( string Path){BroadcaseEphemerisFile m_BroadcaseEphemerisFile=new BroadcaseEphemerisFile();using (StreamReader reader = File.OpenText(Path)){//读文件头for (int i = 0; i < FileHeadLine; i++){string temp = reader.ReadLine();m_BroadcaseEphemerisFile.FileHead.Add(temp);}int lineNum = 8;while (true){string temp01=reader.ReadLine();if (temp01!=null){lineNum += 8;/** 处理第一行数据*///雷达编号BroadcaseEphemerisModle modle=new BroadcaseEphemerisModle();modle.SatelliteID = int.Parse(temp01.Substring(0, 2));//时间戳string[] infos = temp01.Substring(2,20).Split(new string[] {" "}, StringSplitOptions.RemoveEmptyEntries);modle.TimeStamp=new DateTime(int.Parse(infos[0])+2000,int.Parse(infos[1]),int.Parse(infos[2]),int.Parse(infos[3]),int.Parse(infos[4]),(int)float.Parse(infos[5]));//卫星时钟的偏移  毫秒modle.卫星时钟的偏移=Double.Parse(temp01.Substring(22, 19));//卫星时钟的漂移modle.卫星时钟的漂移=Double.Parse(temp01.Substring(41, 19));//卫星时钟的漂移速度modle.卫星时钟的漂移速度=Double.Parse(temp01.Substring(60, 19));/** 处理第二行数据*/string temp02= reader.ReadLine();modle.IODE = Double.Parse(temp02.Substring(3, 19));modle.Crs = Double.Parse(temp02.Substring(22, 19));modle.Delta_R = Double.Parse(temp02.Substring(41, 19));modle.Mo = Double.Parse(temp02.Substring(60, 19));/** 处理第三行数据*/string temp03= reader.ReadLine();modle.Cuc=Double.Parse(temp03.Substring(3, 19));modle.e = Double.Parse(temp03.Substring(22, 19));modle.Cus=Double.Parse(temp03.Substring(41, 19));modle.根号a=Double.Parse(temp03.Substring(60, 19));/** 处理第四行数据*/string temp04= reader.ReadLine();modle.Toe=Double.Parse(temp04.Substring(3, 19));modle.Cic= Double.Parse(temp04.Substring(22, 19));modle.OUo=Double.Parse(temp04.Substring(41, 19));modle.Cis=Double.Parse(temp04.Substring(60, 19));/** 处理第五行数据*/string temp05= reader.ReadLine();modle.I0=Double.Parse(temp05.Substring(3, 19));modle.Crc= Double.Parse(temp05.Substring(22, 19));modle.w=Double.Parse(temp05.Substring(41, 19));modle.OU=Double.Parse(temp05.Substring(60, 19));/** 处理第六行数据*/string temp06= reader.ReadLine();modle.I=Double.Parse(temp06.Substring(3, 19));modle.L2上的码= Double.Parse(temp06.Substring(22, 19));modle.GPS周数=Double.Parse(temp06.Substring(41, 19));modle.L2码数据标记=Double.Parse(temp06.Substring(60, 19));/** 处理第七行数据*/string temp07= reader.ReadLine();modle.卫星精度=Double.Parse(temp07.Substring(3, 19));modle.卫星健康= Double.Parse(temp07.Substring(22, 19));modle.Tgd=Double.Parse(temp07.Substring(41, 19));modle.IODC=Double.Parse(temp07.Substring(60, 19));/** 处理第八行数据*/string temp08= reader.ReadLine();modle.电文发送时刻=Double.Parse(temp08.Substring(3, 19));modle.拟合区间= Double.Parse(temp08.Substring(22, 19));modle.Unuse01=Double.Parse(temp08.Substring(41, 19));modle.Unuse02=Double.Parse(temp08.Substring(60, 19));// Debug.Log(modle.LogBroadcaseEphemerisModle());m_BroadcaseEphemerisFile.modles.Add(modle);}else{break;}}return m_BroadcaseEphemerisFile;}}
}public class BroadcaseEphemerisFile
{public List<string> FileHead=new List<string>();public List<BroadcaseEphemerisModle> modles=new List<BroadcaseEphemerisModle>();//public public string LogFileHead(){if (FileHead.Count > 0){string temp=String.Empty;foreach (var item in FileHead){temp = temp + item + "\r\n";}return temp;}return "文件头为空";}
}public class BroadcaseEphemerisModle
{public string LogBroadcaseEphemerisModle(){return String.Format("卫星编号:{0},时间戳:{1},卫星时钟的偏移:{2},卫星时钟的漂移:{3},卫星时钟的漂移速度:{4},IODE:{5},Crs:{6},Delta_R:{7}," +"Mo:{8},Cuc:{9}, e:{10}, Cus:{11}, 根号a:{12}, Toe:{13}, Cic:{14}, OUo:{15}, Cis:{16}, I0:{17}, Crc:{18}, w:{19}, OU:{20}, I:{21}, L2上的码:{22}, GPS周数:{23}, L2码数据标记:{24}," +"卫星精度:{25}, 卫星健康:{26}, Tgd:{27}, IODC:{28}, 电文发送时刻:{29}, 拟合区间:{30}, Unuse01:{31}, Unuse02:{32}" , SatelliteID,TimeStamp,卫星时钟的偏移,卫星时钟的漂移,卫星时钟的漂移速度,IODE,Crs,Delta_R,Mo,Cuc,e,Cus,根号a,Toe,Cic,OUo,Cis,I0,Crc,w,OU,I,L2上的码,GPS周数,L2码数据标记,卫星精度,卫星健康,Tgd,IODC,电文发送时刻,拟合区间,Unuse01,Unuse02);}public int SatelliteID;public DateTime TimeStamp;public double 卫星时钟的偏移;public double 卫星时钟的漂移;public double 卫星时钟的漂移速度;public double IODE;public double Crs;public double Delta_R;public double Mo;public double Cuc;public double e;public double Cus;public double 根号a;public double Toe;public double Cic;public double OUo;public double Cis;public double I0;public double Crc;public double w;public double OU;public double I;public double L2上的码;public double GPS周数;public double L2码数据标记;public double 卫星精度;public double 卫星健康;public double Tgd;public double IODC;public double 电文发送时刻;public double 拟合区间;public double Unuse01;public double Unuse02;
}//主程序
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using UnityEngine;
using UnityEngine.UI;
using XCharts;
using Application = UnityEngine.Application;
using Button = UnityEngine.UI.Button;public class RootMsg : MonoBehaviour
{private int ID = 1;private static Text m_text;private LineChart PrecisionEphemerisChart;private LineChart BroadcaseEphemerisChart;private LineChart ResidualChart;private Dropdown SateliteID;private Button Btn_PrecisionImg;private Button Btn_BroadcaseImg;private Button Btn_ResidualImg;private string bPath=String.Empty;private string pPath=String.Empty;public PrecisionEphemerisFile m_PrecisionEphemerisFile=new PrecisionEphemerisFile();public BroadcaseEphemerisFile m_BroadcaseEphemerisFile=new BroadcaseEphemerisFile();//private string bPath=@"D:\Users\30721\Desktop\广播星历源码及PPT-曹勃杨\广播星历源码及PPT-曹勃杨\brdc0010.20n";//private string pPath=@"D:\Users\30721\Desktop\广播星历源码及PPT-曹勃杨\广播星历源码及PPT-曹勃杨\igs20863.sp3";private List<double> PrecisionEphemerisPos_X=new List<double>();private List<double> PrecisionEphemerisPos_Y=new List<double>();private List<double> PrecisionEphemerisPos_Z=new List<double>();private List<double> BroadcaseEphemerisPos_X=new List<double>();private List<double> BroadcaseEphemerisPos_Y=new List<double>();private List<double> BroadcaseEphemerisPos_Z=new List<double>();private List<double> ResidualPos_X = new List<double>();private List<double> ResidualPos_Y=new List<double>();private List<double> ResidualPos_Z=new List<double>();/// <summary>/// 获取广播星历文件路径/// </summary>public void GetBroadcastEphemerPath(){bPath=String.Empty;OpenFileDialog dialog = new OpenFileDialog();dialog.InitialDirectory = "D:\\";  if (dialog.ShowDialog() == DialogResult.OK){bPath = dialog.FileName;LogInfo(String.Format("广播星历文件路径:{0}",bPath));}}/// <summary>/// 获取精密星历文件路径/// </summary>public void GetPrecisionEphemerPath(){pPath=String.Empty;OpenFileDialog dialog = new OpenFileDialog();dialog.InitialDirectory = "D:\\";  if (dialog.ShowDialog() == DialogResult.OK){pPath = dialog.FileName;LogInfo(String.Format("精密星历文件路径:{0}",pPath));}}/// <summary>/// 加载星历/// </summary>public void LoadFile(){if (bPath != String.Empty && pPath != String.Empty){m_PrecisionEphemerisFile= new PrecisionEphemerisReader().LoadPrecisionEphemerisFile(pPath);m_BroadcaseEphemerisFile=new BroadcastEphemerisReader().LoadBroadcastEphemerisFile(bPath);LogInfo(string.Format("精密星历加载文件{0}组,广播星历加载文件{1}组",m_PrecisionEphemerisFile.Modles.Count,m_BroadcaseEphemerisFile.modles.Count));}else{LogInfo("需要先选择星历路径");}}/// <summary>/// 绘制精密星历图像/// </summary>public void PrecisionEphemerisImage(){PrecisionEphemerisChart.gameObject.SetActive(true);BroadcaseEphemerisChart.gameObject.SetActive(false);ResidualChart.gameObject.SetActive(false);PrecisionEphemerisChart.title.text = string.Format("{0}号卫星精密星历图", ID);for (int i = 0; i < 24; i++){PrecisionEphemerisChart.UpdateData("X", i, (float) PrecisionEphemerisPos_X[i]);PrecisionEphemerisChart.UpdateData("Y", i, (float) PrecisionEphemerisPos_Y[i]);PrecisionEphemerisChart.UpdateData("Z", i, (float) PrecisionEphemerisPos_Z[i]);}}/// <summary>/// 绘制广播星历图像/// </summary>public void BroadcaseEphemerisImage(){PrecisionEphemerisChart.gameObject.SetActive(false);BroadcaseEphemerisChart.gameObject.SetActive(true);ResidualChart.gameObject.SetActive(false);BroadcaseEphemerisChart.title.text = string.Format("{0}号卫星广播星历图", ID);for (int i = 0; i < 24; i++){BroadcaseEphemerisChart.UpdateData("X", i, (float) BroadcaseEphemerisPos_X[i]);BroadcaseEphemerisChart.UpdateData("Y", i, (float) BroadcaseEphemerisPos_Y[i]);BroadcaseEphemerisChart.UpdateData("Z", i, (float) BroadcaseEphemerisPos_Z[i]);}}/// <summary>/// 绘制残差图像/// </summary>public void ResidualImage(){   PrecisionEphemerisChart.gameObject.SetActive(false);BroadcaseEphemerisChart.gameObject.SetActive(false);ResidualChart.gameObject.SetActive(true);ResidualChart.title.text = string.Format("{0}号卫星残差图", ID);for (int i = 0; i < 7; i++){ResidualChart.UpdateData("X", i, (float) ResidualPos_X[i]);ResidualChart.UpdateData("Y", i, (float) ResidualPos_Y[i]);ResidualChart.UpdateData("Z", i, (float) ResidualPos_Z[i]);}}/// <summary>/// 选择卫星ID/// </summary>public void SelectSatelite(){ID = int.Parse(SateliteID.captionText.text);LogInfo("卫星编号:"+ID);}/// <summary>/// 数据处理/// </summary>public void CalculateDraw(){if (m_BroadcaseEphemerisFile.FileHead.Count == 0){LogInfo("请先加载文件");return;}ProcessPrecisionEphemeris();ProcessBroadcaseEphemeris();ProvessResidualEphemeris();Btn_BroadcaseImg.interactable = true;Btn_PrecisionImg.interactable = true;Btn_ResidualImg.interactable = true;}/// <summary>/// 处理精密星历数据/// </summary>private void ProcessPrecisionEphemeris(){List<PrecisionEphemerisModle> temp=new List<PrecisionEphemerisModle>();for (int i = 0; i < 24; i++){temp.Add(m_PrecisionEphemerisFile.Modles[i*4]);}List<double> result_X=new List<double>();List<double> result_Y=new List<double>();List<double> result_Z=new List<double>();foreach (var item in temp){result_X.Add(item.SatelliteInfos[ID-1].X_Coordinate);result_Y.Add(item.SatelliteInfos[ID-1].Y_Coordinate);result_Z.Add(item.SatelliteInfos[ID-1].Z_Coordinate);}PrecisionEphemerisPos_X = result_X;PrecisionEphemerisPos_Y = result_Y;PrecisionEphemerisPos_Z = result_Z;}/// <summary>/// 处理广播星历数据/// </summary>private void ProcessBroadcaseEphemeris(){List<BroadcaseEphemerisModle> modles =m_BroadcaseEphemerisFile.modles.FindAll((modle => modle.SatelliteID == ID));CalculatePos(modles);}private void  CalculatePos(List<BroadcaseEphemerisModle> modles){List<double> result_X=new List<double>();List<double> result_Y=new List<double>();List<double> result_Z=new List<double>();for (int i = 0; i < 24; i++){DateTime time=new DateTime(modles[0].TimeStamp.Year,modles[0].TimeStamp.Month,modles[0].TimeStamp.Day,i,0,0);BroadcaseEphemerisModle modle = modles[0];TimeSpan span = time - modles[0].TimeStamp;double second = Math.Abs(span.TotalSeconds);foreach (var item in modles){TimeSpan span01 = time - item.TimeStamp;double second01 = Math.Abs(span01.TotalSeconds);if (second > second01){modle = item;second = second01;}}//Debug.LogFormat("最接近{0}的时刻是{1}",time,modle.TimeStamp);//卫星的平均角速度double tk = (time - modle.TimeStamp).TotalSeconds;double A = Math.Pow(modle.根号a, 2);double n0=Math.Sqrt(SystemConstant.mu/Math.Pow(A,3));double n = n0 + modle.Delta_R * tk; //平近点角(迭代法)double Mk = modle.Mo + n * tk;if (Mk < 0){Mk += 2 * Math.PI;}if (Mk > 2 * Math.PI){Mk -= 2 * Math.PI;}//偏近点角double Eold = Mk;double Enew = Mk+modle.e*Math.Sin(Eold);int j = 1;while (Math.Abs(Enew-Eold)>1e-8){Eold = Enew;Enew = Mk+modle.e*Math.Sin(Eold);j += 1;if (j > 10){break;}}double EK = Enew;// 真近点角double cosNuk=(Math.Cos(EK)-modle.e)/(1-modle.e*Math.Cos(EK));double sinNuk = (Math.Sqrt(1 - Math.Pow(modle.e, 2))*Math.Sin(EK))/(1-modle.e*Math.Cos(EK));double NK = Math.Atan(sinNuk / cosNuk);//结局真近点角象限不同出现的取值异常情况if (cosNuk < 0){NK += Math.PI;}//升交点角距double PK = NK + modle.w;double deltauk = modle.Cus * Math.Sin(2 * PK) + modle.Cuc * Math.Cos(2 * PK);double deltark = modle.Crs * Math.Sin(2 * PK) + modle.Crc * Math.Cos(2 * PK);double deltaik = modle.Cis * Math.Sin(2 * PK) + modle.Cic * Math.Cos(2 * PK);//摄动改正后升交点角距、卫星矢径长度、轨道倾角double uk = PK + deltauk;double rk = A * (1 - modle.e * Math.Cos(EK)) + deltark;double ik = modle.I0 + modle.I * tk + deltaik;//极坐标转化为直角坐标double x1k = rk * Math.Cos(uk);double y1k= rk * Math.Sin(uk);//升交点赤经double omegak = modle.OUo + (modle.OU - SystemConstant.omegae) * tk - SystemConstant.omegae * modle.Toe;//最终WGS84坐标double x = x1k * Math.Cos(omegak) - y1k * Math.Cos(ik) * Math.Sin(omegak);double y = x1k * Math.Sin(omegak) + y1k * Math.Cos(ik) * Math.Cos(omegak);double z = y1k * Math.Sin(ik);result_X.Add(x);result_Y.Add(y);result_Z.Add(z);}BroadcaseEphemerisPos_X = result_X;BroadcaseEphemerisPos_Y = result_Y;BroadcaseEphemerisPos_Z = result_Z;}/// <summary>/// 处理残差数据/// </summary>private void ProvessResidualEphemeris(){ResidualPos_X.Clear();ResidualPos_Y.Clear();ResidualPos_Z.Clear();for (int i = 0; i < 14; i+=2){ResidualPos_X.Add(PrecisionEphemerisPos_X[i] - BroadcaseEphemerisPos_X[i]);ResidualPos_Y.Add(PrecisionEphemerisPos_Y[i] - BroadcaseEphemerisPos_Y[i]);ResidualPos_Z.Add(PrecisionEphemerisPos_Z[i] - BroadcaseEphemerisPos_Z[i]);}}/// <summary>/// 清空数据/// </summary>public void ClearData(){PrecisionEphemerisPos_X.Clear();PrecisionEphemerisPos_X.Clear();PrecisionEphemerisPos_X.Clear();PrecisionEphemerisPos_X.Clear();PrecisionEphemerisPos_X.Clear();PrecisionEphemerisPos_X.Clear();PrecisionEphemerisPos_X.Clear();PrecisionEphemerisPos_X.Clear();PrecisionEphemerisPos_X.Clear();Btn_BroadcaseImg.interactable = false;Btn_PrecisionImg.interactable = false;Btn_ResidualImg.interactable = false;PrecisionEphemerisChart.gameObject.SetActive(false);BroadcaseEphemerisChart.gameObject.SetActive(false);ResidualChart.gameObject.SetActive(false);}/// <summary>/// 程序退出/// </summary>public void QuitApp(){Application.Quit();}/// <summary>/// 程序开始/// </summary>void Start(){m_text = GameObject.Find("InfoTip").GetComponent<Text>();PrecisionEphemerisChart= GameObject.Find("PrecisionEphemerisChart").GetComponent<LineChart>();BroadcaseEphemerisChart= GameObject.Find("BroadcaseEphemerisChart").GetComponent<LineChart>();ResidualChart= GameObject.Find("ResidualChart").GetComponent<LineChart>();PrecisionEphemerisChart.gameObject.SetActive(false);BroadcaseEphemerisChart.gameObject.SetActive(false);ResidualChart.gameObject.SetActive(false);SateliteID = GameObject.Find("SatelliteID").GetComponent<Dropdown>();Btn_BroadcaseImg= GameObject.Find("广播星历图像").GetComponent<Button>();Btn_PrecisionImg= GameObject.Find("精密星历图像").GetComponent<Button>();Btn_ResidualImg= GameObject.Find("残差图").GetComponent<Button>();Btn_BroadcaseImg.interactable = false;Btn_PrecisionImg.interactable = false;Btn_ResidualImg.interactable = false;}/// <summary>/// log日志/// </summary>/// <param name="info"></param>public static void LogInfo(string info){m_text.text = info;}
}

Unity3D 广播星历与精密星历相关推荐

  1. 广播星历/精密星历、IGS/iGMAS、BDS/GPS/GLONASS/Galileo

    广播星历和精密星历说明: IGS和iGMAS说明: BDS系统组成/GPS组成/GLONASS系统组成/Galileo系统组成:

  2. 学术交流丨魏子卿院士:北斗坐标系

    来源:微信公众号中国测绘学会 引文格式:魏子卿, 吴富梅, 刘光明. 北斗坐标系[J]. 测绘学报,2019,48(7):805-809. DOI: 10.11947/j.AGCS.2019.2019 ...

  3. 获取行信息_论文推荐 | 周乐韬,黄丁发,袁林果,等:基于状态和残差的北斗基准站观测数据表达与信息分级...

    <测绘学报> 构建与学术的桥梁 拉近与权威的距离 复制链接,关注<测绘学报>抖音! [测绘学报的个人主页]长按复制此条消息,长按复制打开抖音查看TA的更多作品##7NsBSyn ...

  4. 论文阅读《Characterizing BDS signal-in-space performance from integrity perspective》3

    目录 6 结论 附录A 附录B 附录C 6 结论 本文从完好性的角度对北斗二号和北斗三号系统的SIS性能进行了描述.利用新提出的SISRE评价方案,分析了2016年至2020年年中4.5年的北斗二代数 ...

  5. 论文阅读《Characterizing BDS signal-in-space performance from integrity perspective》1

    目录 摘要 1 介绍 2 数据集和SISRE评价方法 2.1 数据集和数据清理 2.2 时间,坐标和修正 2.3 星历状态:数据年限.URA索引和健康标志 2.4 空间信号测距误差(SISRE)计算 ...

  6. GNSS中DCB的使用

    GNSS中DCB的使用 DCB DCB(Different Code Bias)是由卫星或接收机硬件延迟的影响造成的.不同信号的传播时间并不一致,因此不同信号对应的卫星钟差和接收机钟差是不同的.通常接 ...

  7. Gamit10.6基线解算和网平差

    文章目录 一.解算说明与数据准备 二.数据处理与配置 1.解算工作目录创建 2.解算配置 三.数据解算 四.网平差 1.创建工作目录和参数配置 2.网平差解算 一.解算说明与数据准备 所用系统:Cen ...

  8. GNSS TGD/DCB改正模型

    引言 GNSS中的硬件延迟是指不同类型的导航信号在卫星和接收机端不同通道产生的时间延迟不一致.上述不一致造成的差异通常被定义为码偏差(对测距码即伪距产生影响).DCB包括卫星端码偏差和接收机端码偏差, ...

  9. GAMIT/GLOBK 10.71处理GNSS/GPS数据入门介绍及简单应用(视频教程)

    最新版本(10.71)的gamit/globk讲解,从最基础知识开始,把10年前的无声视频进行完善与拓展,形成了这个全面的.基础的.快速的入门教程. 视频教学内容: 题目:GAMIT/GLOBK 10 ...

  10. GNSS测量与数据处理复习资料(1-5)

    GNSS测量与数据处理复习资料 文章目录 GNSS测量与数据处理复习资料 一.GNSS系统概述 1.GNSS定位原理 (1)距离测定原理 (2) 点位测定原理 2.GNSS系统组成 (1)GPS (2 ...

最新文章

  1. Keil5报错:error: more than one instance overload function “xx“ has C linkage
  2. 【机器学习入门到精通系列】蒙特卡罗方法简介和代码演示
  3. 移动开发还有未来吗?
  4. 全球及中国农业保险市场营销状况与运营价值分析报告2022版
  5. 详解SpringMVC中Controller的方法中参数的工作原理[附带源码分析]
  6. 12面魔方公式图解法_一位建筑工程师:多年渴望就是学会魔方还原,只按这七步就可以!...
  7. Redmi Note 10系列细节曝光:有望4G/5G双版本齐发
  8. 骚操作!使用家里的服务器也能像用云服务器一样方便!
  9. 2017年计算机期刊目录,【2017年整理】核心期刊目录一览表.doc
  10. 人工智能项目商业价值,主要体现在哪几个方面?
  11. 思科 终端服务器的配置
  12. 导弹巡航追踪目标模拟程序(1)源码版--matlab
  13. 数据结构算法常见的 100 道面试题全解析:2019 版
  14. 开机内存占用过高解决方案
  15. 关于SQL Server numeric数据类型介绍
  16. 区块链学习7:超级账本项目Hyperledger与Fabric以及二者的关系
  17. Asp.Net MVC学习记录之“一个实体对象不能由多个 IEntityChangeTracker 实例引用”
  18. walle 2.0 瓦力部署详细流程
  19. 低版本浏览器兼容处理
  20. Word排版技巧笔记

热门文章

  1. AD7124-4 精度
  2. 笔画最多的汉字和字母最多的单词
  3. UE4 Websocket
  4. wincc版本升级_wincc组态软件下载
  5. DDA算法、中点Bresenam算法,圆或椭圆的绘制
  6. 什么是国家机关、国有企业、事业单位?
  7. Unity读取内部、外部资源详解
  8. <2021SC@SDUSC> 开源游戏引擎 Overload 代码模块分析 之 OvGame (一)—— 概况与 .rc 文件
  9. 网页自动关机代码HTML,电脑怎么设置自动关机时间
  10. 一次学生时代的经历,利用Python在机房杀红蜘蛛,脱离老师控制!