ArcGIS Engine组件式开发设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ArcGIS Engine 组件式开发系统设计报告
1. 系统设计目的
对于本门课程进行系统的了解和加深,能将MapControl 、PageLayoutControl 、TOCControl 和ToolBarControl 控件集成起来,建立一个GIS 应用系统,实现一些简单的操作,例如数据的加载,地图的交互操作,空间查询,缓冲区分析,地图的打印输等功能。
2. 系统设计内容
● 能加载几种常用格式的地图数据。
● 创建了自己的自定义命令、工具和菜单,实现鹰眼功能,拉框显示,地图漫
游,地图标注,数据选择,并能绘制点、线、面。
● 调整TOCControl 控件中图层的显示顺序,并可以点击右键打开属性表。 ● 可新建点、线、面图层。
● 实现了属性查图功能,并进行要素的选择,将选择的要素高亮显示出来。 ● 能进行地图制图,可设置格网点、格网线,改变背景颜色,设置图例,比例
尺,指北针,并进行地图的输出。 ● 实现了空间分析中的缓冲区分析。
3. 主要系统模块示意图
空间查询
GIS 应用系统
创建图层
地图交互操作
地图输入
地图制图
空间分析
地图输出
4.实现功能简介
按照数据处理的流程,可将本系统分为七大模块:
(1)地图输入模块:可加载shp、jpg、tif、bmp格式的地图数据并在主视图上同时显示多个图层。此功能包含的类有GeoMapOp。
(2)地图交互操作模块:里面功能的定义都在类GeoMapOp中,然后在Form1窗体中进行调用。
●实现鹰眼操作:可在主视图和鹰眼地图上同步显示,主视图变化后鹰眼
视图能保持一致,可通过鹰眼地图定位主视图。
●拉框显示:用户可通过鼠标拉框放大显现地图。
●地图漫游:用户可以通过鼠标将放大后的地图进行平移操作。
●地图放大:用户可通过鼠标点击实现地图的放大。
●全图显示:可用鼠标拖动地图。
●绘制点、线、面:用户可通过鼠标点击来给图上添加点、线、面。
●地图标注:用户可通过鼠标点击来添加地图标注。
●数据选择:用户可将选择的要素高亮显示出来。
(3)创建图层:此功能里的代码都没有在类里面出现,都是在窗体中定义的。里面包含创建点图层,线图层,面图层。
●创建点图层:用户可通过鼠标点击此项创建一个点图层文件,并保存。
●创建线图层:用户可通过鼠标点击此项创建一个线图层文件,并保存。
●创建面图层:用户可通过鼠标点击此项创建一个点面层文件,并保存。
(4)地图制图:此功能的代码在类GeoMap和主窗体Form中都有出现。
●格网点设置:用户可触动鼠标显示格网点。
●格网线设置:用户可触动鼠标显示格网线。
●改变背景颜色:用户可触动鼠标改变制图区域的背景颜色。
●设置图例:用户可通过点击此项加载该地图对应的图例。
●设置比例尺:用户可通过点击此项加载比例尺。
●设置指北针:用户可通过点击此项加载指北针。
(5)空间查询:创建了一个选择属性的窗体SpaceSearch,在窗体中添加需要的按钮。并在SpaceSearch.cs中对各个按钮进行定义。在主窗体中
对类进行调用。
(6)缓冲区分析:新建一个创建缓冲区的窗体CreatBuffer,一个元素控制类ElementsControls,一个分析类analysis,一个ARCGIS下的
BseCommend类型的缓冲区输出类CmBufferToShapefile。在工具箱中
往CreatBuffer窗体中添加需要的按钮,并对各个按钮进行定义。在窗
体CreatBuffer中用到了类analysis和类ElementsControls 。最终和主
窗体连接在一起。完成缓冲区分析。
(7)地图输出:地图输出,此处指做了地图的打印。包含的类有printer,Paper,PageLayoutControl。
5.开发流程
5.1创建一个工程命名GIS实习
从工具箱中给Form窗体中添加需要的控件。创建了多个类,进行封装。
在GeoMapOp.cs类中,主要封装了打开地理数据的方法,设置了颜色,定义了地图操作的方法,定义加载MXD文档的方法,指北针,图例,比例尺等方法。
在GeoMapComm.cs类和ClearFeaSele.cs中,主要是自定义命令的开发,对于本系统而言,主要就是两个自定义命令的设计,分别是“清除当前活动工具”,“清除当前地图选择要素”。
在地理数据加载的这个功能中,把加载数据方法AddGeoMap()封装在了GeoMapOp.cs类中,在Form1.cs中,通过实例化类对象MapData,来调用该方法实现数据的加载。部分代码如下图所示:
5.2 实现鹰眼功能
主要实现了使“主视图与鹰眼视图数据保持一致,使鹰眼视图加载地图全图,在鹰眼视图中绘制红色矩形框,主视图显示范围为鹰眼视图中红色矩形框的范围,鼠标左键移动红色矩形框,右键可以重绘红色矩形框,改变它的大小,即改变主视图中的显示范围”等功能。部分代码如下:
5.3 图层控制及查看属性表
调整图层显示顺序及右键打开属性表的方法在Form1中。部分代码如下:
5.4 添加自定义工具
对于自定义命令、工具,本系统有两个自定义命令“清除当前活动工具”,“清除当前地图选择要素”,其分别分装在GeoMapComm.cs类与ClearFeaSele.cs 中。
5.5 地图制图下的一系列命令运行后的界面:
5.6 制图功能设计
系统设计地图制图这部分内容时,实现了格网点设置,格网线设置,背景颜色改变,边框及添加地图比例尺,图例,指北针,地图的打印输出等功能。其中格网点,格网线设置,背景颜色的改变,及地图图例,指北针,比例尺的设置代码均放在类GeoMapOp中,在窗体Form1中进行调用。