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