Ejemplo n.º 1
0
 void ucPrjEnvelopes1_OnEnvelopeChanged(object sender, EventArgs e)
 {
     if (_mapAoiChanging)
     {
         return;
     }
     if (rbCenter.Checked)
     {
         if (_simpleMapControl != null)
         {
             PrjEnvelope env = ucPrjEnvelopes1.PrjEnvelopes[0].PrjEnvelope;
             if (_simpleMapControl.DrawedAOI != null)
             {
                 _simpleMapControl.DrawedAOI = null;
             }
             if (_dstSpatialRef.ProjectionCoordSystem != null)
             {
                 Core.DrawEngine.CoordEnvelope           geoEnv = new Core.DrawEngine.CoordEnvelope(env.MinX, env.MaxX, env.MinY, env.MaxY);
                 GeoDo.RSS.Core.DrawEngine.CoordEnvelope prjEnv = GeoToPrjEnv(geoEnv, _dstSpatialRef);
                 _simpleMapControl.DrawedAOI = geoEnv;
             }
             else
             {
                 _simpleMapControl.DrawedAOI = new Core.DrawEngine.CoordEnvelope(env.MinX, env.MaxX, env.MinY, env.MaxY);
             }
         }
     }
     UpdateDrawAOI();
     UpdateOutputFileName();
 }
Ejemplo n.º 2
0
 void map_AOIIsChanged(object sender, EventArgs e)
 {
     try
     {
         _mapAoiChanging = true;
         GeoDo.RSS.Core.DrawEngine.CoordEnvelope aoi = _simpleMapControl.DrawedAOI;
     }
     finally
     {
         _mapAoiChanging = false;
     }
 }
Ejemplo n.º 3
0
 private void HandleBoxMoving(IRasterDrawing drawing, ICanvasViewer viewer)
 {
     if (!_isBoxMoving)
     {
         return;
     }
     if (_preMovingEnvelope == null)
     {
         _preMovingEnvelope = viewer.Canvas.CurrentEnvelope.Clone();
     }
     _preMovingEnvelope = new Core.DrawEngine.CoordEnvelope(
         new Core.DrawEngine.CoordPoint(_preMovingEnvelope.MinX + _offsetX * _resX, _preMovingEnvelope.MinY - _offsetY * _resY),
         _preMovingEnvelope.Width, _preMovingEnvelope.Height);
 }
Ejemplo n.º 4
0
 void map_AOIIsChanged(object sender, EventArgs e)
 {
     GeoDo.RSS.Core.DrawEngine.CoordEnvelope geoAoi = _simpleMapControl.DrawedAOI;
     if (OutGeoRangeControl.Enabled)
     {
         OutGeoRangeControl.MaxY = Math.Round(geoAoi.MaxY, 2);
         OutGeoRangeControl.MinY = Math.Round(geoAoi.MinY, 2);
         OutGeoRangeControl.MaxX = Math.Round(geoAoi.MaxX, 2);
         OutGeoRangeControl.MinX = Math.Round(geoAoi.MinX, 2);
         _outCoordEnvelope       = new CoordEnvelope(geoAoi.MinX, geoAoi.MaxX, geoAoi.MinY, geoAoi.MaxY);
     }
     else
     {
         MsgBox.ShowInfo("已设定中心经度,不可更改输出范围!");
     }
 }
Ejemplo n.º 5
0
 void OverviewContent_MouseUp(object sender, MouseEventArgs e)
 {
     if (_isBoxMoving)
     {
         _offsetX = e.X - _bPoint.X;
         _offsetY = e.Y - _bPoint.Y;
         UpdateCanvasEnvelope(_offsetX, _offsetY);
         _offsetX  = 0;
         _offsetY  = 0;
         _prePoint = e.Location;
     }
     _prePoint          = Point.Empty;
     _bPoint            = Point.Empty;
     _preMovingEnvelope = null;
     _isBoxMoving       = false;
 }
Ejemplo n.º 6
0
 private void WriteWorldFile(GeoDo.RSS.Core.DrawEngine.CoordEnvelope envlope, ISpatialReference spatial, double resolutionX, double resolutionY, string bmpFilename)
 {
     try
     {
         double minx = envlope.MinX;
         double maxy = envlope.MaxY;
         //double resolutionX = prd.ResolutionX;
         //double resolutionY = prd.ResolutionY;
         //GeoDo.Project.ISpatialReference spatial = prd.SpatialRef;
         WorldFile worldFile = new WorldFile();
         worldFile.CreatWorldFile(resolutionX, -resolutionY, minx, maxy, bmpFilename);
         worldFile.CreatXmlFile(spatial == null ? GeoDo.Project.SpatialReference.GetDefault() : spatial, bmpFilename);
     }
     catch
     {
     }
 }
Ejemplo n.º 7
0
        private void UpdateCanvasEnvelope(int offsetX, int offsetY)
        {
            ICanvasViewer viewer = _session.SmartWindowManager.ActiveCanvasViewer;

            if (viewer == null || viewer.ActiveObject == null)
            {
                return;
            }
            IRasterDrawing drawing = viewer.ActiveObject as IRasterDrawing;

            if (drawing == null || drawing.DataProvider == null)
            {
                return;
            }
            GeoDo.RSS.Core.DrawEngine.CoordEnvelope evp    = viewer.Canvas.CurrentEnvelope;
            Core.DrawEngine.CoordEnvelope           newevp = new Core.DrawEngine.CoordEnvelope(
                new Core.DrawEngine.CoordPoint(evp.MinX + _offsetX * _resX, evp.MinY - _offsetY * _resY),
                evp.Width, evp.Height);
            viewer.Canvas.CurrentEnvelope = newevp;
            viewer.Canvas.Refresh(Core.DrawEngine.enumRefreshType.All);
        }
Ejemplo n.º 8
0
 void map_AOIIsChanged(object sender, EventArgs e)
 {
     try
     {
         _mapAoiChanging = true;
         GeoDo.RSS.Core.DrawEngine.CoordEnvelope geoAoi = _simpleMapControl.DrawedAOI;
         if (_dstSpatialRef.ProjectionCoordSystem != null)
         {
             GeoDo.RSS.Core.DrawEngine.CoordEnvelope prjAoi = GeoToPrjEnv(geoAoi, _dstSpatialRef);
             //ucPrjEnvelopes1.SetSpatialReference(_dstSpatialRef);
             ucPrjEnvelopes1.SetPrjEnvelope(new PrjEnvelope(prjAoi.MinX, prjAoi.MaxX, prjAoi.MinY, prjAoi.MaxY));
         }
         else
         {
             ucPrjEnvelopes1.SetPrjEnvelope(new PrjEnvelope(geoAoi.MinX, geoAoi.MaxX, geoAoi.MinY, geoAoi.MaxY));
         }
         SetCheckMode(1);
     }
     finally
     {
         _mapAoiChanging = false;
     }
 }
Ejemplo n.º 9
0
 //获取多个aoi的外接矩形
 private GeoDo.RSS.Core.DrawEngine.CoordEnvelope GetGeoRect(GeoDo.RSS.Core.VectorDrawing.AOIContainerLayer aoiContainer)
 {
     GeoDo.RSS.Core.DrawEngine.CoordEnvelope retRect = null;
     foreach (object obj in aoiContainer.AOIs)
     {
         string name;
         GeoDo.RSS.Core.DrawEngine.CoordEnvelope rect = null;
         rect = GetGeoRect(obj as Feature, out name);
         if (rect == null)
         {
             continue;
         }
         if (retRect == null)
         {
             retRect = rect;
         }
         else
         {
             retRect = retRect.Union(rect);
         }
     }
     return(retRect);
 }
Ejemplo n.º 10
0
        private void DrawViewportBox(ICanvasViewer viewer, IRasterDrawing drawing, PaintEventArgs e)
        {
            GeoDo.RSS.Core.DrawEngine.CoordEnvelope evp = viewer.Canvas.CurrentEnvelope;
            if (_isBoxMoving)
            {
                evp = _preMovingEnvelope;
            }
            double x1     = (evp.MinX - drawing.OriginalEnvelope.MinX) / _resX;
            double y1     = (drawing.OriginalEnvelope.MaxY - evp.MaxY) / _resY;
            double width  = evp.Width / _resX;
            double height = evp.Height / _resY;

            if (width < 3 && height < 3)
            {
                e.Graphics.FillEllipse(Brushes.Red, new Rectangle((int)x1, (int)y1, 3, 3));
            }
            else
            {
                _boxBounds = new Rectangle((int)x1, (int)y1, (int)width, (int)height);
                e.Graphics.FillRectangle(_boxFillBrush, _boxBounds);
                e.Graphics.DrawRectangle(Pens.Red, _boxBounds);
            }
        }
Ejemplo n.º 11
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);
            }
        }
Ejemplo n.º 12
0
 private void btnOk_Click(object sender, EventArgs e)
 {
     //根据界面设置进行投影、拼接、分幅、入库
     ////检查参数是否设置完全
     btnOk.Enabled = false;
     //UseRegion = cbxUseRegion.Checked;
     if (cbxUseRegion.Checked)
     {
         try
         {
             if (radiRecg.Checked)
             {
                 if (!CheckArgsIsOk())
                 {
                     return;
                 }
                 _arg = new InputArg(_path);
                 _arg.ValidEnvelopes = _envList.ToArray();
                 string name = lstRegions.SelectedItem.ToString();
                 foreach (PrjEnvelopeItem item in _envList)
                 {
                     if (name == item.Name)
                     {
                         _arg.SelectedRegionEnvelope = item;
                         break;
                     }
                 }
                 _arg.RegionToXml(_path);
                 UseRecgRegion      = true;
                 UseRegion          = true;
                 UseVectorAOIRegion = false;
                 this.Close();
             }
             else if (radiVectorAOI.Checked)
             {
                 if (aoiContainer == null || aoiContainer.AOIs.Count() == 0)
                 {
                     throw new ArgumentException("未选择任何有效的AOI区域!");
                 }
                 if (string.IsNullOrWhiteSpace(txtAOIName.Text))
                 {
                     throw new ArgumentException("请输入有效的AOI区域名称!");
                 }
                 UseRecgRegion      = false;
                 UseRegion          = false;
                 UseVectorAOIRegion = true;
                 _VectorAOIName     = txtAOIName.Text;
                 _aoiEnv            = GetGeoRect(aoiContainer);
                 this.Close();
             }
             else
             {
                 UseRegion          = false;
                 UseRecgRegion      = false;
                 UseVectorAOIRegion = false;
                 return;
             }
         }
         catch (System.Exception ex)
         {
             MessageBox.Show(ex.Message);
         }
         finally
         {
             btnOk.Enabled = true;
         }
     }
     else
     {
         UseRegion          = false;
         UseRecgRegion      = false;
         UseVectorAOIRegion = false;
         this.Close();
         return;
     }
 }
Ejemplo n.º 13
0
 public AOIItem(string name, GeoDo.RSS.Core.DrawEngine.CoordEnvelope envelope)
 {
     Name        = name;
     GeoEnvelope = envelope;
 }