Example #1
0
        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);
        }
Example #2
0
        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);
        }