private ILabelLayer GetLabelLayer(ICurrentRasterInteractiver viewer, string name, string[] fieldNames) { ILabelService srv = viewer.LabelService; if (srv == null) { return(null); } return(srv.GetLabelLayer(name, fieldNames)); }
public override void Execute() { ICanvas _canvas = null; ILayoutHost _host = null; if (_smartSession.SmartWindowManager.ActiveViewer is ICanvasViewer) { GetCanvasByCanvasViewer(out _canvas); ICurrentRasterInteractiver cv = (_smartSession.SmartWindowManager.ActiveViewer as ICurrentRasterInteractiver);//LabelService也是ICanvasViewer上的矢量 if (cv != null && cv.LabelService != null) { cv.LabelService.Reset(); } } else if (_smartSession.SmartWindowManager.ActiveViewer is ILayoutViewer) { GetCanvasByLayoutDataFrame(out _canvas, out _host); } if (_canvas == null) { return; } if (_canvas.LayerContainer == null) { return; } if (_canvas.LayerContainer.VectorHost != null) { RemoveAllVectorLayer(_canvas.LayerContainer.VectorHost as IVectorHostLayer); } Layer removeLayer = null; foreach (Layer layer in _canvas.LayerContainer.Layers) { if ((layer as GeoGridLayer) != null) { removeLayer = layer; } } if (removeLayer != null) { _canvas.LayerContainer.Layers.Remove(removeLayer); } _canvas.Refresh(enumRefreshType.VectorLayer); if (_host != null) { _host.Render(true); } }
private void btnGetData_Click(object sender, EventArgs e) { if (this.Tag != null) { IArgumentProvider arg = this.Tag as IArgumentProvider; ICurrentRasterInteractiver crt = arg.CurrentRasterInteractiver; if (crt != null) { int bandMI = (int)arg.GetArg("MiddleInfrared"); int bandFI = (int)arg.GetArg("FarInfrared"); if (bandFI <= 0 || bandMI <= 0) { return; } crt.StartAOIDrawing(() => { try { double[] mIBand = crt.GetBandValuesInAOI(bandMI); double[] fIBand = crt.GetBandValuesInAOI(bandFI); if (mIBand == null || fIBand == null || mIBand.Length != fIBand.Length) { return; } float avgValue = 0; double totalValue = 0; for (int i = 0; i < mIBand.Length; i++) { totalValue += mIBand[i] - fIBand[i]; } avgValue = (float)Math.Round(totalValue / mIBand.Length, 2); txtValue.Text = avgValue.ToString(); } catch (Exception ex) { MessageBox.Show("未能获取薄雾判识所需通道值!", "提示", MessageBoxButtons.OK); } }); } } return; }
private void btnLand_Click(object sender, EventArgs e) { if (this.Tag != null) { IArgumentProvider arg = this.Tag as IArgumentProvider; ICurrentRasterInteractiver crt = arg.CurrentRasterInteractiver; if (crt != null) { int bandNI = (int)arg.GetArg("NearInfrared"); if (bandNI <= 0) { return; } crt.StartAOIDrawing(() => { float landAvgValue = (float)Math.Round(crt.GetAvgBandValueInAOI(bandNI), 2); txtLand.Text = landAvgValue.ToString(); }); } } }
private void GetCurrentRasterInteractiver(TextBox txt, string percentArgName, bool maxValue) { if (_argProvider != null) { ICurrentRasterInteractiver crt = _argProvider.CurrentRasterInteractiver; if (crt != null) { int bandNI = (int)_argProvider.GetArg("NearInfrared"); if (bandNI <= 0) { return; } float percent = (float)_argProvider.GetArg(percentArgName) / 100; if (maxValue) { crt.StartAOIDrawing(() => { txt.Text = Math.Round(crt.GetMaxAvgBandValueInAOI(bandNI, percent), 2).ToString(); if (_handler != null) { _handler(GetParameterValues()); } crt.TryFinishPencilTool(); }); } else { crt.StartAOIDrawing(() => { txt.Text = Math.Round(crt.GetMinAvgBandValueInAOI(bandNI, percent), 2).ToString(); if (_handler != null) { _handler(GetParameterValues()); } crt.TryFinishPencilTool(); }); } } } }
private void StatFilterAreas() { ICurrentRasterInteractiver inter = _session.SmartWindowManager.ActiveCanvasViewer as ICurrentRasterInteractiver; if (inter != null) { inter.StartAOIDrawing(GetPencilType(), (aoi, shape) => { string layerName = "System:StatArea"; ILabelLayer lyr = GetLabelLayer((_activeViewer as ICurrentRasterInteractiver), layerName, _fieldNames); if (lyr != null) { Dictionary <string, double> areas = StatArea(aoi, _filters); _layerName = layerName; //ApplyColor(lyr); //lyr.LabelDef.Fieldname = "面积(平方公里)"; ApplyColor(lyr); lyr.LabelDef.Fieldname = _fieldNames[1]; lyr.LabelDef.EnableLabeling = true; CodeCell.AgileMap.Core.Feature fet = null; try { fet = ToFeature(shape, areas.Values.ToArray()); } catch (Exception ex) { _session.PrintMessage(ex); } if (fet != null) { lyr.AddFeature(fet); AddFeatureToListView(fet); } } }); } }
private void SataSimpleArea() { string[] lstViewfieldNames = new string[] { "名称", "像元个数", "面积(平方公里)" }; string[] fieldNames = new string[] { "name", "pixelcount", "area" }; UpdateHeadersOfListView(lstViewfieldNames); ICurrentRasterInteractiver inter = _activeViewer as ICurrentRasterInteractiver; if (inter != null) { //inter inter.StartAOIDrawing(GetPencilType(), (aoi, shape) => { string layerName = "System:StatArea"; ILabelLayer lyr = GetLabelLayer((_activeViewer as ICurrentRasterInteractiver), layerName, fieldNames); if (lyr != null) { _layerName = layerName; ApplyColor(lyr); lyr.LabelDef.Fieldname = "area"; CodeCell.AgileMap.Core.Feature fet = null; try { fet = ToFeature(aoi, shape, fieldNames); } catch (Exception ex) { _session.PrintMessage(ex); } if (fet != null) { lyr.AddFeature(fet); AddFeatureToListView(fet); } } }); } }