Beispiel #1
0
        /// <summary>
        /// 构造函数。采用两个频率初始化。
        /// </summary>
        /// <param name="A">频率A</param>
        /// <param name="B">频率B</param>
        public IonoFreeCombination(PhaseRangeObservation A = null, PhaseRangeObservation B = null)
        {
            PhaseCombination combination = PhaseCombinationBuilder.GetIonoFreeRangeCombination(A.Value, B.Value, A.Frequence, B.Frequence);

            this.Value     = combination.Value;
            this.Frequence = combination.Frequence;

            double f1 = A.Frequence.Value;
            double f2 = B.Frequence.Value;

            this.WideFactor   = (f1 * f2) / (f1 * f1 - f2 * f2);
            this.NarrowFactor = f1 / (f1 + f2);

            Frequence wideFrequence = new Gnsser.Frequence("WidePhase", A.Frequence.Value - B.Frequence.Value);

            this.NarrowPhase = new PhaseValue(0, A.Frequence);
            this.WidePhase   = new PhaseValue(0, wideFrequence);

            this.FrequenceA = A.Frequence;
            this.FrequenceB = B.Frequence;
        }
Beispiel #2
0
        /// <summary>
        /// 创建
        /// </summary>
        /// <returns></returns>
        public override FreqenceObservation Build(RinexSatObsData observtion)
        {
            if (observtion == null)
            {
                return(null);
            }

            var prn = observtion.Prn;

            var freqObservation = new FreqenceObservation(Frequence, FrequenceType);

            //RINEX观测文件的区别为数字频率编号
            foreach (var kv in observtion)
            {
                var v = kv.Value;
                if (v.ObservationCode.BandOrFrequency != RinexFrequenceNumber)
                {
                    continue;
                }                                                                            //过滤

                var obsType = v.ObservationCode.ObservationType;
                switch (obsType)
                {
                case ObservationType.L:
                    var PhaseRange = new PhaseRangeObservation(v, Frequence);
                    freqObservation.Set(obsType, PhaseRange);
                    break;

                default:
                    var d = new Observation(v.Value, v.ObservationCode);
                    freqObservation.Set(obsType, d);
                    break;
                }
            }


            return(freqObservation);
        }