AE开发实验报告.docx
18页AE开发实验报告 试验p2.2 运用控件创立第一个桌面应用程序 一.试验目的 1〕驾驭运用控件创立桌面应用程序的主要流程; 2〕驾驭mapcontrol控件、toc控件、toobar控件的特性及其与arcmap中的对应关系; 3〕编写代码实现加载 mxd 文档、添加 shape 文件、鹰眼放大等功能; 4〕驾驭arcgis developer help查询接口协助的方法 二.试验内容 1〕运用控件创立桌面应用程序的主要流程; 2〕代码加载 mxd 文档 3〕添加 shape 文件 4〕鹰眼功能 三.试验步骤 3.1运用控件创立桌面应用程序 1〕新建一个windows窗体应用程序(文件--新建--工程--windos窗体应用程序 ) 2〕设置工程保存位置及工程名称,在点了确定之后,在vs的工具箱中找到到和arcgis engine相关的控件 其中,axmapcontrol就是map地图控件,axpagelayoucontrol是布局地图控件,axtoccontrol是书目控件,axtoolbarcontrol是gis工具栏控件,axscenecontrol是scene三维场景控件,axglobecontrol 是globe 控件,axlicensecontrol 是许可控件,axsymbologycontrol控件,axarcreadercontrol 是arcreader 控件,axarcreaderglobecontrol 是arcreaderglobe 控件。
axlicensecontrol是许可控件,一般gis系统中都必需添加,否那么无法运用 3)然后添加toc、map、toolbar、license 控件license(许可)控件是首选的,否那么其他控件无法运用,详细布局如下列图所示 4)设置工程初始化时自动添加地图文档〔map控件-右键-属性〕 5) 设置buddy属性,使toolbar控件和toc控件与map控件的关联 6)在toolbar中进展设置〔toolbar控件-右键-属性〕 7)添加工具吩咐 在toolbar control上右键—属性在items选项卡中添加几个工具吩咐 添加结果如下: 8〕运行我们的应用程序,发觉下面的错误 出现这个问题的缘由是因为arcgis 10 发生了改变,将 “esri.arcgis.runtimemanager.bind(esri.arcgis.productcode.engine)”语句添加到运用ao对象的前面,如放在main函数中,如下列图所示: 9〕上面工作完成之后,按f5键运行程序,运行胜利之后出现以下界面 尝试运用工具栏上的工具,如翻开文档、保存文档等吩咐,测试toolbar控件是否与 map控件相关联。
至此,我们的没有编写任何语句,只是运用一些arcengine控件,就可以搭建一个简洁的arcgis桌面应用程序 3.2 编程实现加载 mxd 文档 用代码添加mxd文档,用到axmapcontrol.loadmxfile(sfilepath),我们只要将mxd文档的路径传给这个方法即可我们添加一个按钮,把text属性改为“加载mxd文档”,如下列图所示: 编写“翻开mxd文档”按钮的单击事务代码,如下列图所示: 单击f5运行程序,效果如下: 单击“加载mxd文档”按钮,翻开一个mxd 文档 效果如下: 3.3编程实现添加 shape 文件 类似实现“翻开mxd文档”操作,在主窗体中添加一个“添加shape文件”按钮 编写“添加shape文件”按钮单击事务代码: 编写上述代码中涉及到的“openshapefile”函数,实现shapefile文件路径和文件名的提取并通过数组形式返回值 单击f5,运行程序 单击“添加shape文件”按钮,尝试添加一个shapefile文件。
3.4 编程实现鹰眼功能 分析:鹰眼图的操作主要由以下几个动作,当在一个控件中移动一幅图的时候另一控件中的图也发生改变,当在主控件中重新加载一幅图的时候,另外一个控件的图也发生相应的改变,同时我们在俯视的控件中参加一红色边框,留意这个其实是一个面,只是填充的颜色是透亮的而已通过分析我们知道,我们要添加两个mapcontrol控件,名字分别是axmapcontrol1和axmapcontrol2,其中axmapcontrol1为主图,而axmapcontrol1为俯视图 1〕在主窗体上添加一个axmapcontrol控件,作为鹰眼功能的俯视图 2〕编写主图axmapcontrol1中axmapcontrol1_onfullextentupdated响应事务代码,实现当主图中显示的范围变更时,俯视图中相应的出现一个红色的矩形框,表 示主图中的显示范围 3〕编写主图axmapcontrol1中axmapcontrol1_onmapreplaced事务响应代码,实现当主图范围变更时,俯视图的范围相应的发生变更。
对于俯视图axmapcontrol2控件,我们需编写axmapcontrol2的onmousemove和onmousedown中分别添加以下代码,实现俯视图对主图的限制 单击f5,运行效果如下列图所示: 四.课堂任务 4.1增加一状态栏,当地图放大缩小后显示图幅范围坐标值 1〕在主窗体中添加一个statusstrip〔状态栏〕控件 2〕右击statusstrip1控件,在弹出的菜单中单击选择“edit items”,如下列图所示: 3〕在弹出的“items collection editor”对话框总单击add按钮,添加三个状态工程成员,并把“toolstripstatuslablel1“text属性改为“当前图幅信息”,如下列图所示: 4〕在主图〔axmapcontrol1〕axmapcontrol1_onfullextentupdated事务中添加如下代码,实现当主图的图幅范围变更时,状态也相应的显示出当前图幅的信息 按f5运行程序,效果如下所示: 五.试验小结 试验p2.3 访问地图范围及属性表 一.试验目的 1〕驾驭ienvelope、igraphicscontainer、 iactiveview、ilayer等接口; 2〕驾驭datagridview、下拉菜单等界面控件; 3〕指定颜色、指定线型、面符号等绘制矩形框; 4〕修改代码错误; 5〕读取属性表字段名称、记录内容等; 二.试验内容 编程实现显示属性表的信息。
三.试验步骤 3.1编程实现显示属性表的信息 1〕在主窗体上添加一个“contextmenustrip“〔上下文〕控件 右击“contextmenustrip1“控件,选择”edit items“ 在弹出的“items collection editor“对话框中,单击add按钮,添加一个翻开属性表菜单 2〕右击工程名称,在弹出的菜单中选择添加新项 在弹出的“add new item”对话框中选择“windows form”,并把“name”改为属性表 在”属性表”窗体中添加一个“datagridview”控件,并通过点击“datagridview”控件右上角的三角图标,为“datagridview”添加一条属性列 编写axtoccontrol1控件右击响应事务代码,实现当在axtoccontrol1控件上右击时,弹出翻开属性表菜单 首先定义两个全局变量,如下列图所示: 其次编写axtoccontrol1控件右击响应事务代码,如下所示: 编写“翻开属性表“单击事务代码,实现当单击“翻开属性表“菜单时,弹出相应feature 属性表 在属性表窗体中定义一个全局变量pfeaturelayer,实现主窗体与属性窗体之间的值传递 修改属性表窗体的构造函数,实现属性表窗体的初始化 编写“public void itable2dtable()“函数,实现往”dtgridview“控件上添加相应要素的属性记录 编写上述代码中涉及到的“public static string parsefieldtype(esrifieldtype fieldtype) “函数,实现相应字段的类型转换 在“属性表“窗体的构造函数中引用” public void itable2dtable() 对函数的调用 按f5运行程序,程序运行效果如下所示: “函数,实现 四.课堂任务 优化程序: 1〕翻开文件中,将文件路径指定到程序运行的当前书目; 在这里,我们只需把“openshpfile.initialdirectory”的值改为 “environment.currentdirectory.tostring()”即可,如下列图所示: 运行效果如下所示: 2〕当翻开文件对话框,操作为取消后,程序出错,请修改该错误; 在这里我们可以这样修改,把“public string[] openshapefile()”函数中代码,干脆搬到“添加shape文件”按钮单击事务代码中,并稍作改动,如下列图所示: 这样,我们就幸免了当操作位取消时,程序运行出错的状况。
3、编写代码实现,统计属性表的字段数目和记录数目 在属性表窗体中添加两干个label控件、两个textbox控件和一个button控件,布局如下列图所示: 编写“查询”按钮单击事务响应代码,实此时此刻响应的textbox控件中显示特定的内容,如下列图所示: 按f5运行程序,效果如下列图所示: 五.试验小结 p2.4 吩咐、工具与吩咐条 一.试验目的 1〕驾驭吩咐、工具、工具控件的异同; 2〕驾驭用代码将吩咐宿主到控件上; 3〕驾驭自定义吩咐按钮的编写; 4〕驾驭脱离toolbarcontrol控件的吩咐和工具。





