/// <summary> /// 输入序列 /// </summary> /// <param name="InstantValueStorage"></param> public void DataBind(InstantValueStorage InstantValueStorage) { InitializeComponent(); Dictionary <string, Series> dic = new Dictionary <string, Series>(); List <string> names = new List <string>(InstantValueStorage.Keys); names.Sort(); foreach (var name in names) { Series seriesX = new Series(name); seriesX.ChartType = SeriesChartType.Point; seriesX.XValueType = ChartValueType.DateTime; // seriesX.YValueType = ChartValueType.String; seriesX.MarkerSize = 10; seriesX.BorderWidth = 10; // seriesX.MarkerBorderWidth = 4; dic[name] = seriesX; int number = Geo.Utils.IntUtil.TryGetInt(name); foreach (var item in InstantValueStorage[name]) { //seriesX.Points.Add(new DataPoint(key.DateTime.TimeOfDay.TotalSeconds, number)); DataPoint data = new DataPoint(); data.SetValueXY(item.DateTime, number); seriesX.Points.Add(data); } } Init(dic.Values); }
/// <summary> /// 构造函数 /// </summary> /// <param name="IsUsingRecordedCycleSlipInfo"></param> public BaseCycleSlipDetector(bool IsUsingRecordedCycleSlipInfo, int bufferSize = 10) { this.BufferSize = bufferSize; CycleSlipStorage = new InstantValueStorage(); this.SatValueManager = new TimeNumeralWindowDataManager <SatelliteNumber>(bufferSize); this.EpochSats = new BaseDictionary <SatelliteNumber, WindowData <EpochSatellite> >(); this.IsUsingRecordedCsInfo = IsUsingRecordedCycleSlipInfo; }
/// <summary> /// 构造函数 /// </summary> /// <param name="Option"></param> public BaseCycleSlipDetector(GnssProcessOption Option) { this.BufferSize = Option.BufferSize; CycleSlipStorage = new InstantValueStorage(); this.SatValueManager = new TimeNumeralWindowDataManager <SatelliteNumber>(Option.BufferSize); this.EpochSats = new BaseDictionary <SatelliteNumber, WindowData <EpochSatellite> >(); this.IsUsingRecordedCsInfo = Option.IsUsingRecordedCycleSlipInfo; }
/// <summary> /// 默认构造函数。 /// </summary> public CycleSlipDetectReviser() { this.Name = "周跳组合探测处理器"; CycleSlipDetectors = new List <ICycleSlipDetector>(); this.IsMarkingCycleSlipe = true; this.IsRemoveCycleSlipeMarker = false; CycleSlipStorage = new InstantValueStorage(); }
/// <summary> /// 保存结果 /// </summary> /// <param name="grossDataKeys"></param> private void BuildInstantValueStorage(Dictionary <SatelliteNumber, List <Time> > grossDataKeys) { InstantValueStorage = new InstantValueStorage(); foreach (var kv in grossDataKeys) { InstantValueStorage.Regist(kv.Key.ToString(), kv.Value); } }
/// <summary> /// 周跳探测,并进行标记,而不修复。 默认构造函数。 /// </summary> public MwCycleSlipDetectorOld() { MaxDeltaTime = 121; MaxNumLambdas = 10.0; lambdaLimit = MaxNumLambdas * 0.862; //limit to declare cycle slip based on lambdas( LambdaLW= 0.862 m) ,对于北斗,应该考虑 this.IsUsingRecordedCsInfo = true; CycleSlipStorage = new InstantValueStorage(); log.Debug("采用了MW方法探测周跳。"); TableObjectManager = new ObjectTableManager(); // satData = new SortedDictionary<SatelliteNumber, List<DataItem>>(); }
/// <summary> /// 周跳探测,并进行标记,而不修复。 默认构造函数。 /// </summary> public MwCycleSlipBaseOnQualityDetector() { MaxDeltaTime = 121; MaxNumLambdas = 10.0; MaxBufferSize = 15; Multiple = 3; lambdaLimit = MaxNumLambdas * 0.862; //limit to declare cycle slip based on lambdas( LambdaLW= 0.862 m) ,对于北斗,应该考虑 this.UseRecordedSlipInfo = true; CycleSlipStorage = new InstantValueStorage(); log.Debug("采用了基于数据质量的MW方法探测周跳。"); }
void DataSourse_MaterialBuffersFullOrEnd(IWindowData <EpochInformation> obj) { BufferedCycleSlipDetector detector = new BufferedCycleSlipDetector(this.Option); detector.Detect(obj); InstantValueStorage = detector.InstantValueStorage; var path = Path.Combine(directorySelectionControl1.Path, "CycleSlip.clsp"); InstantValueStorage.WriteToFile(path); ShowInfo(InstantValueStorage.ToString()); }
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 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(); }