public void Batch(IMonitoringProduct product, Action <IMonitoringSubProduct, string> statusPrinter, Action <int, string> processTracker)
        {
            if (product == null || product.SubProducts.Count == 0)
            {
                return;
            }
            int count = product.SubProducts.Count;
            int steps = 100 / count;

            for (int i = 0; i < count; i++)
            {
                IMonitoringSubProduct sub = product.SubProducts[i];
                if (processTracker != null)
                {
                    processTracker(steps, "正在生成\"" + sub.Name + "\"...");
                }
                try
                {
                    _setter.Fill(product, sub);
                    if (!sub.CanDo)
                    {
                        continue;
                    }
                    IExtractResult result = sub.Make(null);
                    _collecter.Collect(sub, result);
                }
                catch (Exception ex)
                {
                    if (processTracker != null)
                    {
                        processTracker(steps, "生成\"" + sub.Name + "\"时发生错误:" + ex.Message);
                    }
                }
            }
        }
Example #2
0
        private bool HasProduct(string productIdentify)
        {
            IMonitoringSession msession = _session.MonitoringSession as IMonitoringSession;
            IMonitoringProduct prd      = msession.FindMonitoringProduct(productIdentify);

            return(prd != null);
        }
Example #3
0
        public bool Start(ICanvasViewer viewer, IMonitoringProduct product, IMonitoringSubProduct subProduct)
        {
            _canvasViewer = viewer;
            if (_canvasViewer == null)
            {
                return(false);
            }
            _canvasViewer.OnWindowClosed += new EventHandler((sender, e) => { Stop(); });
            _currentProduct    = product;
            _currentSubProduct = subProduct;
            ResultObject resultObj = GetResultObject(viewer, product, subProduct);
            string       name      = GetName(product, subProduct);

            if (!_resultObjects.ContainsKey(name))
            {
                _resultObjects.Add(name, resultObj);
            }
            else
            {
                _resultObjects[name].BinaryLayer.Dispose();
                _resultObjects[name].BinaryValues.Dispose();
                _resultObjects[name] = resultObj;
            }
            AttachCanvasViewerMenuHandlers();
            _isActived = true;
            _isUpdated = false;
            return(true);
        }
Example #4
0
        private IMonitoringSubProduct CreateMonitoringSubProduct(string rstFileName, string productIdentify, string subProductIdentify)
        {
            MonitoringSession        session        = new MonitoringSession(_session);
            IMonitoringProduct       monitorProduct = session.ChangeActiveProduct(productIdentify);
            IMonitoringSubProduct    subprd         = session.ChangeActiveSubProduct(subProductIdentify);
            RasterIdentify           rstIdentify    = new RasterIdentify(rstFileName);
            ExtractAlgorithmIdentify id             = new ExtractAlgorithmIdentify();

            id.Satellite = rstIdentify.Satellite;
            id.Sensor    = rstIdentify.Sensor;
            AlgorithmDef alg = subprd.Definition.GetAlgorithmDefByAlgorithmIdentify(id);

            if (alg == null)
            {
                PrintInfo("没有匹配的算法:" + "卫星" + rstIdentify.Satellite + ",传感器" + rstIdentify.Sensor);
                return(null);
            }
            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")
                    {
                        PrintInfo("从波段映射表获取\"" + band.Identify + "\"的波段序号失败,生成过程终止!");
                        return(null);
                    }
                }
            }
            TryHandleCustomArguments(subprd.ArgumentProvider, alg);
            return(subprd);
        }
Example #5
0
 private string GetName(IMonitoringProduct product, IMonitoringSubProduct subProduct)
 {
     if (product == null || subProduct == null)
     {
         return(string.Empty);
     }
     return(product.Identify + "_" + subProduct.Identify);;
 }
Example #6
0
        private ResultObject GetResultObject(ICanvasViewer viewer, IMonitoringProduct product, IMonitoringSubProduct subProduct)
        {
            IRasterDataProvider prd          = GetRasterDataProvider(viewer);
            IPixelIndexMapper   binaryValues = GetBinaryValuesMapper(prd, product, subProduct);
            IBinaryBitampLayer  binaryLayer  = GetBinaryLayer(viewer, prd, product, subProduct);

            return(new ResultObject(binaryValues, binaryLayer));
        }
Example #7
0
 static void ProductLoaded(object sender, IMonitoringProduct prd)
 {
     if (prd == null)
     {
         return;
     }
     //if (_product == null || _product != prd)//产品切换
     _product = prd;
     ApplyImageEnhancor();
 }
 public AutoGenerateExecutor(IResultHandler resultHandler,
                             IMonitoringProduct monitoringProduct,
                             IThemeGraphGenerator layoutGenerator,
                             IFileNameGenerator fileNameGenerator)
 {
     _resultHandler      = resultHandler;
     _monitoringProduct  = monitoringProduct;
     _layoutGenerator    = layoutGenerator;
     _fileNameGenerator  = fileNameGenerator;
     _contextEnvironment = new ContextEnvironment();
 }
Example #9
0
 public IMonitoringProduct ChangeActiveProduct(string identify, bool isOpenWorkspace)
 {
     if (_activeMonitoringProduct != null && _activeMonitoringProduct.Identify == identify)
     {
         return(_activeMonitoringProduct);
     }
     _activeMonitoringProduct    = null;
     _activeMonitoringSubProduct = null;
     if (_monitoringProducts == null || _monitoringProducts.Length == 0)
     {
         if (isOpenWorkspace)
         {
             OpenAndFillWorkspace();
         }
         return(null);
     }
     foreach (MonitoringProduct prd in _monitoringProducts)
     {
         if (prd.Identify == identify)
         {
             _activeMonitoringProduct = prd;
             break;
         }
     }
     if (_activeMonitoringProduct == null)
     {
         _extractingSession.Stop();
         return(null);
     }
     if (isOpenWorkspace)
     {
         OpenAndFillWorkspace();
     }
     //
     if (_monitoringProductLoaded != null)
     {
         _monitoringProductLoaded(this, _activeMonitoringProduct);
     }
     //
     if (ExtractPanelWidow != null)
     {
         ExtractPanelWidow.Apply(Workspace, null);
     }
     OpenWndWithProductChanged();
     return(_activeMonitoringProduct);
 }
        public void HandleResult(IContextEnvironment contextEnvironment, IMonitoringProduct product, IMonitoringSubProduct subProduct, IExtractResult result)
        {
            (_session.MonitoringSession as IMonitoringSession).ChangeActiveSubProduct(subProduct.Identify);
            if (subProduct.Identify == "DBLV")//只有判识结果在叠加在影像上
            {
                (_session.MonitoringSession as IMonitoringSession).ExtractingSession.Start((_session.SmartWindowManager.ActiveCanvasViewer), product, subProduct);
                DisplayResultClass.DisplayResult(_session, subProduct, result, true);
            }
            else
            {
                DisplayResultClass.DisplayResult(_session, subProduct, result, true);
            }
            string fname;

            if (result is IPixelIndexMapper)
            {
                fname = (_session.MonitoringSession as IMonitoringSession).ExtractingSession.AddToWorkspace((_session.MonitoringSession as IMonitoringSession).Workspace);
                DisplayResultClass._contextEnvironment.PutContextVar(subProduct.Identify, fname);
            }
            else if (result is IExtractResultArray)
            {
                IExtractResultArray  extResultMapper = result as ExtractResultArray;
                IExtractResultBase[] mappers         = extResultMapper.PixelMappers;
                if (mappers == null || mappers.Length == 0)
                {
                    return;
                }
                foreach (IExtractResultBase mapper in mappers)
                {
                    if (mapper is IPixelIndexMapper)
                    {
                        fname = (_session.MonitoringSession as IMonitoringSession).ExtractingSession.AddToWorkspace((_session.MonitoringSession as IMonitoringSession).Workspace);
                        DisplayResultClass._contextEnvironment.PutContextVar(subProduct.Identify, fname);
                    }
                }
            }
            else if (result is IFileExtractResult && subProduct.Identify == "DBLV")
            {
                DisplayResultClass._contextEnvironment.PutContextVar(subProduct.Identify, (result as IFileExtractResult).FileName);
            }
        }
Example #11
0
        private void button1_Click(object sender, EventArgs e)
        {
            //IArgumentProviderFactory fac = MifEnvironment.ActiveArgumentProviderFactory;
            ThemeDef               themeDef    = MonitoringThemeFactory.GetThemeDefByIdentify("CMA");
            IMonitoringTheme       them        = new MonitoringThemeCMA(themeDef);
            IMonitoringProduct     fir         = them.GetProductByIdentify("FIR");
            ExtractProductIdentify prdIdentify = new ExtractProductIdentify();

            prdIdentify.ThemeIdentify      = "CMA";
            prdIdentify.ProductIdentify    = "FIR";
            prdIdentify.SubProductIdentify = "DBLV";
            ExtractAlgorithmIdentify algIdentify = new ExtractAlgorithmIdentify();

            algIdentify.Satellite  = "FY3A";
            algIdentify.Sensor     = "VIRR";
            algIdentify.Resolution = null;//not use
            IArgumentProvider     arg = MonitoringThemeFactory.GetArgumentProvider(prdIdentify, algIdentify);
            IMonitoringSubProduct bin = fir.GetSubProductByIdentify("DBLV");

            //arg.SetArg(bin.AlgorithmDefs[0].Indetify, bin.AlgorithmDefs[0]);
            arg.DataProvider = GetRasterDataProvider();
            arg.AOI          = GetAOI();
            IExtractResult result = bin.Make(null);
        }
Example #12
0
 public void Stop()
 {
     TryUnregisterCursorInfoProvider();
     if (_canvasViewer == null)
     {
         return;
     }
     foreach (string name in _resultObjects.Keys)
     {
         _canvasViewer.Canvas.LayerContainer.Layers.RemoveAll((lyr) => { return(lyr.Name == name); });
         _resultObjects[name].BinaryLayer.Dispose();
         _resultObjects[name].BinaryValues.Dispose();
     }
     _resultObjects.Clear();
     if (_canvasViewer != null && _currentProduct != null)
     {
         _canvasViewer.UnRegister(_currentProduct.Identify);
     }
     _currentProduct    = null;
     _currentSubProduct = null;
     _isActived         = false;
     _isUpdated         = false;
     _canvasViewer      = null;
 }
Example #13
0
 static void SubProductLoaded(object sender, IMonitoringProduct prd, IMonitoringSubProduct subPrd)
 {
 }
Example #14
0
        private IPixelIndexMapper GetBinaryValuesMapper(IRasterDataProvider prd, IMonitoringProduct product, IMonitoringSubProduct subProduct)
        {
            string name = GetName(product, subProduct);

            return(PixelIndexMapperFactory.CreatePixelIndexMapper(name, prd.Width, prd.Height, prd.CoordEnvelope, prd.SpatialRef));
        }
Example #15
0
        private IBinaryBitampLayer GetBinaryLayer(ICanvasViewer cv, IRasterDataProvider dataProvider, IMonitoringProduct product, IMonitoringSubProduct subProduct)
        {
            string name         = GetName(product, subProduct);
            Size   bmSize       = new Size(dataProvider.Width, dataProvider.Height);
            Color  productColor = GetBinaryColor(subProduct);

            using (IBinaryBitmapBuilder builder = new BinaryBitmapBuilder())
            {
                Bitmap             bitmap = builder.CreateBinaryBitmap(bmSize, productColor, Color.Transparent);
                IBinaryBitampLayer layer  = cv.Canvas.LayerContainer.GetByName(name) as IBinaryBitampLayer;
                if (layer != null)
                {
                    cv.Canvas.LayerContainer.Layers.Remove(layer);
                    layer.Dispose();
                }
                layer = new BinaryBitmapLayer(name, bitmap, GetCoordEnvelope(dataProvider), dataProvider.CoordType == enumCoordType.GeoCoord);
                cv.Canvas.LayerContainer.Layers.Add(layer);
                return(layer);
            }
        }