您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > gis软件设计实验报告完整版
地理与生物信息学院2012/2013学年第一学期GIS软件设计实验报告课程名称:GIS软件设计实验名称:小型GIS软件系统的设计与开发班级学号B10090113B10090123学生姓名冶福荣郑正中指导教师原立峰日期:2012年9月《GS软件设计》实习报告1一、软件设计题目基于ArcGISEngine及C#编程语言构建一个小型GIS平台系统。二、设计内容软件为一个小型的GIS平台,主要包括:空间数据存取模块、地图浏览模块、地图编辑模块、空间查询模块、空间分析模块、地图修饰模块。(1)空间数据存取模块该模块实现对地图数据的新建、加载、保存、另存和打印输出对于地图的硬拷贝输出实现所见即所得效果。(2)地图浏览模块该模块主要包括地图工具、滚动条,状态条、鹰眼图、内容视图等。其中地图工具可以实现放大、缩小、中心放大、中心缩小、全景视图、漫游、要素选择和取消、空间查询等具体功能。(3)地图数据编辑模块该模块能够实现新建图层、添加图层、删除所有图层、开始编辑和结束编辑的操作。编辑可以对图层进行创建新特征、修改任务、移动特征和设置捕捉环境等操作。(4)空间查询模块该模块实现的是属性查询。(5)空间分析模块该模块可以进行缓冲区分析。三、设计要求使用ArcGISEngine和C#、VB.net等编程语言完成任务。四、实现过程1.空间数据存储模块图1.文件菜单图2.工具栏《GS软件设计》实习报告2A.新建地图1、创建同步地图类ControlsSynchronizer2、新建新的地图对象IMapmap=newmap();同时更新地图文档B.加载shapefile文件和mxd文档1、新建打开文档对话框,设置文件类型为”(*.shp)|*.shp”2、将对话框获得的shapefile文档的地址返回,检查文档是否存在,若存在则将文档加载,并将文档中的参数添加至featureclass和featurelayer中;若不存在,则错误提示。3、更新mapcontrol和鹰眼中的地图。C.保存地图文档使用ESRI提供的接口函数IMapDocument类中的voidSave(boolbUseRelativePaths,boolbCreateThumnbail);函数。D.另存地图文档首先需用户确认是否需要保存当前的地图文档,之后调用类ControlsSaveAsDocCommandClass(),进行地图另存为操作。E.打印地图文档图3.打印窗体界面创建打印窗体类:PrintPageLayoutForm,将地图文档传递到窗体中预览,选择打印机、纸张大小、打印方向等,将地图打印出来。F.地图输出为图片《GS软件设计》实习报告3图4.地图输出为图片界面创建地图输出窗体类:ExportMapForm,选择输出的路径、分辨率、图片尺寸、图片类型,并将地图输出为图片。2.地图浏览模块A.地图工具实现工具栏中的控件,比如加载地图文件、添加地图图层、地图显示、漫游功能、中心缩放、放大缩小等功能。分别创建GISBasicCommand类:OpenNewMapDocument、ZoomIn、ZoomOut、FixedZoomIn、FixedZoomOut、FullExtent、GoBackToPreviousExtent、GoToNextExtent、ReDoDraw、UnDoDraw。在工具栏,将这些功能添加上,单击实现。具体代码如下:///summary///新建地图文档////summary///paramname=sender/param///paramname=e/paramprivatevoidOpenNewDocument_Click(objectsender,EventArgse){ICommandcommand=newOpenNewMapDocument(m_controlsSynchronizer);ITooltool=commandasITool;command.OnCreate(m_mapControl.Object);command.OnClick();}///summary///加载数据////summary///paramname=sender/param///paramname=e/paramprivatevoidAddData_Click(objectsender,EventArgse){ICommandcommand=newControlsAddDataCommandClass();command.OnCreate(axMapControl1.Object);《GS软件设计》实习报告4command.OnClick();}///summary///全屏命令////summary///paramname=sender/param///paramname=e/paramprivatevoidFullExtent_Click(objectsender,EventArgse){ICommandcommand=newControlsMapFullExtentCommandClass();command.OnCreate(m_mapControl.Object);command.OnClick();}///summary///漫游命令////summary///paramname=sender/param///paramname=e/paramprivatevoidPanTool_Click(objectsender,EventArgse){ICommandcommand=newControlsMapPanToolClass();ITooltool=commandasITool;command.OnCreate(m_mapControl.Object);axMapControl1.CurrentTool=tool;axPageLayoutControl1.CurrentTool=tool;}///summary///撤销命令////summary///paramname=sender/param///paramname=e/paramprivatevoidGoBackToPreviousExtent_Click(objectsender,EventArgse){ICommandcommand=newGoBackToPreviousExtent();command.OnCreate(m_mapControl.Object);command.OnClick();}///summary///前进命令////summary///paramname=sender/param///paramname=e/paramprivatevoidGoToNextExtent_Click(objectsender,EventArgse){《GS软件设计》实习报告5ICommandcommand=newGoToNextExtent();command.OnCreate(m_mapControl.Object);command.OnClick();}///summary///放大命令////summary///paramname=sender/param///paramname=e/paramprivatevoidZoomIn_Click(objectsender,EventArgse){ICommandcommand=newZoomIn();command.OnCreate(m_mapControl.Object);ITooltool=commandasITool;axMapControl1.CurrentTool=tool;}///summary///缩小命令////summary///paramname=sender/param///paramname=e/paramprivatevoidZoomOut_Click(objectsender,EventArgse){ICommandcommand=newZoomOut();command.OnCreate(m_mapControl.Object);ITooltool=commandasITool;axMapControl1.CurrentTool=tool;}///summary///中心缩小命令////summary///paramname=sender/param///paramname=e/paramprivatevoidFixedZoomIn_Click(objectsender,EventArgse){ICommandcommand=newFixedZoomIn();command.OnCreate(m_mapControl.Object);command.OnClick();}///summary///中心放大命令////summary///paramname=sender/param///paramname=e/param《GS软件设计》实习报告6privatevoidFixedZoomOut_Click(objectsender,EventArgse){ICommandcommand=newFixedZoomOut();command.OnCreate(m_mapControl.Object);command.OnClick();}B.状态栏状态条显示当前鼠标的坐标位置,当前比例尺,还有控件名称以及目前地图的编辑状态。坐标显示的源代码如下:///summary///MapControl鼠标移动响应函数////summary///paramname=sender/param///paramname=e/paramprivatevoidaxMapControl1_OnMouseMove(objectsender,IMapControlEvents2_OnMouseMoveEvente){//显示当前比例尺ScaleLabel.Text=比例尺1:+((long)this.axMapControl1.MapScale).ToString();//显示当前坐标CoordinateLabel.Text=当前坐标X=+e.mapX.ToString()+Y=+e.mapY.ToString()++this.axMapControl1.MapUnits.ToString().Substring(4);}C.鹰眼图鹰眼和主地图的互动,主要体现在两个方面:一是主地图的地图改变了,则鹰眼里的矩形框要移动到对应的位置,以指示当前地图在整个地图中的位置;二是鹰眼的矩形框移动了,则主地图中显示的地图要移动到相应的位置。在主地图的OnAfterDrawMapControl事件中,根据当前地图的大小,改变鹰眼中矩形框的大小。鹰眼实现过程:1、创建函数,当主地图中的地图文档被替换时,将主地图中的图层拷贝并更新到鹰眼地图中的文档。图层拷贝函数如下:///summary///图层拷贝函数////summary///paramname=pLayer/param///returns/returnsprivateILayerLayerClone(ILayerpLayer){IFeatureLayerpFeatureLayer=newFeatureLayerClass();《GS软件设计》实习报告7pFeatureLayer.FeatureClass=(pLayerasIFeatureLayer).FeatureClass;pFeatureLayer.Name=pLayer.Name;pFeatureLayer.DisplayField=(pLayerasI
本文标题:gis软件设计实验报告完整版
链接地址:https://www.777doc.com/doc-7167397 .html