Пример #1
0
        private static void WriteEpochProducts(MultiSitePeriodValueStorage result, SatelliteNumber basePrn, double maxRms, double outIntervalSec)
        {
            var list1 = result.GetWideLaneFcb(basePrn, outIntervalSec, maxRms);

            WriteEpochProducts(list1, "EpochFcbOfDcb");

            var list2 = result.GetWideLaneFcbOfAllSatAverage(basePrn, outIntervalSec, maxRms);

            WriteEpochProducts(list2, "EpochFcbOfDcbOfAll");
        }
Пример #2
0
        private void ProduceAndShow(MultiSitePeriodValueStorage result)
        {
            //计算历元产品,可以查看变化。
            var basePrn = baseSatSelectingControl1.SelectedPrn;

            if (basePrn.SatelliteType != SatelliteType.G)
            {
                MessageBox.Show("请选择GPS系统!目前似乎还不支持其它系统,如果支持了请尝试高版本先,若还没有请 Email To: [email protected]");
                return;
            }
            var maxRms         = namedFloatControl_maxRms.GetValue();
            var outIntervalSec = namedFloatControl_intervalOFProduct.GetValue() * 60.0;

            var table       = result.GetTable();
            var product     = result.GetProductTableOfAllDiffer();
            var fracTable   = result.GetAverageRoundFractionTable();
            var detailTable = result.GetDetailTable();
            var finalOne    = result.GetFinalFcbOfBsd(BasePrn);
            var bsdProduct  = result.GetWideLaneFcb(BasePrn);


            ObjectTableManager.WriteTable(table, this.OutputDirectory);
            ObjectTableManager.WriteTable(fracTable, this.OutputDirectory);
            ObjectTableManager.WriteTable(detailTable, this.OutputDirectory);
            ObjectTableManager.WriteTable(product, this.OutputDirectory);

            this.ShowInfo("Final wide fcb:\r\n" + Geo.Utils.StringUtil.ToString(finalOne));
            this.BindTableA(table);
            this.BindTableB(product);
            this.BindTableC(fracTable);

            var differInts = result.GetAllPossibleDifferInts();

            foreach (var item in differInts.GetData())
            {
                var tab = item.Value.GetDetailTable();
                //tab.Name = item.Key + "_宽巷星间单差整数";
                tab.Name = item.Key + "_Bsd.WLInt";
                ObjectTableManager.WriteTable(tab, this.OutputDirectory);
            }
            //计算归算的最终产品
            WriteFinal(bsdProduct);

            WriteEpochProducts(result, basePrn, maxRms, outIntervalSec);

            Geo.Utils.FormUtil.ShowOkAndOpenDirectory(Setting.TempDirectory);
        }
Пример #3
0
        private void button_buidWideInts_Click(object sender, EventArgs e)
        {
            this.button_buidWideInts.Enabled = false;
            log.Info("计算开始,请稍等....");
            this.BasePrn = baseSatSelectingControl1.SelectedPrn;
            if (BasePrn.SatelliteType != SatelliteType.G)
            {
                Geo.Utils.FormUtil.ShowWarningMessageBox("暂只支持GPS系统");
                return;
            }
            var start = DateTime.Now;
            var path  = fileOpenControl_periodDetails.GetFilePath();

            var result = MultiSitePeriodValueStorage.ParseDetailTable(path);

            ProduceAndShow(result);
            var span = DateTime.Now - start;

            log.Info("执行完毕,总共耗时:" + span);

            this.button_buidWideInts.Enabled = true;
            Geo.Utils.FormUtil.ShowOkAndOpenDirectory(this.OutputDirectory);
        }
        protected override void Run(string[] pppResultPathes)
        {
            //读取宽巷的整数解
            int    startCountToRemove = this.namedIntControl_removeCountOfEachSegment.GetValue();
            double maxAllowedDiffer   = this.namedFloatControl1maxAllowedDiffer.GetValue();
            bool   isLoopAllSats      = checkBox_calculateAllSat.Checked;
            double maxRmsTimes        = namedFloatControl_maxRMSTImes.GetValue();
            int    minSiteCount       = this.namedIntControl1MinSiteCount.GetValue();
            double maxRms             = namedFloatControl_maxRms.GetValue();
            var    widelaneIntPathes  = fileOpenControl_intWideLaneFiles.GetFilePathes("*_IntOfWL.xls");
            MultiPeriodNarrowLaneOfBsdSolver solver = null;

            if (widelaneIntPathes.Length > 0 && widelaneIntPathes[0].ToLower().Contains("_intofwl.xls"))
            {
                solver = new MultiPeriodNarrowLaneOfBsdSolver(widelaneIntPathes, pppResultPathes, startCountToRemove, IsOutputInEachDirectory, this.OutputDirectory);
            }
            else
            {
                var pathes = fileOpenControl_intWideLaneFiles.FilePathes;

                var windeLaneIntObjs = MultiSitePeriodValueStorage.ParsePrnTables(pathes);
                foreach (var item in windeLaneIntObjs)
                {
                    item.RemoveRmsGreaterThan(maxRms);
                }
                solver = new MultiPeriodNarrowLaneOfBsdSolver(windeLaneIntObjs, pppResultPathes, startCountToRemove, IsOutputInEachDirectory, this.OutputDirectory);
            }
            solver.MaxRms           = maxRms;
            solver.MaxRmsTimes      = maxRmsTimes;
            solver.MinSiteCount     = minSiteCount;
            solver.IsLoopAllSats    = isLoopAllSats;
            solver.MaxAllowedDiffer = maxAllowedDiffer;
            solver.IsOutputFraction = IsOutputFraction;
            solver.IsOutputInt      = IsOutputInt;
            solver.IsOutputSummary  = IsOutputSummary;
            solver.Run();
        }
Пример #5
0
 /// <summary>
 /// 构造函数
 /// </summary>
 /// <param name="BasePrn">基准卫星</param>
 /// <param name="FloatAmbiSolution">PPP模糊度浮点解,未做差分,单位为周。</param>
 /// <param name="IntValueOfDifferWL">宽巷MW差分值,整型。</param>
 public EpochBsdOfNarrowLaneSolver(SatelliteNumber BasePrn, MultiSiteEpochValueStorage FloatAmbiSolution, MultiSitePeriodValueStorage IntValueOfDifferWL, string OutputDirectory, bool IsPppAmbiInCycleOrLen = true)
     : base("NL", BasePrn, OutputDirectory)
 {
     this.FloatAmbiSolution     = FloatAmbiSolution;
     this.IntValueOfDifferWL    = IntValueOfDifferWL;
     this.OutputDirectory       = OutputDirectory;
     this.IsPppAmbiInCycleOrLen = IsPppAmbiInCycleOrLen;
     this.MaxRmsTimes           = 2.5;
     Init();
 }