예제 #1
0
 /// <summary>
 /// 构造函数
 /// </summary>
 public SiteSatAppearenceServiceRegister(SiteSatAppearenceService SiteSatAppearenceService, double BreakCount)
 {
     this.Name = "测站卫星注册时段服务";
     log.Info("启用 " + this.Name);
     this.SiteSatAppearenceService = SiteSatAppearenceService;
     this.BreakCount = BreakCount;
 }
예제 #2
0
 public override void Complete()
 {
     base.Complete();
     if (IsOutputPeriodData)
     {
         SiteSatAppearenceService.BuildTableObjectManager(OutputDirectory).WriteAllToFileAndClearBuffer();
     }
 }
예제 #3
0
        /// <summary>
        /// 修正
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        public override bool Revise(ref EpochInformation obj)
        {
            var service = SiteSatAppearenceService.GetOrCreate(obj.SiteName);

            service.MaxGapSecond = obj.ObsInfo.Interval * BreakCount;
            service.Regist(obj);

            var buffer = this.Buffers;

            return(true);
        }
예제 #4
0
 /// <summary>
 /// 构造函数
 /// </summary>
 public BreakOffBothEndsReviser(SiteSatAppearenceService SiteSatAppearenceService, double minuteOfBreakOffBothEnds)
 {
     this.Name = "卫星数据掐头去尾";
     log.Info("启用 " + Name);
     CurrentIndex = -1;
     this.SecondOfBreakOffBothEnds = minuteOfBreakOffBothEnds * 60;
     this.SiteSatAppearenceService = SiteSatAppearenceService;
     if (SiteSatAppearenceService == null)
     {
         log.Warn(Name + "需要时段分析服务!" + typeof(SiteSatAppearenceService));
     }
 }
예제 #5
0
        public override bool Revise(ref EpochInformation epochInfo)
        {
            if (SiteSatAppearenceService == null)
            {
                return(true);
            }

            CurrentIndex++;
            //首历元忽略
            if (CurrentIndex <= 1)
            {
                FirstEpoch = epochInfo.ReceiverTime; return(true);
            }

            var buffer = this.Buffers;
            var time   = epochInfo.ReceiverTime;

            var service = SiteSatAppearenceService.Get(epochInfo.Name);

            if (service == null)
            {
                log.Warn("时段服务器为null" + epochInfo.Name);
                return(true);
            }

            List <SatelliteNumber> tobeCuts = new List <SatelliteNumber>();

            foreach (var sat in epochInfo)
            {
                var period = service.Get(sat.Prn);
                if (period.Contains(FirstEpoch) || period.Contains(service.LastRegistTime))//包含首尾历元,则不必掐头
                {
                    continue;
                }
                var StartTime = period.Start;

                bool isCut = IsInCutRegion(time, period.Start) || IsInCutRegion(time, period.End);
                if (isCut)
                {
                    tobeCuts.Add(sat.Prn);
                }
            }

            epochInfo.Remove(tobeCuts, true, this.Name);

            return(true);
        }