Ejemplo n.º 1
0
        /// <summary>
        /// Generate data info text of MICAPS 11
        /// </summary>
        /// <param name="aDataInfo"></param>
        /// <returns></returns>
        public string GenerateInfoText_M11(MICAPS11DataInfo aDataInfo)
        {
            string dataInfo;

            dataInfo  = "File Name: " + aDataInfo.FileName;
            dataInfo += Environment.NewLine + "Description: " + aDataInfo.Description;
            dataInfo += Environment.NewLine + "Time: " + aDataInfo.DateTime.ToString("yyyy-MM-dd HH:00");
            dataInfo += Environment.NewLine + "Forecast Hours = " + aDataInfo.hours.ToString() +
                        "  Level = " + aDataInfo.level.ToString();
            dataInfo += Environment.NewLine + "Xsize = " + aDataInfo.XNum.ToString() +
                        "  Ysize = " + aDataInfo.YNum.ToString();

            return(dataInfo);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Read MICAPS 11 data info
        /// </summary>
        /// <param name="aFile">file path</param>
        /// <returns>MICAPS 11 data info</returns>
        public MICAPS11DataInfo ReadMicaps11(string aFile)
        {
            StreamReader sr = new StreamReader(aFile, Encoding.Default);
            string       aLine;

            string[]         dataArray;
            int              i, j, n, LastNonEmpty;
            List <string>    dataList     = new List <string>();
            MICAPS11DataInfo aM11DataInfo = new MICAPS11DataInfo();

            aM11DataInfo.FileName = aFile;
            aLine = sr.ReadLine();
            aM11DataInfo.Description = aLine;
            aLine        = sr.ReadLine();
            dataArray    = aLine.Split();
            LastNonEmpty = -1;
            dataList.Clear();
            for (i = 0; i < dataArray.Length; i++)
            {
                if (dataArray[i] != string.Empty)
                {
                    LastNonEmpty++;
                    dataList.Add(dataArray[i]);
                }
            }
            for (n = 0; n <= 10; n++)
            {
                if (dataList.Count < 14)
                {
                    aLine        = sr.ReadLine();
                    dataArray    = aLine.Split();
                    LastNonEmpty = -1;
                    for (i = 0; i < dataArray.Length; i++)
                    {
                        if (dataArray[i] != string.Empty)
                        {
                            LastNonEmpty++;
                            dataList.Add(dataArray[i]);
                        }
                    }
                }
                else
                {
                    break;
                }
            }
            aM11DataInfo.DateTime = Convert.ToDateTime(dataList[0] + "-" + dataList[1] + "-" + dataList[2] +
                                                       " " + dataList[3] + ":00");
            aM11DataInfo.hours = Convert.ToInt32(dataList[4]);
            aM11DataInfo.level = Convert.ToInt32(dataList[5]);
            aM11DataInfo.XDelt = Convert.ToSingle(dataList[6]);
            aM11DataInfo.YDelt = Convert.ToSingle(dataList[7]);
            aM11DataInfo.XMin  = Convert.ToSingle(dataList[8]);
            aM11DataInfo.XMax  = Convert.ToSingle(dataList[9]);
            aM11DataInfo.YMin  = Convert.ToSingle(dataList[10]);
            aM11DataInfo.YMax  = Convert.ToSingle(dataList[11]);
            aM11DataInfo.XNum  = Convert.ToInt32(dataList[12]);
            aM11DataInfo.YNum  = Convert.ToInt32(dataList[13]);

            if (aM11DataInfo.XMax > 1000)
            {
                aM11DataInfo.isLonLat = false;
            }
            else
            {
                aM11DataInfo.isLonLat = true;
            }
            aM11DataInfo.X = new double[aM11DataInfo.XNum];
            for (i = 0; i < aM11DataInfo.XNum; i++)
            {
                aM11DataInfo.X[i] = aM11DataInfo.XMin + i * aM11DataInfo.XDelt;
            }
            aM11DataInfo.Y = new double[aM11DataInfo.YNum];
            for (i = 0; i < aM11DataInfo.YNum; i++)
            {
                aM11DataInfo.Y[i] = aM11DataInfo.YMin + i * aM11DataInfo.YDelt;
            }

            string dataStr = sr.ReadToEnd();

            sr.Close();
            dataArray    = dataStr.Split();
            LastNonEmpty = -1;
            dataList.Clear();
            for (i = 0; i < dataArray.Length; i++)
            {
                if (dataArray[i] != string.Empty)
                {
                    LastNonEmpty++;
                    dataList.Add(dataArray[i]);
                }
            }

            aM11DataInfo.UGridData = new double[aM11DataInfo.YNum, aM11DataInfo.XNum];
            aM11DataInfo.VGridData = new double[aM11DataInfo.YNum, aM11DataInfo.XNum];
            int dataNum = aM11DataInfo.YNum * aM11DataInfo.XNum;

            for (i = 0; i < aM11DataInfo.YNum; i++)
            {
                for (j = 0; j < aM11DataInfo.XNum; j++)
                {
                    aM11DataInfo.UGridData[i, j] = double.Parse(dataList[i * aM11DataInfo.XNum + j]);
                    aM11DataInfo.VGridData[i, j] = double.Parse(dataList[dataNum + i * aM11DataInfo.XNum + j]);
                }
            }

            return(aM11DataInfo);
        }