private void CheckIs0250(IRasterDataProvider srcRaster) { try { IBandProvider band = srcRaster.BandProvider; Dictionary <string, string> filaAttrs = band.GetAttributes(); if (filaAttrs == null || !filaAttrs.ContainsKey("File Alias Name")) { throw new Exception("不能确认为合法的MERSI轨道数据,尝试获取文件属性File Alias Name的值为空"); } string fileAliasName = filaAttrs["File Alias Name"]; if (string.IsNullOrWhiteSpace(fileAliasName)) { throw new Exception("不能确认为合法的MERSI轨道数据,尝试获取文件属性File Alias Name的值为空"); } else if (fileAliasName == "MERSI_1KM_L1") { _dataType = "1KM"; } else if (fileAliasName == "MERSI_QKM_L1" || fileAliasName == "MERSI_250M_L1") { _dataType = "QKM"; } else { throw new Exception("不能确认为合法的MERSI轨道数据,文件属性File Alias Name的值为[" + fileAliasName + "]支持的是MERSI_1KM_L1或者MERSI_QKM_L1"); } } catch (Exception ex) { throw new Exception("不能确认为合法的MERSI轨道数据" + ex.Message, ex.InnerException); } }
private void SetDefaultPara(string filename) { ProParas.SrcRaster = GeoDataDriver.Open(_fileNames[0]) as IRasterDataProvider; IBandProvider bandprovider = ProParas.SrcRaster.BandProvider; Dictionary <string, string> _fileAttrs = bandprovider.GetAttributes(); _fileAttrs.TryGetValue("File Alias Name", out _sensorName); ucSelectBands.InitTreeView(ProParas.SrcRaster); ucSelectBands.AddAll(); SetBandsInfo(); switch (_sensorName) { case "VIRR_L1": ProParas.VirrPrjSetting = new FY3_VIRR_PrjSettings(); ProParas.VirrPrjSetting.OutPathAndFileName = _fileNames[0] + "_WHOLE.ldf"; //_WHOLE_LW. //_DXX_LW. //_EF_LW. ProParas.VirrPrjSetting.OutResolutionX = 0.01F; ProParas.VirrPrjSetting.OutResolutionY = 0.01F; ProParas.VirrPrjSetting.OutFormat = "LDF"; ProParas.VirrPrjSetting.OutEnvelope = null; ucSelectBands.InitTreeView(ProParas.SrcRaster); ucSelectBands.AddAll(); //ProParas.VirrPrjSetting.BandMapTable = ucSelectBands.GetBandMapList(); break; } }
private void GetDataType() { _bandProvider = _provider.BandProvider; _fileAttrs = _bandProvider.GetAttributes(); _fileAttrs.TryGetValue(GETALIASNAME, out _sensorName); _xElemRoot = XElement.Load(XMLFILEPATH, LoadOptions.None); IEnumerable <XElement> items = _xElemRoot.Descendants("File"); CompareType(items); }
private void TestGDALRead() { string dsFile = ""; dsFile = "HDF4_SDS:UNKNOWN:\"D:\\masData\\MODIS\\TERRA_2010_03_25_03_09_GZ.MOD03.hdf\":23"; dsFile = "D:\\masData\\MODIS\\TERRA_2010_03_25_03_09_GZ.MOD021KM.hdf"; IRasterDataProvider srcRaster = GeoDataDriver.Open(dsFile) as IRasterDataProvider; IBandProvider srcbandpro = srcRaster.BandProvider; IDictionary <string, string> dsAtts = srcbandpro.GetDatasetAttributes("EV_1KM_RefSB");//reflectance_scales dsAtts = srcbandpro.GetAttributes(); }
/// <summary> /// 会出现三个值D、N、M /// </summary> /// <param name="fileRaster"></param> /// <returns></returns> private string DayOrNight(IRasterDataProvider fileRaster) { try { string v = ""; IBandProvider band = fileRaster.BandProvider; Dictionary <string, string> filaAttrs = band.GetAttributes(); if (filaAttrs.ContainsKey("Day Or Night Flag")) //VIRR:D MERSI:Day { v = filaAttrs["Day Or Night Flag"]; } else if (filaAttrs.ContainsKey("DAYNIGHTFLAG")) //MODIS:Day { v = filaAttrs["DAYNIGHTFLAG"]; } else { v = ""; } if (v == "") { return("X"); } if (Days.Contains(v)) { return("D"); } if (Nights.Contains(v)) { return("N"); } if (Ms.Contains(v)) { return("M"); } return("X"); } catch { return("X"); } }
private float[] ReadFileAttributeToFloat(IBandProvider srcbandpro, string AttrName, int length) { float[] value = new float[length]; Dictionary <string, string> dsAtts = srcbandpro.GetAttributes(); string refSbCalStr = dsAtts[AttrName]; string[] refSbCals = refSbCalStr.Split(','); if (refSbCals.Length >= length) { for (int i = 0; i < length; i++) { value[i] = float.Parse(refSbCals[i]); } return(value); } else { return(null); } }
private string CheckFile(IRasterDataProvider srcRaster) { IBandProvider band = srcRaster.BandProvider; Dictionary <string, string> filaAttrs = band.GetAttributes(); if (filaAttrs == null || !filaAttrs.ContainsKey("Satellite")) { throw new Exception("不能确认为合法的EOS MODIS轨道数据,尝试获取文件属性Satellite的值为空"); } _fileAliasName = filaAttrs["Satellite"]; if (string.IsNullOrWhiteSpace(_fileAliasName) || (_fileAliasName != "Terra" && _fileAliasName != "Aqua")) { return(""); } else { string[] datasets = band.GetDatasetNames(); if (datasets.Contains("EV_1KM_RefSB") && datasets.Contains("EV_250_Aggr1km_RefSB") && datasets.Contains("EV_500_Aggr1km_RefSB")) { return("1000"); } else if (datasets.Contains("EV_500_RefSB") && datasets.Contains("EV_250_Aggr500_RefSB") && datasets.Contains("EV_500_Aggr1km_RefSB")) { return("0500"); } else if (datasets.Contains("EV_250_RefSB")) { return("0250"); } } return(""); }