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);
            }
        }
Beispiel #2
0
        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);
            }
        }
Beispiel #4
0
        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();
                }
            }
        }