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); }
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); }
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; } }