ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:26.23KB ,
资源ID:8254041      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8254041.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(AE开发实验报告.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

AE开发实验报告.docx

1、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窗体应用程序(文件-新建-

2、项目-windos窗体应用程序 ) 2)设置项目保存位置及项目名称,在点了确定之后,在vs的工具箱中找到到和arcgis engine相关的控件 其中,axmapcontrol就是map地图控件,axpagelayoucontrol是布局地图控件,axtoccontrol是目录控件,axtoolbarcontrol是gis工具栏控件,axscenecontrol是scene三维场景控件,axglobecontrol 是globe 控件,axlicensecontrol 是许可控件,axsymbologycontrol控件,axarcreadercontrol 是arcreader 控件,axa

3、rcreaderglobecontrol 是arcreaderglobe 控件。axlicensecontrol是许可控件,一般gis系统中都必须添加,否则无法使用。 3)然后添加toc、map、toolbar、license 控件。license(许可)控件是首选的,否则其他控件无法使用,具体布局如下图所示 4)设置工程初始化时自动添加地图文档(map控件-右键-属性) 5) 设置buddy属性,使toolbar控件和toc控件与map控件的关联 6)在toolbar中进行设置(toolbar控件-右键-属性) 7)添加工具命令 在toolbar control上右键-属性在items选项卡

4、中添加几个工具命令 添加结果如下: 8)运行我们的应用程序,发现下面的错误 出现这个问题的原因是因为arcgis 10 发生了变化,将 esri.arcgis.runtimemanager.bind(esri.arcgis.productcode.engine)语句添加到使用ao对象的前面,如放在main函数中,如下图所示: 9)上面工作完成之后,按f5键运行程序,运行成功之后出现以下界面 尝试使用工具栏上的工具,如打开文档、保存文档等命令,测试toolbar控件是否与map控件相关联。 至此,我们的没有编写任何语句,只是使用一些arcengine控件,就可以搭建一个简单的arcgis桌面应用

5、程序。 3.2 编程实现加载 mxd 文档 用代码添加mxd文档,用到axmapcontrol.loadmxfile(sfilepath),我们只要将mxd文档的路径传给这个方法即可。我们添加一个按钮,把text属性改为加载mxd文档,如下图所示: 编写打开mxd文档按钮的单击事件代码,如下图所示: 单击f5运行程序,效果如下: 单击加载mxd文档按钮,打开一个mxd 文档 效果如下: 3.3编程实现添加 shape 文件 类似实现打开mxd文档操作,在主窗体中添加一个添加shape文件按钮 编写添加shape文件按钮单击事件代码: 编写上述代码中涉及到的openshapefile函数,实现s

6、hapefile文件路径和文件名的提取并通过数组形式返回值 单击f5,运行程序 单击添加shape文件按钮,尝试添加一个shapefile文件。 3.4 编程实现鹰眼功能 分析:鹰眼图的操作主要由以下几个动作,当在一个控件中移动一幅图的时候另一控件中的图也发生变化,当在主控件中重新加载一幅图的时候,另外一个控件的图也发生相应的变化,同时我们在鸟瞰的控件中加入一红色边框,注意这个其实是一个面,只是填充的颜色是透明的而已。通过分析我们知道,我们要添加两个mapcontrol控件,名字分别是axmapcontrol1和axmapcontrol2,其中axmapcontrol1为主图,而axmapco

7、ntrol1为鸟瞰图。 1)在主窗体上添加一个axmapcontrol控件,作为鹰眼功能的鸟瞰图。 2)编写主图axmapcontrol1中axmapcontrol1_onfullextentupdated响应事件代码,实现当主图中显示的范围改变时,鸟瞰图中相应的出现一个红色的矩形框,表 示主图中的显示范围 3)编写主图axmapcontrol1中axmapcontrol1_onmapreplaced事件响应代码,实现当主图范围改变时,鸟瞰图的范围相应的发生改变。 对于鸟瞰图axmapcontrol2控件,我们需编写axmapcontrol2的onmousemove和onmousedown中分

8、别添加以下代码,实现鸟瞰图对主图的控制。 单击f5,运行效果如下图所示: 四.课堂任务 4.1增加一状态栏,当地图放大缩小后显示图幅范围坐标值。 1)在主窗体中添加一个statusstrip(状态栏)控件。 2)右击statusstrip1控件,在弹出的菜单中单击选择edit items,如下图所示: 3)在弹出的items collection editor对话框总单击add按钮,添加三个状态项目成员,并把toolstripstatuslablel1text属性改为当前图幅信息,如下图所示: 4)在主图(axmapcontrol1)axmapcontrol1_onfullextentupda

9、ted事件中添加如下代码,实现当主图的图幅范围改变时,状态也相应的显示出当前图幅的信息。 按f5运行程序,效果如下所示: 五.实验小结 实验p2.3 访问地图范围及属性表 一.实验目的 1)掌握ienvelope、igraphicscontainer、 iactiveview、ilayer等接口; 2)掌握datagridview、下拉菜单等界面控件; 3)指定颜色、指定线型、面符号等绘制矩形框; 4)修改代码错误; 5)读取属性表字段名称、记录内容等; 二.实验内容 编程实现显示属性表的信息。 三.实验步骤 3.1编程实现显示属性表的信息 1)在主窗体上添加一个contextmenustri

10、p(上下文)控件。 右击contextmenustrip1控件,选择edit items 在弹出的items collection editor对话框中,单击add按钮,添加一个打开属性表菜单 2)右击工程名称,在弹出的菜单中选择添加新项 在弹出的add new item对话框中选择windows form,并把name改为属性表。 在属性表窗体中添加一个datagridview控件,并通过点击datagridview控件右上角的三角图标,为datagridview添加一条属性列。 编写axtoccontrol1控件右击响应事件代码,实现当在axtoccontrol1控件上右击时,弹出打开属性

11、表菜单。 首先定义两个全局变量,如下图所示: 其次编写axtoccontrol1控件右击响应事件代码,如下所示: 编写打开属性表单击事件代码,实现当单击打开属性表菜单时,弹出相应feature属性表 在属性表窗体中定义一个全局变量pfeaturelayer,实现主窗体与属性窗体之间的值传递 修改属性表窗体的构造函数,实现属性表窗体的初始化 编写public void itable2dtable()函数,实现往dtgridview控件上添加相应要素的属性记录 编写上述代码中涉及到的public static string parsefieldtype(esrifieldtype fieldtyp

12、e) 函数,实现相应字段的类型转换 在属性表窗体的构造函数中引用 public void itable2dtable() 对函数的调用 按f5运行程序,程序运行效果如下所示: 函数,实现 四.课堂任务 优化程序: 1)打开文件中,将文件路径指定到程序运行的当前目录; 在这里,我们只需把openshpfile.initialdirectory的值改为 environment.currentdirectory.tostring()即可,如下图所示: 运行效果如下所示: 2)当打开文件对话框,操作为取消后,程序出错,请修改该错误; 在这里我们可以这样修改,把public string opensha

13、pefile()函数中代码,直接搬到添加shape文件按钮单击事件代码中,并稍作改动,如下图所示: 这样,我们就避免了当操作位取消时,程序运行出错的状况。 3、编写代码实现,统计属性表的字段数目和记录数目 在属性表窗体中添加两干个label控件、两个textbox控件和一个button控件,布局如下图所示: 编写查询按钮单击事件响应代码,实现在响应的textbox控件中显示特定的内容,如下图所示: 按f5运行程序,效果如下图所示: 五.实验小结 p2.4 命令、工具与命令条 一.实验目的 1)掌握命令、工具、工具控件的异同; 2)掌握用代码将命令宿主到控件上; 3)掌握自定义命令按钮的编写;

14、4)掌握脱离toolbarcontrol控件的命令和工具; 5)掌握地图视图和布局视图的同步; 二.实验内容 2.1 将一个命令宿主到 toolbarcontrol 控件上; 2.2 自定义命令按钮; 2.3 脱离 toolbarcontrol 控件的命令和工具 2.4 布局视图与地图视图同步; 三.实验步骤 3.1 将一个命令宿主到 toolbarcontrol 控件上; 1)在主窗体中添加一个button控件,将其text属性设置为将一个命令宿主到 toolbarcontrol 控件,如下图所示: 编写将一个命令宿主到 toolbarcontrol 控件按钮单击事件代码,如下图所示: 按f

15、5运行程序,效果如下: 选择和命令对象协作的控件 新增一个全局变量 pmapcontrol 展开重载类方法,对其进行修改,使其能对hook进行判断 按f5运行程序,效果如下图所示: 3.3 脱离 toolbarcontrol 控件的命令和工具 添加一个menustrip(菜单)控件。 添加一个菜单项,命名为添加数据 编写添加数据菜单单击事件代码 按f5运行程序,运行效果如下图所示: 3.4 布局视图与地图视图同步; 分析:要实现这两个控件的联动,我们首先回顾下情景,两个控件的联动不仅是简单切换,在时候还因该保留各自上一些状态比如说当我们在mapcontrol 上有一个放大操作时,当我们没将这取

16、消而切换到上有一个放大操作时,当我们没将这取消而切换到pagelayout 控件, 在pagelayout 控件上做 了一些操作后,又切换到mapcontrol 控件,我们应该还能进行放大操作而不用重新使用方法缩小工具。 通过分析我们可以得到下面几点: 当切换两个控件的时候,地图的同步各自控件上激活的工具或者命令的保留 当存在toc控件和toolbar控件的时候,切换了地图控件和布局控件,那么这两个控件的伙伴控件也应发生变化。 具体实现步骤如下: 1)在form中添加tabcontrol控件,分别将地图控件和布局控件放置到里面,如下图所示: 2)为了保持地图视图和布局视图的同步,新增类 con

17、trolssynchronizer.cs 3)为controlssynchronizer类增加一些必要的引用 为controlssynchronizer定义一些必要的全局变量 修改controlssynchronizer类的构造函数,实现窗体之间的值传递 为controlssynchronizer类定义一些必要的属性为controlssynchronizer类定义一些必要的属性(详细见源代码) 为controlssynchronizer类定义一些必要的方法(详细见源代码) 新建一个类项目,命名为maps并定义为 imaps, idisposable 的子类 为maps类添加一些必要的引用 定义

18、一个全局变量private arraylist parray = null; 修改maps类的构造函数,实现maps的初始化 为maps类添加一些必要的函数,用于表示地图的集合(详细见源代码) 改动opennewmapdocument 类的onclick ,实现 map 控件和布局控件的同步 在主窗体中定义一个全局变量pmapcontrolssynchronizer 在主窗体的load事件中添加如下代码,实现初始化工作 在tabcontrol1的tabcontrol1_selectedindexchanged事件中填写代码,使其数据视图与地图视图同步; 添加地图与数据同步菜单 编程地图与数据同

19、步菜单单击事件代码 按f5运行程序,效果如下所示: 数据视图 布局视图 四.课后任务 4.1 要素选择,编程实现通过话一个多变形实现要素的选择 1)在主窗体中添加要素选择菜单 编写要素选择菜单单击事件响应代码,如下图所示: 按f5运行程序,效果如下所示: 五.实验小结 实验p2.5 gp工具的调用及移植代码 一.实验目的 1.1掌握移植代码的方法及技巧,实现点、线、多边形等图形的创建; 1.2掌握gp工具的调用,掌握其窗体模式应用模式的创建; 二.实验内容 2.1移植代码,掌握点、线、多边形等图形的创建; 2.2 gp工具的调用。 三.实验步骤 3.1移植代码,掌握点、线、多边形等图形的创建;

20、 1)打开之前实验课创建的工程项目,右击工程名称,选择添加已存在的项目 在弹出的add existing item 对话框中,定位到我们要添加的已存在的项目。 把刚刚添加的createpointtool类库,的命名空间改为当前我们的命名空间 在主窗体中添加一个添加点菜单项 复制添加点菜单单击事件响应代码 按f5运行程序,效果如下所示: 仿照添加点功能的实现,实现添加线、添加面、添加圆、添加矩形等几何对象代码的移植工作,效果如下所示:添加线功能运行效果 添加面功能运行效果 3.2 gp工具的调用 1)在主窗体上添加gp工具调用菜单 2)编写gp工具调用菜单单击事件代码 添加geoprocesso

21、r引用 添加 analysistools引用 按f5运行程序,效果如下所示: 四.课后任务 4.1 调试gp工具-featuretoline 1)添加gp工具-featuretoline菜单项 编写gp工具-featuretoline单击事件响应代码: 单击f5运行程序,运行效果如下所示: 4.2 改进gp工具-gpintersect,使其像arcmap中一样的窗体式输入数据及动态的输出结果: 五.实验小结 实验p2.6 空间数据库相关开发 一.实验目的 1.1了解geodatabase统一的存储框架; 1.2 了解iworkspace接口1.3掌握打开空间数据的方法,以及如何进行相关要素类的

22、查看、创建、添加、删除操作。 1.4 课堂3学时,课后3学时 二.实验内容 2.1 编程实现打开个人数据库; 2.2编程实现把个人数据库中的要素添加到axmapcontrol1控件并显示; 2.3编程实现获取个人数据库中的要素类; 2.4编程实现创建要素类; 2.5编程实现删除要素类 三.实验步骤 3.1 编程实现打开个人数据库并把个人数据库中的要素添加到 axmapcontrol1控件中显示; 添加打开个人数据库菜单项 编写打开个人数据库单击事件代码: 在主窗体中添加一个openfiledialog(打开文件对话框)控件 在主窗体程序中添加与空间数据库操作相关的引用using esri.ar

23、cgis.datasourcesgdb 编写上述代码中涉及的adddatatomap函数,实现把个人数据库数据添加到axmapcontrol控件中。 按f5运行程序,效果如下图所示: 3.2获取要素类; 创建获取要素类菜单 编写获取要素类单击事件响应代码 编写上述代码中所涉及的函数public string wspath(),以实现获取文件路径功能。 在主窗体中添加一个listbox控件,并把<name>属性改为featureclassbox 按f5运行程序,效果如下所示: 3.3创建要素类; 在主窗体中添加创建要素类菜单 编写创建建要素类菜单单击事件响应代码(详见源代码): 运行

24、成功后在arccatalog下查看效果如下所示: 3.4编程实现删除要素类 在主窗体中添加删除要素类菜单 编写删除要素类单击事件响应代码 按f5运行,效果如下所示: 删除要素类操作之前 删除要素类操作之后 四.课后任务 4.1 添加按钮,并实现打开文件数据库 添加打开文件数据库菜单 编写打开文件数据库菜单单击事件响应代码: 在窗体上添加一个folderbrowserdialog(文件浏览对话框)控件 运行程序,打开文件数据库效果如下所示: 五.实验小结 2.7 空间数据读取与输出 一.实验目的 1.1掌握矢量数据的坐标读取方法,以便于进行后续计算,如两线的夹角,线的长度等; 1.2 掌握栅格数

25、据的读取与存储,以便于进行自定义栅格数据处理,如平滑窗口处理等; 二.实验内容 2.1编程实现矢量坐标数据读取与输出; 2.2编程实现栅格数据读取与输出。 三.实验步骤 3.1矢量坐标数据读取与输出 1)在安徽大学数据校园管理系统主窗体的工具条上添加一个要素选择工具命令。 2)在主窗体上添加一个获取矢量数据坐标菜单项 编写获取矢量数据坐标菜单项单击事件响应代码(详细代码见源程序) 添加对文件相关命名空间using.system.io的引用 运行程序,矢量数据坐标读取效果如下图所示: 3.2 栅格数据读取与输出 1)在主窗体上添加栅格数据读取与存储菜单 2)编写栅格数据读取与存储菜单单击事件响应

26、代码(详细代码见源程序): 编写上一步中涉及到的函数public irasterworkspace2 createrasterworkspace(),实现栅格数据工作空间的创建。 添加与栅格数据操作的相关命名空间 using esri.arcgis.datasourcesraster的引用 运行程序,栅格数据读取效果如下图所示: 栅格数据读取之前 重分类读取之后 四.课后任务 4.1将3.1中的map获取方式改为 方式1:通过mapdocument获得map对象 方式2:在命令、工具类中获得map对象 4.2 将3.1功能改造为能处理多个要素的,即当选择集为多个要素而不仅仅局限于1个要素. 4

27、.3 将task2.7.3功能改造: 1)写像元不局限于byte型; 2)只读取栅格文件,不对原文件进行修改;创建新的栅格数据,用于保存计算值。 五.实验小结 实验p2.8 空间查询 一.实验目的 1.1掌握和查询相关的对象和接口; 1.2编程实现使用ifeatureselection接口高亮显示某个要素类; 1.3编程实现根据属性查询和几何条件查询; 1.4编程实现空间查询并创建table;1.5课堂3学时,课后3学时 二.实验内容 2.1使用ifeatureselection接口高亮显示某个要素类; 2.2编程实现属性查询功能 ; 2.3编程实现根据几何条件查询对象; 2.4编程实现空间查

28、询并创建table; 三.实验步骤 3.1使用ifeatureselection接口高亮显示某个要素类 1)在主窗体上创建高亮显示菜单 2)编写高亮显示菜单单击事件响应代码 3)编写上一步涉及到的getlayer(imap pmap, string layername)函数,用于实现获取图层功能。 运行程序,效果如下所示: 3.2属性查询 1)添加属性查询菜单 2)编写属性查询单击事件响应代码 5)在每次添加新数据或打开新地图操作的地方引用refreshlayer()函数,实现函数的调用 运行程序:选择要查询的图层以及查询条件,效果如下,可以看到,被查询到的要素发生闪烁。效果如下所示: 3.3

29、根据几何条件查询对象 3.3.1 点查询 1) 创建根据几何条件查询菜单 2)编写根据几何条件查询单击事件响应代码,实现查询条件的切换 在主窗体上添加两个radiobutton控件,并把name属性分别设置为pointradiobutton和polygonradiobutton,用来控制几何查询的查询模式: 定义一个全局变量doqueryindex,用来表示当前要执行的查询模式:点击查询还是拉框查询。如果值为1表示点击查询,如果值为2表示拉框查询,默认其值为0,不执行任何操作。该变量定义如下 点击范围可以通过axmapcontrol的onmousedown()事件来执行,在 axmapcontrol中按下鼠标即可获得点击位置,通过查询该位置的数据对象即可,编写axmapcontrol的onmousedown()事件响应代码,如下图所示: 运行程序,点查询效果如下: 3.3.2 多边形查询 分析:查询首先还是要绘制面的几何图形

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1