ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:1.24MB ,
资源ID:19046882      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/19046882.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(地理信息系统开发具体教程Word格式文档下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

地理信息系统开发具体教程Word格式文档下载.docx

1、添加控件License Control 工具箱-ArcGIS Windows Froms- License Control 把License Control拖入到窗体中注意:要是程序能够正常运行,需要在Program.CS中添加一段代码,代码如下:ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.EngineOrDesktop);二、添加代码2.1打开文件在菜单下双击“打开地图文档”属性(1)直接打开文件书写格式如下:this.axMapControl1.LoadMxFile(文件的具体地址文件的名称.文件格式”);例子如下:thi

2、s.axMapControl1.LoadMxFile(E:ArcGIS Engine 地理信息系统开发教程-基于C#.NETchp03地图操作dataMxd文件Qingdao.mxd);(2)设置可选择的文件打开方式OpenFileDialog pOpenFiledialog = new OpenFileDialog(); pOpenFiledialog.InitialDirectory=E:ArcGIS Engine 地理信息系统开发教程-基于C#.NETchp03地图操作dataMxd文件 ; pOpenFiledialog.Filter = 文本文件(*.mxd)|*.mxd|所有文件(

3、*.*)|*.*; pOpenFiledialog.Title = 打开地图文档 if (pOpenFiledialog.ShowDialog() = DialogResult.OK) string mxdfilpath = pOpenFiledialog.FileName; if (this.axMapControl1.CheckMxFile(mxdfilpath) this.axMapControl1.LoadMxFile(mxdfilpath); else MessageBox.Show(打开地图文档无效!(3)使用ControlsOpenDocCommandClass加载添加代码如下:

4、 ICommand command = new ControlsOpenDocCommandClass();command.OnCreate(this.axMapControl1.Object);command.OnClick();如果直接运行会出现错误,因为没有添加引用,我们需要添加引用 ESRI.ArcGIS.SystemUI;ESRI.ArcGIS.Controls;然后在使用空间 : using ESRI.ArcGIS.SystemUI;using ESRI.ArcGIS.Controls; 地图浏览添加控件menuStrip 和toolStrip 还有statusStrip依次添加控

5、件 分 栏 容 器 控 件splitContainer1)、容表控件(axTOCControl1)、地图视图控件(axMapControl1)、许可控件(axLicenseControl1)。2.为工具栏控件添加 8 个按钮(BUTTON),依次将其文本(text 属性)改为:打开地图、加载数据、逐级放大、逐级缩小、拉框放大、拉框缩小、漫游、全图、前一视图、后一视图,并设置相应图标依次将其 NAME 属性改为 CmdOpen, CmdAdd,CmdZoomIn, CmdZoonOut, ToolZoomIn, ToolZoomOut, ToolPan, CmdFullextent、CmdBac

6、k、CmdNext点击button -Displaystyle-ImageAndText 可以使修改的TEXT名称显示出来3.双击button“打开地图” 添加代码如下 ICommand command = new ControlsOpenDocCommandClass(); command.OnCreate(this.axMapControl1.Object); command.OnClick(); 注意:使用代码之前要引用命名空间using ESRI.ArcGIS.SystemUI;4.双击button“加载数据” 添加代码如下:5.双击button“逐级放大”“逐级缩小”分别添加代码如下

7、:在添加代码前,需要添加引用空间 代码 using ESRI.ArcGIS.Geometry; IEnvelope pEnvelope; pEnvelope = axMapControl1.Extent; pEnvelope.Expand(0.5, 0.5, true); /这a里?设?置?缩?小?为a一?半?,?可以?根据Y需要癮具?体? axMapControl1.Extent = pEnvelope; axMapControl1.ActiveView.Refresh(); IEnvelope pEnvelope; pEnvelope.Expand(2, 2, true);6.双击butt

8、on“拉框放大”“拉框缩小”分别添加代码如下: ControlsMapZoomInTool objTool = new ControlsMapZoomInToolClass(); objTool.OnCreate(axMapControl1.Object); axMapControl1.CurrentTool = (ITool)objTool; ControlsMapZoomOutTool objTool = new ControlsMapZoomOutToolClass();7.双击button“拉框放大”“拉框缩小”分别添加代码如下:8.双击button“漫游”添加代码如下: string

9、 pMouseOperate = null; axMapControl1.CurrentTool = null; pMouseOperate = Pan axMapControl1.MousePointer = esriControlsMousePointer.esriPointerPan;9.双击9.button“全图”添加代码如下: axMapControl1.Extent = axMapControl1.FullExtent; 视图同步1.按照如下设置界面2.依次添加控件ToolBarControl和ToccControl和MapControl ,并将MapControl 的name改为

10、EagleControl SpitContainer3.将TabControl拖入到框,并修改名称为数据和布局,并将属性中alignment中设置为bottom。4.点击“数据”框,将MapControl拖入到其中,同样方法选中“布局”框将“PageLayoutControl拖入其中,并将MapControl改名为MainControl5. 定义几个变量private bool bCanDrag; /鹰眼地图上的矩形框可移动的标志private IPoint pMoveRectPoint; /记录在移动鹰眼地图上的矩形框时鼠标的位置private IEnvelope pEnv; /记录数据视图

11、的Extent然后在初始化中写入以下代码:private void Form1_Load(object sender, EventArgs e)this.axTOCControl1.SetBuddyControl(this.mainMapControl);EagleMapControl.Extent = mainMapControl.FullExtent;pEnv = EagleMapControl.Extent;6)首先实现主视图与鹰眼视图的数据保持一致, 在 mainMapControl控件的 OnMapRelaced 事件中写入以下代码:private void mainMapContr

12、ol_OnMapReplaced(object sender,ESRI.ArcGIS.Controls.IMapControlEvents2_OnMapReplacedEvent e)if (mainMapControl.LayerCount 0)EagleMapControl.Map = new MapClass();for (int i = 0; i /按下鼠标左键移动矩形框if (e.button = 1)/如果指针落在鹰眼的矩形框中,标记可移动if (e.mapX pEnv.XMin & e.mapY pEnv.YMin & e.mapX pEnv.XMax & e.mapY pEnv

13、.YMax)bCanDrag = true;pMoveRectPoint = new PointClass();pMoveRectPoint.PutCoords(e.mapX, e.mapY); /记录点击的第一个点的坐标/按下鼠标右键绘制矩形框else if (e.button = 2)IEnvelope pEnvelope = EagleMapControl.TrackRectangle();IPoint pTempPoint = new PointClass();pTempPoint.PutCoords(pEnvelope.XMin + pEnvelope.Width / 2,pEnve

14、lope.YMin + pEnvelope.Height / 2);mainMapControl.Extent = pEnvelope;/矩形框的高宽和数据试图的高宽不一定成正比,这里做一个中心调整mainMapControl.CenterAt(pTempPoint);/移动矩形框private void EagleMapControl_OnMouseMove(object sender,ESRI.ArcGIS.Controls.IMapControlEvents2_OnMouseMoveEvent e) pEnv.XMax/如果鼠标移动到矩形框中,鼠标换成小手,表示可以拖动EagleMapC

15、ontrol.MousePointer =esriControlsMousePointer.esriPointerHand;if (e.button = 2) /如果在部按下鼠标右键,将鼠标样式设置为默认样式esriControlsMousePointer.esriPointerDefault;else/在其他位置将鼠标设为默认的样式if (bCanDrag)double Dx, Dy; /记录鼠标移动的距离Dx = e.mapX - pMoveRectPoint.X;Dy = e.mapY - pMoveRectPoint.Y;pEnv.Offset(Dx, Dy); /根据偏移量更改 pE

16、nv 位置/在绘制前,清除鹰眼中之前绘制的矩形框IRectangleElement pRectangleElement = newRectangleElementClass();IElement pElement = pRectangleElement as IElement;/设置矩形框(实质为中间透明度面)ILineSymbol pOutLine = new SimpleLineSymbolClass();pOutLine.Width = 2;pOutLine.Color = pColor;pFillSymbol.Outline = pOutLine;IFillShapeElement p

17、FillShapeElement = pElement asIFillShapeElement;pFillShapeElement.Symbol = pFillSymbol;pGraphicsContainer.AddElement(IElement)pFillShapeElement, 0);/刷新理工大学测绘学院 GIS 开发实验课讲义pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGraphics,null, null);mainMapControl.Extent = pEnv;private void EagleMapContr

18、ol_OnMouseUp(object sender,IMapControlEvents2_OnMouseUpEvent e)if (e.button = 1 & pMoveRectPoint != null)if (e.mapX = pMoveRectPoint.X & e.mapY = pMoveRectPoint.Y)mainMapControl.CenterAt(pMoveRectPoint);bCanDrag = false;9)请同学们根据课上的讲解试图理解上面的代码。以上代码绘制矩形框的代码出现了两次,可以定义一个函数以减少代码冗余。鹰眼功能实现代码大致就是这些, 同学们自己完成,以加深理解10) 数据视图与布局视图的联动, 大致代码如下:private void mainMapControl_OnAfterScreenDraw(object sender,ESRI.ArcGIS.Controls.IMapControlEvents2_OnAfterScreenDrawEvent e)IActiveView pActiveView =(IActiveView)axPageLayoutControl1.ActiveView.FocusMap;IDisplayTransf

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1