protected override void Run(string[] obsPathes) { // var satEleDir = fileOpenControl_satElevation.FilePath;// @"D:\Data\2013[甘肃CORS数据]\1103\GpsOnly\GPS卫星高度角\"; var pppResults = fileOpenControl_pppResults.GetFilePathes("_Params" + Setting.TextTableFileExtension);// Directory.GetFiles(satEleDir); var angleCut = double.Parse(textBox_angleCut.Text); var abmiResultInCycle = PppTableResultFileReader.ReadPppAmbiResultInCycle(pppResults); var SatElevatoinTableBuilder = new SatElevatoinTableBuilder(obsPathes, SatelliteTypes, Interval); var satEleTables = SatElevatoinTableBuilder.Build(); var mw = new MwTableBuilder(obsPathes, AngleCut, namedIntControl_emptyRowCount.Value, OutputDirectory, this.SatelliteTypes).Build(); PeriodPrnManager PeriodPrnManager = BuildPeriodBasePrn(satEleTables); MultiPeriodBsdProductSolver solver = new MultiPeriodBsdProductSolver(abmiResultInCycle, mw, PeriodPrnManager); solver.MaxAllowedDiffer = namedFloatControl1maxAllowedDiffer.Value; solver.IsOutputFraction = IsOutputFraction; solver.IsOutputInt = IsOutputInt; solver.IsOutputSummary = IsOutputSummary; solver.Run(); //var solver = new BsdAmbiSolver(obsPathes, pppResults, this.SatelliteTypes[0], angleCut, namedIntControl_minSiteCount.Value, this.namedIntControl_minEpoch.Value, OutputDirectory); //solver.Run(); }
/// <summary> /// 传统构造函数。 /// </summary> /// <param name="pathesOfWLInt"></param> /// <param name="pppPathes"></param> /// <param name="IsOutputInEachDirectory"></param> /// <param name="OutputDirectory"></param> public MultiPeriodNarrowLaneOfBsdSolver(string[] pathesOfWLInt, string[] pppPathes, int removeCountOfEachSegment, bool IsOutputInEachDirectory, string OutputDirectory) { //读取宽巷的整数解 //分基准星计算 this.IsOutputInEachDirectory = IsOutputInEachDirectory; this.OutputDirectory = OutputDirectory; this.IntOfWLPathes = new Dictionary <SatelliteNumber, List <string> >(); SatelliteNumber basePrn = new SatelliteNumber(); foreach (var path in pathesOfWLInt) { basePrn = SatelliteNumber.Parse(Path.GetFileName(path).Substring(4, 3)); if (IntOfWLPathes.ContainsKey(basePrn)) { IntOfWLPathes[basePrn].Add(path); } else { IntOfWLPathes[basePrn] = new List <string>(); IntOfWLPathes[basePrn].Add(path); } } this.FloatAmbiguitiesOfPpp = PppTableResultFileReader.ReadPppAmbiResultInCycle(pppPathes); //修理浮点解 FloatAmbiguitiesOfPpp.RemoveStartRowOfEachSegment(removeCountOfEachSegment); MaxAllowedDiffer = 0.25; }
/// <summary> /// 新方法构造函数 /// </summary> /// <param name="bsdWidelaneInts">不同基准星对应的星间单差宽巷模糊度</param> /// <param name="pppPathes"></param> /// <param name="IsOutputInEachDirectory"></param> /// <param name="OutputDirectory"></param> public MultiPeriodNarrowLaneOfBsdSolver( BaseDictionary <SatelliteNumber, MultiSitePeriodValueStorage> bsdWidelaneInts, string[] pppPathes, int removeCountOfEachSegment, bool IsOutputInEachDirectory, string OutputDirectory) { //读取宽巷的整数解 //分基准星计算 this.IsOutputInEachDirectory = IsOutputInEachDirectory; this.OutputDirectory = OutputDirectory; this.BsdWidelaneInts = bsdWidelaneInts; this.FloatAmbiguitiesOfPpp = PppTableResultFileReader.ReadPppAmbiResultInCycle(pppPathes); //修理浮点解 FloatAmbiguitiesOfPpp.RemoveStartRowOfEachSegment(removeCountOfEachSegment); //this.FloatAmbiguitiesOfPpp.RemoveEmptyRows(); //删除空行,减少计算量 //this.FloatAmbiguitiesOfPpp.RemoveTableDataCountLessThan(MinEpoch, MinSiteCount); //清理卫星数量过少和测站数量过少的数据 MultiSitePppEpochValue = PppTableResultFileReader.ReadToEpochStorage(FloatAmbiguitiesOfPpp); MaxAllowedDiffer = 0.25; MaxRmsTimes = 2.5; }
/// <summary> /// 构造函数。基于文件路径。 /// </summary> /// <param name="pppResult"></param> /// <param name="obsPathes"></param> /// <param name="periodPrnPath"></param> public MultiPeriodBsdProductSolver(string[] pppResult, string[] obsPathes, string periodPrnPath) : this(PppTableResultFileReader.ReadPppAmbiResultInCycle(pppResult), ObjectTableManager.Read(obsPathes), PeriodPrnManager.ReadFromFile(periodPrnPath)) { }