private static void WriteEpochProducts(MultiSitePeriodValueStorage result, SatelliteNumber basePrn, double maxRms, double outIntervalSec) { var list1 = result.GetWideLaneFcb(basePrn, outIntervalSec, maxRms); WriteEpochProducts(list1, "EpochFcbOfDcb"); var list2 = result.GetWideLaneFcbOfAllSatAverage(basePrn, outIntervalSec, maxRms); WriteEpochProducts(list2, "EpochFcbOfDcbOfAll"); }
private void ProduceAndShow(MultiSitePeriodValueStorage result) { //计算历元产品,可以查看变化。 var basePrn = baseSatSelectingControl1.SelectedPrn; if (basePrn.SatelliteType != SatelliteType.G) { MessageBox.Show("请选择GPS系统!目前似乎还不支持其它系统,如果支持了请尝试高版本先,若还没有请 Email To: [email protected]"); return; } var maxRms = namedFloatControl_maxRms.GetValue(); var outIntervalSec = namedFloatControl_intervalOFProduct.GetValue() * 60.0; var table = result.GetTable(); var product = result.GetProductTableOfAllDiffer(); var fracTable = result.GetAverageRoundFractionTable(); var detailTable = result.GetDetailTable(); var finalOne = result.GetFinalFcbOfBsd(BasePrn); var bsdProduct = result.GetWideLaneFcb(BasePrn); ObjectTableManager.WriteTable(table, this.OutputDirectory); ObjectTableManager.WriteTable(fracTable, this.OutputDirectory); ObjectTableManager.WriteTable(detailTable, this.OutputDirectory); ObjectTableManager.WriteTable(product, this.OutputDirectory); this.ShowInfo("Final wide fcb:\r\n" + Geo.Utils.StringUtil.ToString(finalOne)); this.BindTableA(table); this.BindTableB(product); this.BindTableC(fracTable); var differInts = result.GetAllPossibleDifferInts(); foreach (var item in differInts.GetData()) { var tab = item.Value.GetDetailTable(); //tab.Name = item.Key + "_宽巷星间单差整数"; tab.Name = item.Key + "_Bsd.WLInt"; ObjectTableManager.WriteTable(tab, this.OutputDirectory); } //计算归算的最终产品 WriteFinal(bsdProduct); WriteEpochProducts(result, basePrn, maxRms, outIntervalSec); Geo.Utils.FormUtil.ShowOkAndOpenDirectory(Setting.TempDirectory); }
private void button_buidWideInts_Click(object sender, EventArgs e) { this.button_buidWideInts.Enabled = false; log.Info("计算开始,请稍等...."); this.BasePrn = baseSatSelectingControl1.SelectedPrn; if (BasePrn.SatelliteType != SatelliteType.G) { Geo.Utils.FormUtil.ShowWarningMessageBox("暂只支持GPS系统"); return; } var start = DateTime.Now; var path = fileOpenControl_periodDetails.GetFilePath(); var result = MultiSitePeriodValueStorage.ParseDetailTable(path); ProduceAndShow(result); var span = DateTime.Now - start; log.Info("执行完毕,总共耗时:" + span); this.button_buidWideInts.Enabled = true; Geo.Utils.FormUtil.ShowOkAndOpenDirectory(this.OutputDirectory); }
protected override void Run(string[] pppResultPathes) { //读取宽巷的整数解 int startCountToRemove = this.namedIntControl_removeCountOfEachSegment.GetValue(); double maxAllowedDiffer = this.namedFloatControl1maxAllowedDiffer.GetValue(); bool isLoopAllSats = checkBox_calculateAllSat.Checked; double maxRmsTimes = namedFloatControl_maxRMSTImes.GetValue(); int minSiteCount = this.namedIntControl1MinSiteCount.GetValue(); double maxRms = namedFloatControl_maxRms.GetValue(); var widelaneIntPathes = fileOpenControl_intWideLaneFiles.GetFilePathes("*_IntOfWL.xls"); MultiPeriodNarrowLaneOfBsdSolver solver = null; if (widelaneIntPathes.Length > 0 && widelaneIntPathes[0].ToLower().Contains("_intofwl.xls")) { solver = new MultiPeriodNarrowLaneOfBsdSolver(widelaneIntPathes, pppResultPathes, startCountToRemove, IsOutputInEachDirectory, this.OutputDirectory); } else { var pathes = fileOpenControl_intWideLaneFiles.FilePathes; var windeLaneIntObjs = MultiSitePeriodValueStorage.ParsePrnTables(pathes); foreach (var item in windeLaneIntObjs) { item.RemoveRmsGreaterThan(maxRms); } solver = new MultiPeriodNarrowLaneOfBsdSolver(windeLaneIntObjs, pppResultPathes, startCountToRemove, IsOutputInEachDirectory, this.OutputDirectory); } solver.MaxRms = maxRms; solver.MaxRmsTimes = maxRmsTimes; solver.MinSiteCount = minSiteCount; solver.IsLoopAllSats = isLoopAllSats; solver.MaxAllowedDiffer = maxAllowedDiffer; solver.IsOutputFraction = IsOutputFraction; solver.IsOutputInt = IsOutputInt; solver.IsOutputSummary = IsOutputSummary; solver.Run(); }
/// <summary> /// 构造函数 /// </summary> /// <param name="BasePrn">基准卫星</param> /// <param name="FloatAmbiSolution">PPP模糊度浮点解,未做差分,单位为周。</param> /// <param name="IntValueOfDifferWL">宽巷MW差分值,整型。</param> public EpochBsdOfNarrowLaneSolver(SatelliteNumber BasePrn, MultiSiteEpochValueStorage FloatAmbiSolution, MultiSitePeriodValueStorage IntValueOfDifferWL, string OutputDirectory, bool IsPppAmbiInCycleOrLen = true) : base("NL", BasePrn, OutputDirectory) { this.FloatAmbiSolution = FloatAmbiSolution; this.IntValueOfDifferWL = IntValueOfDifferWL; this.OutputDirectory = OutputDirectory; this.IsPppAmbiInCycleOrLen = IsPppAmbiInCycleOrLen; this.MaxRmsTimes = 2.5; Init(); }