public MonitoringSubProduct(SubProductDef subProductDef) { _subProductDef = subProductDef; if (subProductDef == null) { return; } _name = subProductDef.Name; _identify = subProductDef.Identify; if (subProductDef.Algorithms == null || subProductDef.Algorithms.Length == 0) { return; } //通过默认算法设置参数提供者 _algorithmDefs = new List <AlgorithmDef>(subProductDef.Algorithms); if (_algorithmDefs.Count > 0) { ExtractProductIdentify pid = new ExtractProductIdentify(); pid.ThemeIdentify = subProductDef.ProductDef.Theme.Identify; pid.ProductIdentify = subProductDef.ProductDef.Identify; pid.SubProductIdentify = subProductDef.Identify; _argumentProvider = MonitoringThemeFactory.GetArgumentProvider(pid, _algorithmDefs[0].Identify); _argumentProvider.SetArg("AlgorithmName", _algorithmDefs[0].Identify); } }
private void GetProductNameByIdentify() { if (string.IsNullOrEmpty(ProductIdentify)) { return; } ThemeDef theme = MonitoringThemeFactory.GetThemeDefByIdentify("CMA"); if (theme == null) { return; } ProductDef pro = theme.GetProductDefByIdentify(ProductIdentify); if (pro == null) { return; } ProductName = pro.Name; if (string.IsNullOrEmpty(SubProductIdentify)) { return; } SubProductDef subPro = pro.GetSubProductDefByIdentify(SubProductIdentify); if (subPro == null) { return; } SubProductName = subPro.Name; }
private IArgumentProvider GetDefaultArgProvider(string algIdentify, string satellite, string sensor, string[] args) { ExtractProductIdentify id1 = new ExtractProductIdentify(); id1.ProductIdentify = _subProductDef.ProductDef.Identify; id1.SubProductIdentify = _subProductDef.Identify; id1.ThemeIdentify = "CMA"; return(MonitoringThemeFactory.GetArgumentProvider(id1, algIdentify, satellite, sensor)); }
public AlgorithmDef UseDefaultAlgorithm(string productIdentify) { if (_algorithmDefs == null || _algorithmDefs.Count == 0) { return(null); } ExtractProductIdentify pid = new ExtractProductIdentify(); pid.ProductIdentify = productIdentify; pid.SubProductIdentify = _identify; pid.ThemeIdentify = "CMA"; _argumentProvider = MonitoringThemeFactory.GetArgumentProvider(pid, _algorithmDefs[0].Identify); return(_algorithmDefs[0]); }
private IArgumentProvider GetDefaultArgProvider(string satellite, string sensor, string[] args) { ExtractProductIdentify id1 = new ExtractProductIdentify(); id1.ProductIdentify = _subProductDef.ProductDef.Identify; id1.SubProductIdentify = _subProductDef.Identify; id1.ThemeIdentify = "CMA"; // ExtractAlgorithmIdentify id2 = new ExtractAlgorithmIdentify(); id2.Satellite = satellite; id2.Sensor = sensor; id2.CustomIdentify = (args != null && args.Length > 0) ? args[0] : null; // return(MonitoringThemeFactory.GetArgumentProvider(id1, id2)); }
public void ResetArgumentProvider(string algIdentify) { ExtractProductIdentify pid = new ExtractProductIdentify(); pid.ThemeIdentify = "CMA"; pid.ProductIdentify = _subProductDef.ProductDef.Identify; pid.SubProductIdentify = _subProductDef.Identify; IArgumentProvider prd = MonitoringThemeFactory.GetArgumentProvider(pid, algIdentify); if (prd != null) { string[] argNames = prd.ArgNames; if (argNames != null) { foreach (string name in argNames) { _argumentProvider.SetArg(name, prd.GetArg(name)); } } } }
public void ResetArgumentProvider(string algIdentify) { ExtractProductIdentify pid = new ExtractProductIdentify(); pid.ThemeIdentify = _subProductDef.ProductDef.Theme.Identify; pid.ProductIdentify = _subProductDef.ProductDef.Identify; pid.SubProductIdentify = _subProductDef.Identify; Dictionary <string, object> algShare = ReadAlgShareArg(); IArgumentProvider prd = MonitoringThemeFactory.GetArgumentProvider(pid, algIdentify); if (prd != null) { string[] argNames = prd.ArgNames; if (argNames != null) { foreach (string name in argNames) { _argumentProvider.SetArg(name, prd.GetArg(name)); } } } CopyAlgShareArg(algShare); UpdateCurrentAlgorithmDef(algIdentify); }
private void MakeSubProduct(string preBanks, IMonitoringSubProduct subprd, IContextMessage contextMessage, IArgumentMissProcessor argumentMissProcessor, string executeGroup, Action <int, string> processTracker) { bool isCreatDataProvider = false; IRasterDataProvider raster = null; try { subprd.ArgumentProvider.Reset(); subprd.ArgumentProvider.AOI = null; AlgorithmDef alg = subprd.AlgorithmDefs[0]; RasterIdentify rstIdentify = null; rstIdentify = GetRasterIdentifOfCurrentFile(); if (subprd.Definition.IsNeedCurrentRaster) { string rstFileName = _contextEnvironment.GetContextVar(GeoDo.RSS.MIF.Core.ContextEnvironment.ENV_VAR_NAME_CURRENT_RASTER_FILE); raster = GeoDataDriver.Open(rstFileName) as IRasterDataProvider; subprd.ArgumentProvider.DataProvider = raster; isCreatDataProvider = true; // TryApplyAOITemplates(subprd); // if (rstIdentify == null) { if (contextMessage != null) { contextMessage.PrintMessage("参数\"" + GeoDo.RSS.MIF.Core.ContextEnvironment.ENV_VAR_NAME_CURRENT_RASTER_FILE + "\"为空!"); } if (argumentMissProcessor == null) { return; } string crtFileName = argumentMissProcessor.DoGettingArgument(subprd.Definition, subprd.UseDefaultAlgorithm(subprd.Definition.ProductDef.Identify), GeoDo.RSS.MIF.Core.ContextEnvironment.ENV_VAR_NAME_CURRENT_RASTER_FILE); if (crtFileName == null) { return; } rstIdentify = new RasterIdentify(crtFileName); _contextEnvironment.PutContextVar(GeoDo.RSS.MIF.Core.ContextEnvironment.ENV_VAR_NAME_CURRENT_RASTER_FILE, crtFileName); } ExtractAlgorithmIdentify id = new ExtractAlgorithmIdentify(); id.Satellite = rstIdentify.Satellite; id.Sensor = rstIdentify.Sensor; alg = subprd.Definition.GetAlgorithmDefByAlgorithmIdentify(id); if (alg == null) { alg = subprd.Definition.Algorithms[0]; } } subprd.ResetArgumentProvider(alg.Identify); subprd.ArgumentProvider.SetArg("AlgorithmName", alg.Identify); if (alg.Bands != null && alg.Bands.Length > 0) { MonitoringThemeFactory.SetBandArgs(subprd, rstIdentify.Satellite, rstIdentify.Sensor); foreach (BandDef band in alg.Bands) { if (subprd.ArgumentProvider.GetArg(band.Identify).ToString() == "-1") { if (contextMessage != null) { contextMessage.PrintMessage(preBanks + "从波段映射表获取\"" + band.Identify + "\"的波段序号失败,生成过程终止!"); } return; } } } // TryHandleCustomArguments(subprd.ArgumentProvider, alg); // if (subprd.Definition.SubProductInstanceDefs != null) { MakeSubProductUseInstances(preBanks + " ", subprd, alg, contextMessage, argumentMissProcessor, executeGroup, processTracker); } else { DirectMakeSubProduct(preBanks + " ", subprd, alg, contextMessage, argumentMissProcessor, processTracker); } } finally { if (raster != null) { raster.Dispose(); raster = null; } if (subprd.ArgumentProvider.DataProvider != null && isCreatDataProvider) { subprd.ArgumentProvider.DataProvider.Dispose(); } } }