当前位置:文档之家› 地理信息系统开发具体教程

地理信息系统开发具体教程

地理信息系统开发具体教程一、基本控件的添加1.1.新建项目文件----->新建---->项目---->Windows窗体应用1.2.修改标题右击窗体属性---->在Text中修改标题名称1.3.添加菜单栏工具箱---->菜单和工具栏---->MenuStrip(将MenuStrip拖入到窗体内) 依次添加子标题如下:1.4.添加ToolStripContainer工具箱---->菜单和工具栏----> ToolStripContainer将ToolStripContainer拖入到窗体内,右击属性,Spring属性设置为True,在添加一个Statuslabel,在属性中的text修改名称1.5.添加SplitContainer工具箱---->菜单和工具栏---->SplitContainer将SplitContainer拖入到窗体中,并将右击属性中Dock设置为“Fill”1.6.添加控件工具箱---->ArcGIS Windows Froms将TOCC Control 和MapControl 拖入到窗口中分别设置在左右侧设置TOCC Control属性,使之与MapControl关联,右击TOCC Control,点击属性,在Buddy 中改为axMapControl1添加控件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(@"文件的具体地址\文件的名称.文件格式”);例子如下:this.axMapControl1.LoadMx:\ArcGIS Engine 地理信息系统开发教程---基于C#.NET\chp03\地图操作\data\Mxd文件\Qingdao.mxd");(2)设置可选择的文件打开方式Open pOpen = new Open();pOpenE:\ArcGIS Engine 地理信息系统开发教程---基于C#.NET\chp03\地图操作\data\Mxd文件" ; pOpen = "文本文件(*.mxd)|*.mxd|所有文件(*.*)|*.*";pOpen = "打开地图文档";if (pOpen() == DialogResult.OK){string mxdfilpath = pOpen;if (this.axMapControl1.CheckMxilpath)){this.axMapControl1.LoadMx);}else{MessageBox.Show("打开地图文档无效!");}(3)使用ControlsOpenDocCommandClass加载添加代码如下: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依次添加控件分栏容器控件splitContainer1)、内容表控件(axTOCControl1)、地图视图控件(axMapControl1)、许可控件(axLicenseControl1)。

2.为工具栏控件添加8 个按钮(BUTTON),依次将其文本(text 属性)改为:打开地图、加载数据、逐级放大、逐级缩小、拉框放大、拉框缩小、漫游、全图、前一视图、后一视图,并设置相应图标依次将其NAME 属性改为CmdOpen, CmdAdd,CmdZoomIn, CmdZoonOut, ToolZoomIn, ToolZoomOut, ToolPan, CmdFullextent、CmdBack、CmdNext点击button ->Displaystyle->ImageAndText 可以使修改的TEXT名称显示出来3.双击button“打开地图”添加代码如下ICommand command = new ControlsOpenDocCommandClass();command.OnCreate(this.axMapControl1.Object);command.OnClick();注意:使用代码之前要引用命名空间using ESRI.ArcGIS.SystemUI;using ESRI.ArcGIS.Controls;4.双击button“加载数据”添加代码如下:5.双击button“逐级放大”“逐级缩小”分别添加代码如下:注意:在添加代码前,需要添加引用空间代码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 = axMapControl1.Extent;pEnvelope.Expand(2, 2, true);//这a里?设Θ?置?缩?小?为a一?半?,?可é以?根ù据Y需è要癮具?体?设Θ?置?axMapControl1.Extent = pEnvelope;axMapControl1.ActiveView.Refresh();6.双击button“拉框放大”“拉框缩小”分别添加代码如下:ControlsMapZoomInTool objTool = new ControlsMapZoomInToolClass();objTool.OnCreate(axMapControl1.Object);axMapControl1.CurrentTool = (ITool)objTool;ControlsMapZoomOutTool objTool = new ControlsMapZoomOutToolClass();objTool.OnCreate(axMapControl1.Object);axMapControl1.CurrentTool = (ITool)objTool;7.双击button“拉框放大”“拉框缩小”分别添加代码如下:ControlsMapZoomInTool objTool = new ControlsMapZoomInToolClass();objTool.OnCreate(axMapControl1.Object);axMapControl1.CurrentTool = (ITool)objTool;ControlsMapZoomOutTool objTool = new ControlsMapZoomOutToolClass();objTool.OnCreate(axMapControl1.Object);axMapControl1.CurrentTool = (ITool)objTool;8.双击button“漫游”添加代码如下:string 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改为EagleControl SpitContainer3.将TabControl拖入到框内,并修改名称为数据和布局,并将属性中alignment中设置为bottom。

4.点击“数据”框,将MapControl拖入到其中,同样方法选中“布局”框将“PageLayoutControl 拖入其中,并将MapControl改名为MainControl5.定义几个变量private bool bCanDrag; //鹰眼地图上的矩形框可移动的标志private IPoint pMoveRectPoint; //记录在移动鹰眼地图上的矩形框时鼠标的位置private IEnvelope pEnv; //记录数据视图的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 mainMapControl_OnMapReplaced(object sender,ESRI.ArcGIS.Controls.IMapControlEvents2_OnMapReplacedEvent e){if (yerCount > 0){EagleMapControl.Map = new MapClass();}for (int i = 0; i <= yerCount - 1; i++){EagleMapControl.AddLayer(mainMapControl.get_Layer(i));}EagleMapControl.Extent = mainMapControl.Extent;EagleMapControl.Refresh();}7)添加矩形框当数据视图的显示范围发生变化时,会触发触发数据视图( MapControl1)中 OnExtentUpdata 事件,在该事件中绘制鹰眼视图中的方框。

相关主题