private static void TrySaveFileToWorkspace(IMonitoringSubProduct subProduct, ISmartSession session, string fname, IExtractResult restult, CatalogItemInfo cii) { if (string.IsNullOrEmpty(fname)) { return; } IMonitoringSession mession = session.MonitoringSession as IMonitoringSession; IWorkspace wks = mession.GetWorkspace(); RasterIdentify rst = new RasterIdentify(fname); ICatalog c = wks.GetCatalog("CurrentExtracting"); if (c != null) { if (cii == null) { c.AddItem(new CatalogItem(fname, c.Definition as SubProductCatalogDef)); } else { c.AddItem(new CatalogItem(fname, cii)); } } if (_contextEnvironment != null && subProduct != null) { rst.SubProductIdentify = subProduct.Identify; IExtractResultBase erb = restult as IExtractResultBase; if (erb != null && !string.IsNullOrEmpty(erb.OutIdentify)) { rst.SubProductIdentify = erb.OutIdentify; } GetOutFileIdentify(ref rst, subProduct); if (!string.IsNullOrEmpty(restult.Name) && restult.Name != rst.SubProductIdentify) { rst.SubProductIdentify = restult.Name; } _contextEnvironment.PutContextVar(rst.SubProductIdentify, fname); } }
private void CustomVarSetterHandler(string[] dblvFileNames, string beginSubprod, IContextEnvironment contextEnv) { if (dblvFileNames == null || dblvFileNames.Length < 1) { return; } string varValue = dblvFileNames[0]; for (int i = 1; i < dblvFileNames.Length; i++) { varValue += "*" + dblvFileNames[i]; } contextEnv.PutContextVar("DBLV", varValue); }
private static void TrySetContextEnvironment(ISmartSession session, string beginSubprod, IContextEnvironment contextEnv, CustomVarSetterHandler customVarSetter) { contextEnv.Session = session; contextEnv.PutContextVar(ContextEnvironment.ENV_VAR_NAME_CURRENT_RASTER_FILE, GetCurrentRasterFile(session)); IWorkspace ws = (session.MonitoringSession as IMonitoringSession).Workspace; if (ws == null) { return; } ICatalog catalog = ws.ActiveCatalog; if (catalog == null) { return; } string[] fnames = catalog.GetSelectedFiles(); if (fnames == null || fnames.Length == 0) { return; } RasterIdentify rst = new RasterIdentify(fnames[0]); if (string.IsNullOrEmpty(rst.SubProductIdentify)) { contextEnv.PutContextVar(ContextEnvironment.ENV_VAR_NAME_BINARY_FILE, fnames[0]); } else { contextEnv.PutContextVar(rst.SubProductIdentify, fnames[0]); } // if (customVarSetter != null) { customVarSetter(fnames, beginSubprod, contextEnv); } }
private void CustomVarSetterHandler(string dblvFileName, string beginSubprod, IContextEnvironment contextEnv) { string ndviFileName = Path.GetFileName(dblvFileName); if (string.IsNullOrEmpty(ndviFileName)) { return; } string dblvName = Path.GetDirectoryName(dblvFileName) + "\\" + ndviFileName.Replace("NDVI", "DBLV"); if (File.Exists(dblvName)) { contextEnv.PutContextVar("DBLV", dblvName); } }
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(); } } }