/// <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); }
/// <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); }