/// <summary> /// 选择并复制文件 /// </summary> /// <param name="inpath"></param> /// <param name="subDirectory">子目录,若有</param> public bool Select(string inpath, string subDirectory = null) { if (IsMatch(inpath)) { var outpath = GetOutputPath(inpath, subDirectory); Gdp.Utils.FileUtil.CheckOrCreateDirectory(Path.GetDirectoryName(outpath)); try { File.Copy(inpath, outpath, true); if (this.Option.IsNavCopy) { var header = RinexObsFileReader.ReadHeader(inpath); if (header.HasNavFile)//同时输出导航文件 { var outpathNav = GetOutputPath(header.NavFilePath, subDirectory); File.Copy(header.NavFilePath, outpathNav, true); } } log.Info(Path.GetFileName(inpath) + " 匹配成功! 复制到 " + outpath); return(true); } catch (Exception ex) { log.Error("复制 " + inpath + " 到 " + outpath + " 发生错误!" + ex.Message); } } else { FailedPathes.Add(inpath); log.Info(Path.GetFileName(inpath) + " 匹配失败!"); } return(false); }
/// <summary> /// 读取数据 /// </summary> public static Data.Rinex.RinexObsFile ReadFile(string ObsPath) { Data.Rinex.RinexObsFile ObsFile = null; string lastChar = Gdp.Utils.StringUtil.GetLastChar(ObsPath); string lastChar3 = Gdp.Utils.StringUtil.GetLastChar(ObsPath, 3); string lastChar5 = Gdp.Utils.StringUtil.GetLastChar(ObsPath, 5); if (String.Equals(lastChar, "o", StringComparison.CurrentCultureIgnoreCase) || String.Equals(lastChar3, "rnx", StringComparison.CurrentCultureIgnoreCase)) { var 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) // ) //{ // Gdp.IO.InputFileManager inputFileManager = new Gdp.IO.InputFileManager(Setting.TempDirectory); // ObsPath = inputFileManager.GetLocalFilePath(ObsPath, "*.*o;*.rnx", "*.*"); // var obsFileReader = new RinexObsFileReader(ObsPath); // ObsFile = obsFileReader.ReadObsFile(); //} //if (String.Equals(lastChar, "s", StringComparison.CurrentCultureIgnoreCase)) //{ // ObsFile = new TableObsFileReader(ObsPath).Read(); //} if (ObsFile == null) { throw new Exception("不支持输入文件格式!"); return(ObsFile); } return(ObsFile); }
/// <summary> /// 从观测文件中提取MW原始值。作为具有卫星和接收机硬件延迟的宽巷模糊度。 /// </summary> /// <returns></returns> private ObjectTableManager ExtractRawMwValueFromObsFiles(string namePostfix = "_MwRaw") { //提取MW值 //并行提速. var dic = new ConcurrentDictionary <string, ObjectTableStorage>(); Parallel.ForEach <string>(FilePathes, filePath => { var builder = new RawMwTableBuilder(filePath, AngleCut, RowCountToBeEmpty, SatelliteTypes); builder.Completed += Builder_Completed; builder.IsSmoothRange = IsSmoothRange; var table = builder.Build(); if (table != null) { var siteName = RinexObsFileReader.ReadSiteName(filePath, 8).Trim() + namePostfix; //var fileName = Path.GetFileName(filePath); dic.TryAdd(siteName, table); } }); var mwTables = new ObjectTableManager(dic) { OutputDirectory = OutputDirectory }; OneFileProcessed?.Invoke(); return(mwTables); }
/// <summary> /// 转换写入文件。 /// </summary> /// <param name="inputPath"></param> /// <param name="outputPath"></param> /// <param name="outVersion"></param> public static void ToRinex(string inputPath, string outputPath, double outVersion) { var obsFile = new RinexObsFileReader(inputPath).ReadObsFile(); var txt = new RinexObsFileWriter().GetRinexString(obsFile, outVersion); File.WriteAllText(outputPath, txt, Encoding.ASCII); }
/// <summary> /// 构造函数。 /// </summary> /// <param name="obsPathes"></param> /// <param name="satTypes"></param> /// <param name="outInterval"></param> public SatElevatoinTableBuilder(string[] obsPathes, List <SatelliteType> satTypes, double outInterval = 30, double AngleCut = 0) { this.SatelliteTypes = satTypes; this.OutInterval = outInterval; this.ObsPathes = obsPathes; this.NamePostfix = "SatEle"; this.AngleCut = AngleCut; this.EphemerisService = GlobalNavEphemerisService.Instance;// GlobalIgsEphemerisService.Instance; this.OutputDirectory = Setting.TempDirectory; this.SiteCoords = new Dictionary <string, XYZ>(); Time StartTime = new Time(); Time endTime = new Time(); foreach (var filePath in ObsPathes) { var header = new RinexObsFileReader(filePath, false).GetHeader(); var siteXyz = header.SiteInfo.ApproxXyz; var fileName = Path.GetFileName(filePath); var tableName = fileName + "_" + NamePostfix; SiteCoords[tableName] = siteXyz; if (endTime != header.EndTime) { endTime = header.EndTime; } if (StartTime != header.StartTime) { StartTime = header.StartTime; } } TimeLooper = new TimeLooper(new TimePeriod(StartTime, endTime), outInterval); }
protected virtual void button_showOnMap_Click(object sender, EventArgs e) { if (ShowLayer != null) { if (checkBox_clearCoords.Checked) { this.Coords.Clear(); } if (Coords.Count == 0) { foreach (var path in ParseInputPathes()) { var header = RinexObsFileReader.ReadHeader(path); this.Coords.Add(new NamedRmsXyz(System.IO.Path.GetFileName(path), new RmsedXYZ(header.ApproxXyz))); } } if (Coords == null || Coords.Count == 0) { log.Warn("输入结果为空。"); return; } int start = this.paramVectorRenderControl1.StartIndex; if (start >= Coords.Count) { log.Warn("起始历元编号过大!总结果数 " + Coords.Count + ",起始历元编号:" + start + ", 为了可显示,已经将其设为 0"); start = 0; } PostionResultLayerBuilder builder = new PostionResultLayerBuilder(Coords, start); //builder.AddPt(GnssResults[0].SiteInfo.ApproxXyz, GnssResults[0].SiteInfo.MarkerName + "ApproxPoint"); ShowLayer(builder.Build()); } }
/// <summary> /// 构造函数 /// </summary> /// <param name="table"></param> /// <param name="filePath"></param> /// <param name="isTempPath">是否是临时路径,如果是,则不进行提示</param> /// <param name="enableDelete"></param> public ObsFileChartEditForm(string filePath, bool isTempPath = false, bool isSort = false, bool isDrawAll = false, bool enableDelete = false) { InitializeComponent(); this.isDrawAll = isDrawAll; this.ObsFile = RinexObsFileReader.Read(filePath); this.Text = ObsFile.Header.FileName; this.Table = ObsFile.BuildObjectTable(isDrawAll); if (isSort) { Table.ParamNames.Sort(); } this.ObsFilePath = filePath; this.chartControl1.EnableDelete = enableDelete; this.ObsFile = ObsFile; if (enableDelete) { if (!isTempPath) { Geo.Utils.FormUtil.ShowWarningMessageBox("请注意,所做修改将直接替换原文件!注意备份。\r\n" + filePath); } this.chartControl1.DataDeleting += ChartControl1_DataDeleting; } Draw(Table); }
/// <summary> /// 执行单个 /// </summary> /// <param name="inputPath"></param> protected override void Run(string inputPath) { if (this.IsCancel) { return; } var reader = new RinexObsFileReader(inputPath, false); var header = reader.GetHeader(); var coord = SiteCoordService.Get(header.MarkerName, header.StartTime); if (coord == null) { FailedCount++; ShowInfo("Faild:\t" + inputPath); log.Error("坐标获取失败,本文件执行取消。 " + inputPath); return; } var outPath = Path.Combine(this.OutputDirectory, Path.GetFileName(inputPath)); Dictionary <string, string> dic = new Dictionary <string, string>(); dic[RinexHeaderLabel.APPROX_POSITION_XYZ] = RinexObsFileWriter.BuildApproxXyzLine(coord.Value); var replacer = new LineFileReplacer(inputPath, outPath, dic); replacer.EndMarkers.Add(RinexHeaderLabel.END_OF_HEADER); replacer.AddingLines.Add(RinexObsFileWriter.BuildGnsserCommentLines()); replacer.AddingLines.Add(RinexObsFileWriter.BuildCommentLine("Approx XYZ updated with " + SiteCoordService.Name + " " + Geo.Utils.DateTimeUtil.GetFormatedDateTimeNow())); replacer.Run(); log.Info("更新成功! " + coord.Value + ", " + inputPath); this.ProgressBar.PerformProcessStep(); }
/// <summary> /// 解析,从观测文件。 /// </summary> /// <param name="oFilePath"></param> /// <returns></returns> public Dictionary <string, string> ParseFromRinexOFile(string oFilePath) { RinexObsFileReader reader = new RinexObsFileReader(oFilePath, false); var header = reader.GetHeader(); return(GetParamFromHeader(header)); }
private void fileOpenControl1_FilePathSetted(object sender, EventArgs e) { var file = fileOpenControl_inputPathes.GetFilePath("*.*o"); if (File.Exists(file)) { var oneHeader = new RinexObsFileReader(file, false).GetHeader(); } }
private void fileOpenControl1_FilePathSetted(object sender, EventArgs e) { var file = fileOpenControl_inputPathes.GetFilePath("*.*O"); if (File.Exists(file)) { var oneHeader = new RinexObsFileReader(file, false).GetHeader(); this.textBox_interval.Text = oneHeader.Interval + ""; } }
private void fileOpenControl1_FilePathSetted(object sender, EventArgs e) { var file = fileOpenControl_inputPathes.GetFilePath("*.*O"); if (File.Exists(file)) { var oneHeader = new RinexObsFileReader(file, false).GetHeader(); this.timeLoopControl1.TimeStepControl.SetValue(oneHeader.Interval); this.timeLoopControl1.TimePeriodControl.SetTimePerid(new TimePeriod(oneHeader.StartTime, oneHeader.EndTime)); } }
/// <summary> /// 将结果更新到RINEX头文件中,将覆盖以往的参数。 /// </summary> /// <param name="existOFilePath"></param> /// <param name="newOfilePath"></param> public void UpdateToRinexOFileHeader(string existOFilePath, string newOfilePath) { RinexObsFileReader reader = new RinexObsFileReader(existOFilePath, false); var header = reader.GetHeader(); var remainedComments = FilterParamComments(header.Comments); remainedComments.AddRange(this.ToMarkedLines()); header.Comments = remainedComments; RinexObsFileReplacer replacer = new RinexObsFileReplacer(existOFilePath); replacer.ReplaceHeader(header, newOfilePath); }
/// <summary> /// 一个测站,一个文件。 /// </summary> /// <param name="filePath"></param> /// <returns></returns> private ObjectTableStorage BuildTable(string filePath) { var header = new RinexObsFileReader(filePath, false).GetHeader(); var siteXyz = header.SiteInfo.ApproxXyz; var fileName = Path.GetFileName(filePath); var tableName = fileName + "_" + NamePostfix; //var ObsDataSource = new RinexFileObsDataSource(filePath); return(BuildTable(siteXyz, tableName)); }
private void button_run_Click(object sender, EventArgs e) { var outDir = directorySelectionControl_outputDir.Path; var outVersion = namedFloatControl_outVersion.GetValue(); List <string> files = new List <string>(fileOpenControl_inputs.FilePathes); if (files.Count == 0) { Geo.Utils.FormUtil.ShowWarningMessageBox("巧妇难为无米之炊!"); return; } progressBarComponent1.InitProcess(files.Count); string currentSiteName = null; RinexObsFile currentFile = null; string readiedFilePath = null; foreach (var path in files) { progressBarComponent1.PerformProcessStep(); var siteName = Path.GetFileName(path).Substring(0, 4); if (currentSiteName == null) { currentSiteName = siteName; } if (!String.Equals(currentSiteName, siteName, StringComparison.CurrentCultureIgnoreCase)) { OutputFile(outDir, outVersion, currentSiteName, currentFile, readiedFilePath); currentSiteName = siteName; currentFile = null; } RinexObsFile file = new RinexObsFileReader(path, true).ReadObsFile(); readiedFilePath = path;//存储刚刚读取的路径,用户获取后缀名 if (currentFile == null) { currentFile = file; } else//拼接 { currentFile.Add(file); } } OutputFile(outDir, outVersion, currentSiteName, currentFile, readiedFilePath); currentFile = null; progressBarComponent1.Full(); Geo.Utils.FormUtil.ShowOkAndOpenDirectory(outDir); }
/// <summary> /// 读取并构建 /// </summary> /// <param name="Path"></param> /// <returns></returns> private ObjectTableStorage Build(string Path) { var source = new RinexObsFileReader(Path); ObjectTableStorage table = new ObjectTableStorage(); table.Name = System.IO.Path.GetFileName(Path) + FileNames.TextExcelFileExtension; foreach (var epochInfo in source) { ObsToRow(table, epochInfo); } return(table); }
protected override void Run(string inputPath) { RinexObsFileReader reader = new RinexObsFileReader(inputPath, false); var header = reader.GetHeader(); StationInfo info = new StationInfo(header.SiteInfo, header.ObsInfo); lock (locker) { StationInfoWriter.Write(info); } base.Run(inputPath); }
protected override void Run(string inputPath) { base.Run(inputPath); var obsFileReader = new RinexObsFileReader(inputPath); var ObsFile = obsFileReader.ReadObsFile(); var table = new ObsFileToTableBuilder().Build(ObsFile); ObjectTableManager mgr = new ObjectTableManager(this.OutputDirectory); mgr.Add(table); mgr.WriteAllToFileAndClearBuffer(); // Geo.Utils.FormUtil.ShowOkAndOpenDirectory(mgr.OutputDirectory); }
/// <summary> /// 以多(连续)文件路径构建。 /// </summary> /// <param name="filePathes">观测文件路径,默认为采用同一个测站的数据,请输入时注意判断。</param> public MultiRinexFileObsDataSource(string[] filePathes) { this.ObsFileReaders = new List <RinexObsFileReader>(); foreach (var filePath in filePathes) { var obsFileReader = new RinexObsFileReader(filePath); ObsFileReaders.Add(obsFileReader); } this.CurrentIndex = 0; var header = this.CurrentReader.GetHeader(); this.SiteInfo = header.SiteInfo; this.ObsInfo = header.ObsInfo; }
/// <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; }
private void SetCoordFromObsFile() { var path = fileOpenControl_extractFromOFile.FilePath; RinexObsFileReader reader = new RinexObsFileReader(path, false); var header = reader.GetHeader(); if (header.ApproxXyz != null) { SetXyz(header.ApproxXyz); } else { Geo.Utils.FormUtil.ShowWarningMessageBox("很抱歉,所选文件不包含坐标!"); } }
/// <summary> /// 重写头部信息 /// </summary> /// <param name="header"></param> public void ReWriteHeader(RinexObsFileHeader header) { this.Dispose(); //读取 RinexObsFile obsFile = null; using (RinexObsFileReader reader = new RinexObsFileReader(this.FilePath)) { obsFile = reader.ReadObsFile(); header.ObsCodes = obsFile.Header.ObsCodes; obsFile.Header = header; } //重写 this.Writer = new StreamWriter(FilePath, false, Encoding.ASCII); this.Write(obsFile); }
/// <summary> /// 时段分组 /// </summary> /// <param name="inputs"></param> /// <param name="MinPhaseSpanMinutes"></param> /// <returns></returns> public static Dictionary <TimePeriod, List <string> > TimePeriodGroup(string[] inputs, double MinPhaseSpanMinutes) { Dictionary <string, TimePeriod> periods = new Dictionary <string, TimePeriod>(); foreach (var path in inputs) { if (!Geo.Utils.FileUtil.IsValid(path)) { continue; } var time = RinexObsFileReader.ReadPeriod(path); periods[path] = time; } Dictionary <TimePeriod, List <string> > grouped = TimePeriod.GroupToPeriods(periods, MinPhaseSpanMinutes); return(grouped); }
private void Process(string subDir, string inputPath) { try { ShowInfo("processing :" + inputPath); var header = RinexObsFileReader.ReadHeader(inputPath); var siteInfo = header.SiteInfo; var obsInfo = header.ObsInfo; table.NewRow(); if (IsLonLatFirst) { table.AddItem("Lon", siteInfo.ApproxGeoCoord.Lon); table.AddItem("Lat", siteInfo.ApproxGeoCoord.Lat); table.AddItem("Name", siteInfo.SiteName); } else { table.AddItem("Name", siteInfo.SiteName); table.AddItem("Lon", siteInfo.ApproxGeoCoord.Lon); table.AddItem("Lat", siteInfo.ApproxGeoCoord.Lat); } table.AddItem("Height", siteInfo.ApproxGeoCoord.Height); table.AddItem("X", siteInfo.ApproxXyz.X); table.AddItem("Y", siteInfo.ApproxXyz.Y); table.AddItem("Z", siteInfo.ApproxXyz.Z); table.AddItem("ReceiverType", siteInfo.ReceiverType); table.AddItem("ReceiverNumber", siteInfo.ReceiverNumber); table.AddItem("AntennaType", siteInfo.AntennaType); table.AddItem("AntennaNumber", siteInfo.AntennaNumber); this.Invoke(new Action(() => { this.progressBar1.PerformStep(); this.progressBar1.Refresh(); })); } catch (Exception ex) { log.Error("转换出错:\t" + inputPath + "\t, " + ex.Message); } }
/// <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="oFilePath"></param> /// <param name="EphemerisService"></param> /// <param name="tableName"></param> /// <param name="AngleCut"></param> /// <returns></returns> public static ObjectTableStorage BuildTable(string oFilePath, double AngleCut = 12, IEphemerisService EphemerisService = null, string tableName = null) { if (String.IsNullOrWhiteSpace(tableName)) { tableName = Path.GetFileName(oFilePath) + "-卫星高度角"; } RinexObsFileReader reader = new RinexObsFileReader(oFilePath); var header = reader.GetHeader(); var siteXyz = header.ApproxXyz; if (EphemerisService == null) { if (File.Exists(header.NavFilePath))//优先考虑自带导航文件 { EphemerisService = EphemerisDataSourceFactory.Create(header.NavFilePath); } else { EphemerisService = GlobalNavEphemerisService.Instance; } } var ephObj = EphemerisService.Get(SatelliteNumber.G01, reader.GetHeader().StartTime); if (ephObj == null) { EphemerisService = GlobalIgsEphemerisService.Instance; } var table = new ObjectTableStorage(tableName); while (reader.MoveNext()) { var time = reader.Current.ReceiverTime; AddRow(AngleCut, EphemerisService, siteXyz, table, time); } return(table); }
protected override void Run(string[] inputPathes) { this.ProgressBar.Init(new List <string> { "统计", "复制或移动" }, inputPathes.Length); foreach (var path in inputPathes) { RinexObsFileHeader header = RinexObsFileReader.ReadHeader(path); var name = Geo.Utils.StringUtil.SubString(header.MarkerName, 0, LabelCharCount); if (IsIgnoreCase) { name = name.ToUpper(); } Result.GetOrCreate(name).Add(path); this.ProgressBar.PerformProcessStep(); } this.ProgressBar.PerformClassifyStep(Result.Data.Count); int counter = 0; foreach (var item in Result.Data) { if (item.Value.Count > 1) { foreach (var path in item.Value) { var toPath = Path.Combine(OutputDirectory, item.Key, Path.GetFileName(path)); Geo.Utils.FileUtil.CopyOrMoveFile(path, toPath, !IsMoveOrCopy, true); counter++; } } this.ProgressBar.PerformProcessStep(); } var info = "发现了 " + counter + " 个同名测站。已 " + (IsMoveOrCopy ? " 移动!!如在默认临时文件夹,请及时移出!!否则重启后将被清空。 " : " 复制 "); log.Info(info); }
private void CombineFilesInOneSite(int keyCount, string outDir, double outVersion, List <string> oneSiteFiles) { RinexObsFile currentFile = null; string readiedFilePath = null; string currentSiteName = null; oneSiteFiles.Sort(); foreach (var path in oneSiteFiles) { var siteName = Path.GetFileName(path).Substring(0, keyCount); if (currentSiteName == null) { currentSiteName = siteName; } if (!String.Equals(currentSiteName, siteName, StringComparison.CurrentCultureIgnoreCase)) { OutputFile(outDir, outVersion, currentSiteName, currentFile, readiedFilePath); currentSiteName = siteName; currentFile = null; } RinexObsFile file = new RinexObsFileReader(path, true).ReadObsFile(); readiedFilePath = path;//存储刚刚读取的路径,用户获取后缀名 if (currentFile == null) { currentFile = file; } else//拼接 { currentFile.Add(file); } } OutputFile(outDir, outVersion, currentSiteName, currentFile, readiedFilePath); currentFile = null; }
private void ChartControl1_DataDeleting(Dictionary <string, IntSegment> obj) { var segment = obj.First().Value; var indexes = Table.GetIndexValues <Time>(); var startEpoch = indexes[segment.Start]; var endEpoch = indexes[segment.End]; var timeperiod = new TimePeriod(startEpoch, endEpoch); var prns = new List <SatelliteNumber>(); foreach (var kv in obj) { prns.Add(SatelliteNumber.Parse(kv.Key)); } ObsFile.Remove(prns, timeperiod); RinexObsFileWriter.Write(ObsFile, ObsFilePath); this.ObsFile = RinexObsFileReader.Read(ObsFilePath); this.Table = ObsFile.BuildObjectTable(isDrawAll); Draw(Table); }
private RinexObsFileHeader ReadOriginalHeader(string inFilePath) { var reader = new RinexObsFileReader(inFilePath); return(reader.GetHeader());//以原头文件为蓝本 }