コード例 #1
0
        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="IsUseGNSSerSmoothRangeMethod"></param>
        /// <param name="ObsDataType"></param>
        /// <param name="WindowSize"></param>
        /// <param name="isWeighted"></param>
        /// <param name="FrequenceTypes"></param>
        /// <param name="isDeltaIonoFit"></param>
        /// <param name="OrderOfDeltaIonoPolyFit"></param>
        /// <param name="BufferSize"></param>
        /// <param name="ionoFitEpochCount"></param>
        /// <param name="SmoothRangeType"></param>
        /// <param name="IndicatedIonoDeltaFilePath"></param>
        public SingleFreqSelfIonoRangeReviser(
            bool IsUseGNSSerSmoothRangeMethod,
            SatObsDataType ObsDataType,
            int WindowSize,
            bool isWeighted,
            List <FrequenceType> FrequenceTypes,
            IonoDifferCorrectionType isDeltaIonoFit,
            int OrderOfDeltaIonoPolyFit, int BufferSize, int ionoFitEpochCount, SmoothRangeSuperpositionType SmoothRangeType, string IndicatedIonoDeltaFilePath)
        {
            this.Name           = "单频电离层自我改正";
            this.ObsDataType    = ObsDataType;
            this.FrequenceTypes = FrequenceTypes;
            this.PhaseSmoothedRangeBuilderManager = new CarrierSmoothedRangeBuilderManager(
                IsUseGNSSerSmoothRangeMethod, WindowSize, isWeighted, isDeltaIonoFit, OrderOfDeltaIonoPolyFit, BufferSize, ionoFitEpochCount, SmoothRangeType)
            {
                IndicatedIonoDeltaFilePath = IndicatedIonoDeltaFilePath
            };

            this.IsDualIonoFree = this.ObsDataType == SatObsDataType.IonoFreePhaseRange ||
                                  this.ObsDataType == SatObsDataType.IonoFreeRange;
            this.Data = new BaseDictionary <SatelliteNumber, TimeNumeralWindowData>("数据",
                                                                                    new Func <SatelliteNumber, TimeNumeralWindowData>(prn => new TimeNumeralWindowData(WindowSize)
                                                                                                                                      ));

            TableObjectStorages = new ObjectTableManager();
            TableObjectStorage  = TableObjectStorages.AddTable("模糊度概略距离值");

            log.Info("启用:" + this.Name + " 对观测值进行改正!是否双频:" + IsDualIonoFree);
        }
コード例 #2
0
        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="isUseingApprovedMethod"></param>
        /// <param name="isIonoFreeDualFreq"></param>
        /// <param name="WindowSize"></param>
        /// <param name="isWeighted"></param>
        /// <param name="ionoDifferCorrectionType"></param>
        /// <param name="OrderOfDeltaIonoPolyFit"></param>
        /// <param name="BufferSize"></param>
        /// <param name="ionoFitEpochCount"></param>
        /// <param name="SmoothRangeType"></param>
        /// <param name="ionoDeltaFilePath"></param>
        public PhaseSmoothRangeReviser(
            bool isUseingApprovedMethod,
            bool isIonoFreeDualFreq,
            int WindowSize,
            bool isWeighted,
            IonoDifferCorrectionType ionoDifferCorrectionType,
            int OrderOfDeltaIonoPolyFit = 1,
            int BufferSize        = 60,
            int ionoFitEpochCount = 30,
            SmoothRangeSuperpositionType SmoothRangeType = SmoothRangeSuperpositionType.窗口AK迭代,
            string ionoDeltaFilePath = null
            )
        {
            this.Name           = "载波相位平滑伪距改正观测值";
            this.IsDualIonoFree = isIonoFreeDualFreq;
            this.IsNeedBuffer   = IonoDifferCorrectionType.WindowPolyfit == ionoDifferCorrectionType || ionoDifferCorrectionType == IonoDifferCorrectionType.WindowWeightedAverage;

            this.PhaseSmoothedRangeBuilderManager = new CarrierSmoothedRangeBuilderManager(
                isUseingApprovedMethod,
                WindowSize, isWeighted, ionoDifferCorrectionType, OrderOfDeltaIonoPolyFit, BufferSize, ionoFitEpochCount, SmoothRangeType)
            {
                IndicatedIonoDeltaFilePath = ionoDeltaFilePath
            };


            if (ionoDifferCorrectionType == IonoDifferCorrectionType.IndicatedFile && System.IO.File.Exists(ionoDeltaFilePath))
            {
                ObjectTableReader reader = new ObjectTableReader(ionoDeltaFilePath);
                this.IonoDeltaTable = reader.Read();
                var interval = IonoDeltaTable.GetInterval <Time>();
                InputedIonoDelta = IonoDeltaTable.GetInteruptableData(new Func <Time, double>(key => key.SecondsOfWeek), interval * 5);
            }

            log.Info("初始化" + this.Name + " 对观测值进行改正!是否双频:" + IsDualIonoFree);
        }
コード例 #3
0
 /// <summary>
 /// 构造函数
 /// </summary>
 /// <param name="isApprovedSmooth">是否采用GNSSer改进平滑算法</param>
 /// <param name="windowSize">窗口大小</param>
 /// <param name="SmoothRangeType"></param>
 /// <param name="IsWeighted"></param>
 /// <param name="IonoDifferCorrectionType">仅改进算法有效</param>
 /// <param name="IonoFitEpochCount"> </param>
 /// <param name="OrderOfDeltaIonoPolyFit">仅改进算法有效</param>
 /// <param name="BufferSize">仅改进算法有效</param>
 public NamedCarrierSmoothedRangeBuilderManager(
     bool isApprovedSmooth,
     int windowSize,
     bool IsWeighted,
     IonoDifferCorrectionType IonoDifferCorrectionType,
     int OrderOfDeltaIonoPolyFit = 1,
     int BufferSize        = 60,
     int IonoFitEpochCount = 30,
     SmoothRangeSuperpositionType SmoothRangeType = SmoothRangeSuperpositionType.快速更新算法)
 {
     this.WindowSize               = windowSize;
     this.IsApprovedSmooth         = isApprovedSmooth;
     this.IsWeighted               = IsWeighted;
     this.IonoDifferCorrectionType = IonoDifferCorrectionType;
     this.OrderOfDeltaIonoPolyFit  = OrderOfDeltaIonoPolyFit;
     this.SmoothRangeType          = SmoothRangeType;
     this.BufferSize               = BufferSize;
     this.IonoFitEpochCount        = IonoFitEpochCount;
 }
コード例 #4
0
 /// <summary>
 /// 构造函数
 /// </summary>
 /// <param name="isApprovedSmooth">是否采用GNSSer改进平滑算法</param>
 /// <param name="windowSize">窗口大小</param>
 /// <param name="IsWeighted"></param>
 /// <param name="SmoothRangeType"></param>
 /// <param name="IsDeltaIonoCorrect">仅改进算法有效</param>
 /// <param name="OrderOfDeltaIonoPolyFit">仅改进算法有效</param>
 /// <param name="BufferSize">缓存大小</param>
 /// <param name="ionoFitEpochCount">电离层拟合历元数量,如果非滑动窗口,则与指定窗口相同</param>
 public CarrierSmoothedRangeBuilderManager(
     bool isApprovedSmooth,
     int windowSize,
     bool IsWeighted,
     IonoDifferCorrectionType IsDeltaIonoCorrect,
     int OrderOfDeltaIonoPolyFit = 2,
     int BufferSize        = 60,
     int ionoFitEpochCount = 20,
     SmoothRangeSuperpositionType SmoothRangeType = SmoothRangeSuperpositionType.快速更新算法)
     : base(isApprovedSmooth,
            windowSize,
            IsWeighted,
            IsDeltaIonoCorrect,
            OrderOfDeltaIonoPolyFit,
            BufferSize,
            ionoFitEpochCount,
            SmoothRangeType
            )
 {
     this.WindowSize = windowSize;
 }
コード例 #5
0
 /// <summary>
 /// 构造函数
 /// </summary>
 /// <param name="IsUseGNSSerSmoothRangeMethod"></param>
 /// <param name="ObsDataType"></param>
 /// <param name="WindowSize"></param>
 /// <param name="isWeighted"></param>
 /// <param name="FrequenceType"></param>
 /// <param name="isDeltaIonoFit"></param>
 /// <param name="OrderOfDeltaIonoPolyFit"></param>
 /// <param name="BufferSize"></param>
 /// <param name="ionoFitEpochCount"></param>
 /// <param name="SmoothRangeType"></param>
 /// <param name="IndicatedIonoDeltaFilePath"></param>
 public SingleFreqSelfIonoRangeReviser(bool IsUseGNSSerSmoothRangeMethod,
                                       SatObsDataType ObsDataType,
                                       int WindowSize,
                                       bool isWeighted,
                                       FrequenceType FrequenceType,
                                       IonoDifferCorrectionType isDeltaIonoFit,
                                       int OrderOfDeltaIonoPolyFit, int BufferSize, int ionoFitEpochCount, SmoothRangeSuperpositionType SmoothRangeType, string IndicatedIonoDeltaFilePath)
     : this(IsUseGNSSerSmoothRangeMethod,
            ObsDataType,
            WindowSize, isWeighted,
            new List <FrequenceType>() { FrequenceType },
            isDeltaIonoFit,
            OrderOfDeltaIonoPolyFit, BufferSize, ionoFitEpochCount, SmoothRangeType, IndicatedIonoDeltaFilePath)
 {
 }
コード例 #6
0
        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="windowSize"></param>
        /// <param name="IsWeighted"></param>
        /// <param name="IsDeltaIonoCorrect"></param>
        /// <param name="OrderOfDeltaIonoPolyFit"></param>
        /// <param name="SmoothRangeType"></param>
        public SmoothRangeWindow(int windowSize, bool IsWeighted = true, bool IsDeltaIonoCorrect = true, int OrderOfDeltaIonoPolyFit = 2, int bufferSize = 30, SmoothRangeSuperpositionType SmoothRangeType = SmoothRangeSuperpositionType.窗口AK迭代)
            : base(windowSize)
        {
            CurrentData = new RangePhasePair(0,0, 0);
            this.IsWeighted = IsWeighted; 
            this.MaxKeyGap = 151;
            this.RawRangeStdDev = 2;
            this.SmoothRangeType = SmoothRangeType; 
            this.PrevData = new RangePhasePair(0, 0, 0); 
             

        }