예제 #1
0
        private static IArgumentProvider CreateArgumentProvider(AlgorithmDef alg, BandnameRefTable bandRefTable)
        {
            if (alg == null)
            {
                return(null);
            }
            IArgumentProvider prd = new ArgumentProvider(alg);

            if (bandRefTable != null)
            {
                SetBands(prd, alg.Bands, bandRefTable);
            }
            SetArguments(prd, alg.Arguments);
            return(prd);
        }
예제 #2
0
        private static bool SetBands(IArgumentProvider prd, BandDef[] bandDefs, BandnameRefTable bandRefTable)
        {
            if (prd == null || bandDefs == null || bandDefs.Length == 0 || bandRefTable == null)
            {
                return(false);
            }
            bool isOK = false;
            int  bandNo;

            foreach (BandDef def in bandDefs)
            {
                bandNo = 0;
                //按波长查找
                if (def.Wavelength != null && def.Wavelength.Length > 0)
                {
                    foreach (float wl in def.Wavelength)
                    {
                        bandNo = bandRefTable.GetBandIndex(wl);
                        if (bandNo > 0)
                        {
                            goto setLine;
                        }
                    }
                }
                if (def.CenterWaveNum == 0)
                {
                    bandNo = def.BandNo;
                    if (bandNo > 0)
                    {
                        goto setLine;
                    }
                }
                //按波长类型查找 //GetBandIndexByType
                bandNo = bandRefTable.GetBandIndexByType(def.BandType);
                if (bandNo < 1)
                {
                    continue;
                }
setLine:
                isOK = true;
                prd.SetArg(def.Identify, bandNo);
            }
            return(isOK);
        }
예제 #3
0
        public static void SetBandArgs(IMonitoringSubProduct subProduct, string satellite, string sensor, params object[] args)
        {
            if (subProduct.ArgumentProvider == null || subProduct.ArgumentProvider.CurrentAlgorithmDef == null)
            {
                return;
            }
            BandnameRefTable bandRefTable = BandRefTableHelper.GetBandRefTable(satellite, sensor);
            bool             isOK         = false;

            if (bandRefTable != null)
            {
                isOK = SetBands(subProduct.ArgumentProvider, subProduct.ArgumentProvider.CurrentAlgorithmDef.Bands, bandRefTable);
                (subProduct.ArgumentProvider as ArgumentProvider).BandArgsIsSetted = true;
            }
            if (!isOK)
            {
                isOK = SetBands(subProduct.ArgumentProvider, subProduct.ArgumentProvider.CurrentAlgorithmDef.Bands);
                (subProduct.ArgumentProvider as ArgumentProvider).BandArgsIsSetted = isOK;
            }
        }