/// <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; } } } }
/// <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; } } } }
/// <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); }