/// <summary> /// 读取数据 /// </summary> private void ReadFile() { string lastChar = Geo.Utils.StringUtil.GetLastChar(ObsPath); string lastChar3 = Geo.Utils.StringUtil.GetLastChar(ObsPath, 3); string lastChar5 = Geo.Utils.StringUtil.GetLastChar(ObsPath, 5); if (String.Equals(lastChar, "o", StringComparison.CurrentCultureIgnoreCase) || String.Equals(lastChar3, "rnx", StringComparison.CurrentCultureIgnoreCase)) { obsFileReader = new RinexObsFileReader(ObsPath); ObsFile = obsFileReader.ReadObsFile(); } if (String.Equals(lastChar, "z", StringComparison.CurrentCultureIgnoreCase) || String.Equals(lastChar3, "crx", StringComparison.CurrentCultureIgnoreCase) || String.Equals(lastChar5, "crx.gz", StringComparison.CurrentCultureIgnoreCase) ) { Geo.IO.InputFileManager inputFileManager = new Geo.IO.InputFileManager(Setting.TempDirectory); this.ObsPath = inputFileManager.GetLocalFilePath(ObsPath, "*.*o;*.rnx", "*.*"); obsFileReader = new RinexObsFileReader(ObsPath); ObsFile = obsFileReader.ReadObsFile(); } if (String.Equals(lastChar, "s", StringComparison.CurrentCultureIgnoreCase)) { ObsFile = new TableObsFileReader(ObsPath).Read(); } if (ObsFile == null) { Geo.Utils.FormUtil.ShowWarningMessageBox("不支持输入文件格式!"); return; } this.bindingSource_obsInfo.DataSource = ObsFile; var prns = ObsFile.GetPrns(); prns.Sort(); this.bindingSource_sat.DataSource = prns; this.attributeBox1.DataGridView.DataSource = Geo.Utils.ObjectUtil.GetAttributes(ObsFile.Header, false); string msg = ""; msg += "首次观测时间:" + ObsFile.Header.StartTime + "\r\n"; msg += "最后观测时间:" + ObsFile.Header.EndTime + "\r\n"; msg += "采样间隔:" + ObsFile.Header.Interval + " 秒" + "\r\n"; this.textBox_show.Text = msg; }
/// <summary> /// 执行 /// </summary> /// <returns></returns> public override bool Do() { var reader = GetParamFileReader(); foreach (var item in reader) { StartTime = System.DateTime.Now; CurrentParam = (TParam)item; var inPath = item.InputPath; var outPath = item.OutputPath; //输出检查和设置 CheckOrSetOutputDirectory(outPath); // InputFileManager.LocalTempDirectory = OupputDirecory; //输入检查和设置 var FilePathes = InputFileManager.GetLocalFilePathes(inPath, WorkFileExtension, InputFileExtension); //执行计算 if (CurrentParam.IsParallel) { ParallelProcess(item, FilePathes, outPath); } else { SerialProcess(item, FilePathes, outPath); } var span = DateTime.Now - StartTime; var avrPerFile = span.TotalSeconds / FilePathes.Count; StringBuilder sb = new StringBuilder(); sb.AppendLine("操作 " + this.GetType() + "的参数 " + item + " 执行完成!耗时: " + span.ToString()); sb.Append("并行度:\t" + item.ParallelProcessCount + "\t文件数:\t" + FilePathes.Count); sb.AppendLine("\t总时耗(m):\t" + span.TotalMinutes.ToString("0.0000") + "\t单文件时耗(s):\t " + avrPerFile.ToString("0.000")); sb.AppendLine("\t占用内存:\t" + Geo.Utils.ProcessUtil.GetProcessUsedMemoryString()); // log.Info(msg); log.Fatal(sb.ToString()); } //if (Geo.Utils.FormUtil.ShowYesNoMessageBox(msg + "\r\n是否打开输出目录?") == System.Windows.Forms.DialogResult.Yes) //{ // Geo.Utils.FileUtil.OpenFileOrDirectory(this.OutputDirectory); //} return(true); }
/// <summary> /// 读取数据 /// </summary> private List <RinexObsFileHeader> ReadFileHeaders(string[] filePathes) { List <RinexObsFileHeader> headers = new List <RinexObsFileHeader>(); foreach (var obsPath in filePathes) { RinexObsFileHeader header = null; RinexObsFileReader obsFileReader; string lastChar = Geo.Utils.StringUtil.GetLastChar(obsPath); string lastChar3 = Geo.Utils.StringUtil.GetLastChar(obsPath, 3); string lastChar5 = Geo.Utils.StringUtil.GetLastChar(obsPath, 5); if (String.Equals(lastChar, "o", StringComparison.CurrentCultureIgnoreCase) || String.Equals(lastChar3, "rnx", StringComparison.CurrentCultureIgnoreCase)) { obsFileReader = new RinexObsFileReader(obsPath); header = obsFileReader.GetHeader(); } if (String.Equals(lastChar, "z", StringComparison.CurrentCultureIgnoreCase) || String.Equals(lastChar3, "crx", StringComparison.CurrentCultureIgnoreCase) || String.Equals(lastChar5, "crx.gz", StringComparison.CurrentCultureIgnoreCase) ) { Geo.IO.InputFileManager inputFileManager = new Geo.IO.InputFileManager(Setting.TempDirectory); var obsPathes = inputFileManager.GetLocalFilePath(obsPath, "*.*o;*.rnx", "*.*"); obsFileReader = new RinexObsFileReader(obsPathes); header = obsFileReader.GetHeader(); } if (header == null) { log.Error("不支持输入文件格式!" + obsPath); } else { headers.Add(header); log.Info("成功读入:" + obsPath); } } return(headers); }
/// <summary> /// 构造函数 /// </summary> /// <param name="OutputDirectory"></param> public MultiSiteObsStreamer(string OutputDirectory) { this.OutputDirectory = OutputDirectory; InputFileManager = new Geo.IO.InputFileManager(); }