/// <summary> /// 移除对于双频无电离层组合多余的观测值 /// </summary> public void IsRemoveRedundantObsForIonoFree() { Dictionary <SatelliteType, List <string> > tobeRemoeved = new Dictionary <SatelliteType, List <string> >(); foreach (var item in ObsCodes) { var SatelliteType = item.Key; List <int> freqA = ObsCodeConvert.GetRinexFrequenceNumber(SatelliteType, FrequenceType.A); List <int> freqB = ObsCodeConvert.GetRinexFrequenceNumber(SatelliteType, FrequenceType.B); List <int> total = new List <int>(freqA); total.AddRange(freqB); var tobeRemoeved2 = new List <string>(); foreach (var kv2 in item.Value) { ObservationCode code = ObservationCode.Parse(kv2); if (!total.Contains(code.BandOrFrequency) || code.ObservationType == ObservationType.D || code.ObservationType == ObservationType.S) { tobeRemoeved2.Add(kv2); } } tobeRemoeved[SatelliteType] = tobeRemoeved2; } foreach (var toremove in tobeRemoeved) { var SatelliteType = toremove.Key; var old = ObsCodes[SatelliteType]; old.RemoveAll(item => toremove.Value.Contains(item));// = Geo.Utils.ListUtil.GetExcept(old, item.Value); } }
/// <summary> /// 获取系统第3频率 /// </summary> /// <param name="type"></param> /// <param name="satNumber"></param> /// <param name="time">时间,历元,GLONASS需要</param> /// <returns></returns> public static Frequence GetFrequenceC(SatelliteType type, int satNumber = -1, Time time = default(Time)) { return(ObsCodeConvert.GetFrequenceBand(GnssSystem.GetGnssType(type), FrequenceType.C, satNumber, time)); }
/// <summary> /// 获取频率 /// </summary> /// <param name="type"></param> /// <param name="rinexNum"></param> /// <param name="satNumber"></param> /// <param name="time">时间,历元,GLONASS或频分多址需要</param> /// <returns></returns> public static Frequence GetFrequence(GnssType type, int rinexNum, int satNumber = -1, Time time = default(Time)) { return(ObsCodeConvert.GetFrequenceBand(type, rinexNum, satNumber, time)); }
/// <summary> /// 获取第3频率,推荐方法 /// </summary> /// <param name="prn">卫星编号</param> /// <param name="time">时间,GLONASS需要</param> /// <returns></returns> public static Frequence GetFrequenceC(SatelliteNumber prn, Time time = default(Time)) { return(ObsCodeConvert.GetFrequenceBand(GnssSystem.GetGnssType(prn.SatelliteType), FrequenceType.C, prn.PRN, time)); }