示例#1
0
        /// <summary>
        /// H2A_RM2B
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button7_Click(object sender, EventArgs e)
        {
            Action <int, string> progress = new Action <int, string>(OutProgress);
            string dir    = textBox1.Text;
            string outDir = textBox2.Text;

            string[]      files   = Directory.GetFiles(dir, "*.h5");
            StringBuilder msgInfo = new StringBuilder();

            for (int i = 0; i < files.Length; i++)
            {
                FY3L2L3FilePrjSettings setting = new FY3L2L3FilePrjSettings();
                setting.OutFormat      = "LDF";
                setting.OutResolutionX = 0.25f;
                setting.OutResolutionY = 0.25f;
                //扩展:经纬度数据集的放大倍数
                Dictionary <string, double> args = new Dictionary <string, double>();
                args.Add("xzoom", 0.000001d);
                args.Add("yzoom", 0.000001d);
                setting.ExtArgs = new object[] { args };

                IRasterDataProvider mainRaster     = null;
                IRasterDataProvider locationRaster = null;
                string file = files[i];
                try
                {
                    progress((int)((i + 1f) / files.Length * 100), null);
                    string[] openArgs = new string[] { "datasets=" + "Res0_ap,Res0_cl,Res0_ic,Res0_sst,Res0_ssw,Res0_wv,Res10_sst,Res10_ssw,Res18_ap,Res18_cl,Res18_ic,Res18_ssw,Res18_wv,Res6_sst" };
                    mainRaster = RasterDataDriver.Open(file, openArgs) as IRasterDataProvider;
                    string[] locationArgs = new string[] { "datasets=" + "Long_of_Observation_Point,Lat_of_Observation_Point", "geodatasets=" + "Long_of_Observation_Point,Lat_of_Observation_Point" };
                    locationRaster = RasterDataDriver.Open(file, locationArgs) as IRasterDataProvider;
                    if (locationRaster == null || locationRaster.BandCount == 0)
                    {
                        msgInfo.AppendLine("经纬度HDF数据文件,不存在经纬度数据集[Longitude,Latitude]" + file);
                        return;
                    }
                    string outFilename = Path.Combine(outDir, Path.GetFileNameWithoutExtension(file) + ".LDF");
                    setting.OutPathAndFileName = outFilename;
                    setting.LocationFile       = locationRaster;
                    FY3L2L3FileProjector projector = new FY3L2L3FileProjector();
                    projector.Project(mainRaster, setting, SpatialReference.GetDefault(), null);
                }
                finally
                {
                    if (mainRaster != null)
                    {
                        mainRaster.Dispose();
                        mainRaster = null;
                    }
                    if (locationRaster != null)
                    {
                        locationRaster.Dispose();
                        locationRaster = null;
                    }
                }
            }
        }
示例#2
0
        /// <summary>
        /// H2A_SM2B
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button6_Click(object sender, EventArgs e)
        {
            Action <int, string> progress = new Action <int, string>(OutProgress);
            string dir    = textBox1.Text;
            string outDir = textBox2.Text;

            string[]      files   = Directory.GetFiles(dir, "*.h5");
            StringBuilder msgInfo = new StringBuilder();

            for (int i = 0; i < files.Length; i++)
            {
                IRasterDataProvider mainRaster     = null;
                IRasterDataProvider locationRaster = null;
                string file = files[i];
                try
                {
                    progress((int)((i + 1f) / files.Length * 100), null);
                    string[] openArgs = new string[] { "datasets=" + "wind_dir_selection,wind_speed_selection" };
                    mainRaster = RasterDataDriver.Open(file, openArgs) as IRasterDataProvider;
                    string[] locationArgs = new string[] { "datasets=" + "wvc_lon,wvc_lat", "geodatasets=" + "wvc_lon,wvc_lat" };
                    locationRaster = RasterDataDriver.Open(file, locationArgs) as IRasterDataProvider;
                    if (locationRaster == null || locationRaster.BandCount == 0)
                    {
                        msgInfo.AppendLine("经纬度HDF数据文件,不存在经纬度数据集[Longitude,Latitude]" + file);
                        return;
                    }
                    string outFilename             = Path.Combine(outDir, Path.GetFileNameWithoutExtension(file) + ".LDF");
                    FY3L2L3FilePrjSettings setting = new FY3L2L3FilePrjSettings();
                    setting.ExtArgs            = new object[] { "360" }; //360代表,大于180度的经纬度值,实际需要转换
                    setting.LocationFile       = locationRaster;
                    setting.OutFormat          = "LDF";
                    setting.OutPathAndFileName = outFilename;
                    setting.OutResolutionX     = 0.25f;
                    setting.OutResolutionY     = 0.25f;
                    FY3L2L3FileProjector projector = new FY3L2L3FileProjector();
                    projector.Project(mainRaster, setting, SpatialReference.GetDefault(), null);
                }
                finally
                {
                    if (mainRaster != null)
                    {
                        mainRaster.Dispose();
                        mainRaster = null;
                    }
                    if (locationRaster != null)
                    {
                        locationRaster.Dispose();
                        locationRaster = null;
                    }
                }
            }
        }
示例#3
0
        /// <summary>
        /// 投影和拼接
        /// </summary>
        /// <param name="files"></param>
        /// <param name="area"></param>
        /// <returns></returns>
        private string Processfiles(string[] files, string area)
        {
            float           minX   = 0.00f;
            float           maxX   = 0.00f;
            float           minY   = 0.00f;
            float           maxY   = 0.00f;
            ClipSNWParaData getEvp = new ClipSNWParaData();

            float[] evp = getEvp.GetEvelope(files[0], area);
            minX = evp[0] - 2.0f; // 72.0f;
            maxX = evp[1] + 2.0f; // 142.0f;
            minY = evp[2] - 2.0f; // 16.0f;
            maxY = evp[3] + 2.0f; // 56.0f;
            FY3MWRIJoin            Join            = new FY3MWRIJoin();
            string                 outJoinfilename = Path.GetDirectoryName(files[0]) + "\\Prj\\" + Path.GetFileName(files[0]).Remove(Path.GetFileName(files[0]).LastIndexOf(".")) + "_区域" + area + "_" + "moscia" + ".ldf";
            FY3L2L3FileProjector   projector       = new FY3L2L3FileProjector();
            FY3L2L3FilePrjSettings prjSetting      = new FY3L2L3FilePrjSettings();

            prjSetting.ExtArgs        = new object[] { "360" };
            prjSetting.OutFormat      = "LDF";
            prjSetting.OutResolutionX = 0.1f;
            prjSetting.OutResolutionY = 0.1f;
            prjSetting.OutEnvelope    = new PrjEnvelope(minX, maxX, minY, maxY);

            foreach (string file in files)
            {
                try
                {
                    string outPrjfile = Path.GetDirectoryName(file) + "\\Prj\\" + Path.GetFileName(file).Remove(Path.GetFileName(file).LastIndexOf(".")) + "_区域" + area + ".LDF";
                    prjSetting.OutPathAndFileName = outPrjfile;
                    IRasterDataProvider mainRaster     = null;
                    IRasterDataProvider locationRaster = null;
                    if (file.Contains("FY3C"))
                    {
                        string[] openArgs = new string[] { "datasets=" + "Data/EARTH_OBSERVE_BT_10_to_89GHz" };
                        mainRaster = RasterDataDriver.Open(file, openArgs) as IRasterDataProvider;
                        string[] locationArgs = new string[] { "datasets=" + "Data/Longitude,Data/Latitude", "geodatasets=" + "Data/Longitude,Data/Latitude" };//可设成配置参数
                        locationRaster = RasterDataDriver.Open(file, locationArgs) as IRasterDataProvider;
                    }
                    else
                    {
                        string[] openArgs = new string[] { "datasets=" + "EARTH_OBSERVE_BT_10_to_89GHz" };
                        mainRaster = RasterDataDriver.Open(file, openArgs) as IRasterDataProvider;
                        string[] locationArgs = new string[] { "datasets=" + "Longitude,Latitude", "geodatasets=" + "Longitude,Latitude" };//可设成配置参数
                        locationRaster = RasterDataDriver.Open(file, locationArgs) as IRasterDataProvider;
                    }
                    prjSetting.LocationFile = locationRaster;
                    projector.Project(mainRaster, prjSetting, SpatialReference.GetDefault(), null);
                    string[] joinfile = new string[] { outPrjfile };
                    if (!File.Exists(outJoinfilename))
                    {
                        string access = "create";
                        Join.MicroWaveDataJoint(joinfile, 0.1f, outJoinfilename, access);
                    }
                    else
                    {
                        string access = "update";
                        Join.MicroWaveDataJoint(joinfile, 0.1f, outJoinfilename, access);
                    }
                }
                catch (Exception ex)
                {
                    //throw new FileNotFoundException(ex.Message);
                    Console.WriteLine(ex.Message);
                }
                finally
                {
                }
            }

            return(outJoinfilename);
        }