示例#1
0
        /// <summary>
        /// 初始化
        /// </summary>
        /// <param name="pathes"></param>
        public override void Init(string [] pathes)
        {
            base.Init(pathes);

            this.OutputFileName           = BuildOutFileNamePrefix(pathes);
            this.PeriodInformationBuilder = new Domain.PeriodInformationBuilder(true, this.Option.MultiEpochCount);

            AmbiguityManager     = new AmbiguityManager(Option);
            AmbiguityStoragePath = Path.Combine(Option.OutputDirectory, Path.GetFileNameWithoutExtension(Pathes[0]) + "_AmbiguityStorage.ambi");

            if (Option.IsIndicatingApproxXyz)
            {
                DataSource.BaseDataSource.SiteInfo.SetApproxXyz(Option.InitApproxXyz);
            }
            if (Option.IsIndicatingApproxXyzRms)
            {
                DataSource.BaseDataSource.SiteInfo.EstimatedXyzRms = Option.InitApproxXyzRms;
            }

            this.GnssResultBuilder = new GnssResultBuilder(this.TableTextManager, this.AioAdjustFileBuilder, AdjustEquationFileBuilder, Option, Context);
            Solver = BuildRolver(Context, Option);
        }
示例#2
0
        /// <summary>
        /// 处理一个历元
        /// </summary>
        /// <param name="mEpochInfo"></param>
        public override SimpleGnssResult Produce(MultiSiteEpochInfo mEpochInfo)
        {
            //3.计算
            // this.CurrentGnssResult
            BaseGnssResult GnssResult = null;

            if (Solver is MultiSitePeriodSolver) //多站多历元
            {
                if (this.MultiSitePeriodInfoBuilder == null)
                {
                    this.MultiSitePeriodInfoBuilder = new Domain.MultiSitePeriodInfoBuilder(Option);
                }

                MultiSitePeriodInfoBuilder.Add(mEpochInfo);
                var period = MultiSitePeriodInfoBuilder.Build();
                if (period == null || !period.Enabled)
                {
                    return(null);
                }

                GnssResult = ((MultiSitePeriodSolver)Solver).Get(period);
            }
            else if (Solver is SingleSitePeriodSolver)  //单站多历元
            {
                PeriodInformationBuilder.Add(mEpochInfo.First);
                var period = PeriodInformationBuilder.Build();
                if (period == null || !period.Enabled)
                {
                    return(null);
                }

                GnssResult = ((SingleSitePeriodSolver)Solver).Get(period);
            }
            else if (Solver is MultiSiteEpochSolver)
            {
                GnssResult = ((MultiSiteEpochSolver)Solver).Get(mEpochInfo);
            }
            else if (Solver is SingleSiteGnssSolver) //此处只计算基准流
            {
                if (mEpochInfo.Contains(BaseSiteName))
                {
                    GnssResult = ((SingleSiteGnssSolver)Solver).Get(mEpochInfo[BaseSiteName]);
                }
                else
                {
                    GnssResult = null;
                }
            }

            if (GnssResult == null)
            {
                return(null);
            }

            //4.结果后处理
            if (Option.IsFixingAmbiguity)
            {
                //PPP模糊度处理
                if (GnssResult is PppResult)
                {
                    var PppResult = GnssResult as PppResult;
                }

                if (GnssResult is PeriodDoubleDifferPositionResult)
                {
                    var result = GnssResult as PeriodDoubleDifferPositionResult;
                    AmbiguityManager.Regist(result);
                }
            }
            return(GnssResult);
        }