/// <summary> /// 值是否相等 /// </summary> /// <param name="obj"></param> /// <returns></returns> public override bool Equals(object obj) { AbbItem o = obj as AbbItem; if (o == null) { return(false); } return(MakerName.Equals(o.MakerName)); }
/// <summary> /// KARR 50139M001 KARR KA Added by SR updabb /// KAYT KAYT KY Added by SR updabb /// </summary> /// <param name="line"></param> /// <returns></returns> public static AbbItem ParseLine(string line) { AbbItem item = new AbbItem(); item.MakerName = line.Substring(0, 4); item.MakerNumber = line.Substring(5, 11).Trim(); item.Id4 = line.Substring(25, 4); item.Id2 = line.Substring(34, 2); item.Remark = line.Substring(41).Trim(); return(item); }
/// <summary> /// 添加一个子项,如果已经存在,则不添加。 /// 若添加,还要保证ID2没有重复。 /// </summary> /// <param name="key"></param> public void Add(AbbItem item) { if (!Items.Contains(item)) { if (Items.Find(m => m.Id2 == item.Id2) != null) { item.Id2 = AbbItem.GenId2(Items, item.MakerName); } Items.Add(item); } }
/// <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); }