
《GS软件设计》实习报告
PAGE
PAGE 59
地理与生物信息学院
2012 / 2013 学年 第 一 学期
GIS软件设计
实 验 报 告
课程名称: GIS软件设计
实验名称: 小型GIS软件系统的设计与开发
班 级 学 号
学 生 姓 名 冶福荣 郑正中
指 导 教 师 原立峰
日 期: 2012 年 9 月
软件设计题目
基于ArcGIS Engine及C#编程语言构建一个小型GIS平台系统。
二、设计内容
软件为一个小型的GIS平台,主要包括:空间数据存取模块、地图浏览模块、地图编辑模块、空间查询模块、空间分析模块、地图修饰模块。
(1)空间数据存取模块
该模块实现对地图数据的新建、加载、保存、另存和打印输出对于地图的硬拷贝输出实现所见即所得效果。
(2)地图浏览模块
该模块主要包括地图工具、滚动条,状态条、鹰眼图、内容视图等。其中地图工具可以实现放大、缩小、中心放大、中心缩小、全景视图、漫游、要素选择和取消、空间查询等具体功能。
(3)地图数据编辑模块
该模块能够实现新建图层、添加图层、删除所有图层、开始编辑和结束编辑的操作。编辑可以对图层进行创建新特征、修改任务、移动特征和设置捕捉环境等操作。
(4)空间查询模块
该模块实现的是属性查询。
(5)空间分析模块
该模块可以进行缓冲区分析。
设计要求
使用ArcGIS Engine和C#、VB.net等编程语言完成任务。
实现过程
空间数据存储模块
图1. 文件菜单
图2. 工具栏
新建地图
创建同步地图类ControlsSynchronizer
新建新的地图对象IMap map=new map();同时更新地图文档
加载shapefile文件和mxd文档
新建打开文档对话框,设置文件类型为”(*.shp)|*.shp”
将对话框获得的shapefile文档的地址返回,检查文档是否存在,若存在则将文档加载,并将文档中的参数添加至featureclass和featurelayer中;若不存在,则错误提示。
更新mapcontrol和鹰眼中的地图。
保存地图文档
使用ESRI提供的接口函数IMapDocument类中的void Save(bool bUseRelativePaths, bool bCreateThumnbail);函数。
另存地图文档
首先需用户确认是否需要保存当前的地图文档,之后调用类ControlsSaveAsDocCommandClass(),进行地图另存为操作。
打印地图文档
图3. 打印窗体界面
创建打印窗体类:PrintPageLayoutForm,将地图文档传递到窗体中预览,选择打印机、纸张大小、打印方向等,将地图打印出来。
地图输出为图片
图4.地图输出为图片界面
创建地图输出窗体类:ExportMapForm,选择输出的路径、分辨率、图片尺寸、图片类型,并将地图输出为图片。
地图浏览模块
地图工具
实现工具栏中的控件,比如加载地图文件、添加地图图层、地图显示、漫游功能、中心缩放、放大缩小等功能。
分别创建GIS Basic Command类:OpenNewMapDocument、ZoomIn、ZoomOut 、FixedZoomIn、FixedZoomOut、FullExtent、GoBackToPreviousExtent、GoToNextExtent、ReDoDraw、UnDoDraw。
在工具栏,将这些功能添加上,单击实现。
具体代码如下:
/// summary
/// 新建地图文档
/// /summary
/// param name=sender/param
/// param name=e/param
private void OpenNewDocument_Click(object sender, EventArgs e)
{
ICommand command = new OpenNewMapDocument(m_controlsSynchronizer);
ITool tool = command as ITool;
command.OnCreate(m_mapControl.Object);
command.OnClick();