コード例 #1
0
        public static void GetGrADSLocationArray()
        {
            float lonOrign  = 87.08265f;
            float lonEWidth = 0.13513513f;

            float latOrign  = 6.87960f;
            float latEWidth = 0.13513513f;

            float[] levels = { 100,   500, 1000, 1400, 2000, 2400,  3000,  3600,  4200,
                               4800, 5600, 6300, 7200, 8100, 9200, 10300, 11800, 13500, 16000, 26000 };

            for (int i = 0; i < 413; i++)
            {
                ncData.lons[i] = GMAngle.FromDegrees(lonOrign + lonEWidth * i);
            }

            for (int j = 0; j < 263; j++)
            {
                ncData.lats[j] = GMAngle.FromDegrees(latOrign + latEWidth * j);
            }

            for (int k = 0; k < 19; k++)
            {
                ncData.levels[k] = levels[k];
            }
        }
コード例 #2
0
        public static void GetLocationArray()
        {
            float lonOrign  = 107.6954f;
            float lonEWidth = 0.1619f;

            float[] latsf = { 18.82040215f, 18.97357941f, 19.12661743f, 19.27951241f, 19.43226433f, 19.58487320f, 19.73733521f,
                              19.88965416f, 20.04182625f, 20.19385147f, 20.34572983f, 20.49745750f, 20.64903450f, 20.80046082f,
                              20.95173645f, 21.10285568f, 21.25382614f, 21.40464020f, 21.55530167f, 21.70580292f, 21.85614777f,
                              22.00633240f, 22.15636063f, 22.30622673f, 22.45593452f, 22.60548019f, 22.75486374f, 22.90408516f,
                              23.05314255f, 23.20203400f, 23.35075760f, 23.49931717f, 23.64770889f, 23.79593277f, 23.94398880f,
                              24.09187317f, 24.23958969f, 24.38713264f, 24.53450394f, 24.68170547f, 24.82872772f, 24.97557831f,
                              25.12225342f, 25.26875496f, 25.41507721f, 25.56122208f, 25.70718956f, 25.85297775f, 25.99859047f,
                              26.14401817f, 26.28926659f, 26.43433380f, 26.57921982f, 26.72392082f, 26.86843872f, 27.01277161f,
                              27.15692139f, 27.30088043f, 27.44465637f, 27.58824348f, 27.73164368f, 27.87485695f, 28.01788330f,
                              28.16071510f, 28.30335999f, 28.44581223f, 28.58807182f, 28.73013878f, 28.87201309f, 29.01369476f,
                              29.15518188f, 29.29647446f, 29.43757248f, 29.57847595f, 29.71918106f, 29.85969162f, 30.00000000f,
                              30.14011383f, 30.28002930f, 30.41974449f, 30.55926132f, 30.69857597f, 30.83769226f, 30.97660446f,
                              31.11531830f, 31.25382614f, 31.39213181f, 31.53023148f, 31.66813087f, 31.80582619f, 31.94331741f,
                              32.08060074f, 32.21767807f, 32.35455322f, 32.49121475f, 32.62767029f, 32.76391602f, 32.89995956f,
                              33.03579330f, 33.17142105f, 33.30683517f, 33.44203949f, 33.57703018f, 33.71181107f, 33.84638214f,
                              33.98074722f, 34.11489487f, 34.24883270f, 34.38255310f, 34.51606369f, 34.64935684f, 34.78244019f,
                              34.91530609f, 35.04795837f, 35.18039703f, 35.31262207f, 35.44462967f, 35.57641983f, 35.70799255f,
                              35.83935165f, 35.97048950f, 36.10141373f, 36.23211670f, 36.36260605f, 36.49287415f, 36.62292480f,
                              36.75275421f, 36.88236618f, 37.01175690f, 37.14093018f, 37.26988220f, 37.39861298f, 37.52712250f,
                              37.65541077f, 37.78347778f, 37.91132355f, 38.03894806f, 38.16635132f, 38.29352951f, 38.42049026f,
                              38.54722595f };
            //float[] levels ={ 1000.00f,950.00f,925.00f,900.00f,850.00f,800.00f,750.00f,700.00f,650.00f,600.00f,550.00f,500.00f,
            //                 450.00f,400.00f,350.00f,300.00f,250.00f,200.00f,150.00f,100.00f,50.00f};
            float[] levels = { 100,   500,  750, 1000, 1400, 2000,  2400,  3000,  3600,  4200,
                               4800, 5600, 6300, 7200, 8100, 9200, 10300, 11800, 13500, 16000, 26000 };
            for (int i = 0; i < ncData.nRow; i++)
            {
                ncData.lons[i] = GMAngle.FromDegrees(lonOrign + lonEWidth * i);
                ncData.lats[i] = GMAngle.FromDegrees(latsf[i]);
            }
            for (int i = 0; i < ncData.nLeval; i++)
            {
                ncData.levels[i] = levels[i];
            }
        }
コード例 #3
0
        /// <summary>
        /// 获取气象数据元数据
        /// </summary>
        /// <param name="path">配置文件路径</param>
        void GetMetaData(string path)
        {
            XmlDocument xmlDoc = new XmlDocument();

            xmlDoc.Load(path);
            _datasetName = xmlDoc.DocumentElement.Name;
            if (_datasetName == "MeteorologicalSet")
            {
                XmlNode root = xmlDoc.SelectSingleNode("MeteorologicalSet");
                if (root.FirstChild.Name == "Metadata")     //第一个节点是Metadata
                {
                    XmlNodeList metaList = root.FirstChild.ChildNodes;
                    foreach (XmlElement e in metaList)
                    {
                        if ("title" == e.Name)
                        {
                            meteorMetaData.Title = e.InnerText;
                        }
                        if ("undef" == e.Name)
                        {
                            meteorMetaData.UnDefine = e.InnerText;
                        }

                        if ("xdef" == e.Name)  //经度方向
                        {
                            meteorMetaData.nColumn = int.Parse(e.GetAttribute("Number"));
                            meteorMetaData.lons    = new GMAngle[meteorMetaData.nColumn];
                            if (e.GetAttribute("Style") == "linear")
                            {
                                meteorMetaData.lonInterval = float.Parse(e.GetAttribute("Interval"));
                                for (int i = 0; i < meteorMetaData.lons.Length; i++)
                                {
                                    meteorMetaData.lons[i] = GMAngle.FromDegrees(float.Parse(e.GetAttribute("Orignal")) + float.Parse(e.GetAttribute("Interval")) * i);
                                }
                            }
                            else
                            {
                                string[] data = e.InnerText.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                                for (int i = 0; i < meteorMetaData.lons.Length; i++)
                                {
                                    meteorMetaData.lons[i] = GMAngle.FromDegrees(float.Parse(data[i]));
                                }
                            }
                        }

                        if ("ydef" == e.Name)  //纬度方向
                        {
                            meteorMetaData.nRow = int.Parse(e.GetAttribute("Number"));
                            meteorMetaData.lats = new GMAngle[meteorMetaData.nRow];
                            if (e.GetAttribute("Style") == "linear")
                            {
                                meteorMetaData.latInterval = float.Parse(e.GetAttribute("Interval"));
                                for (int i = 0; i < meteorMetaData.lats.Length; i++)
                                {
                                    meteorMetaData.lats[i] = GMAngle.FromDegrees(float.Parse(e.GetAttribute("Orignal")) + float.Parse(e.GetAttribute("Interval")) * i);
                                }
                            }
                            else
                            {
                                string[] data = e.InnerText.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                                for (int i = 0; i < meteorMetaData.lats.Length; i++)
                                {
                                    meteorMetaData.lats[i] = GMAngle.FromDegrees(float.Parse(data[i]));
                                }
                            }
                        }

                        if ("zdef" == e.Name)  //高程方向
                        {
                            meteorMetaData.nLevel = int.Parse(e.GetAttribute("Number"));
                            meteorMetaData.levels = new float[meteorMetaData.nLevel];
                            if (e.GetAttribute("Style") == "linear")
                            {
                                for (int i = 0; i < meteorMetaData.levels.Length; i++)
                                {
                                    meteorMetaData.levels[i] = float.Parse(e.GetAttribute("Orignal")) + float.Parse(e.GetAttribute("Interval")) * i;
                                }
                            }
                            else
                            {
                                string[] data = e.InnerText.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                                for (int i = 0; i < meteorMetaData.levels.Length; i++)
                                {
                                    meteorMetaData.levels[i] = float.Parse(data[i]);
                                }
                            }
                        }

                        if ("tdef" == e.Name)  //时间
                        {
                            meteorMetaData.nTime = int.Parse(e.GetAttribute("Number"));
                            meteorMetaData.times = new string[meteorMetaData.nTime];

                            string[] data = e.GetAttribute("Orignal").Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                            meteorMetaData.startTime = new DateTime(int.Parse(data[3]), int.Parse(data[2]), int.Parse(data[1]), int.Parse(data[0]), 0, 0);
                        }
                    }
                }
                if (root.FirstChild.NextSibling.Name == "Data")
                {
                    XmlNodeList dataList = root.FirstChild.NextSibling.ChildNodes;
                    foreach (XmlElement e in dataList)
                    {
                        meteorMetaData.varNameList.Add(e.Name);
                    }
                }
                if (root.LastChild.Name == "MergeData")
                {
                    XmlNodeList mergeList = root.LastChild.ChildNodes;
                    foreach (XmlElement e in mergeList)
                    {
                        meteorMetaData.MergeNameList.Add(e.Name);
                    }
                }
            }
        }