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);
     }
 }
Exemple #2
0
        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;
            }
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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();
        }
Exemple #5
0
 /// <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("");
        }