/// <summary> /// 创建 /// </summary> /// <param name="oDir"></param> /// <param name="berFileType"></param> /// <returns></returns> public static IBerFile Create(string oDir, BerFileType berFileType) { IBerFile o = null; switch (berFileType) { case BerFileType.ABB: o = AbbFile.CreateFromODir(oDir); break; case BerFileType.STA: o = StaFile.CreateFromODir(oDir); break; case BerFileType.CRD: o = CrdFile.CreateFromODir(oDir); break; case BerFileType.VEL: o = VelFile.CreateFromODir(oDir); break; default: break; } return(o); }
/// <summary> /// 合并 /// </summary> /// <param name="textA"></param> /// <param name="textB"></param> /// <param name="berFileType"></param> /// <returns></returns> public static IBerFile Merge(string textA, string textB, BerFileType berFileType) { IBerFile a = null, b = null; switch (berFileType) { case BerFileType.ABB: a = AbbFile.ParseText(textA); b = AbbFile.ParseText(textB); break; case BerFileType.STA: a = StaFile.ParseText(textA); b = StaFile.ParseText(textB); break; case BerFileType.CRD: a = CrdFile.ParseText(textA); b = CrdFile.ParseText(textB); break; case BerFileType.VEL: a = VelFile.ParseText(textA); b = VelFile.ParseText(textB); break; default: break; } return(Merge(a, b, berFileType)); }
/// <summary> /// 合并 /// </summary> /// <param name="a"></param> /// <param name="b"></param> /// <param name="berFileType"></param> /// <returns></returns> public static IBerFile Merge(IBerFile a, IBerFile b, BerFileType berFileType) { IBerFile o = null; switch (berFileType) { case BerFileType.ABB: o = AbbFile.Merger(a as AbbFile, b as AbbFile); break; case BerFileType.STA: o = StaFile.Merger(a as StaFile, b as StaFile); break; case BerFileType.CRD: o = CrdFile.Merger(a as CrdFile, b as CrdFile); break; case BerFileType.VEL: o = VelFile.Merger(a as VelFile, b as VelFile); break; default: break; } return(o); }
/// <summary> /// 合并两个 ABB 文件。 /// </summary> /// <param name="one"></param> /// <param name="another"></param> /// <returns></returns> public static AbbFile Merger(AbbFile one, AbbFile another) { AbbFile newOne = new AbbFile(); newOne.Name = "Mergered"; newOne.Items = new List <AbbItem>(); newOne.Items.AddRange(one.Items); foreach (var item in another.Items) { newOne.Add(item); } return(newOne); }
/// <summary> /// 从文件中读取。 /// </summary> /// <param name="path"></param> /// <returns></returns> public static AbbFile Parse(string path) { using (StreamReader reader = new StreamReader(path)) { AbbFile file = new AbbFile(); file.Items = new List <AbbItem>(); string line = null; int count = 0; while ((line = reader.ReadLine()) != null) { count++; if (count < 6) { continue; } AbbItem item = AbbItem.ParseLine(line); file.Items.Add(item); } return(file); } }
/// <summary> /// 解析字符串。 /// </summary> /// <param name="txt"></param> /// <returns></returns> public static AbbFile ParseText(string txt) { String[] lines = txt.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries); AbbFile file = new AbbFile(); file.Items = new List <AbbItem>(); int count = 0; foreach (var line in lines) { count++; if (count < 6) { continue; } AbbItem item = AbbItem.ParseLine(line); file.Items.Add(item); } return(file); }
/// <summary> /// 从包含O文件的文件夹中提取。 /// </summary> /// <param name="oDir"></param> /// <returns></returns> public static AbbFile CreateFromODir(string oDir) { AbbFile file = new AbbFile(); file.Items = new List <AbbItem>(); string[] files = Directory.GetFiles(oDir, Setting.RinexOFileFilter); foreach (var item in files) { Data.Rinex.RinexObsFileHeader h = new Data.Rinex.RinexObsFileReader(item).GetHeader(); //判断是否已经存在。 string makerName = StringUtil.FillZero(h.SiteInfo.SiteName.ToUpper(), 4).Substring(0, 4); if (file.Items.Find(m => m.MakerName == makerName) != null) { continue; } AbbItem sta = new AbbItem(makerName, h.SiteInfo.MarkerNumber, file.Items); file.Items.Add(sta); } return(file); }