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

加入VIP,省得不是一点点
 

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

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

下载须知

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

版权提示 | 免责声明

本文(MapObejcts组件应用设计(地图与图层).doc)为本站会员(sk****8)主动上传,文客久久仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文客久久(发送邮件至hr@wenke99.com或直接QQ联系客服),我们立即给予删除!

MapObejcts组件应用设计(地图与图层).doc

1、2.2.1 地图浏览 在地图窗口中,放大、缩小、漫游地图是地图控件的基本功能,运行附属光盘中的 liulan 程序,体会浏览的操作含义。liulan 程序主窗口中含有一个工具栏和一个地图窗口,工具栏中的按钮功能依次是漫游、全范围显示地图、放大、缩小,使用这些按钮在地图窗口中用鼠标左键进行单击及拖放操作,体验操作过程。放大、缩小、漫游是 MapObjects.Map 控件提供的功能,浏览功能由 Map 控件的方法实现。在以下关于浏览项功能的程序语句中,Map1 是添加到 Form 窗体上的 Map 控件,是 Map 的一个实例,Map1 所占据的矩形区域称为控件窗口,地图在控件窗口中显示,又称地

2、图窗口。以下是 liulan 程序中实现浏览功能的关键语句。1 地图漫游Map1.Pan在 Map1 控件窗口中,接受鼠标左键的拖放操作,将窗口中的地图从按下鼠标的位置拖到释放鼠标的位置。2 全范围显示地图Map1.Extent = Map1.FullExtent 设置地图窗口的显示范围Map1.FullExtent 是 Map1 窗口中全部图层外围矩形的并,长度单位与地图数据坐标单位相同。 Map1.Extent 是 Map1 窗口以地图数据坐标长度单位表示的外围矩形,控置地图的显示范围。语句 Map1.Extent = Map1.FullExtent 重新设置地图窗口的显示范围,触发地图窗

3、口重绘,产生显示全图视觉效果。3 放大(拖框放大)Dim r As MapObjects2.RectangleSet r = Map1.TrackRectangle 在窗口中拖绘一个矩形,返回矩形的引用If Not r Is Nothing Then Map1.Extent = r 设置地图窗口的显示范围Map1.TrackRectangle 是 Map 控件交互式绘制矩形的方法,它接收鼠标左键的一次拖放操作。以鼠标按下时光标所在位置为第一点,拖动鼠标光标过程中鼠标的位置为第二点,动态显示一个以这两点为对角线的矩形,松开鼠标时抹去显示的矩形,返回 Ractangle 实例。Map1.Exten

4、t = r 语句设置地图窗口的显示范围,触发地图窗口重绘,产生地图放大视觉效果。4 缩小Dim Rect As MapObjects2.RectangleSet Rect = Map1.Extent 获得地图窗口显示范围的引用Rect.ScaleRectangle (1.5) 矩形区长宽值扩大 1.5 倍Map1.Extent = Rect 设置地图窗口的显示范围从上面的例句可见,地图的放大和缩小,都是通过重新设置 Map1.Extent 的值实现的,那么,扩大 Map1.Extent 矩形区边长的数值,不是放大,而是缩小呢?从操作过程可知,地图窗口的尺寸、地图库中坐标数据的值、 Map1.F

5、ullExtent矩形的长宽值三组数据始终保持不变。Map1.Extent 是 Map1.FullExtent 中的一个矩形区,若 Map1.Extent 矩形长宽值增加,表示要显示的地图坐标值范围扩大,由于地图显示窗口大小不变,因此显示的地图变小。5 样例解释以下是从样例 liulan 的 Form1 窗体中剪贴的两段程序,其中实现了漫游、全范围显示地图、放大、缩小功能。Dim strToolBarValue As String 窗体级变量,工具栏上当前按下的按纽Private Sub Map1_MouseDown(Button As Integer, Shift As Integer, X

6、 As Single, Y As Single)Select Case strToolBarValueCase “漫游”Map1.PanCase “全图”Map1.Extent = Map1.FullExtent 全范围显示地图Case “放大”If Button = 1 And Shift = 0 ThenDim r As MapObjects2.RectangleSet r = Map1.TrackRectangle 在窗口中绘制一个矩形,返回矩形的引用If Not r Is Nothing Then Map1.Extent = rEnd IfCase “缩小”Dim Rect As Ma

7、pObjects2.RectangleSet Rect = Map1.ExtentRect.ScaleRectangle (1.5)Map1.Extent = RectEnd SelectEnd SubPrivate Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)strToolBarValue = ButtonSelect Case ButtonCase “漫游”Map1.MousePointer = moPan MapObjects 控件库中的常量Case “放大”Map1.MousePointer = moZoomI

8、nCase “缩小”Map1.MousePointer = moZoomOutCase “全图”Map1.MousePointer = moDefaultEnd SelectEnd Sub从上述两段程序中可以看出,在工具栏的 Toolbar1_ButtonClick 方法中,strToolBarValue 变量指示按下的按钮,Case 语句块设置地图窗口鼠标光标形状。Map1_MouseDown 方法中实现了地图浏览功能。Map1.Pan 和 Map1.TrackRectangle 方法都处理鼠标操作,它们将被调用之前的一次 MouseDown 事件作为自己的第一个鼠标事件,因此适合于在Map

9、1_MouseDown 方法中使用,若用在 Toolbar1_ButtonClick 方法中,点击工具栏按钮时的鼠标光标位置作为操作的起始位置,与实际应用要求不符,请读者编程实验操作效果。习题1 编写程序实现 LiuLan 目录中样例的功能2.2.2 图层与地图的概念MapObjects 中图层的概念与地图学中图层的概念基本相同,是地图窗口中的一个显示层面,全部显示层面叠加到一起形成地图,因此地图是图层的集合。为了计算机处理方便,每个图层只包括一类几何要素。在地理信息系统中,二维及其以下维的几何要素分为点、线、面三类,因此,一个图层是一类几何要素的集合,显示的图层是集合在地图窗口中的映射。同类

10、几何要素从数据到图形的影射处理方法相同,便于计算机程序处理。除了单种几何要素图层之外,MapOjects 还定义了一个特殊图层,称为跟踪层,层中可以包含多种类型的几何图形。地图点图层线图层面图层跟踪层影像图层地图中的图层MapObjects2.Map 是 MapOjects 的地图控件,它的实例的默认名称是Map1、 Map2、Map3MapN,完成从地理数据到图形的映射功能。实例的视觉界面是地图显示窗口,影射结果在地图控件窗口中显示,形成地图。2.2.3 图层操作地图是图层的集合,地图设计主要在图层上进行。1 添加图层(1) 添加 ShapeFile 图层添加 ShapeFile 是 Arc

11、View 的图层文件格式,MapObjects2.1 对 ShapeFile 格式实现了读、写、编辑功能。语句:Dim dc As New DataConnectiondc.Database = “d:/moBook/Samples/Data/washington” 数据库文件目录路径名If Not dc.Connect Then End 连接数据库,失败则退出Dim mLayer As New MapLayerSet mLayer.GeoDataset = dc.FindGeoDataset(“roads”) roads.shp 可省略扩展名mLayer.Symbol.Color = moY

12、ellow 用黄色显示道路Map1.Layers.Add mLayer 添加图层到控件的图层集合中向地图控件实例 Map1 中添加一个图层。详细程序请参考附属光盘中 AddImage 目录中的样例。(2)添加 ArcInfo Coverage 图层假设 USA 是 D:/mobook/sample/data/Coverages 目录下的一个 Coverage,以下程序在地图窗口中加入一个面图层。Private Sub Form_Load()Dim dCon As New DataConnectionDim workspace As String, featAttTable As StringD

13、im objLayer As New mapobjects2.MapLayerfeatAttTable = “USA.pat” 面图层及点图层用同一名称workspace = “arcD:/mobook/sample/data/Coverages”dCon.Database = workspaceIf dCon.Connect ThenSet objLayer.GeoDataset = dCon.FindGeoDataset(featAttTable)objLayer.Name = featAttTableMap1.Layers.Add objLayer 图层对象加入地图控件End IfEnd

14、 Sub将 featAttTable 变量分别赋字符串“USA.aat” 、“USA.txt”则可分别添加线图层、注记图层。USA 是 Arc/Info Coverage 的目录名。featAttTable 的值由两部分组成:featAttTable = “Coverage.Suffix”Suffix 可用的替换字符串如下:图层类型 Suffix 例子Polygon pat landuse.patArc aat rivers.aatPoint pat wells.patNode nat streets.natRegions pat admin.patcityRoutes rat transit

15、.ratbusAnnotation text txt roads.txtAnnotation subclass tat tracts.tatlevel1详细程序请参考附属光盘中的 AddCover。(3) 添加 ArcSDE 图层ArcSDE 是 ESRI 的地理数据服务器,连接参数与本机连接参数有区别,其余语句相同。以下程序添加 ArcSDE 图层。Private Sub Command1_Click()Dim dc As New MapObjects2.DataConnectiondc.Server = “SDE81:SDEServer1” 8.1 版服务器dc.User = “ChenC

16、”dc.Password = “MyPassWord”dc.Database = “instance=esri_sde” 你定义的实例名 If dc.Connect Then Dim ly As New MapLayerSet ly.GeoDataset = dc.FindGeoDataset(”myName.roads.Feature.lines”)Map1.Layers.Add lyEnd IfEnd SubFindGeoDataset(”myName.roads.Feature.lines”)的参数字符串是句点分隔的四部分,分别指数据所有者名、图层名、包含地图图形要素的字段名、要素的几何

17、类型。用以下语句替换 If 语句块,可将 Geodatasets 集合中的全部图层加入地图窗口中。If dc.Connect Then Dim ly As MapLayerDim gs As GeoDatasetFor Each gs In dc.GeoDatasetsSet ly = New MapLayerSet ly.GeoDataset = dc.FindGeoDataset( gs.Name)Map1.Layers.Add lyNext gsEnd If为区分 ArcSDE 的不同版本,在服务器名增加版本号前缀,如:dc.Server = “SED30:SDEServer”dc.Se

18、rver = “SED80:SDEServer”详情请参考 MapObjects2.1 软件附带的样例 SdeConnect(4) 添加 CAD 图层下段程序将 AutoDesk 公司的 CAD 软件形成的文件加入到地图控件中。Dim dc As New DataConnectiondc.Database = “CADLined:/moBook/Samples/Data/CAD” 数据库目录路径名If Not dc.Connect Then End 连接数据库,失败则退出Dim mLayer As New MapLayerSet mLayer.GeoDataset = dc.FindGeoDa

19、taset(“roads.dwg”) roads.dwg 不可省略扩展名mLayer.Symbol.Color = moYellow 用黄色显示道路Map1.Layers.Add mLayer 添加图层到控件的图层集合中dc.Database 可用的前缀还有:CADArea、CADPoint、CADText,分别表示面、点和文本。(1) 添加影像图层Dim iLayer As New ImageLayeriLayer.File = “d:/moBook/Samples/Data/washington/Wash.bmp” Map1.Layers.Add iLayer详细程序请参考附属光盘中的 A

20、ddImage。在创建 ImageLayer 实例时,不需创建 DataConnection 及 GeoDataset 实例。数据集加入到 Map1.Layers 中影射成图层,一个数据集映射成一个图层。例 1 遍历数据源中的数据集,在列表框中显示全部数据集的名称(参见样例LookupLayer)Dim dc As New MapObjects2.DataConnection 在 Form_Load 事件中 dc 已经与数据源连接。Private Sub Command1_Click()List1.ClearIf dc.Connected ThenList1.AddItem “数据源中的数据集

21、“Dim gs As GeoDatasetFor Each gs In dc.GeoDatasetsMe.List1.AddItem gs.NameNext gsEnd IfEnd Sub2 图层集合Map.Layers 是图层集合,创建 Map 实例时自动创建跟踪层 TrackingLayer,用于保存、绘制临时地图要素,跟踪层不在 Map.Layers 中。用图层的索引号或名称引用图层:Set layer = Map1.Layers.item(2)Set layer = Map1.Layers(“road”)图层索引的起始号是 0:Set layer = Map1.Layers.item(

22、0)绘图按索引号从大到小的顺序进行,最后绘制跟踪层。语句Map1.Add Layer将 Layer 图层加入到地图窗口中,索引号是 0,原有图层索引号加 1。控制图层的可见性:Map1.Layers(2).Visible = False更改图层的绘制顺序:Map1.Layers.Item(2).MoveToBottom Map1.Layers.Item(2).MoveToTopMap1.Layers.Item(2).MoveTo 1例 2 遍历 Map1.Layers 中的图层,在列表框中显示全部图层的名称(参见样例LookupLayer)Private Sub Command2_Click(

23、) 遍历地图窗口中的图层Dim Layer As MapObjects2.MapLayerDim i As IntegerMe.List1.ClearIf Map1.Layers.Count 0 ThenMe.List1.AddItem “Map1 中的图层“For i = 0 To Map1.Layers.Count - 1Set Layer = Map1.Layers.Item(i)Me.List1.AddItem Layer.NameNext iElseMe.List1.AddItem “Map1 中没有图层“End If3 绘图事件函数Map 控件在绘制图层过程中调用的用户函数称为绘图

24、事件函数,可分为三组:Map.BeforLayerDraw, Map.AfterLayerDrawMap.BeforeTrackingLayerDraw, Map.AfterTrackingLayerDrawMap.DrawingCancelled地图控件窗口刷新时执行的指令序列取自控件本身与绘图事件函数,两部分指令组合在一起的执行顺序如下:绘图事件函数执行顺序for L = n to 0 step 1Map1.BeforeLayerDraw绘制图层 LMap1.AfterLayerDrawNext LMap1.BeforeTrackingLayerDraw绘制跟踪层Map1.AfterTra

25、ckingLayerDrawMap 控件提供绘图事件函数接口,调用绘图事件函数。因此 Map 控件规定了地图窗口刷新指令序列的执行顺序。VB 开发环境根据 Map 控件提供的接口,自动生成绘图事件函数原程序模块,模块中的的执行语句部分为空白,供用户填写。测试连接DataConnection.Connect 方法建立与数据源的连接、打开数据库、读取数据库属性、创建 GeoDataset 集合,若成功,则返回 True,为属性 Connected 赋值True,否则返回 False,为属性 ConnectError 设置错误号。DataConnection.Disconnect 方法关闭数据库,释

26、放 DataConnection 和数据源的连接,清空 GeoDataset 集合,重置 Connected 为 False。该方法不返回任何值。DataConnection.Connected 是只读属性,反映 DataConnection 实例与数据库之间的通讯状态。DataConnection.ConnectError 是只读属性。Dim dc As New DataConnectiondc.Database = “d:/moBook/Samples/Data/washington” 数据库目录路径名If not dc.Connect Then Debug.Print “连接数据库失败,错误号是:” ,dc.connectErrorDebug.Print dc.Connected 输出: FalseElseDebug.Print “连接数据库成功”Debug.Print dc.Connected 输出: Truedc.DisConnectDebug.Print dc.Connected 输出: FalseEnd If习题1 编写程序实现 LookupLayer 样例目录中程序的功能,增加代码,交互操作调整 Map1 窗口中图层的叠置顺序。2 编写程序实现 AddImage 样例目录中程序的功能.。3 编写程序实现 AddCover 样例目录中程序的功能。

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。