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); } } } }
private bool HasProduct(string productIdentify) { IMonitoringSession msession = _session.MonitoringSession as IMonitoringSession; IMonitoringProduct prd = msession.FindMonitoringProduct(productIdentify); return(prd != null); }
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); }
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); }
private string GetName(IMonitoringProduct product, IMonitoringSubProduct subProduct) { if (product == null || subProduct == null) { return(string.Empty); } return(product.Identify + "_" + subProduct.Identify);; }
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)); }
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(); }
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); } }
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); }
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; }
static void SubProductLoaded(object sender, IMonitoringProduct prd, IMonitoringSubProduct subPrd) { }
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)); }
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); } }