/// <summary> /// 获取频率带宽 /// </summary> /// <param name="type">系统类型</param> /// <param name="freqType">频率类型</param> /// <param name="satNumber">卫星编号,GLONASS 系统需要</param> /// <param name="time">time,GLONASS 系统需要</param> /// <returns></returns> public static Frequence GetFrequenceBand(GnssType type, FrequenceType freqType, int satNumber = -1, Time time = default(Time)) { switch (type) { case GnssType.GPS: case GnssType.SBAS: switch (freqType) { case FrequenceType.A: return(Frequence.GpsL1); case FrequenceType.B: return(Frequence.GpsL2); case FrequenceType.C: return(Frequence.GpsL5); default: return(null); // throw new ArgumentException("GPS 有三个频率。分别以编号1、2、3表示。"); } case GnssType.Galileo: switch (freqType) { case FrequenceType.A: return(Frequence.GalileoE1); case FrequenceType.B: return(Frequence.GalileoE5a); case FrequenceType.C: return(Frequence.GalileoE5b); case FrequenceType.D: return(Frequence.GalileoE5); case FrequenceType.E: return(Frequence.GalileoE6); default: return(null); // throw new ArgumentException("Galileo 有5个频率。分别以编号 1-5 表示。"); } case GnssType.BeiDou: //215786 switch (freqType) { case FrequenceType.A: return(Frequence.CompassB1); case FrequenceType.B: return(Frequence.CompassB2); case FrequenceType.C: return(Frequence.CompassB3); default: return(null); // throw new ArgumentException("BeiDou 有三个频率。分别以编号1、2、3表示。"); } case GnssType.GLONASS: if (satNumber == -1) { throw new ArgumentException("GLONASS是频分多址,需要指定卫星编号,此处有待改进!!!!请联系开发人员。"); } var prn = new SatelliteNumber(satNumber, SatelliteType.R); var k = (int)GlobalGlonassSlotFreqService.Instance.Get(prn, time); // var k = Setting.GnsserConfig.GlonassSlotFrequences[prn]; switch (freqType) { case FrequenceType.A: return(Frequence.GetGlonassG1(k)); case FrequenceType.B: return(Frequence.GetGlonassG2(k)); case FrequenceType.C: return(Frequence.GlonassG3); default: return(null); // throw new ArgumentException("GLONASS 有2个载波。分别以编号1、2表示。"); } case GnssType.QZSS: switch (freqType) { case FrequenceType.A: return(Frequence.GpsL1); case FrequenceType.B: return(Frequence.GpsL2); case FrequenceType.C: return(Frequence.GpsL5); case FrequenceType.D: return(Frequence.QzssL6); default: return(null); } case GnssType.NAVIC: switch (freqType) { case FrequenceType.A: return(Frequence.NavicL5); default: return(null); } default: switch (freqType) { case FrequenceType.A: return(Frequence.GpsL1); case FrequenceType.B: return(Frequence.GpsL2); case FrequenceType.C: return(Frequence.GpsL5); default: return(null); } } throw new ArgumentException(type + "尚不支持,请联系管理员。"); }