public static IArgumentProvider GetArgumentProvider(ExtractProductIdentify productIdentify, string algorithmIdentify, string satellite, string sensor) { if (productIdentify == null || algorithmIdentify == null) { return(null); } ThemeDef theme = GetThemeDefByIdentify(productIdentify.ThemeIdentify); if (theme == null) { return(null); } ProductDef prd = theme.GetProductDefByIdentify(productIdentify.ProductIdentify); if (prd == null) { return(null); } SubProductDef subPrd = prd.GetSubProductDefByIdentify(productIdentify.SubProductIdentify); if (subPrd == null) { return(null); } AlgorithmDef alg = subPrd.GetAlgorithmDefByIdentify(algorithmIdentify); return(CreateArgumentProvider(alg, BandRefTableHelper.GetBandRefTable(satellite, sensor))); }
public static IArgumentProvider GetArgumentProvider(ExtractProductIdentify productIdentify, string algorithmIdentify) { if (productIdentify == null || algorithmIdentify == null) { return(null); } ThemeDef theme = GetThemeDefByIdentify(productIdentify.ThemeIdentify); if (theme == null) { return(null); } ProductDef prd = theme.GetProductDefByIdentify(productIdentify.ProductIdentify); if (prd == null) { return(null); } SubProductDef subPrd = prd.GetSubProductDefByIdentify(productIdentify.SubProductIdentify); if (subPrd == null) { return(null); } AlgorithmDef alg = subPrd.GetAlgorithmDefByIdentify(algorithmIdentify); IArgumentProvider argPrd = CreateArgumentProvider(alg, null); if (alg.Bands != null) { foreach (BandDef b in alg.Bands) { argPrd.SetArg(b.Identify, b.BandNo); } } return(argPrd); }
private bool ArgsIsFull() { if (_argumentProvider == null) { _error = "未提供[" + _subProductDef.Name + "]子产品参数提供者."; return(false); } if (_argumentProvider.GetArg("AlgorithmName") == null) { _error = "未提供[" + _subProductDef.Name + "]子产品所用算法名."; return(false); } string algorithmName = _argumentProvider.GetArg("AlgorithmName").ToString(); AlgorithmDef algorithmDef = _subProductDef.GetAlgorithmDefByIdentify(algorithmName); if (algorithmDef == null) { _error = "当前[" + _subProductDef.Name + "]子产品不包含\"" + algorithmName + "\"算法."; return(false); } if (algorithmDef != null) { object bandArg = null; foreach (BandDef arg in algorithmDef.Bands) { bandArg = _argumentProvider.GetArg(arg.Identify); if (bandArg == null) { _error = "未提供波段[" + arg.Identify + "]信息."; return(false); } if (bandArg.ToString() == "-1") { _error = "波段[" + arg.Identify + "]未找到对应的波段映射."; return(false); } } } ArgumentPair argPair = null; ArgumentDef argDef = null; foreach (ArgumentBase arg in algorithmDef.Arguments) { if (arg is ArgumentPair) { argPair = arg as ArgumentPair; if (argPair.ArgumentMax != null && _argumentProvider.GetArg(argPair.ArgumentMax.Name) == null) { _error = "参数[" + argPair.ArgumentMax.Name + "]未提供."; return(false); } if (argPair.ArgumentMin != null && _argumentProvider.GetArg(argPair.ArgumentMin.Name) == null) { _error = "参数[" + argPair.ArgumentMin.Name + "]未提供."; return(false); } } else if (arg is ArgumentDef) { argDef = arg as ArgumentDef; if (_argumentProvider.GetArg(argDef.Name) == null) { _error = "参数[" + argDef.Name + "]未提供."; return(false); } if (argDef.RefType == "file") { string filename = _argumentProvider.GetArg(argDef.Name).ToString(); if (!File.Exists(filename)) { _error = "参数文件[" + Path.GetFileName(filename) + "]不存在."; return(false); } } } } return(true); }