コード例 #1
0
        /// <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);
        }
コード例 #2
0
        /// <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);
        }
コード例 #3
0
        /// <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);
        }
コード例 #4
0
        /// <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;
        }