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); } }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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)); }
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)); }
/// <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 + "尚不支持,请联系管理员。"); }
/// <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)); }
/// <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; }