/// <summary> /// 处理过程 /// </summary> /// <param name="obs">观测数据</param> /// <returns></returns> public override bool Revise(ref EpochInformation obs) { foreach (var item in obs) { SatSequentialPeriod.AddTimePeriod(item.Prn, item.Time.Value); } return(true); }
/// <summary> /// 处理过程 /// </summary> /// <param name="obs">观测数据</param> /// <returns></returns> public override bool Revise(ref EpochInformation epochInfo) { if (epochInfo == null) { return(false); } // obsBuilder.Revise(ref epochInfo); foreach (var sat in epochInfo) { if (sat.IsUnstable) { SatSequentialPeriod.AddTimePeriod(sat.Prn, sat.Time.Value); } } return(true); }
/// <summary> /// 处理过程 /// </summary> /// <param name="obs">观测数据</param> /// <returns></returns> public override bool Revise(ref EpochInformation obs) { epochCount++; //入队后再说 EpochInfoBuffer.Enqueue(obs); if (obs == null) { return(false); } var prns = obs.EnabledPrns; //首先,初始化,标记第一次出现的卫星为连续。 foreach (var prn in prns) { if (!SatCounters.ContainsKey(prn)) { var marker = new SatMarker(prn, obs.ReceiverTime); SatCounters[prn] = marker; } } //其次,标记,遍历所有记录的卫星,检查其是否连续,并进行标记,这一步只是简单的记录。 foreach (var prn in SatCounters.Keys) { var maker = SatCounters[prn]; //如果本历元有,则标记之为有,连续数增加,断开数量清零 //可能:首次出现;继续出现 if (prns.Contains(prn)) { if (maker.GapCount > 0)//首次出现,之前为断开 { //记录此断开时段 SatSequentialPeriod.AddTimePeriod(prn, new BufferedTimePeriod(maker.StartRecordTime, obs.ReceiverTime)); maker.StartRecordTime = obs.ReceiverTime; } if (maker.SequenceCount == 0) { maker.StartRecordTime = obs.ReceiverTime; } maker.SequenceCount++; maker.GapCount = 0; maker.Mark = true; } else//如果本历元无,则标记为没有,断开数增加 { //可能:首次出现,继续出现 // maker.SequenceCount = 0; if (maker.SequenceCount < MinSequenceCount)//首次断开,之前为连续,且连续数量太少,认为可以移除 { //记录此断开时段 SatSequentialPeriod.AddTimePeriod(prn, new BufferedTimePeriod(maker.StartRecordTime, obs.ReceiverTime)); maker.StartBreakingTime = obs.ReceiverTime;//.Time.Value; } if (maker.GapCount == 0) { maker.StartBreakingTime = obs.ReceiverTime; } maker.SequenceCount = 0; maker.GapCount++; maker.Mark = false; } } ////记录本历元没有标记的,即断开的,要求断开数量大于指定最大 //foreach (var maker in SatCounters.Values) //{ // if (!maker.Mark &&( maker.SequenceCount <= MinSequenceCount || maker.GapCount >= this.MaxAllowedGap )) // { // SatPeriodInfoManager.AddTimePeriod(maker.Prn, new BufferedTimePeriod(maker.StartRecordTime, obs.Time.Value)); // } // maker.SequenceCount = 0; //} return(true); }