Exemplo n.º 1
0
        /// <summary>
        /// 获取已知的频率带宽。
        /// </summary>
        /// <param name="satNumber">卫星编号, GLONASS 频分多址</param>
        /// <param name="type">类型</param>
        /// <param name="rinexNum">编号,1、2、3 分别代表各系统的频率如GPS的L1、L2、L5</param>
        /// <param name="time">时间,历元,GLONASS或频分多址需要</param>
        /// <returns></returns>
        public static Frequence GetFrequenceBand(GnssType type, int rinexNum = 1, int satNumber = -1, Time time = default(Time))
        {
            var satType  = GnssSystem.GetSatelliteType(type);
            var freqType = GetFrequenceType(satType, rinexNum);

            return(GetFrequenceBand(type, freqType, satNumber, time));
        }
Exemplo n.º 2
0
        /// <summary>
        /// 获取卫星类型
        /// </summary>
        /// <param name="type">GNSS系统类型</param>
        /// <returns></returns>
        public static SatelliteType GetSatelliteType(GnssType type)
        {
            switch (type)
            {
            case GnssType.GPS:
                return(SatelliteType.G);

            case GnssType.BeiDou:
                return(SatelliteType.C);

            case GnssType.Galileo:
                return(SatelliteType.E);

            case GnssType.GLONASS:
                return(SatelliteType.R);

            case GnssType.IRNSS:
                return(SatelliteType.I);

            case GnssType.QZSS:
                return(SatelliteType.J);

            case GnssType.SBAS:
                return(SatelliteType.S);

            default:
                break;
            }
            throw new Exception("对不起,暂不支持其它的系统。");
            //return GnssSystem.Gps;
        }
Exemplo n.º 3
0
        public static bool IsSBAS(this GnssType gnssType)
        {
            switch (gnssType)
            {
            case GnssType.UnknownSBAS:
            case GnssType.WAAS:
            case GnssType.EGNOS:
            case GnssType.SDCM:
            case GnssType.GAGAN:
            case GnssType.MSAS:
            case GnssType.SNAS: return(true);
            }

            return(false);
        }
Exemplo n.º 4
0
        /// <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 + "尚不支持,请联系管理员。");
        }
Exemplo n.º 5
0
 /// <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, Geo.Times.Time time = default(Geo.Times.Time))
 {
     return(ObsCodeConvert.GetFrequenceBand(type, rinexNum, satNumber, time));
 }
Exemplo n.º 6
0
 /// <summary>
 /// 获取系统第一频率
 /// </summary>
 /// <param name="type"></param>
 /// <param name="satNumber"></param>
 /// <param name="time">时间,历元,GLONASS需要</param>
 /// <returns></returns>
 public static Frequence GetFrequenceB(GnssType type, int satNumber = -1, Time time = default(Time))
 {
     return(ObsCodeConvert.GetFrequenceBand(type, FrequenceType.B, satNumber, time));
 }