private void LoadSystemLayers()
        {
            //浮动工具栏
            IFloatToolBarLayer toolbar = new FloatToolBarLayer();

            toolbar.ToolItemClicked = new Action <FloatToolItem>(FloatToolItemClick);
            toolbar.IsAutoHide      = false;
            FloatToolItem[] items = GetFloatToolItems();
            toolbar.ToolItems.AddRange(items);
            _canvas.LayerContainer.Layers.Add(toolbar as GeoDo.RSS.Core.DrawEngine.ILayer);
            _floatToolBar = toolbar as FloatToolBarLayer;
            //AOI容器
            _aoiContainer              = new AOIContainerLayer();
            _aoiContainer.Color        = Color.Red;
            _aoiContainer.LineWidth    = 1;
            _aoiContainer.IsOnlyOneAOI = !_ismultiAoi;
            _canvas.LayerContainer.Layers.Add(_aoiContainer as GeoDo.RSS.Core.DrawEngine.ILayer);
            //SelectedAOI容器
            _selectedAOILayer           = new SelectedAOILayer();
            _selectedAOILayer.Color     = Color.Yellow;
            _selectedAOILayer.LineWidth = 1;
            _canvas.LayerContainer.Layers.Add(_selectedAOILayer as GeoDo.RSS.Core.DrawEngine.ILayer);
            //蒙板
            ILayer lyr = new MaskLayer();

            _canvas.LayerContainer.Layers.Add(lyr);
        }
示例#2
0
        public string MutiRegionsClip(string file, GeoDo.RSS.Core.VectorDrawing.AOIContainerLayer aoiContainer, string savePath)
        {
            _aoiContainer = aoiContainer;

            using (IRasterDataProvider raster = GeoDataDriver.Open(file) as IRasterDataProvider)
            {
                _resolutionX      = raster.ResolutionX;
                _resolutionY      = raster.ResolutionY;
                _fileSize         = new Size(raster.Width, raster.Height);
                _fileEnvelope     = raster.CoordEnvelope;
                _activeSpatialRef = raster.SpatialRef;
                _activeCoordType  = raster.CoordType;
                raster.Dispose();
            }
            GeoDo.RSS.Core.DrawEngine.CoordEnvelope corEnvelope = null;
            corEnvelope = GetGeoRect();      //获取多个aoi的外接矩形
            evp.MaxX    = corEnvelope.MaxX;
            evp.MaxY    = corEnvelope.MaxY;
            evp.MinX    = corEnvelope.MinX;
            evp.MinY    = corEnvelope.MinY;
            BlockDefWithAOI        outEnvelope;
            Size                   size;
            List <BlockDefWithAOI> blockList = new List <BlockDefWithAOI>();

            GetArgs(out outEnvelope, out size);
            envelopes = new BlockDefWithAOI[] { outEnvelope };
            blockList.AddRange(envelopes);
            blockList[0].AOIIndexes = GetIndexes();     //获得多个aoi的Index
            OutDir = savePath;
            string[] put = RasterClipT(file, blockList.ToArray(), OutDir, "Cut");
            return(put[0]);
        }
示例#3
0
        private void UCImageControl_Load(object sender, EventArgs e)
        {
            _aoiGCPContainer             = new AOIContainerLayer();
            _aoiGCPContainer.IsAllowEdit = false;
            _aoiGCPContainer.Color       = Color.LightGreen;
            _aoiGCPContainer.LineWidth   = 2;
            canvasHost1.Canvas.LayerContainer.Layers.Add(_aoiGCPContainer as GeoDo.RSS.Core.DrawEngine.ILayer);

            _aoiContainer                       = new AOIContainerLayer();
            _aoiContainer.IsAllowEdit           = true;
            _aoiContainer.IsOnlyOneAOI          = true;
            _aoiContainer.Color                 = Color.Red;
            _aoiContainer.LineWidth             = 1;
            _aoiContainer.AOIGeometryIsUpdated += new AOIGeometryIsUpdatedHandler
                                                  (
                (sder, geometry) =>
            {
                UpdateDrawedAOI();
                if (AOIIsChanged != null)
                {
                    AOIIsChanged(this, null);
                }
            }
                                                  );
            canvasHost1.Canvas.LayerContainer.Layers.Add(_aoiContainer as GeoDo.RSS.Core.DrawEngine.ILayer);
            canvasHost1.Canvas.CurrentViewControl = _aoiContainer as IControlLayer;

            canvasHost1.Canvas.Refresh(enumRefreshType.All);
        }
示例#4
0
        private void button15_Click(object sender, EventArgs e)
        {
            if (_aoiLayer == null)
            {
                _aoiLayer       = new AOIContainerLayer();
                _aoiLayer.Color = Color.Red;
                _canvas.LayerContainer.Layers.Add(_aoiLayer as GeoDo.RSS.Core.DrawEngine.ILayer);
            }
            IPencilToolLayer layer = new PencilToolLayer();

            layer.PencilType       = enumPencilType.FreeCurve;
            layer.PencilIsFinished = (result) =>
            {
                //ptfs = result.GeoPoints;
                //pts = result.RasterPoints;
                _result = result;
                _aoiLayer.AddAOI(_result);
            };
            _canvas.CurrentViewControl = layer;
        }
示例#5
0
        void item_Click(object sender, EventArgs e)
        {
            if (_session.SmartWindowManager.ActiveCanvasViewer == null)
            {
                return;
            }
            if (_session.SmartWindowManager.ActiveCanvasViewer.AOIContainerLayer == null)
            {
                return;
            }
            string  name = (sender as RadMenuItem).Tag.ToString();
            Feature fet  = (new AOIShortcutOfAdmin()).GetFeatureByName(name);

            if (fet == null)
            {
                return;
            }
            IAOIContainerLayer container = _session.SmartWindowManager.ActiveCanvasViewer.AOIContainerLayer;

            container.AddAOI(fet);
        }
示例#6
0
        public string ExractRect(string file, GeoDo.RSS.Core.VectorDrawing.AOIContainerLayer aoiContainer, string savePath, string regionName)
        {
            _aoiContainer = aoiContainer;
            using (IRasterDataProvider raster = GeoDataDriver.Open(file) as IRasterDataProvider)
            {
                _resolutionX      = raster.ResolutionX;
                _resolutionY      = raster.ResolutionY;
                _fileSize         = new Size(raster.Width, raster.Height);
                _fileEnvelope     = raster.CoordEnvelope;
                _activeSpatialRef = raster.SpatialRef;
                _activeCoordType  = raster.CoordType;
                raster.Dispose();
            }
            GeoDo.RSS.Core.DrawEngine.CoordEnvelope corEnvelope = null;
            corEnvelope = GetGeoRect();  //获取多个aoi的外接矩形
            evp.MaxX    = corEnvelope.MaxX + 2.0f;
            evp.MaxY    = corEnvelope.MaxY + 2.0f;
            evp.MinX    = corEnvelope.MinX - 2.0f;
            evp.MinY    = corEnvelope.MinY - 2.0f;
            string filename = ExtractFile(file, 0, evp, regionName, savePath);

            return(filename);
        }
示例#7
0
 void UCImageControl_Disposed(object sender, EventArgs e)
 {
     if (_aoiContainer != null)
     {
         (_aoiContainer as AOIContainerLayer).Dispose();
         _aoiContainer = null;
     }
     if (_aoiGCPContainer != null)
     {
         (_aoiGCPContainer as AOIContainerLayer).Dispose();
         _aoiGCPContainer = null;
     }
     if (_vectorHostLayer != null)
     {
         (_vectorHostLayer as VectorHostLayer).Dispose();
         _vectorHostLayer = null;
     }
     if (canvasHost1 != null)
     {
         canvasHost1.Canvas.Dispose();
         canvasHost1.Dispose();
     }
 }
 public void Dispose()
 {
     _rightMouseMenu           = null;
     _rightMouseNormalMenus    = null;
     _rightMousePencilToolMenu = null;
     _contextMenuHandlers.Clear();
     if (_canvas != null)
     {
         _canvas.Container.KeyUp   -= new KeyEventHandler(Container_KeyUp);
         _canvas.Container.MouseUp -= new MouseEventHandler(Container_MouseUp);
         _canvas = null;
     }
     if (_aoiContainer != null)
     {
         (_aoiContainer as AOIContainerLayer).Dispose();
         _aoiContainer = null;
     }
     if (_selectedAOILayer != null)
     {
         (_selectedAOILayer as SelectedAOILayer).Dispose();
         _selectedAOILayer = null;
     }
     if (_session != null)
     {
         _session = null;
     }
     if (_contextMenuHandler != null)
     {
         (_contextMenuHandler as CanvasContextMenuHandler).HandleRemoveAll();
         _contextMenuHandler = null;
     }
     if (_toolbarManager != null)
     {
         _toolbarManager.Close();
         _toolbarManager = null;
     }
 }
示例#9
0
 void UCSimpleMapControl_Disposed(object sender, EventArgs e)
 {
     if (_objHosts != null && _objHosts.Count != 0)
     {
         foreach (string key in _objHosts.Keys)
         {
             ISimpleVectorObjectHost host = _objHosts[key];
             if (host != null)
             {
                 host.Dispose();
             }
         }
         _objHosts.Clear();
     }
     if (_aoiContainer != null)
     {
         (_aoiContainer as AOIContainerLayer).Dispose();
         _aoiContainer = null;
     }
     if (_vectorHostLayer != null)
     {
         (_vectorHostLayer as VectorHostLayer).Dispose();
         _vectorHostLayer = null;
     }
     if (_geoGridLayer != null)
     {
         _geoGridLayer.Dispose();
         _geoGridLayer = null;
     }
     if (canvasHost1 != null)
     {
         canvasHost1.Canvas.Dispose();
         canvasHost1.Dispose();
         //canvasHost1 = null;
     }
 }
示例#10
0
 public CanvasContextMenuHandler(ISmartSession session, IAOIContainerLayer aoiContainer, ICanvasViewerMenuHandlerManager handlerManager)
 {
     _session        = session;
     _aoiContainer   = aoiContainer;
     _handlerManager = handlerManager;
 }
示例#11
0
 public AOIProvider(ICanvas canvas)
 {
     _canvas         = canvas;
     _aoiContainer   = _canvas.LayerContainer.GetByName("感兴趣区域") as IAOIContainerLayer;
     _selectAOILayer = _canvas.LayerContainer.GetByName("选中的感兴趣区域") as ISelectedAOILayer;
 }