ArcGIS Engine二次开发 - 基础篇 联系客服

发布时间 : 星期五 文章ArcGIS Engine二次开发 - 基础篇更新完毕开始阅读c1826921192e45361066f5ac

ArcGIS Engine二次开发——基础篇

{

IFeatureLayer pFeatureLayer = new FeatureLayerClass(); pFeatureLayer.FeatureClass = pFeatureClass; //要素图层加入到MapControl

this.axMapControl1.AddLayer((ILayer)pFeatureLayer); } }

this.axMapControl1.Extent = this.axMapControl1.FullExtent; }

1.6.4 小结

到此为止,有关通过代码添加图层的专题我们就介绍到这里。从以上的三个例子可以看出,添加数据的基本思路是相通的,通过OpenFileDialog来指定过滤文件的类型,获取用户选中的文件路径和名称,然后利用ArcEngine中对应的方法来获取数据,最后添加到MapControl中显示。其中添加mxd和shp是比较基本和常用的方法,添加MDB数据略显繁琐,在我们给出的例子中仅实现了包含要素类型数据的打开,有兴趣的同学可以尝试包含栅格等数据类型的mdb。这一节在同学们掌握通过代码打开数据的方法的同时,希望同时掌握OpenFileDialog的使用方法,在实际的开发中,它也是经常用到的。

1.7 构建一个简单的GIS应用

在这一小节中,我们不会再像前五小节一样,只是针对某个具体的功能,而是将构建一个初具规模的小型GIS应用。强烈建议您在开始这小节的学习之前,再次熟悉之前的几个小节,这样对于您掌握这一小节的内容是十分有帮助的。在这一小节中,我们的重点是如何利用C#.NET迅速搭建其一个GIS应用,也即框架的搭建,而不是具体某个功能如何实现,所以对这一小节中所有的代码不再给出详细的解释,请您自行参照帮助系统了解各接口的详细定义与使用方法。我们展示的例子中,有些类似功能在实际开发过程中不会采用这一小节中展示的方式,但这样能更好的向您介绍第三章最后一部分提到的一些拓展控件。

在构建小型GIS应用的过程中,首先应该做需求分析和功能设计,再进行用户界面的设计,之后进行程序框架搭建和具体的编码工作,最后完成测试和维护。

1.7.1 功能概述

之前我们所做的程序都是在MapControl中预先加入数据,这一小节中,我们将改变这一做法,制作与数据无关的程序。在这个程序中,我们将按照Windows编程的一般方法,根据功能完成窗体界面设计,然后编码实现;在这里,我们将对前面所做的功能做一个整合,构成一个相对完整的GIS系统。

1.7.2 新建及整理工程

在这一小节中,我们将新建一个工程,我们将这个工程命名为“MyGIS”。进入MyGIS工程编辑界面之后,我们看到解决方案资源管理器。右键点击MyGIS,在弹出的右键菜单中点击“添加”—>“新建文件夹”,建立三个文件夹,分别命名为“Classes”、 “Forms”和“Resources”,用来存放系统自定义类、窗体和系统资源。

并将Form1.cs重命名为MainForm.cs,Text属性修改为MyGIS,并移动到Forms文件夹下。

在Forms文件夹右击点击“添加”—>“Windows窗体”,添加两个窗体,分别用于空间查询和属性查询,参数设置如下表。

ArcGIS Engine二次开发——基础篇

表 2功能窗体参数设置

窗体名称(Name) SpatialQueryForm Text属性 空间查询 描述 用于空间查询参数设置 用于属性查询参数设置 AttributeQueryForm 属性查询 注意:我们在项目中添加文件夹时,文件夹的名字会自动加入到我们新建的工程文件的命名空间中,比如这里我们创建的两个新窗体的命名空间(namespace)为“MyGIS.Forms”,原来MainForm的命名空间为“MyGIS”,这里我们将MainForm的命名空间也统一改为“MyGIS.Forms”。

图 17 MainForm命名空间修改前后

.NET Framework 使用命名空间(namespace)来组织它的众多类。在较大的编程项目中,声明自己的命名空间可以帮助控制类和方法名的范围。如我们的项目中在命名空间“MyGIS.Forms”下的MainForm、SpatialQueryForm和AttributeQueryForm三个窗体就构成了一个逻辑组合,假如另一个命名空间“YourGIS.Forms”也包含另一个SpatialQueryForm窗体,则我们在定义SpatialQueryForm实例时会造成歧义,程序会分不清我们定义的SpatialQueryForm窗体的来源,而通过Using关键字添加SpatialQueryForm命名空间的引用即可实现区分。

1.7.3 布局主界面

我们的MyGIS的主界面需要添加菜单栏,一个工具栏,一个状态栏和地图操作相关MapControl,TOCControl,下面我们就开始动手搭建主界面吧。 1.7.3.1 添加菜单栏

添加菜单栏,在属性窗口中点击Items项右侧的按钮,弹出如下对话框:

ArcGIS Engine二次开发——基础篇

图 18菜单栏的项集合编辑器

首先添加一级菜单。点击窗体上方的“添加”按钮三次,加入三个MenuItem,并将其Name属性分别修改为“menuFile”,“menuView”和“menuQuery”,将其Text属性分别修改为“文件”,“视图”,“查询”。

然后添加二级菜单,方法是选择某个菜单项的DropDownItem属性,用类似方法为菜单添加二级项目。如下所示(汉字为Text属性,省略号表示下一级菜单,括号内为Name):

文件(menuFile)

……打开(menuFileOpen) ……添加数据(menuAddData) ……退出(menuExit) 地图浏览(menuView)

……放大(menuZoomIn) ……缩小(menuZoomOut)

……中心放大(menuFixedZoomIn) ……中心缩小(menuFixedZoomOut) ……漫游(menuPan)

……全图显示(menuFullExtent) 查询(menuQuery)

……属性查询(menuAttributeQuery) ……空间查询(menuSpatialQuery) 1.7.3.2 添加工具栏

向主窗体中添加工具条(ToolStrip),点击工具栏属性表中Items项右侧的按钮,弹出如下对话框:

ArcGIS Engine二次开发——基础篇

图 19工具栏的项集合编辑器

向其中添加六个按钮,属性设置如下:

表 3工具栏属性设置

图标 Name toolFixedZoomIn toolFixedZoomOut toolZoomIn toolZoomOut toolPan Text 居中放大 居中缩小 放大 缩小 漫游 toolFullExtent 全图显示 注意:在添加图片资源文件时,我们通过“项目资源文件”选项,将所需的六个图标添加到项目中,这样它们能够自动加载到Resources文件夹中。如下图所示。

图 20 添加项目资源文件