/// <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); }
/// <summary> /// 构造函数 /// </summary> /// <param name="LineName"></param> /// <param name="GnssReveiverNominalAccuracy"></param> public PeriodRepeatErrorOfBaseLine( SiteObsBaseline LineName, GnssReveiverNominalAccuracy GnssReveiverNominalAccuracy ) { this.GnssReveiverNominalAccuracy = GnssReveiverNominalAccuracy; this.BaseLine = LineName; }
/// <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); }
/// <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); }
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); }
/// <summary> /// 移除 /// </summary> /// <param name="name"></param> public void Remove(SiteObsBaseline name) { // this.ObsFileManager.Remove(name); //移除基线 BaseLineManager.Remove(name); }
public int CompareTo(SiteObsBaseline other) { return(TimePeriod.CompareTo(other.TimePeriod)); }
/// <summary> /// 移除基线 /// </summary> /// <param name="line"></param> public void Remove(SiteObsBaseline line) { var key = this.GetPeriodKey(line.TimePeriod); this.Get(key).Remove(line.LineName); }