/// <summary> /// Read station info data /// </summary> /// <param name="timeIdx">Time index</param> /// <param name="levelIdx">Level index</param> /// <returns>StationInfoData</returns> public StationInfoData GetStationInfoData(int timeIdx, int levelIdx) { StreamReader sr = new StreamReader(this.FileName, System.Text.Encoding.UTF8); List <List <string> > dataList = new List <List <string> >(); sr.ReadLine(); string line = sr.ReadLine(); while (line != null) { if (line == String.Empty) { line = sr.ReadLine(); continue; } List <string> aList = new List <string>(line.Split(',')); dataList.Add(aList); line = sr.ReadLine(); } sr.Close(); StationInfoData stInfoData = new StationInfoData(); stInfoData.DataList = dataList; stInfoData.Fields = this.FieldList; stInfoData.Variables = this.VariableNames; return(stInfoData); }
/// <summary> /// Read station info data /// </summary> /// <param name="timeIdx">Time index</param> /// <param name="levelIdx">Level index</param> /// <returns>StationInfoData</returns> public StationInfoData GetStationInfoData(int timeIdx, int levelIdx) { StationInfoData stInfoData = new StationInfoData(); stInfoData.DataList = this.DataList; stInfoData.Fields = this.FieldList; stInfoData.Variables = this.VarList; return(stInfoData); }
/// <summary> /// Read station info data /// </summary> /// <param name="timeIdx">Time index</param> /// <param name="levelIdx">Level index</param> /// <returns>StationInfoData</returns> public StationInfoData GetStationInfoData(int timeIdx, int levelIdx) { StationInfoData stInfoData = new StationInfoData(); stInfoData.DataList = this.DataList; stInfoData.Fields = this.FieldList; stInfoData.Variables = this.VarList; List <string> stations = new List <string>(); int stNum = this.DataList.Count; for (int i = 0; i < stNum; i++) { stations.Add(this.DataList[i][0]); } stInfoData.Stations = stations; return(stInfoData); }
/// <summary> /// Read data info /// </summary> /// <param name="aFile">file path</param> public override void ReadDataInfo(string aFile) { FileStream fs = new FileStream(aFile, FileMode.Open, FileAccess.Read); BinaryReader br = new BinaryReader(fs, Encoding.Default); //Read file head //string header = System.Text.ASCIIEncoding.ASCII.GetString(br.ReadBytes(128)); string micapsType = System.Text.Encoding.Default.GetString(br.ReadBytes(12)).Trim(); Description = System.Text.Encoding.Default.GetString(br.ReadBytes(38)).Trim('\0'); string flag = System.Text.Encoding.Default.GetString(br.ReadBytes(8)).Trim('\0'); string version = System.Text.Encoding.Default.GetString(br.ReadBytes(8)).Trim('\0'); short aYear = br.ReadInt16(); short aMonth = br.ReadInt16(); short aDay = br.ReadInt16(); short aHour = br.ReadInt16(); short aMinute = br.ReadInt16(); Time = new DateTime(aYear, aMonth, aDay, aHour, aMinute, 0); short interval = br.ReadInt16(); XNum = br.ReadInt16(); YNum = br.ReadInt16(); ZNum = br.ReadInt16(); int radarCount = br.ReadInt32(); Lon_LT = br.ReadSingle(); Lat_LT = br.ReadSingle(); Lon_Center = br.ReadSingle(); Lat_Center = br.ReadSingle(); XDelt = br.ReadSingle(); YDelt = br.ReadSingle(); ZList = new List <double>(); for (int i = 0; i < 40; i++) { double z = br.ReadSingle(); if (z != 0) { ZList.Add(z); } } //Read Station Info StationInfo = new StationInfoData(); StationInfo.Fields.AddRange(new string[] { "Longitude", "Latitude", "Altitude", "MosiacFlag" }); for (int i = 0; i < 20; i++) { string stationName = System.Text.Encoding.Default.GetString(br.ReadBytes(16)).Trim('\0', ' '); if (!string.IsNullOrEmpty(stationName)) { StationInfo.Stations.Add(stationName); List <string> fieldList = new List <string>(); fieldList.Add(""); fieldList.Add(""); fieldList.Add(""); fieldList.Add(""); StationInfo.DataList.Add(fieldList); } } for (int i = 0; i < 20; i++) { double longitude = br.ReadSingle(); if (i < radarCount) { StationInfo.DataList[i][0] = longitude.ToString(); } } for (int i = 0; i < 20; i++) { double latitude = br.ReadSingle(); if (i < radarCount) { StationInfo.DataList[i][1] = latitude.ToString(); } } for (int i = 0; i < 20; i++) { double altitude = br.ReadSingle(); if (i < radarCount) { StationInfo.DataList[i][2] = altitude.ToString(); } } for (int i = 0; i < 20; i++) { int mosiacFlag = br.ReadChar(); if (i < radarCount) { StationInfo.DataList[i][3] = mosiacFlag.ToString(); } } int dataType = br.ReadInt16(); int levelDim = br.ReadInt16(); string reserved = System.Text.Encoding.Default.GetString(br.ReadBytes(168)); DataList = new List <double[, ]>(); MaxData = new double[YNum, XNum]; for (int i = 0; i < ZNum; i++) { double[,] aData = new double[YNum, XNum]; for (int j = 0; j < YNum; j++) { for (int k = 0; k < XNum; k++) { int datum = br.ReadByte(); aData[YNum - 1 - j, k] = (datum - 66) / 2.0; MaxData[YNum - 1 - j, k] = Math.Max(aData[YNum - 1 - j, k], MaxData[YNum - 1 - j, k]); } } DataList.Add(aData); } //Set projection parameters GetProjectionInfo(); CalCoordinate(); br.Close(); fs.Close(); Dimension tdim = new Dimension(DimensionType.T); tdim.DimValue.Add(DataConvert.ToDouble(Time)); tdim.DimLength = 1; this.TimeDimension = tdim; Dimension zdim = new Dimension(DimensionType.Z); zdim.DimValue.AddRange(ZList); zdim.DimLength = ZNum; Dimension xdim = new Dimension(DimensionType.X); xdim.SetValues(X); Dimension ydim = new Dimension(DimensionType.Y); ydim.SetValues(Y); Variable var = new Variable(); var.Name = "var"; var.SetDimension(tdim); var.SetDimension(zdim); var.SetDimension(ydim); var.SetDimension(xdim); List <Variable> vars = new List <Variable>(); vars.Add(var); this.Variables = vars; }