Beispiel #1
0
 void canvasHost1_Load(object sender, EventArgs e)
 {
     canvasHost1.Canvas.Container.MouseMove += new MouseEventHandler(Container_MouseMove);
     canvasHost1.Canvas.Container.MouseDown += new MouseEventHandler(Container_MouseDown);
     canvasHost1.Canvas.OnEnvelopeChanged   += new EventHandler((senser, arg) =>
     {
         if (_onCoordEnvelopeChanged != null)
         {
             _onCoordEnvelopeChanged(this, null);
         }
     });
     canvasHost1.Canvas.Container.Paint += new PaintEventHandler(Container_Paint);
     //
     _initializer        = new CanvasViewerInitializer(canvasHost1.Canvas, _session);
     _aoiProvider        = new AOIProvider(canvasHost1.Canvas);
     _rasterInteractiver = new CurrentRasterInteractiver(this);
     //
     canvasHost1.Canvas.AOIGetter = () =>
     {
         return(_aoiProvider.GetBitmapIndexes());
     };
     canvasHost1.Canvas.MaskGetter = () =>
     {
         return(AOIHelper.Reverse(_aoiProvider.GetBitmapIndexes(), _aoiProvider.BitmapSize));
     };
     //
     CreateVectorHost();
 }
Beispiel #2
0
        private string TryCheckArgsEnvironment(out GeoDo.RSS.Core.DrawEngine.CoordEnvelope[] envelopes)
        {
            ICanvasViewer canViewer = _smartSession.SmartWindowManager.ActiveCanvasViewer;

            if (canViewer == null)
            {
                throw new Exception("未获得激活的数据窗口");
            }
            IAOIProvider aoiProvider = canViewer.AOIProvider;

            if (aoiProvider == null)
            {
                throw new Exception("未从激活的数据窗口中获取感兴趣区域");
            }
            Core.DrawEngine.CoordEnvelope geoEnvelope = aoiProvider.GetGeoRect();
            if (geoEnvelope == null)
            {
                throw new Exception("未从激活的数据窗口中获取感兴趣区域");
            }
            envelopes = new Core.DrawEngine.CoordEnvelope[] { geoEnvelope };

            IRasterDrawing rd = canViewer.ActiveObject as IRasterDrawing;

            if (rd == null)
            {
                throw new Exception("未从激活的数据窗口中获取数据提供者");
            }
            IRasterDataProvider rdp = rd.DataProvider;

            if (rdp == null)
            {
                throw new Exception("未从激活的数据窗口中获取数据提供者");
            }
            return(rdp.fileName);
        }
Beispiel #3
0
        private string TryGetInfoFromActiveView(out AOIItem[] aoiItems)
        {
            ICanvasViewer canViewer = _smartSession.SmartWindowManager.ActiveCanvasViewer;

            if (canViewer == null)
            {
                throw new Exception("未获得激活的数据窗口");
            }
            IAOIProvider aoiProvider = canViewer.AOIProvider;

            if (aoiProvider == null)
            {
                throw new Exception("未从激活的数据窗口中获取感兴趣区域");
            }
            aoiItems = aoiProvider.GetAOIItems();
            IRasterDrawing rd = canViewer.ActiveObject as IRasterDrawing;

            if (rd == null)
            {
                throw new Exception("未从激活的数据窗口中获取数据提供者");
            }
            IRasterDataProvider rdp = rd.DataProvider;

            if (rdp == null)
            {
                throw new Exception("未从激活的数据窗口中获取数据提供者");
            }
            return(rdp.fileName);
        }
Beispiel #4
0
        private GeoDo.RSS.Core.DrawEngine.CoordEnvelope TryGetInfoFromActiveView()
        {
            ICanvasViewer canViewer = _smartSession.SmartWindowManager.ActiveCanvasViewer;
            IAOIProvider  aoi       = canViewer.AOIProvider;

            return(aoi.GetGeoRect());
        }
Beispiel #5
0
        private string CheckActiverFile()
        {
            ICanvasViewer canViewer = _session.SmartWindowManager.ActiveCanvasViewer;

            if (canViewer == null)
            {
                throw new Exception("未获得激活的数据窗口");
            }
            IAOIProvider aoiProvider = canViewer.AOIProvider;

            if (aoiProvider == null)
            {
                throw new Exception("未从激活的数据窗口中获取感兴趣区域");
            }
            GeoDo.RSS.Core.DrawEngine.CoordEnvelope geoEnvelope = aoiProvider.GetGeoRect();
            if (geoEnvelope == null)
            {
                _hasAOI = false;
            }
            else
            {
                _hasAOI = true;
            }
            AOIItem[] aoiItems = aoiProvider.GetAOIItems();
            if (aoiItems == null || aoiItems.Length == 0)
            {
                _hasBlock = false;
            }
            else
            {
                _hasBlock = true;
            }
            IRasterDrawing rd = canViewer.ActiveObject as IRasterDrawing;

            if (rd == null)
            {
                throw new Exception("未从激活的数据窗口中获取数据提供者");
            }
            IRasterDataProvider rdp = rd.DataProvider;

            if (rdp == null)
            {
                throw new Exception("未从激活的数据窗口中获取数据提供者");
            }
            return(rdp.fileName);
        }
Beispiel #6
0
        private string TryGetInfoFromActiveView(out BlockDef[] envelopes)
        {
            envelopes = null;
            ICanvasViewer canViewer = _smartSession.SmartWindowManager.ActiveCanvasViewer;

            if (canViewer == null)
            {
                throw new Exception("未获得激活的数据窗口");
            }
            IAOIProvider aoiProvider = canViewer.AOIProvider;

            if (aoiProvider == null)
            {
                throw new Exception("未从激活的数据窗口中获取感兴趣区域");
            }
            IRasterDrawing      drawing = canViewer.Canvas.PrimaryDrawObject as IRasterDrawing;
            IRasterDataProvider rdp     = drawing.DataProvider;

            if (rdp == null)
            {
                throw new Exception("未从激活的数据窗口中获取数据提供者");
            }
            if (rdp.DataIdentify != null && rdp.DataIdentify.IsOrbit)
            {
                throw new NotSupportedException("暂未支持轨道数据的裁切");
            }
            List <BlockDef> enves = new List <BlockDef>();

            AOIItem[] aoiitems = aoiProvider.GetAOIItems();
            if (aoiitems != null && aoiitems.Length != 0)
            {
                for (int i = 0; i < aoiitems.Length; i++)
                {
                    enves.Add(new BlockDef(aoiitems[i].Name, aoiitems[i].GeoEnvelope.MinX, aoiitems[i].GeoEnvelope.MinY, aoiitems[i].GeoEnvelope.MaxX, aoiitems[i].GeoEnvelope.MaxY));
                }
            }
            envelopes = enves.ToArray();
            return(rdp.fileName);
        }
Beispiel #7
0
 void IDisposable.Dispose()
 {
     if (_initializer != null)
     {
         _initializer.Dispose();
         _initializer = null;
     }
     if (_aoiProvider != null)
     {
         _aoiProvider.Dispose();
         _aoiProvider = null;
     }
     if (canvasHost1 != null && canvasHost1.Canvas != null)
     {
         RemoveCanvasViewEnv();
     }
     this.Controls.Remove(canvasHost1);
     canvasHost1.Load -= new EventHandler(canvasHost1_Load);
     canvasHost1.DisposeView();
     canvasHost1             = null;
     _session                = null;
     _onCoordEnvelopeChanged = null;
     _pickColorIsFinished    = null;
 }
Beispiel #8
0
        private void SetSession(ISmartSession smartSession)
        {
            if (smartSession == null)
            {
                return;
            }
            ICanvasViewer canViewer = smartSession.SmartWindowManager.ActiveCanvasViewer;

            if (canViewer == null)
            {
                return;
            }
            IRasterDrawing      drawing      = canViewer.Canvas.PrimaryDrawObject as IRasterDrawing;
            IRasterDataProvider activeRaster = drawing.DataProvider;

            if (activeRaster == null)
            {
                return;
            }
            _resolutionX      = activeRaster.ResolutionX;
            _resolutionY      = activeRaster.ResolutionY;
            _fileSize         = new Size(activeRaster.Width, activeRaster.Height);
            _fileEnvelope     = activeRaster.CoordEnvelope;
            _activeSpatialRef = activeRaster.SpatialRef;
            _activeCoordType  = activeRaster.CoordType;
            IAOIProvider aoiProvider = canViewer.AOIProvider;

            if (aoiProvider == null)
            {
                return;
            }
            AOIItem[] aoiItems = aoiProvider.GetAOIItems();
            if (aoiItems != null && aoiItems.Length == 1)
            {
                txtRegionName.Text = string.IsNullOrEmpty(aoiItems[0].Name) ? "DXX" : aoiItems[0].Name;
                txtMask.Text       = _blockName;
            }
            GeoDo.RSS.Core.DrawEngine.CoordEnvelope corEnvelope = null;
            switch (_activeCoordType)
            {
            case enumCoordType.PrjCoord:
            {
                corEnvelope = aoiProvider.GetPrjRect();
                break;
            }

            case enumCoordType.GeoCoord:
            {
                corEnvelope = aoiProvider.GetGeoRect();
                break;
            }
            }
            if (corEnvelope == null)
            {
                _outsizeRegion = new CoordEnvelope(activeRaster.CoordEnvelope.MinX, activeRaster.CoordEnvelope.MaxX, activeRaster.CoordEnvelope.MinY, activeRaster.CoordEnvelope.MaxY);
            }
            else
            {
                _outsizeRegion = new CoordEnvelope(corEnvelope.MinX, corEnvelope.MaxX, corEnvelope.MinY, corEnvelope.MaxY);
            }
            FillControlsValuesByFileArgs();
            if (_outsizeRegion != null)
            {
                GeoRegionChanged(_outsizeRegion);
            }
            if (drawing != null)
            {
                IRasterDataProvider rdp = drawing.DataProvider;
                SetInputFilename(rdp.fileName);
            }
        }