/// <summary> /// 数据流 /// </summary> /// <returns></returns> protected BufferedStreamService <EpochInformation> BuildBufferedStream() { var DataSource = new MemoRinexFileObsDataSource(ObsFile); var bufferStream = new BufferedStreamService <EpochInformation>(DataSource, 10); return(bufferStream); }
/// <summary> /// 缓存数据流 /// </summary> /// <returns></returns> protected override BufferedStreamService <EpochInformation> BuildBufferedStream() { var DataSource = new RinexFileObsDataSource(FilePath); var bufferStream = new BufferedStreamService <EpochInformation>(DataSource, Option.BufferSize); return(bufferStream); }
private void button_viewObs_Click(object sender, EventArgs e) { if (ObsFile == null) { MessageBox.Show("请先读取数据!"); return; } var window = this.namedIntControl_smoothWindow.GetValue(); SmoothedRangeBuilderManager = new CarrierSmoothedRangeBuilderManager(true, window, true, IonoDifferCorrectionType.DualFreqCarrier); ObjectTableStorage table = new ObjectTableStorage(); var EpochInfoBuilder = new RinexEpochInfoBuilder(ObsFile.Header); var _obsDataSource = new RinexFileObsDataSource(ObsPath); var option = new GnssProcessOption(); var context = DataSourceContext.LoadDefault(option, _obsDataSource); var bufferedStream = new BufferedStreamService <EpochInformation>(_obsDataSource, option.BufferSize); SatTimeInfoManager SatTimeInfoManager = new Gnsser.SatTimeInfoManager(_obsDataSource.ObsInfo.Interval); var Reviser = EpochInfoReviseManager.GetDefaultEpochInfoReviser(context, option, SatTimeInfoManager); var checker = EpochCheckingManager.GetDefaultCheckers(context, option); int i = -1; foreach (var item in bufferedStream) { i++; //原始数据检核 var epochInfo = item; if (!checker.Check(item)) { continue; } //数据矫正 bool result = Reviser.Revise(ref epochInfo); if (!result) { continue; } table.NewRow(); table.AddItem("Epoch", epochInfo.ReceiverTime.ToShortTimeString()); //计算伪距平滑值 foreach (var sat in epochInfo) { //观测值,或组合值 var rangeVal = sat.FrequenceA.PseudoRange.CorrectedValue; // sat[type].CorrectedValue; var phaseVal = sat.FrequenceA.PhaseRange.CorrectedValue; // sat[option.PhaseTypeToSmoothRange].CorrectedValue; var manager = SmoothedRangeBuilderManager.GetOrCreate(sat.Prn); var smoothRangeVal = manager.SetRawValue(sat.ReceiverTime, rangeVal, phaseVal, sat.IonoLenOfL1ByDifferL1L2).SetReset(sat.IsUnstable).Build(); table.AddItem(sat.Prn + "_Raw", rangeVal + ""); table.AddItem(sat.Prn + "_Smooth", smoothRangeVal + ""); } i++; } table.EndRow(); this.BindDataSource(table); }
/// <summary> /// 卫星时段检查过滤。 /// </summary> public SatSpanFilter(BufferedStreamService <EpochInformation> satTimeInfoManager, int MinContinuouObsCount, int maxBreakCount, Time time) { this.Name = "卫星时段过滤器"; log.Info("将过滤连续历元不足 " + MinContinuouObsCount + " 的数据。"); Remover = new SmallObsPeriodRemover <EpochInformation>(satTimeInfoManager, MinContinuouObsCount, maxBreakCount, time); }
/// <summary> /// 初始化 /// </summary> public override void Init() { this.BufferedStream = BuildBufferedStream(); this.BufferedStream.MaterialBuffersFullOrEnd += OnMaterialBuffersFullOrEnd; this.BufferedStream.MaterialCheck += CheckMaterial; this.BufferedStream.AfterMaterialCheckPassed += OnAfterMaterialCheckPassed; log.Info(BufferedStream.Name + " 起始处理编号: " + BufferedStream.StartIndex + ", 最大处理数量: " + BufferedStream.EnumCount); }
/// <summary> /// 释放资源 /// </summary> public virtual void Dispose() { if (TableTextManager != null) { TableTextManager.Dispose(); } if (BufferedStream != null) { BufferedStream.Dispose(); BufferedStream = null; } }
/// <summary> /// 小观测段数据移除器 /// </summary> /// <param name="BufferedStream"></param> /// <param name="MinEpochCount"></param> /// <param name="MaxBreakCount"></param> /// <param name="LastEpoch">如果不正确提供,请设置为最大</param> public SmallObsPeriodRemover(BufferedStreamService <T> BufferedStream, int MinEpochCount, int MaxBreakCount, Time LastEpoch, double interval = 0) { this.BufferedStream = BufferedStream; this.BufferedStream.MaterialEnded += BufferedStream_MaterialEnded; this.Buffers = this.BufferedStream.MaterialBuffers; this.MinEpochCount = MinEpochCount; this.MaxBreakCount = MaxBreakCount; this.LastEpoch = LastEpoch; this.Inverval = interval; this.WindowDataManager = new WindowDataManager <SatelliteNumber, Time>(this.MinEpochCount + this.MaxBreakCount + 2); }
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) { StartTime = DateTime.Now; var path = fileOpenControl1.FilePath; if (!File.Exists(path)) { MessageBox.Show("文件不存在!"); return; } var fileName = Path.GetFileName(path); ResultTables = new ObjectTableManager(this.directorySelectionControl1.Path); DataSourse = new BufferedStreamService <EpochInformation>(new RinexFileObsDataSource(path), 500000); DataSourse.MaterialBuffersFullOrEnd += DataSourse_MaterialBuffersFullOrEnd; DataSourse.MaterialInputted += DataSourse_MaterialInputted; log.Info("载入数据源 " + DataSourse); GnssSysRemover = new Gnsser.GnssSysRemover(new List <SatelliteType>() { gnssSystemSelectControl1.SatelliteType }); InstantValueStorage = new Geo.InstantValueStorage(); int index = 0; var table = ResultTables.GetOrCreate(DataSourse.Name + "_周跳探测结果"); foreach (var item in DataSourse) { if (IsCancel) { break; } index++; } var obsType = enumRadioControl1.GetCurrent <SatObsDataType>(); ResultTables.WriteAllToFileAndClearBuffer(); }
private void button_viewObs_Click(object sender, EventArgs e) { if (ObsFile == null) { MessageBox.Show("请先读取数据!"); return; } EnableRunButton(false); double cutOff = namedFloatControl_satCutoff.GetValue(); int smoothWindow = this.namedIntControl_smoothWindow.GetValue(); var EpochInfoBuilder = new RinexEpochInfoBuilder(ObsFile.Header); var _obsDataSource = new RinexFileObsDataSource(ObsPath); SmoothedRangeBuilderManagerP1 = BuildPhaseSmoothRangeBulider(); ObjectTableManager txtManager = new ObjectTableManager(10000000, OutDirectory); ObjectTableStorage table = txtManager.GetOrCreate(System.IO.Path.GetFileNameWithoutExtension(ObsPath) + "_Data");// new TableTextStorage(); var option = new GnssProcessOption(); option.VertAngleCut = this.namedFloatControl_satCutoff.GetValue(); var context = DataSourceContext.LoadDefault(option, _obsDataSource); var bufferedStream = new BufferedStreamService <EpochInformation>(_obsDataSource, option.BufferSize); //var EphemerisEndTime = context.EphemerisService.TimePeriod.BufferedEnd; SatTimeInfoManager SatTimeInfoManager = new Gnsser.SatTimeInfoManager(_obsDataSource.ObsInfo.Interval); //var Reviser = EpochInfoReviseManager.GetDefaultCycleSlipDetectReviser(context, option); var Reviser = new BufferPolyRangeSmoothReviser(option); //.GetDefaultEpochInfoReviser(context, option, SatTimeInfoManager); var checker = EpochCheckingManager.GetDefaultCheckers(context, option); int i = -1; progressBarComponent1.InitProcess(ObsFile.Count); foreach (var item in bufferedStream) { i++; progressBarComponent1.PerformProcessStep(); //原始数据检核 var epochInfo = item; if (!checker.Check(item)) { continue; } //数据矫正 Reviser.Buffers = bufferedStream.MaterialBuffers; bool result = Reviser.Revise(ref epochInfo); if (!result) { continue; } table.NewRow(); table.AddItem("Epoch", epochInfo.ReceiverTime.ToShortTimeString()); //计算伪距平滑值 foreach (var sat in epochInfo) { //观测值,或组合值 var rangeVal = sat.FrequenceA.PseudoRange.Value; // sat[type].CorrectedValue; var phaseVal = sat.FrequenceA.PhaseRange.Value; // sat[option.PhaseTypeToSmoothRange].CorrectedValue; var manager = SmoothedRangeBuilderManagerP1.GetOrCreate(sat.Prn); var smoothRangeVal = manager.SetRawValue(sat.ReceiverTime, rangeVal, phaseVal, 0) .SetReset(sat.IsUnstable).Build().Value; table.AddItem(sat.Prn + "_P1_Raw", rangeVal); table.AddItem(sat.Prn + "_P1_PolySmooth", sat.FrequenceA.PseudoRange.CorrectedValue); table.AddItem(sat.Prn + "_P1_PhaseSmooth", smoothRangeVal); } i++; } progressBarComponent1.Full(); table.EndRow(); this.objectTableControl1.DataBind(table); txtManager.WriteAllToFileAndCloseStream(); Geo.Utils.FormUtil.ShowIfOpenDirMessageBox(OutDirectory); EnableRunButton(true); }
private void button_smoothCurrent_Click(object sender, EventArgs e) { EnableRunButton(false); CheckAndReadObsFile(); ObjectTableManager tableObjectStorages; ObjectTableStorage IonoFitTable; tableObjectStorages = new ObjectTableManager(Setting.TempDirectory); IonoFitTable = tableObjectStorages.AddTable("IonoFit"); DateTime start = DateTime.Now; int bufferSize = namedIntControl_bufferCount.GetValue(); bool isShowPoly = checkBox_showPoly.Checked; PhaseSmoothRangeBulider = BuildPhaseSmoothRangeBulider(); int smoothWindow = this.namedIntControl_smoothWindow.GetValue(); double cutOff = namedFloatControl_satCutoff.GetValue(); bool isShowL1Only = checkBox_isShowL1Only.Checked; SatelliteNumber prn = (SatelliteNumber)this.bindingSource_sat.Current; GlobalIgsGridIonoService ionoService = GlobalIgsGridIonoService.Instance; GlobalIgsGridIonoDcbService ionoDcbService = GlobalIgsGridIonoDcbService.Instance; GlobalIgsEphemerisService ephemerisService = GlobalIgsEphemerisService.Instance; var TimedSmoothValueBuilderManager = new TimedSmoothValueBuilderManager(smoothWindow); List <TimedRinexSatObsData> records = ObsFile.GetEpochTimedObservations(prn); ObjectTableStorage table = new ObjectTableStorage(prn + "_平滑伪距"); var firtTime = records[0].Time; double P1_P2sat = ionoDcbService.GetDcb(firtTime, prn).Value *GnssConst.MeterPerNano; double P1_P2recMeter = ionoDcbService.GetDcbMeterForP1(firtTime, Path.GetFileName(ObsPath).Substring(0, 4).ToLower()); var siteXyz = ObsFile.Header.ApproxXyz; double prevIonoAmbiDcb = 0; double prevIonoAmbiDcbL2 = 0; RinexFreqObsBuilder FreqObsBuilder = new RinexFreqObsBuilder(); var epochSatBuilder = new RinexEpochSatBuilder(FreqObsBuilder); progressBarComponent1.InitProcess(records.Count); BufferedStreamService <TimedRinexSatObsData> bufferStream = new BufferedStreamService <TimedRinexSatObsData>(records, bufferSize); bufferStream.MaterialInputted += BufferStream_MaterialInputted; foreach (var record in bufferStream) { if (record == null) { continue; } progressBarComponent1.PerformProcessStep(); var time = record.Time; var data = record.SatObsData; var eph = ephemerisService.Get(prn, time); if (eph == null) { continue; } var satXyz = eph.XYZ; var polar = Geo.Coordinates.CoordTransformer.XyzToGeoPolar(satXyz, siteXyz, AngleUnit.Degree); if (polar.Elevation < cutOff) { continue; } var waveLenL1 = Frequence.GetFrequence(prn, FrequenceType.A, time).WaveLength; var waveLenL2 = Frequence.GetFrequence(prn, FrequenceType.B, time).WaveLength; double L1 = data.PhaseA.Value * waveLenL1; double P1 = data.RangeA.Value; double L2 = data.PhaseB != null ? record.SatObsData.PhaseB.Value * waveLenL2 : 0; double P2 = data.RangeB != null ? record.SatObsData.RangeB.Value : 0; //扩展 var sat = epochSatBuilder.SetPrn(record.SatObsData.Prn).Build(record.SatObsData); // get => (this.FrequenceA.PhaseRange.Value - this.FrequenceB.PhaseRange.Value) * Frequence.GetIonoAndDcbCoeffL1L2(this.Prn.SatelliteType); //double differIonoL1 = 0; //double differIonoL2 = 0; //if (prevIonoAmbiDcb == 0) //{ // prevIonoAmbiDcb = sat.IonoLenOfL1ByDifferL1L2; // prevIonoAmbiDcbL2 = sat.IonoLenOfL2ByDifferL1L2; //} //differIonoL1 = sat.IonoLenOfL1ByDifferL1L2 - prevIonoAmbiDcb; //differIonoL1 = sat.IonoLenOfL1ByDifferL1L2 - prevIonoAmbiDcb; // L1 = L1 + 2 * differIono; #region 载波相位平滑伪距 var smootherP1 = PhaseSmoothRangeBulider.GetOrCreate("P1"); var smootherP2 = PhaseSmoothRangeBulider.GetOrCreate("P2"); var P1s = smootherP1 .SetReset(data.PhaseA.IsLossLock) .SetRawValue(record.Time, P1, L1, sat.IonoLenOfL1ByDifferL1L2) .Build().Value; IonoFitTable.NewRow(); IonoFitTable.AddItem("Epoch", time); IonoFitTable.AddItem("FittedIonoAndAmbiValue", smootherP1.CurrentRaw.FittedIonoAndAmbiValue); //var test = TestSmoothRangeBuilder.GetOrCreate("Test") // .SetReset(data.PhaseA.IsLossLock) // .SetRawValue(record.Time, P1, L1) // .Build().Value; //var differ = test - P1s; //int iii = 0; var P2s = 0.0; if (!isShowL1Only) { P2s = smootherP2 .SetReset(data.PhaseB.IsLossLock) .SetRawValue(record.Time, P2, L2, sat.IonoLenOfL2ByDifferL1L2) .Build().Value; } #endregion //二次多项式平滑比较 var lsSP1Smoother = TimedSmoothValueBuilderManager.GetOrCreate("P1"); var lsSP2Smoother = TimedSmoothValueBuilderManager.GetOrCreate("P2"); double lsSP1 = 0, lsSP2 = 0; if (isShowPoly) { foreach (var item in bufferStream.MaterialBuffers) { lsSP1Smoother.SetRawValue(item.Time, item.SatObsData.RangeA.Value); lsSP2Smoother.SetRawValue(item.Time, item.SatObsData.RangeB.Value); } if (data.PhaseA.IsLossLock) { lsSP1 = P1; lsSP1Smoother.SetReset(data.PhaseA.IsLossLock); } else { lsSP1 = lsSP1Smoother.SetReset(data.PhaseA.IsLossLock) .SetRawValue(time, P1) .SetSmoothTime(time) .Build(); } if (data.PhaseB.IsLossLock) { lsSP2 = P2; lsSP2Smoother.SetReset(data.PhaseB.IsLossLock); } else { lsSP2 = lsSP2Smoother.SetReset(data.PhaseB.IsLossLock) .SetRawValue(time, P2) .SetSmoothTime(time) .Build(); } } table.NewRow(); table.AddItem("Epoch", record.Time); //table.AddItem("L1", L1); //table.AddItem("L2", L2); table.AddItem("P1", P1); if (!isShowL1Only) { table.AddItem("P2", P2); } table.AddItem("P1S", P1s); if (!isShowL1Only && isShowPoly) { table.AddItem("P2S", P2s); } if (isShowPoly) { table.AddItem("LsP1S", lsSP1); } if (!isShowL1Only) { table.AddItem("LsP2S", lsSP2); } } progressBarComponent1.Full(); BindDataSource(table); EnableRunButton(true); Geo.Winform.TableObjectViewForm form = new Geo.Winform.TableObjectViewForm(IonoFitTable); form.Show(); // tableObjectStorages.WriteAllToFileAndClearBuffer(); var span = DateTime.Now - start;// = DateTime.Now; log.Info("计算完毕,耗时 : " + span); }
/// <summary> /// 构造函数 /// </summary> /// <param name="BufferedStream"></param> /// <param name="Option"></param> /// <param name="Context"></param> public ApproxCoordSetter(BufferedStreamService <T> BufferedStream, GnssProcessOption Option, DataSourceContext Context) { this.BufferedStream = BufferedStream; this.Option = Option; this.Context = Context; }
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) { StartTime = DateTime.Now; int startIndex = int.Parse(textBox_startEpoch.Text); int count = int.Parse(this.textBox_caculateCount.Text); bool isRevseCsUsed = this.checkBox_isreversed.Checked; var path = fileOpenControl1.FilePath; if (!File.Exists(path)) { MessageBox.Show("文件不存在!"); return; } var fileName = Path.GetFileName(path); ResultTables = new ObjectTableManager(this.directorySelectionControl1.Path); var observations = new RinexFileObsDataSource(path); DataSourse = new BufferedStreamService <EpochInformation>(observations); DataSourse.MaterialInputted += DataSourse_MaterialInputted; log.Info("载入数据源 " + DataSourse); GnssSysRemover = new Gnsser.GnssSysRemover(new List <SatelliteType>() { gnssSystemSelectControl1.SatelliteType }); ReverseCycleSlipeReviser = CreateReveredCsReviser(); CycleSlipDetector = CreateCsReviser(); InstantValueStorage = new Geo.InstantValueStorage(); int index = 0; var table = ResultTables.GetOrCreate(DataSourse.Name + "_周跳探测结果"); progressBarComponent1.InitProcess(observations.Header.ObsInfo.Count); foreach (var item in DataSourse) { progressBarComponent1.PerformProcessStep(); if (IsCancel || index >= count + startIndex) { break; } if (index < startIndex) { index++; continue; } var info = item; if (isRevseCsUsed) { ReverseCycleSlipeReviser.Buffers = DataSourse.MaterialBuffers; ReverseCycleSlipeReviser.Revise(ref info); } var list = info.UnstablePrns; if (list.Count > 0) { table.NewRow(); table.AddItem("Epoch", item.ReceiverTime); foreach (var prn in list) { table.AddItem(prn, true); InstantValueStorage.Regist(prn.ToString(), item.ReceiverTime); } } index++; } var obsType = enumRadioControl1.GetCurrent <SatObsDataType>(); CycleSlipDetector.WriteStorageToFile(this.directorySelectionControl1.Path, fileName, obsType); ResultTables.WriteAllToFileAndClearBuffer(); progressBarComponent1.Full(); }
private void button_multiSolve_Click(object sender, EventArgs e) { CheckAndReadObsFile(); double cutOff = namedFloatControl_satCutoff.GetValue(); int smoothWindow = this.namedIntControl_smoothWindow.GetValue(); bool isUserRawValue = this.radioButton_isUserRawValue.Checked; bool isUseSphaseSmoothP = this.radioButton_isUsePhaaseSmoothP.Checked; bool isUserPolyFitValue = this.radioButton_isUserPolyFitVal.Checked; var PhaseSmoothRangeBulider = new NamedCarrierSmoothedRangeBuilderManager(true, smoothWindow, true, IonoDifferCorrectionType.DualFreqCarrier); GlobalIgsGridIonoService ionoService = GlobalIgsGridIonoService.Instance; GlobalIgsGridIonoDcbService ionoDcbService = GlobalIgsGridIonoDcbService.Instance; GlobalIgsEphemerisService ephemerisService = GlobalIgsEphemerisService.Instance; ObjectTableStorage table = new ObjectTableStorage(Path.GetFileName(ObsPath) + "_硬件延迟"); var EpochInfoBuilder = new RinexEpochInfoBuilder(ObsFile.Header); var _obsDataSource = new RinexFileObsDataSource(ObsPath); var option = new GnssProcessOption(); var context = DataSourceContext.LoadDefault(option, _obsDataSource); var bufferedStream = new BufferedStreamService <EpochInformation>(_obsDataSource, option.BufferSize); SatTimeInfoManager SatTimeInfoManager = new Gnsser.SatTimeInfoManager(_obsDataSource.ObsInfo.Interval); var CycleReviser = EpochInfoReviseManager.GetDefaultCycleSlipDetectReviser(context, option); var Reviser = new BufferPolyRangeSmoothReviser(option); //EpochInfoReviseManager.GetDefaultEpochInfoReviser(context, option, SatTimeInfoManager); var checker = EpochCheckingManager.GetDefaultCheckers(context, option); int i = -1; var siteXyz = ObsFile.Header.ApproxXyz; progressBarComponent1.InitProcess(ObsFile.Count); foreach (var item in bufferedStream) { i++; progressBarComponent1.PerformProcessStep(); //原始数据检核 var epochInfo = item; //if (!checker.Check(item)) //{ // continue; //} ////数据矫正 if (isUseSphaseSmoothP) //需要周跳探测 { bool result = CycleReviser.Revise(ref epochInfo); if (!result) { continue; } } if (isUserPolyFitValue)//缓存与多项式拟合改正 { Reviser.Buffers = bufferedStream.MaterialBuffers; bool result = Reviser.Revise(ref epochInfo); if (!result) { continue; } } table.NewRow(); table.AddItem("Epoch", epochInfo.ReceiverTime.ToShortTimeString()); //计算伪距平滑值 foreach (var sat in epochInfo) { var prn = sat.Prn; var time = sat.ReceiverTime; var eph = ephemerisService.Get(prn, time); if (eph == null) { continue; } var satXyz = eph.XYZ; var polar = Geo.Coordinates.CoordTransformer.XyzToGeoPolar(satXyz, siteXyz, AngleUnit.Degree); if (polar.Elevation < cutOff) { continue; } double P1_P2sat = ionoDcbService.GetDcb(time, prn).Value *GnssConst.MeterPerNano; // double P1_P2recMeter = ionoDcbService.GetDcbMeterForP1(time, Path.GetFileName(ObsPath).Substring(0, 4).ToLower()); var F1 = sat.FrequenceA.Frequence; // Frequence.GetFrequence(prn, 1, time); var F2 = sat.FrequenceB.Frequence; //Frequence.GetFrequence(prn, 2, time); var f1 = F1.Value * 1e6; //恢复单位 var f2 = F2.Value * 1e6; double f1f1 = f1 * f1; double f2f2 = f2 * f2; double a = -40.28 * (f2f2 - f1f1) / (f1f1 * f2f2); //观测值,或组合值 var P1 = sat.FrequenceA.PseudoRange.Value; var P2 = sat.FrequenceB.PseudoRange.Value; var L1 = sat.FrequenceA.PhaseRange.Value; var L2 = sat.FrequenceB.PhaseRange.Value; double differP = P1 - P2;//raw Value if (isUseSphaseSmoothP) { var smootherP1 = PhaseSmoothRangeBulider.GetOrCreate(prn + "_P1"); var smootherP2 = PhaseSmoothRangeBulider.GetOrCreate(prn + "_P2"); var P1s = smootherP1 .SetReset(sat.IsUnstable) .SetRawValue(sat.ReceiverTime, P1, L1, sat.IonoLenOfL1ByDifferL1L2) .Build(); var P2s = smootherP2 .SetReset(sat.IsUnstable) .SetRawValue(sat.ReceiverTime, P2, L2, sat.IonoLenOfL2ByDifferL1L2) .Build(); differP = P1s.Value - P2s.Value; } if (isUserPolyFitValue) { differP = sat.FrequenceA.PseudoRange.CorrectedValue - sat.FrequenceB.PseudoRange.CorrectedValue; } var cTEC = ionoService.GetSlope(time, siteXyz, satXyz); double ionoRange = a * cTEC.Value * 1e16; // 单位是1e16 double rawDifferP = P1 - P2; double ionoP1 = ionoService.GetSlopeDelayRange(time, siteXyz, satXyz, F1.Value); double ionoP2 = ionoService.GetSlopeDelayRange(time, siteXyz, satXyz, F2.Value); double rawDifferIonoP = ionoP1 - ionoP2; var recDcb = differP - P1_P2sat - rawDifferIonoP; //table.AddItem("L1", L1); //table.AddItem("L2", L2); //table.AddItem("P1", P1); //table.AddItem("P2", P2); //table.AddItem("P1S", P1s); //table.AddItem("P2S", P2s); //table.AddItem("P1-P2", rawDifferP); //table.AddItem("IonoDiffer", rawDifferIonoP); //table.AddItem("SatDcb", P1_P2sat); //table.AddItem("P1-P2_rec", P1_P2recMeter); table.AddItem(prn + "", recDcb); //table.AddItem("SmRecDcb", smRecDcb); //table.AddItem(sat.Prn + "_Raw", rangeVal + ""); //table.AddItem(sat.Prn + "_Smooth", smoothRangeVal + ""); } i++; } progressBarComponent1.Full(); table.EndRow(); this.BindDataSource(table); }