/// <summary> /// 构造函数 /// </summary> /// <param name="DataSourceContext"></param> /// <param name="GnssOption"></param> public EpochDouFreDoubleDifferPositioner(DataSourceContext DataSourceContext, GnssProcessOption GnssOption) : base(DataSourceContext, GnssOption) { //双差模糊度固定 this.DoubleIonFreeAmReslution = new DoubleIonFreeAmbiguityReslution(); this.ResidualsAnalysis = new ResidualsAnalysis(); this.DualBandCycleSlipDetector = new DualBandCycleSlipDetector(); this.Name = "单历元双频相位双差"; double BaselineLength = (this.DataSourceContext.ObservationDataSources.BaseDataSource.SiteInfo.ApproxXyz - this.DataSourceContext.ObservationDataSources.OtherDataSource.SiteInfo.ApproxXyz).Length; //默认双差基础参数为5个(3个坐标坐标+基准站的对流层参数+流动站的对流层参数) this.BaseParamCount = 5; if (BaselineLength <= 8000) { this.BaseParamCount = 3; } else if (BaselineLength <= 8000 && BaselineLength > 800) { this.BaseParamCount = 4; } this.IsBaseSatelliteRequried = true;//强制启用基准星 this.MatrixBuilder = new EpochDouFreDoubleDifferMatrixBuilder(Option, this.BaseParamCount); AmbiguityManager = new AmbiguityManager(Option); }
/// <summary> /// 构造函数 /// </summary> /// <param name="context"></param> /// <param name="option"></param> public AbstractGnssSolver(DataSourceContext context, GnssProcessOption option) : base(context, option) { this.Name = context.ObservationDataSource == null ? "GNSS计算器" : context.ObservationDataSource.Name; //为所有测站附加天线信息,为了保险起见多赋值一次。 if (context.AntennaDataSource != null) { foreach (var item in context.ObservationDataSources.DataSources) { item.SiteInfo.Antenna = context.AntennaDataSource.Get(item.SiteInfo.AntennaType); } } //是否需要伪距预先定位 if (Option.IsNeedPseudorangePositionWhenProcess && !(this is SimpleRangePositioner)) { int interval = (int)this.DataSourceContext.ObservationDataSource.ObsInfo.Interval; GnssProcessOption opt = GnssProcessOption.GetPsuedoRangeOption(interval, option.IsSmoothRangeWhenPrevPseudorangePosition); RangePositioner = new SimpleRangePositioner(DataSourceContext, opt); } this.IsUpdateEstimatePostition = option.IsUpdateEstimatePostition; this.EpochEphemerisSetter = new EpochEphemerisSetter(DataSourceContext, option); //模糊度 IsOutputAmbiguity = true; AmbiguityManager = new AmbiguityManager(base.Option); IonoFreeAmbiguitySolverManager = new IonoFreeAmbiguitySolverManager(); }
/// <summary> /// 构造函数 /// </summary> /// <param name="option"></param> /// <param name="BaseParamCount">基础参数数量</param> public AmbiFixedEpochDoublePhaseOnlytDifferMatrixBuilder(GnssProcessOption option, int BaseParamCount) : base(option) { this.BaseParamCount = BaseParamCount;// this.ParamNameBuilder = new AmbiFixedEpochDoublePhaseOnlytDifferParamNameBuilder(this.Option, BaseParamCount); AmbiguityManager = new AmbiguityManager(Option); }