Exemplo n.º 1
0
        /// <summary>
        /// 计算完毕一个测站
        /// </summary>
        /// <param name="Solver"></param>
        void OneSolver_Processed(IntegralGnssFileSolver Solver)
        {
            var result = Solver.CurrentGnssResult;
            var entity = result as IWithEstimatedBaseline; if (entity == null)
            {
                return;
            }
            var line = entity.GetEstimatedBaseline();

            var             lineName = line.BaseLineName;
            var             time     = result.ReceiverTime;
            SiteObsBaseline lineObj  = GetLineObj(line, time);

            if (lineObj == null)
            {
                return;
            }
            lineObj.EstimatedResult = line;


            // lineObj.EstimatedResult = line;
            log.Info(result.Name + ", " + result.ReceiverTime + ", 即将输出结果文件...");
            var writer = new GnssResultWriter(Solver.Option, Solver.Option.IsOutputEpochResult,
                                              Solver.Option.IsOutputEpochSatInfo);

            writer.WriteFinal((BaseGnssResult)result);
        }
Exemplo n.º 2
0
 /// <summary>
 /// 构造函数
 /// </summary>
 /// <param name="LineName"></param>
 /// <param name="GnssReveiverNominalAccuracy"></param>
 public PeriodRepeatErrorOfBaseLine(
     SiteObsBaseline LineName,
     GnssReveiverNominalAccuracy GnssReveiverNominalAccuracy
     )
 {
     this.GnssReveiverNominalAccuracy = GnssReveiverNominalAccuracy;
     this.BaseLine = LineName;
 }
Exemplo n.º 3
0
        /// <summary>
        /// 增加一个,如果已经添加则返回 false。
        /// </summary>
        /// <param name="line"></param>
        /// <returns></returns>
        public bool Add(SiteObsBaseline line)
        {
            if (line.TimePeriod.Span < MinEpochTimeSpan.TotalSeconds)
            {
                log.Warn(line + " 添加失败, 观测时段太短 " + line.TimePeriod);
                return(false);
            }
            //是否已经存在
            if (this.Contains(line))
            {
                log.Warn(line + " 添加失败, 已经存在时段 " + line + ", " + line.TimePeriod);
                return(false);
            }

            var key = GetPeriodKey(line.TimePeriod);

            if (key != null) //有则直接添加
            {
                var net = this[key];
                if (net.Contains(line.LineName)) //如果已经存在,则比较时段长短
                {
                    var old = net.Get(line.LineName);
                    if (old.TimeSpan > line.TimeSpan)
                    {
                        log.Warn(" 时段 " + key.ToDefualtPathString() + " 已经具有 " + line + ",且时段更长,因此忽略本基线 "
                                 + old.TimePeriod.ToDefualtPathString() + "(旧) > " + line.TimePeriod.ToDefualtPathString() + "(新)");
                        return(false);
                    }
                    else
                    {
                        net[line.LineName] = line;
                        log.Warn(" 时段 " + key.ToDefualtPathString() + " 已经具有 " + line + ",但本时段更长,因此旧基线被替换 "
                                 + old.TimePeriod.ToDefualtPathString() + "(旧)  < " + line.TimePeriod.ToDefualtPathString() + "(新)");
                    }
                }
                else
                {
                    net.Add(line.LineName, line);
                }
                line.NetPeriod = key;
            }
            else
            {
                //没有,则创建一个,并以之为时段关键字
                this.GetOrCreate(line.TimePeriod).Add(line.LineName, line);
                line.NetPeriod = line.TimePeriod;
            }

            return(true);
        }
Exemplo n.º 4
0
        /// <summary>
        /// 是否包含
        /// </summary>
        /// <param name="line"></param>
        /// <returns></returns>
        public bool Contains(SiteObsBaseline line)
        {
            var allready = this.GetLines(line.LineName);

            foreach (var item in allready)
            {
                var common = item.TimePeriod.GetIntersect(line.TimePeriod);
                if (common != null && common.TimeSpan > MinEpochTimeSpan)
                {
                    return(true);
                }
            }
            return(false);
        }
Exemplo n.º 5
0
        private SiteObsBaseline GetLineObj(IEstimatedBaseline line, Time time)
        {
            SiteObsBaseline lineObj = null;// BaselineManager.Get(line.BaseLineName);

            foreach (var lineO in SitebaseLines)
            {
                if (lineO.LineName == line.BaseLineName && lineO.TimePeriod.Contains(time))
                {
                    lineObj = lineO;
                    break;
                }
            }

            return(lineObj);
        }
Exemplo n.º 6
0
 /// <summary>
 /// 移除
 /// </summary>
 /// <param name="name"></param>
 public void Remove(SiteObsBaseline name)
 {
     //  this.ObsFileManager.Remove(name);
     //移除基线
     BaseLineManager.Remove(name);
 }
Exemplo n.º 7
0
 public int CompareTo(SiteObsBaseline other)
 {
     return(TimePeriod.CompareTo(other.TimePeriod));
 }
Exemplo n.º 8
0
        /// <summary>
        /// 移除基线
        /// </summary>
        /// <param name="line"></param>
        public void Remove(SiteObsBaseline line)
        {
            var key = this.GetPeriodKey(line.TimePeriod);

            this.Get(key).Remove(line.LineName);
        }