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(); }
void map_AOIIsChanged(object sender, EventArgs e) { try { _mapAoiChanging = true; GeoDo.RSS.Core.DrawEngine.CoordEnvelope aoi = _simpleMapControl.DrawedAOI; } finally { _mapAoiChanging = false; } }
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); }
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("已设定中心经度,不可更改输出范围!"); } }
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; }
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 { } }
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); }
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; } }
//获取多个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); }
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); } }
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); } }
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; } }
public AOIItem(string name, GeoDo.RSS.Core.DrawEngine.CoordEnvelope envelope) { Name = name; GeoEnvelope = envelope; }