/// <summary> /// 读取卫星信息。 /// 由于卫星信息文件较小,这里一次性读取完毕。 /// </summary> /// <returns></returns> public ErpFile Read() { ErpFile ErpFile = new ErpFile(); ErpFile.Name = Path.GetFileName(FilePath); //log.Debug("暂未启用ERP文件!"); //return ErpFile; using (StreamReader sr = new StreamReader(FilePath)) { string line = null; //前四行没有用 line = sr.ReadLine(); line = sr.ReadLine(); line = sr.ReadLine(); line = sr.ReadLine(); //2018.6.7 kyc add if (Path.GetFileName(FilePath).ToString().Contains("cod") || Path.GetFileName(FilePath).ToString().Contains("com")) { line = sr.ReadLine(); line = sr.ReadLine(); } if (Path.GetFileName(FilePath).ToString().Contains("gfz")) { line = sr.ReadLine(); } while ((line = sr.ReadLine()) != null)//czs, 2018.06.09, 改回 { if (String.IsNullOrEmpty(line)) { continue; } //while (!string.IsNullOrEmpty(line = sr.ReadLine()))//kyc: 部分erp文件有无谓的换行符 //{ string[] strs = line.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); double mjd = 0; if (strs.Length < 16 || !double.TryParse(strs[1], out mjd)) { continue; } //此处保留先,ERP加上后,反而精度变得很差//2016.01.29, czs, hongqing //if (strs.Length != 16) // continue; ErpItem item = new ErpItem(); item.Mjd = double.Parse(strs[0]); item.Xpole = double.Parse(strs[1]) * 1E-6; item.Ypole = double.Parse(strs[2]) * 1E-6; item.Ut12Utc = double.Parse(strs[3]) * 1E-7; item.Lod = double.Parse(strs[4]) * 1E-7; item.Xsig = double.Parse(strs[5]) * 1E-6; item.Ysig = double.Parse(strs[6]) * 1E-6; item.UTsig = double.Parse(strs[7]) * 1E-7; item.LODsig = double.Parse(strs[8]) * 1E-7; item.Nr = double.Parse(strs[9]); item.Nf = double.Parse(strs[10]); item.Nt = double.Parse(strs[11]); item.Xrt = double.Parse(strs[12]) * 1E-6; item.Yrt = double.Parse(strs[13]) * 1E-6; item.Xrtsig = double.Parse(strs[14]) * 1E-6; item.Yrtsig = double.Parse(strs[15]) * 1E-6; ErpFile.Add(item.Mjd, item); } } return(ErpFile); }
/// <summary> /// ERP读取与服务 /// </summary> /// <param name="ErpFile"></param> public FileErpService(ErpFile ErpFile) { this.ErpFile = ErpFile; }