/// <summary> /// 测站和估值坐标.z注意名称全为大写 /// </summary> /// <returns></returns> public Geo.BaseDictionary <string, NamedRmsXyz> GetSiteEstimateRmsdCoords() { var results = new Geo.BaseDictionary <string, NamedRmsXyz> (); var list = GetSinexSites(); foreach (var item in list) { var xyz = new NamedRmsXyz(item.Name.ToUpper().Trim(), new RmsedXYZ(item.EstimateXYZ, item.EstimateXyzStdDev)); results[item.Name] = xyz; } return(results); }
/// <summary> /// 读取FCB信息。 /// 由于信息文件较小,这里一次性读取完毕。 /// </summary> /// <returns></returns> public FcbFile Read() { if (!File.Exists(FilePath)) { log.Error("FCB文件不存在!" + FilePath); return(null); } log.Info("载入:" + FilePath); FcbFileHeader header = ReadHeader(FilePath); FcbFile file = new FcbFile(header); using (var streamReader = new StreamReader(FilePath)) { var line = ""; SkipHeader(streamReader, line); Time time = Time.Default; Geo.BaseDictionary <SatelliteNumber, FcbValue> currentEpochData = null; while ((line = streamReader.ReadLine()) != null) { if (line.StartsWith("*")) { time = Time.Parse(Geo.Utils.StringUtil.SubString(line, 1)); currentEpochData = file.GetOrCreate(time); } if (line.StartsWith("P")) { SatelliteNumber prn = SatelliteNumber.Parse(line.Substring(1, 3)); var val = Double.Parse(line.Substring(23, 10)); var rms = Geo.Utils.StringUtil.ParseDouble(line, 53); var item = new FcbValue(prn, time, val, rms); currentEpochData[item.Prn] = item; } } } return(file); }