/// <summary> /// 解算 /// </summary> /// <param name="LineManager"></param> public void Solve(MutliPeriodBaseLineManager LineManager) { SitebaseLines = LineManager.AllLineObjs; if (ProgressViewer != null) { ProgressViewer.InitProcess(LineManager.Count); } InitSolverCount(LineManager); //分时段计算 ,时段之间采用串行算法 foreach (var item in LineManager.KeyValues) { var sitebaseLines = item.Value.Values; var netTimePeriod = item.Key; switch (AutoBaseLinSolveType) { case AutoBaseLinSolveType.单一算法: { SolveBaseLine(sitebaseLines, Option, netTimePeriod); } break; case AutoBaseLinSolveType.基线长度采用不同算法: { //长基线解算 var longOption = Options[GnssSolverType.无电离层双差]; //长基线 List <SiteObsBaseline> shorts = item.Value.GetShortLines(MaxShortLineLength); List <SiteObsBaseline> longLines = item.Value.GetLongLines(MaxShortLineLength); if (longLines.Count > 0) { SolveBaseLine(longLines, longOption, netTimePeriod); } //短基线 if (shorts.Count > 0) { SolveBaseLine(shorts, Option, netTimePeriod); } } break; default: { SolveBaseLine(sitebaseLines, Option, netTimePeriod); } break; } ProgressViewer.PerformProcessStep(); } if (ProgressViewer != null) { ProgressViewer.Full(); } }