コード例 #1
0
        /// <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);
        }
コード例 #2
0
 /// <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;
 }
コード例 #3
0
 /// <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;
 }
コード例 #4
0
 /// <summary>
 /// 默认构造函数。
 /// </summary>
 public CycleSlipDetectReviser()
 {
     this.Name                     = "周跳组合探测处理器";
     CycleSlipDetectors            = new List <ICycleSlipDetector>();
     this.IsMarkingCycleSlipe      = true;
     this.IsRemoveCycleSlipeMarker = false;
     CycleSlipStorage              = new InstantValueStorage();
 }
コード例 #5
0
 /// <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);
     }
 }
コード例 #6
0
 /// <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>>();
 }
コード例 #7
0
 /// <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方法探测周跳。");
 }
コード例 #8
0
        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());
        }
コード例 #9
0
        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();
        }
コード例 #10
0
ファイル: CycleSlipDetectForm.cs プロジェクト: yxw027/GNSSer
        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();
        }