arcgis实验报告
更新时间:2023-11-06 19:20:01 阅读量: 教育文库 文档下载
《GIS软件设计与实现实习》
学生姓名: 李苇杭 班 级: 地091班 学生学号:2103070911181 实习地点: 机房4 指导教师: 石若明
危双丰
实习成绩:
二零一二年六月
GIS软件设计与实现实习指导书
一. 实习目的和内容安排: 第一部分 数据制作
1.学习安装ESRI GIS软件ArcGIS9.x;
2. 学习使用ArcCatalog建立用于网络分析的shapefile空间网络数据集。 第二部分 客户界面定制
4. 学习GIS的二次开发,使用ArcMap VBA 的ArcObject创建用户命令定 制和使用Windows常用控件制作用户界面;
5. 学习基于COM技术的AO MapControl以实现上述用户界面的功能。 第三部分 使用控件二次开发
6. 学习安装和设置ESRI ArcEngine (AE) 地图控件; 7.学习在VB环境下,使用AE地图控件添加图层和控制图层; 8.学习在VB环境下,使用AE地图控件的开发方法和网络分析方法。 二. 实习准备知识:
1. 了解ArcGIS9.x软件的基本组成和结构;
2. 了解ArcToolbox, ArcCatalog, ArcMap标准界面的基本操作; 3. 具有Shapefile及空间数据集和网络分析的相关知识. 4. 具有VBA以及ArcEngine的相关知识; 5. 具有面向对象的知识,COM技术的相关知识; 6. 熟悉Windows 环境下VB的编程技巧。
三.实习班级:地09-1,地09-2
四.实习指导教师:石若明 危双丰
五.实习时间:11/12(二)第十五、十六周,2012年05月28- 06月08日
六.实习地点:校机房网四
七.硬件要求:CPU PII以上, 内存:大于128Mb, 硬盘容量: 大于0.8G
八.软件要求:Windows 2000/XP, ArcGIS9.x (Desktop), ESRI ArcEnging9.x,
Visual Studio 6.0/Visual Basic6.0。
九.实习内容:
第一部分 数据制作
⑴ 安装ESRI ArcGIS9.x Desktop: (略)
步骤:
① 清理本地机的”D”或”E”驱动器, 确保其容量大于0.8G;
② 在服务器上从 ”石若明” 路径中找到文件夹” ArcGIS9.x”, 并下载它到 本地机的”D”或”E” 驱动器上
③ 在Desktop子文件夹中, 打开”ArcGIS9.x解码” 子文件夹, 点击文件”安装指南” (word 文件), 仔细阅读之后, 按照其安装步骤进行Desktop和Workstation 的安装.
⑵ 用ArcCatalog建立用于网络分析的shapefile空间网络数据集
① 数据准备:
1. 准备一个shapefile的polyline线图层(全部道路.shp)
线图层至少要有一个字段来作为网络分析的阻抗属性字段(Impedance)。例如,计算距离最短,则要有包含道路长度的字段;费用最少,则包含道路行驶成本的字段。
2. 准备一个点图层,供选择查询节点使用
② 步骤:
1. 打开arccatalog,首先设置下catalog的菜单栏中的tool工具下的
extension属性,把network analyst勾选上,如图:
2. 选择网络数据集的工作空间
因为不需要模拟复杂的多模式网络,所以选择shapefile工作空间
来创建shapefile网络数据集,在shapefile工作空间中创建的网络数据集只支持单源数据。
在这里找到数据源所在的文件夹,在“全部道路.Shp”上点击右键,
选择New Network Dataset,在弹出的窗口中修改输出的网络数据集文件名称,如图:
3. 连通性建模
需要使用ArcGIS连通性建模和高程字段模型共同完成。在对创建网络数据集前,必须仔细研究网络,并确定网络中不同元素之间是如何连接的。在创建网络数据集前,必须为网络中每个元素设计其网络的连接规则。对于影响网络连通性的特殊对象必须充分考虑,如桥梁、隧道等。如果有可用的高程字段数据,可以使用高程字段模型以增强网络的连通性。
在这里我们选择默认设置,选择“下一步”进入连接属性的设置。
4. 定义网络属性并赋值
确定网络分析的阻抗属性,并根据网络数据源的字段属性为阻抗属性赋值。确定特殊的网络限制,根据需要建立边元素的层次关系。 在这里选择模型设置,直接选择“下一步”,直到进入到如下窗口,该窗口设置网络数据集的属性权重,点击“Add”。
5. 输入名称,选择单位Kilometers,,然后点击“确定”。
6. 这时候我们可以看到如下图面,在新建属性名称前有个黄色叹号,点击
Evaluators,在type字段下选择“Field”,value字段选择“里程”。这样,原“全部道路”图层中的“里程”字段就作为阻抗属性字段添加到网络数据集中了(在网络数据集中被命名为“distan”)。
在上一步新建字段的时候可以直接用道路图层中已有的字段名作为“Name”,这样原图层中的同名字段就会自动添加到网络数据集中,不会出现黄色叹号,因而可以跳过进行该步操作。
7. 可以继续将原图层中能够作为网络分析阻抗的字段添加进来。如“全部
道路”图层中的“所用费用”(Units:Unknown)和“所用时间”(Units:Minutes) 8. 点击“确定”,之后选择默认状态就行了
9. 点击“Finish”,运行后出现完成窗口。
10. 选择“是”,运行完成整个网络数据集就创建完成。
(3)第一部分最终提交成果:
第二部分 客户界面定制
一、使用ArcMap VBA 的ArcObject创建用户命令定制; 使用Windows
常用控件和MapControl控件制作用户界面: 步骤:
① 使用UIControl创建用户命令定制
操作ArcMap窗口主菜单:
(1)显示想在其中创建新命令的工具条。 (2)单击Tools命令,打开Tools下拉菜单。
(3)单击Customize命令,打开Customize对话框。
(4)单击Commands标签,进入Commands选项卡(图)。
(5)单击Categories窗口的[ UIControls ]控制类型。
(6)单击New UIControl按钮,打开New UIControl对话框(图)。
(7)单击选中想创建的UIControl类型:如UIButtonControl(按钮控制)。
(8)单击Create按钮,创建一个新的按钮控制 (新建的控制没有任何代码,需 要在随后的编辑中添加具体的事件例程代码)。
(9)该控制出现于定制对话框中的UIControls命令列表(图)。
(10)拖放新建的UIButtonControl按钮控制到一个工具条(或菜单)。 (11)在工具条上右击该控制,打开用户定制操作快捷菜单(图)。 (12)设置按钮控制的按钮、标题等特性(图: 这里选择小狗图标)。
(13)右击该按钮控制,单击用户定制操作快捷菜单中的View Source。 (14)打开显示该按钮控制代码的VBE代码窗口(图)。 (15)单击代码窗口中的Procedures/Event下拉箭头。
(16)单击随之出现的控制事件例程列表中的一项:如Click。
(17)为该事件例程输入相应的代码。
(18)重复上述3步操作,直到所有的事件例程均已完成了代码输入。 (19)单击VBE中的File菜单,并单击Save Project命令。 (20)单击VBE中的Close按钮,返回Customize对话框。
(21)单击Customize对话框中的Close按钮,完成用户命令定制。
下面是完成用户命令定制后ArcMap窗口, 注意: 标准工具栏中增加了用户定制按钮(小狗图标) 。
需要说明的是,在VBE打开的状态下,正在创建的UIControl处于设计模式,这时所写的代码不能运行。要对所创建的新命令进行运行测试,需要关闭VBE之后再运行。
② 使用Windows常用控件和AO控件制作用户界面:
操作ArcMap窗口主菜单:
(1) 在用户定制按钮(小狗图标), 右击该按钮控制。 (2) 单击用户定制操作快捷菜单中的View Source。 (3) 打开显示该按钮控制代码的VBE代码。
(4) 单击VBE中的Insert, 增加UserForm进入编辑窗口(图) 。
(5) 单击VBE中的Tools, 选择Additional Controls (图) 。
(6) 在Additional Controls对话框中, 选择ESRI Map Control 控件。
(7) 加载ESRI Map Control 控件到你的UserForm1界面上(图) 。
(8) 加载四个按钮控件到你的UserForm1界面上, 并分别依照图示命名(图)。
(9) 单击VBE中的File菜单,并单击Save Project命令。
(10) 单击VBE中的Run菜单,并单击Run UserForm命令, 你的用户界面现示 如下图:
(11) 单击VBE中的Close按钮,完成制作用户界面。
二、使用基于COM技术编写ArcInfo应用程序以实现上面用户界面的功能:
步骤:
操作ArcMap窗口主菜单:
1. 在用户定制按钮(小狗图标), 右击该按钮控制。 2. 单击用户定制操作快捷菜单中的View Source。 3. 打开显示该按钮控制代码的VBE代码。
4. 单击VBE中的Tools, 选择References 命令 。
5. 在References对话框中, 选择ESRIutil automation server 等如下图所示选项。
16. 这时候我们可以看到如下图面,在新建属性名称前有个黄色叹号,点击
Evaluators,在type字段下选择“Field”,value字段选择“里程”。这样,原“全部道路”图层中的“里程”字段就作为阻抗属性字段添加到网络数据集中了(在网络数据集中被命名为“distan”)。
17. 可以继续将原图层中能够作为网络分析阻抗的字段添加进来。如“全部道路”图层中的“所用费用”(Units:Unknown)和“所用时间”(Units:Minutes)。
18. 点击“确定”,之后选择默认状态就行了
19. 点击“Finish”,运行后出现完成窗口。
20. 选择“是”,运行完成整个网络数据集就创建完成。
成果图
第二部分
使用UIControl创建用户命令定制 操作ArcMap窗口主菜单:
(1)显示想在其中创建新命令的工具条。 (2)单击Tools命令,打开Tools下拉菜单。
(3)单击Customize命令,打开Customize对话框。
(4)单击Commands标签,进入Commands选项卡
(5)单击Categories窗口的[ UIControls ]控制类型。 (6)单击New UIControl按钮,打开New UIControl对话框
(7)单击选中想创建的UIControl类型:如UIButtonControl(按钮控制)。 (8)单击Create按钮,创建一个新的按钮控制 (新建的控制没有任何代码,需要在随后的编辑中添加具体的事件例程代码)。
(9)该控制出现于定制对话框中的UIControls命令列表。
(10)拖放新建的UIButtonControl按钮控制到一个工具条(或菜单)。 (11)在工具条上右击该控制,打开用户定制操作快捷菜单。
(12)设置按钮控制的按钮、标题等特性(图: 这里选择地球图标)。
使用Windows常用控件和AO控件制作用户界面:
操作ArcMap窗口主菜单:
(1) 在用户定制按钮(小狗图标), 右击该按钮控制。 (2) 单击用户定制操作快捷菜单中的View Source。 (3) 打开显示该按钮控制代码的VBE代码。
(4) 单击VBE中的Insert, 增加UserForm进入编辑窗口。 (5) 单击VBE中的Tools, 选择Additional Controls。
(6) 在Additional Controls对话框中, 选择ESRI Map Control 控件。
(7) 加载ESRI Map Control 控件到你的UserForm1界面上
和“CityName”。
1) 在窗体中创建CreateLabel过程,需要显示注释的图层和注释依据的属性列名作为输入参数: Private Sub CreateLabel(mFeatureLayer As IFeatureLayer, mFieldName As String) Dim pGeoFeatureLayer As IGeoFeatureLayer Set pGeoFeatureLayer = mFeatureLayer Dim pAnnoProps As IAnnotateLayerPropertiesCollection '定义注释属性集合 Set pAnnoProps = pGeoFeatureLayer.AnnotationProperties '获取图层的注释信息 pAnnoProps.Clear Dim pAnnolayerprops As IAnnotateLayerProperties Dim pPosition As ILineLabelPosition Dim pPlacement As ILineLabelPlacementPriorities Dim pBasic As IBasicOverposterLayerProperties Dim pLabelEngine As ILabelEngineLayerProperties Dim pFont As stdole.StdFont Set pFont = New stdole.StdFont pFont.Name = \ pFont.Size = 7 Set pPosition = New LineLabelPosition pPosition.Parallel = False pPosition.Perpendicular = True Set pPlacement = New LineLabelPlacementPriorities Set pBasic = New BasicOverposterLayerProperties pBasic.FeatureType = esriBasicOverposterFeatureType.esriOverposterPolyline pBasic.LineLabelPosition = pPosition Set pLabelEngine = New LabelEngineLayerProperties Set pLabelEngine.BasicOverposterLayerProperties = pBasic pLabelEngine.Expression = mFieldName '用以作为注释显示的字段 Set pAnnolayerprops = pLabelEngine pAnnoProps.Add pAnnolayerprops pGeoFeatureLayer.DisplayAnnotation = True MapControl1.Refresh End Sub 在Form_Initialize过程中的【增加“县级市人民政府驻地”图层】和【增加“地级市人民政府驻地”图层】分别添加一下代码,调用CreateLabel过程为这两个图层添加名称注释。
CreateLabel pFeatureLay, \名称]\ 3. 显示图层注释
4. 保存文件后运行程序,查看运行成果
五、地图基本导航工具
该部分将要为MapControl添加三个地图导航按钮,用以实现地图的放大、缩小和还原功能。在窗体的设计界面中添加三个CommandButton按钮,调整其位置和大小并修改其Caption”属性。
1. 在【放大】按钮的点击事件里添加以下代码: Dim pEnv As IEnvelope Set pEnv = MapControl1.Extent pEnv.Expand 0.8, 0.8, True MapControl1.Extent = pEnv MapControl1.Refresh Set pEnv = MapControl1.Extent :获取MapControl的当前视野范围
pEnv.Expand 0.8, 0.8, True :对视野范围进行修改,0.8, 0.8 分别为X,Y轴上的缩放比率,小于1表示放大,大于1表示缩小。
MapControl1.Extent = pEnv : 将修改过的视野范围赋给MapControl。 MapControl1.Refresh :MapControl进行刷新。
2. 仿照【放大按钮代码】实现【缩小】按钮的点击事件。注意选择合适的缩放
比率
3. 还原功能的实现
1) 视图的还原就是要将地图的视野范围恢复到地图加载时的视野范围,因此需要定义
一个始终在窗体运行时存在的窗体变量,在窗体初始化的时候将视野范围保存到该变量,并在需要还原视图的时候读取该变量中保存的信息,从而实现还原功能。 在窗体代码的文件的开始位置、各过程和函数的外部声明一个变量pOldEnvlope,用于记录初始视野: Dim pOldEnvlope As IEnvelope
2) 在Form_Initialize过程中追加以下代码,将初始视野保存到pOldEnvlope Set pOldEnvlope = MapControl1.Extent
3) 在【还原】按钮点击事件中添加一下代码,以实现点击还原的功能 Dim pEnv As IEnvelope MapControl1.Extent = pOldEnvlope MapControl1.Refresh 4. 保存并运行程序,查看运行效果
六、点击选取起(终)点
该部分主要是实现提示用户进行起(终)点的选择,并将选择的起(终)点保存在临时文件中,作为后面最短路径分析的输入要素。
1. 添加选择按钮和提示标签
在窗体的设计界面中添加两个CommandButton按钮和两个Label。
2. 修改按钮和标签状态
按钮和标签可能出现以下几种情况 未选择起(终)点 按钮显示“选择起(终)点”,标签显示“未选择” 正在选择起(终)点 完成选择起(终)点 按钮显示“取消”,标签显示“未选择” 按钮显示“选择起(终)点”,标签显示“已选择”
为起到简化代码的目的,可以在主窗体中为选择起点和选择终点的操作创建两个子过程,以针对上述情况自动改变按钮和标签状态。
因此,需要窗体变量来记录起、终点是否已经选择。此外,还需要窗体变量指示是否正在进行起点和终点的选择。
1) 添加以下窗体变量 Dim selectCount As Integer Dim bStarting As Boolean Dim bEnding As Boolean bStarting和bEnding为布尔型,true表示正在进行起(终)点选择。selectCount为整型,用以记录已选择的起、终点个数,即0为未选择,1为已选择起点,2为已选择起点和终点。
2) 初始化变量
在Form_Initialize过程中初始化以上变量 selectCount = 0 bStarting = False bEnding = False
3) 创建更改控件状态子过程
在窗体文件中自定义BtnStartChange子过程,用来改变起点选择时控件的外观。 Private Sub BtnStartChange() If selectCount > 0 Then ' 已选择起点 Me.btnSelectStart.Caption = \选择起点\ '修改【选择起点】按钮标题 Me.LabStart.Caption = \已选择\ '修改【选择起点】标签标题 Me.LabStart.BackColor = vbGreen '修改【选择起点】标签背景 Else '未选择起点 If bStarting = True Then '正在选择起点 Me.btnSelectStart.Caption = \取消\ Else Me.btnSelectStart.Caption = \选择起点\ Me.LabStart.Caption = \未选择\ Me.LabStart.BackColor = vbWhite End If End If End Sub
4) 仿照BtnStartChange子过程,定义BtnEndChange子过程,用来改变终点选择时控
件的外观。注意对是否已经选择终点进行判断。
5) 在Form_Initialize过程中调用以上两个子过程,以完成这四个控件的初始化
3. 添加按钮点击事件
【选择起点】和【选择终点】按钮的作用是提示用户选择起、终点,同时通知程序用户是否正在进行选择操作。因此在点击后要能改变bStarting和bEnding两个窗体变量的值,同时进行控件外观的改变。
1) 【选择起点】按钮点击事件: If selectCount = 0 Then '如果未选择起点,则改变bStarting变量 bStarting = Not bStarting BtnStartChange End If 2) 【选择终点】按钮点击事件: If selectCount = 0 Then '如果未选择起点,则提示选择 MsgBox \请先选择起点\ Exit Sub End If If selectCount > 1 Then '如果已完成选择 Exit Sub End If bEnding = Not bEnding BtnEndChange 4. 自定义生成过滤区(Filter)函数
点击选择的原理是以点击获取的点为中心,生成一个一定大小的几何过滤区域(Filter),
正在阅读:
arcgis实验报告11-06
工程事故分析与处理案例课程论文01-24
01GL-物资库房管理制度12-28
病理生理学试题库-10休克(张静)07-12
人大金融 - 2015年人大金融硕士考研经验箴言 - 图文02-29
幼儿园骨干教师述职(精选多篇)09-26
2015年语言文字运用题02-29
制造计量器具许可证签发05-06
解放初广西剿匪纪实03-30
六年级奥数期末综合测试卷06-01
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 实验
- 报告
- arcgis
- 川藏南线到拉萨路书
- 高中语文必修课内诗歌鉴赏和课内文言文翻译练习
- 班组安全生产目标及措施计划
- 初级会计模拟题带答案
- 关于进一步加强施工现场管理人员配备及管理的提示通知
- 建筑与周边环境的和谐关系
- 做新时代的校长
- 复杂三维微观结构及其演化过程的可视化方法研究
- 2018年北师大版-四年级语文下册第8单元测试卷(含解析)
- 关于征集员工合理化建议和意见的通知(WORD版本)(1)
- 分数应用题二
- 世界历史九年级上册总复习题
- 南中医三基题库2
- 银行信贷政策对房地产市场的影响
- 《老人与海鸥》第二课时教学设计
- 种氏家族 - 图文
- 全球10大CIGS光伏组件制造企业效率大对比
- 2018年6月专业监理工程师再教育测试答案
- 二自由度机器人的通用控制
- 热加工工艺基础考试试题