/// <summary> /// 获取钟差预报结果 /// </summary> /// <param name="PredictedClockBiasPath"></param> private void GetPredictedClockBias(string PredictedClockBiasPath) { bool isEnd = false; using (StreamReader sr = new StreamReader(PredictedClockBiasPath)) { string line = sr.ReadLine(); string[] sat = SinexCoord.SplitByBlank(line); while (!isEnd) { line = sr.ReadLine(); if (line == null || line == "") { break; } if (line.Length == 0) { isEnd = false; } string[] tmp = SinexCoord.SplitByBlank(line); Time time = Time.Parse(tmp[0]); Clockbias cc = new Clockbias(); for (int i = 0; i < sat.Length; i++) { cc.sat.Add(SatelliteNumber.Parse(sat[i + 1]), double.Parse(tmp[i + 1])); } ClockBias.Add(time, cc); } } }
/// <summary> /// 输出sp3文件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void button_export_Click(object sender, EventArgs e) { bool fillWithZero = checkBox1.Checked; var directory = this.directorySelectionControl1.Path; Geo.Utils.FileUtil.CheckOrCreateDirectory(directory); string[] pathes = this.textBox_Pathes.Lines; foreach (var sp3item in pathes) { Sp3Reader r = new Sp3Reader(sp3item); sp3 = r.ReadAll(); string PredictedClockBiasPath = this.textBox_predictedresultPath.ToString(); ClockBias = new Dictionary <Time, Clockbias>(); GetPredictedClockBias(PredictedClockBiasPath); sp3ofPredicted = new Sp3File(); sp3ofPredicted.Header = sp3.Header; foreach (Sp3Section sec in sp3) { Sp3Section s = new Sp3Section(); Clockbias section = ClockBias[sec.Time]; foreach (Ephemeris rec in sec) { s.Time = rec.Time; if (section.sat.ContainsKey(rec.Prn) && section.sat[rec.Prn] != null) { rec.ClockBias = section.sat[rec.Prn]; } else { rec.ClockBias = 999999.999999; } s.Add(rec.Prn, rec); } sp3ofPredicted.Add(s); } sp3ofPredicted.Header.Comments.Add("Processd by Gnsser"); sp3ofPredicted.Header.Comments.Add("Predicted clock bias replace original precise data"); var path = Path.Combine(directory, "P" + r.Name + ".sp3"); Sp3Writer Sp3Writer = new Sp3Writer(path, sp3ofPredicted); sp3.Clear(); } Geo.Utils.FileUtil.OpenDirectory(directory); }