Пример #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 DoubtFirPixelFilter(
     int minWndSize, int maxWndSize,
     int farInfraredBandNo, int midInfraredBandNo, int nearInfraredBandNo,
     int visibleBandNo,
     float bandZoom,
     ISolarZenithProvider solarZenithProvider,
     int maxHitedPixelCount,
     /*以下4个阈值用于水体判识*/
     float minSolarZenithValue, int minMidInfraredValue_water, int minNearInfraredValue_water, int nearInfrared_visibleValue_water,
     /*以下2个参数用于云判识*/
     int minVisibleValue_cloud, int farInfraredValue_cloud,
     /*以下3个参数用于疑似火点判识*/
     int midInfraredValue_DoubtFir,
     int dltMidInfraredValue_DoubtFir,
     int midInfrared_farInfrared_DoubtFir,
     int minMidInfraredValue_DoubtFir,
     int maxHTmpPixelCount_DoubtFir,
     int midInfraredAvg_DoubtFir
     )
 {
     _minWndSize                       = minWndSize;
     _maxWndSize                       = maxWndSize;
     _farIfrBandNo                     = farInfraredBandNo;
     _midIfrBandNo                     = midInfraredBandNo;
     _nearIfrBandNo                    = nearInfraredBandNo;
     _visBandNo                        = visibleBandNo;
     _bandZoom                         = bandZoom;
     _solarZenithProvider              = solarZenithProvider;
     _maxHitedPixelCount               = maxHitedPixelCount;
     _minSolarZenithValue              = minSolarZenithValue;
     _minMidIfrValue_water             = minMidInfraredValue_water;
     _minNearIfrValue_water            = minNearInfraredValue_water;
     _nearIfr_visValue_water           = nearInfrared_visibleValue_water;
     _minVisValue_cloud                = minVisibleValue_cloud;
     _farIfrValue_cloud                = farInfraredValue_cloud;
     _midInfraredValue_DoubtFir        = midInfraredValue_DoubtFir;
     _dltMidInfraredValue_DoubtFir     = dltMidInfraredValue_DoubtFir;
     _midInfrared_farInfrared_DoubtFir = midInfrared_farInfrared_DoubtFir;
     _minMidInfraredValue_DoubtFir     = minMidInfraredValue_DoubtFir;
     _maxHTmpPixelCount_DoubtFir       = maxHTmpPixelCount_DoubtFir;
     _midInfraredAvg_DoubtFir          = midInfraredAvg_DoubtFir;
 }
Пример #3
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));
        }
Пример #4
0
        public static DoubtFirPixelFilter CreateDoubtFilter(IArgumentProvider argProvider, IContextMessage contextMessage)
        {
            int             minWndSize     = Obj2Int(argProvider.GetArg("BackWndMin"));
            int             maxWndSize     = Obj2Int(argProvider.GetArg("BackWndMax"));
            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");
            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"));
            int   hitedPixelCount = Obj2Int(argProvider.GetArg("HitedPixelCount"));
            ISolarZenithProvider solarZentihProvider = null;
            float minSolarZentih = Obj2Float(argProvider.GetArg("BackTSolarZenith"));

            if (bandZoom < float.Epsilon)
            {
                PrintInfo(contextMessage, "     波段数值缩放参数设置错误,使用缺省值1。");
            }
            //water
            int minMidInfraredValue_water       = Obj2Int(argProvider.GetArg("Water_MinMidIfr"));
            int minNearInfraredValue_water      = Obj2Int(argProvider.GetArg("Water_MinNearIfr"));
            int nearInfrared_visibleValue_water = Obj2Int(argProvider.GetArg("Water_NearIfr_Vis"));
            //cloud
            int minVisibleValue_cloud  = Obj2Int(argProvider.GetArg("Cloud_MinVis"));
            int farInfraredValue_cloud = Obj2Int(argProvider.GetArg("Cloud_FarIfr"));
            //doubt
            int midInfraredValue_DoubtFir        = Obj2Int(argProvider.GetArg("Doubt_MidIfr"));
            int dltMidInfraredValue_DoubtFir     = Obj2Int(argProvider.GetArg("Doubt_MidIfr_Diff"));
            int midInfrared_farInfrared_DoubtFir = Obj2Int(argProvider.GetArg("Doubt_MidIfr_FarIfr"));
            int minMidInfraredValue_DoubtFir     = Obj2Int(argProvider.GetArg("Doubt_MinMidIfr"));
            int maxHTmpPixelCount_DoubtFir       = Obj2Int(argProvider.GetArg("Doubt_MaxHTmpPixelCount"));
            int midInfraredAvg_DoubtFir          = Obj2Int(argProvider.GetArg("Doubt_MidIfrAvg"));
            //
            DoubtFirPixelFilter filter = new DoubtFirPixelFilter
                                         (
                //wnd size
                minWndSize, maxWndSize,
                //bandNo
                farIfrBandNo, midIfrBandNo, nearIfrBandNo, visBandNo,
                //zoom
                bandZoom,
                solarZentihProvider,
                //
                hitedPixelCount,
                minSolarZentih,
                //water
                minMidInfraredValue_water,
                minNearInfraredValue_water,
                nearInfrared_visibleValue_water,
                //cloud
                minVisibleValue_cloud,
                farInfraredValue_cloud,
                //doubt fir
                midInfraredValue_DoubtFir,
                dltMidInfraredValue_DoubtFir,
                midInfrared_farInfrared_DoubtFir,
                minMidInfraredValue_DoubtFir,
                maxHTmpPixelCount_DoubtFir,
                midInfraredAvg_DoubtFir
                                         );

            return(filter);
        }