/// <summary> /// 初始化计算器 /// </summary> private void InitSolver() { this.Solver = new SingleSiteGnssSolveStreamer(OutpuDirectory); var Option = GnssProcessOptionManager.Instance.Get(GnssSolverType.无电离层组合PPP); Option.OutputDirectory = OutpuDirectory; // Option.EnableAutoFindingFile = false; Setting.EnableNet = false; var epheService = EphemerisService; if (epheService == null) { epheService = new SingleParamNavFileEphService(NavFile); } var obsData = new MemoRinexFileObsDataSource(ObsFile); this.Solver.Context = DataSourceContext.LoadDefault(Option, obsData, epheService, null); this.Solver.BufferedStream = BuildBufferedStream(); this.Solver.Option = Option; this.Solver.DataSource = obsData; //Solver.InfoProduced += Solver_InfoProduced; //Solver.ResultProduced += Solver_ResultProduced; //Solver.EpochEntityProduced += Solver_EpochEntityProduced; //Solver.Completed += OneSolver_Completed; this.Solver.Init(); }
/// <summary> /// 数据流 /// </summary> /// <returns></returns> protected BufferedStreamService <EpochInformation> BuildBufferedStream() { var DataSource = new MemoRinexFileObsDataSource(ObsFile); var bufferStream = new BufferedStreamService <EpochInformation>(DataSource, 10); return(bufferStream); }
/// <summary> /// 单频平滑伪距 /// </summary> /// <param name="prn"></param> /// <param name="PhaseSmoothRangeBulider"></param> /// <param name="records"></param> private void DualFreqPhaseSmoothRange(SatelliteNumber prn, NamedCarrierSmoothedRangeBuilderManager PhaseSmoothRangeBulider) { ObjectTableStorage table = new ObjectTableStorage(); MemoRinexFileObsDataSource observations = new MemoRinexFileObsDataSource(this.ObsFile); CycleSlipDetectReviser cycleSlipDetectReviser = new CycleSlipDetectReviser(); while (observations.MoveNext()) { var current = observations.Current; cycleSlipDetectReviser.Revise(ref current); if (current.Contains(prn)) { table.NewRow(); table.AddItem("Epoch", current.ReceiverTime); var epochSat = current[prn]; var smootherP1 = PhaseSmoothRangeBulider.GetOrCreate("P"); var PS = smootherP1 .SetReset(epochSat.IsUnstable) .SetRawValue(current.ReceiverTime, epochSat.Combinations.IonoFreeRange.Value, epochSat.Combinations.IonoFreePhaseRange.Value, 0 ) .Build().Value; table.AddItem("P1", epochSat.FrequenceA.PseudoRange.Value); table.AddItem("P2", epochSat.FrequenceB.PseudoRange.Value); table.AddItem("PS", PS); } } BindDataSource(table); }
/// <summary> /// 读取数据 /// </summary> private void ReadFile() { ObsFile = ObsFileUtil.ReadFile(ObsPath); if (ObsFile == null) { Geo.Utils.FormUtil.ShowWarningMessageBox("不支持输入文件格式!"); return; } this.bindingSource_obsInfo.DataSource = ObsFile; var prns = ObsFile.GetPrns(); prns.Sort(); this.bindingSource_sat.DataSource = prns; this.attributeBox1.DataGridView.DataSource = Geo.Utils.ObjectUtil.GetAttributes(ObsFile.Header, false); string msg = ""; msg += "首次观测时间:" + ObsFile.Header.StartTime + "\r\n"; msg += "最后观测时间:" + ObsFile.Header.EndTime + "\r\n"; msg += "采样间隔:" + ObsFile.Header.Interval + " 秒" + "\r\n"; this.textBox_show.Text = msg; Data.Rinex.RinexObsFile ObsFile1 = ObsFileUtil.ReadFile(ObsPath); var observations = new MemoRinexFileObsDataSource(ObsFile1); foreach (var epochInfo in observations) { int a = 1; int b = 2; } }