예제 #1
0
 public BackTmpComputer(int minWndSize, int maxWndSize,
                        int maxHitedPixelCount,
                        ISolarZenithProvider solarZenithProvider,
                        float minSolarZenithValue, float maxSolarZenithValue,
                        int farInfraredBandNo, int midInfraredBandNo, int visibleBandNo, int nearIfrBandNo,
                        float bandZoom,
                        float midIfrCenterWaveNum,
                        float farIfrCenterWaveNum,
                        int maxMidIfrValue,
                        float firComputeFactor,
                        float firIntensityfactor,
                        /*以下2个参数用于修正区域背景温度最小值域最小值*/
                        int localBackTmpMax, int localBackTmpMin,
                        //耀斑修正值
                        int glaringVIRR,
                        int wildernessCorrect /*荒漠修正阈值*/,
                        IBackTmpComputerHelper helper,
                        float fireGradeLevel1,
                        float fireGradeLevel2,
                        float fireGradeLevel3,
                        float fireGradeLevel4,
                        float fireGradeLevel5,
                        float vis_FirReliability,
                        float midIfr_farInfr_FirReliability,
                        float midIfr_FirReliability
                        )
 {
     _minWndSize          = minWndSize;
     _maxWndSize          = maxWndSize;
     _maxHitedPixelCount  = maxHitedPixelCount;
     _solarZenithProvider = solarZenithProvider;
     _minSolarZenithValue = minSolarZenithValue;
     _maxSolarZenithValue = maxSolarZenithValue;
     _farIfrBandNo        = farInfraredBandNo;
     _midIfrBandNo        = midInfraredBandNo;
     _visBandNo           = visibleBandNo;
     _nearIfrBandNo       = nearIfrBandNo;
     _bandZoom            = bandZoom;
     _midIfrCenterWaveNum = midIfrCenterWaveNum;
     _farIfrCenterWaveNum = farIfrCenterWaveNum;
     _maxMidIfrValue      = maxMidIfrValue;
     _firComputeFactor    = firComputeFactor;
     _firIntensityFactor  = firIntensityfactor;
     _localBackTmpMax     = localBackTmpMax;
     _localBackTmpMin     = localBackTmpMin;
     _glaringVIRR         = glaringVIRR;
     _wildernessCorrect   = wildernessCorrect;
     _helper                        = helper;
     _fireGradeLevel1               = fireGradeLevel1;
     _fireGradeLevel2               = fireGradeLevel2;
     _fireGradeLevel3               = fireGradeLevel3;
     _fireGradeLevel4               = fireGradeLevel4;
     _fireGradeLevel5               = fireGradeLevel5;
     _vis_FirReliability            = vis_FirReliability;
     _midIfr_farInfr_FirReliability = midIfr_farInfr_FirReliability;
     _midIfr_FirReliability         = midIfr_FirReliability;
 }
예제 #2
0
        public static BackTmpComputer CreateBackTmpComputer(IArgumentProvider argProvider, IBackTmpComputerHelper helper, IContextMessage contextMessage)
        {
            int             minWndSize                    = Obj2Int(argProvider.GetArg("BackWndMin"));
            int             maxWndSize                    = Obj2Int(argProvider.GetArg("BackWndMax"));
            int             localBackTmpMax               = Obj2Int(argProvider.GetArg("BackTmp_localBackTmpMax"));
            int             localBackTmpMin               = Obj2Int(argProvider.GetArg("BackTmp_localBackTmpMin"));
            int             glaringVIRR                   = Obj2Int(argProvider.GetArg("BackTmp_GlaringVIRR"));
            int             wildernessCorrect             = Obj2Int(argProvider.GetArg("BackTmp_WildernessCorrect"));
            int             maxHitedPixelCount            = Obj2Int(argProvider.GetArg("BackTmp_SkyPixelCount"));
            IBandNameRaster bandNameRaster                = argProvider.DataProvider as IBandNameRaster;
            int             visBandNo                     = TryGetBandNo(argProvider, bandNameRaster, "Visible");
            int             nearIfrBandNo                 = TryGetBandNo(argProvider, bandNameRaster, "NearInfrared");
            int             midIfrBandNo                  = TryGetBandNo(argProvider, bandNameRaster, "MiddleInfrared");
            int             farIfrBandNo                  = TryGetBandNo(argProvider, bandNameRaster, "FarInfrared");
            float           fireGradeLevel1               = Obj2Float(argProvider.GetArg("Intensity_Grade1"));
            float           fireGradeLevel2               = Obj2Float(argProvider.GetArg("Intensity_Grade2"));
            float           fireGradeLevel3               = Obj2Float(argProvider.GetArg("Intensity_Grade3"));
            float           fireGradeLevel4               = Obj2Float(argProvider.GetArg("Intensity_Grade4"));
            float           fireGradeLevel5               = Obj2Float(argProvider.GetArg("Intensity_Grade5"));
            float           vis_FirReliability            = Obj2Float(argProvider.GetArg("Vis_FirReliability"));
            float           midIfr_farInfr_FirReliability = Obj2Float(argProvider.GetArg("MidIfr_farInfr_FirReliability"));
            float           midIfr_FirReliability         = Obj2Float(argProvider.GetArg("MidIfr_FirReliability"));
            bool            isNight = bool.Parse(argProvider.GetArg("IsNight").ToString());

            if (!isNight && (visBandNo < 1 || midIfrBandNo < 1 || farIfrBandNo < 1 || nearIfrBandNo < 1))
            {
                PrintInfo(contextMessage, "     获取波段序号(可见光、近红外、中红外、远红外)时发生错误。");
                return(null);
            }
            else if (isNight && (farIfrBandNo < 1 || midIfrBandNo < 1))
            {
                PrintInfo(contextMessage, "     获取波段序号(可见光、近红外、中红外、远红外)时发生错误。");
                return(null);
            }
            float bandZoom = Obj2Float(argProvider.GetArg("MiddleInfrared_Zoom"));

            if (bandZoom < float.Epsilon)
            {
                PrintInfo(contextMessage, "     波段数值缩放参数设置错误,使用缺省值1。");
            }
            ISolarZenithProvider solarZentihProvider = null;
            float minSolarZentih = Obj2Float(argProvider.GetArg("BackTmp_SolarAzimuthMin"));
            float maxSolarZentih = Obj2Float(argProvider.GetArg("BackTmp_SolarAzimuthMax"));
            //亚像元面积计算
            float midIfrCenterWaveNum = Obj2Float(argProvider.GetArg("MiddleInfrared_CenterWaveNum"));
            float farIfrCenterWaveNum = Obj2Float(argProvider.GetArg("FarInfrared_CenterWaveNum"));

            TryCorrectCenterWaveNum(argProvider.DataProvider, midIfrBandNo, farIfrBandNo, ref midIfrCenterWaveNum, ref farIfrCenterWaveNum, contextMessage);
            if (midIfrCenterWaveNum < float.Epsilon || farIfrCenterWaveNum < float.Epsilon)
            {
                PrintInfo(contextMessage, "     获取中红外、远红外中心波数失败,忽略亚像元面积、火点强度计算。");
            }
            int   midIfrMaxMidIfrValue = Obj2Int(argProvider.GetArg("BackTmp_MaxMidIfrValue"));
            float firComputeFactor     = Obj2Float(argProvider.GetArg("BackTmp_FirComputeFactor"));
            float firIntensityFactor   = Obj2Float(argProvider.GetArg("BackTmp_FirIntensityFactor"));

            //
            return(new BackTmpComputer(minWndSize, maxWndSize,
                                       maxHitedPixelCount, solarZentihProvider, minSolarZentih, maxSolarZentih,
                                       farIfrBandNo, midIfrBandNo, visBandNo, nearIfrBandNo, bandZoom,
                                       midIfrCenterWaveNum, farIfrCenterWaveNum,
                                       midIfrMaxMidIfrValue, firComputeFactor, firIntensityFactor,
                                       localBackTmpMax, localBackTmpMin, glaringVIRR, wildernessCorrect, helper,
                                       fireGradeLevel1, fireGradeLevel2, fireGradeLevel3, fireGradeLevel4, fireGradeLevel5,
                                       vis_FirReliability, midIfr_farInfr_FirReliability, midIfr_FirReliability));
        }