- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验四 常用GIS工具
一、实验目的
通过实验掌握缩略图功能的实现方法
通过实验掌握ScaleBar控件的使用方法
通过实验,学会运用StatusBar实现常用的GIS功能
通过实验掌握,鼠标提示地物功能的实现方法
通过实验了解图例工具的作用
通过实验掌握属性信息的显示方法
二、实验内容
设计缩略图功能
利用ScaleBar显示比例尺
利用StatusBar显示鼠标位置的变化
利用Picture控件实现地物提示功能
图例工具的使用
属性信息显示功能的设计
三、实验环境与数据
VB6
MapObjects2.4
Xiangprj.shp
Ntschool.shp
四、实验要求
掌握设计缩略图功能的步骤
掌握ScaleBar的属性、方法和使用
掌握StatusBar的属性、方法和使用方法
掌握地物图面显示功能的实现方法
了解图例工具的属性和方法
属性信息显示功能的设计
五、实验任务
(一) 程序演示
1、程序演示
2、演示过程中请同学们注意观察,这个程序实现了哪些功能。
(二) 实现方法和过程
缩略图功能的设计
缩略图是地理信息系统软件常见功能,它有利于在地图放大时,快速确定所关注的地区在全图中的位置。利用Mo和VB可以非常容易实现这个功能。具体过程如下:
打开VB新建一个FORM窗体,在窗体中添加两个Map控件Map1、Map2。
添加三个Command控件,设置它们的Caption分别为“添加图层”、“全图”、“缩小”。
双击“添加图层”按钮,编写添加矢量图层的代码。
双击“全图”按钮,编写全图代码。
双击“缩小”,编写缩小代码。
在Map1的AfterLayerDraw事件中实现如果刷新第一个图层,那么就刷新Map2的跟踪层,从而实现了Map1与Map2的联动。我们现在让Map1动一下,在Map1的MouseDown事件中实现鼠标拖动放大功能,代码为
Map1.Extent=Map1.fullExtent
然后运行程序,放大Map1,观察Map2的变化。这时Map2没有变化,这个联动怎么没有实现呢?原来Map1发生变化以后启动了Map2的变化,但是Map2如何变化还没有实现,因此要明确Map2怎么变化,必须在Map2的AfterTrackingLayer过程中实现以下功能:Map1变化以后,将变化后的Map1的范围在Map2中绘制出来。绘制图形采用Map控件的drawShape方法,它需要两个参数,第一个是需要绘制的图形,第二个是绘制的符号。语法为Map2.drawshape map1.extent,sym,其中sym为绘制时使用的符号。必须首先定义这个符号,dim sym as new Mapobjects2.Symbol,然后定义这个符号的类型,sym.style=MoTransparentfill,然后定义是否显示边框,sym.outline=true,然后定义边框的颜色sym.outlinecolor=mored。这些语句要放在Map2的AfterTrackingLayer过程的开头。
这时Map2跟着Map1联动了,但是如何让Map1跟着Map2联动呢?也就是Map2中鼠标拖动,Map1显示Map2中绘制的矩形范围内的地图。我们在Map2的MouseDown中实现这个功能。
首先定义一个矩形对象rect,将Map2拖动产生的矩形赋给Rect,然后将这个矩形作为Map的边界,即可。
测试运行的程序。调整代码使之规范,设置缩进、增加注释,注意命名规范。这时Map1与Map2可以联动了。但是如果要在Map2中拖动使得Map1联动还不能够实现。
MapObjects没有提供实现这个功能的方法,要实现这个功能,需要扩展MapObjects,这个扩展比较麻烦,MapObjects例程给我们提供了一个DragFeedBack的类文件,运用这个类文件可以实现这个功能。要使用这个类文件,必须找到它,将它到入到当前工程中来,具体方法为:
右键点击工程管理器中的窗体,在打开的快捷菜单中选择“添加”,在添加菜单下选择添加文件,打开文件查找对话框,进入“C:\Program Files\ESRI\MapObjects2\Samples\VB\DragRect”,选择DragFeedback.Cls文件,然后在工程管理器的窗体下增加类模块一栏,下面包含DragFeedback.Cls文件。
这时DragFeedback.Cls就可以像使用其它类一样,在当前工程中使用了。比如新建类,调用其中的方法等。
这个类可以根据Map2的操作改变Map1的显示状况。
新建一个DragFeedback.Cls类对象DFB,当Map2中鼠标点在框内,就调用DFB对象的方法,将需要刷新范围,在什么范围内移动,移动的起点坐标是多少。语法为DFB
您可能关注的文档
最近下载
- 西门子变频器的谐波计算.pdf VIP
- 在报表工具FineReport中遍历单元格方法.pdf VIP
- 工程爆破技术人员考试题库及答案.doc VIP
- 山东省烟台市芝罘区七年级(上)期中数学试卷.doc VIP
- (完整word版)新版典范英语7-3PrincessPip’sHoliday原文及翻译.doc VIP
- 国家科技攻关重大项目.doc VIP
- 2025年语言学与应用语言学考试试题及答案.docx VIP
- 图集规范-新疆图集新06G312.pdf VIP
- 【人教版】初中数学九年级知识点总结:26二次函数和经典题型(附答案).doc VIP
- 第6课 西方的文官制度【课件】.pptx VIP
文档评论(0)