Example #1
0
        private void Looper_Looping(Geo.Times.Time time)
        {
            TableObject.NewRow();
            TableObject.AddItem("Epoch", time);
            string prefix   = "";
            int    satCount = Prns.Count;

            foreach (var prn in Prns)
            {
                var eph = EphemerisService.Get(prn, time);
                if (eph == null)
                {
                    continue;
                }
                var satXyz = eph.XYZ;
                var polar  = CoordTransformer.XyzToGeoPolar(satXyz, siteXyz, AngleUnit.Degree);
                if (cutOff > polar.Elevation)
                {
                    continue;
                }
                prefix = prn.ToString() + "_";
                TableObject.AddItem(prefix + "Elevation", polar.Elevation);
                TableObject.AddItem(prefix + "Azimuth", polar.Azimuth);
            }
        }
Example #2
0
 /// <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, Geo.Times.Time time = default(Geo.Times.Time))
 {
     return(ObsCodeConvert.GetFrequenceBand(GnssSystem.GetGnssType(type), FrequenceType.C, satNumber, time));
 }
Example #3
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));
 }
Example #4
0
 /// <summary>
 /// 获取频率
 /// </summary>
 /// <param name="prn"></param>
 /// <param name="frequenceType"></param>
 /// <param name="time">时间,历元,GLONASS或频分多址需要</param>
 /// <returns></returns>
 public static Frequence GetFrequence(SatelliteNumber prn, FrequenceType frequenceType, Geo.Times.Time time = default(Geo.Times.Time))
 {
     return(GetFrequence(prn.SatelliteType, frequenceType, prn.PRN, time));
 }
Example #5
0
 /// <summary>
 /// 获取第3频率,推荐方法
 /// </summary>
 /// <param name="prn">卫星编号</param>
 /// <param name="time">时间,GLONASS需要</param>
 /// <returns></returns>
 public static Frequence GetFrequenceC(SatelliteNumber prn, Geo.Times.Time time = default(Geo.Times.Time))
 {
     return(ObsCodeConvert.GetFrequenceBand(GnssSystem.GetGnssType(prn.SatelliteType), FrequenceType.C, prn.PRN, time));
 }
Example #6
0
        /// <summary>
        /// 通过卫星和观测类型获取频率。注意:无电离层组合默认采用L1频率
        /// </summary>
        /// <param name="prn"></param>
        /// <param name="SatObsDataType"></param>
        /// <param name="time">时间,历元,GLONASS或频分多址需要</param>
        /// <returns></returns>
        public static Frequence GetFrequence(SatelliteNumber prn, SatObsDataType SatObsDataType, Geo.Times.Time time = default(Geo.Times.Time))
        {
            FrequenceType ft = FrequenceType.A;

            switch (SatObsDataType)
            {
            case SatObsDataType.PhaseRangeA:
            case SatObsDataType.PseudoRangeA:
            case SatObsDataType.PhaseA:
            case SatObsDataType.IonoFreePhaseRange:
            case SatObsDataType.IonoFreeRange:
            case SatObsDataType.AlignedIonoFreePhaseRange:
            case SatObsDataType.AlignedIonoFreePhaseRangeOfTriFreq:
            case SatObsDataType.IonoFreePhaseRangeOfTriFreq:
            case SatObsDataType.IonoFreeRangeOfTriFreq:
                ft = FrequenceType.A;      //注意:无电离层组合默认采用L1频率,2018.11.05, czs, hmx
                break;

            case SatObsDataType.PhaseRangeB:
            case SatObsDataType.PseudoRangeB:
            case SatObsDataType.PhaseB:
                ft = FrequenceType.B;
                break;

            case SatObsDataType.PhaseRangeC:
            case SatObsDataType.PseudoRangeC:
            case SatObsDataType.PhaseC:
                ft = FrequenceType.C;
                break;

            default:
                log.Warn("无法得到可行的频率" + prn.SatelliteType + " " + SatObsDataType + " ,默认采用 " + ft);
                break;
            }
            return(GetFrequence(prn, ft, time));
        }
Example #7
0
        public static Frequence GetFrequence(SatelliteNumber prn, ObsPhaseType ObsPhaseType, Geo.Times.Time time = default(Geo.Times.Time))
        {
            FrequenceType ft = FrequenceType.A;

            switch (ObsPhaseType)
            {
            case ObsPhaseType.L1:
                ft = FrequenceType.A;
                break;

            case ObsPhaseType.L2:
                ft = FrequenceType.B;
                break;

            default:
                break;
            }
            return(GetFrequence(prn, ft, time));
        }
Example #8
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, Geo.Times.Time time = default(Geo.Times.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:
                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);
                }
                break;
            }

            throw new ArgumentException(type + "尚不支持,请联系管理员。");
        }
Example #9
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, Geo.Times.Time time = default(Geo.Times.Time))
        {
            var satType  = GnssSystem.GetSatelliteType(type);
            var freqType = GetFrequenceType(satType, rinexNum);

            return(GetFrequenceBand(type, freqType, satNumber, time));
        }
Example #10
0
 /// <summary>
 /// 构造
 /// </summary>
 /// <param name="Prn"></param>
 /// <param name="StartRecordTime"></param>
 public SatMarker(SatelliteNumber Prn, Geo.Times.Time StartRecordTime)
 {
     this.Prn             = Prn;
     this.SequenceCount   = 1;
     this.StartRecordTime = StartRecordTime;
 }