




已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验一 添加地图控件31. 实验目的:32.实验内容:3(1) MapObjects的概念3nMapObjects的功能3nMapObjects的结构4nMapObjects的特点4nMapObjects可以满足哪些用户要求4(2) 在Visual Basic下使用MapObjects5实验二 实现放大缩小功能51.实验目的:52.实验内容:5(1) 放大功能(在放大按钮的click事件中,还是map1的mouse down 事件中)5(2) 缩小功能(在缩小按钮的click事件中,还是map1的mouse down 事件中)6(3) 怎么区分map1的mouse down 事件,是放大还是缩小?如果两个都同时放在一个事件中?6并添加以下函数6实验三 实现平移和全图功能61.实验目的:62.实验内容:7(1) 平移功能(在平移按钮的click事件中,还是map1的mouse down 事件中)7(2) 全图功能7(3) 可采用添加一个变量flag来区分7实验四 添加工具栏81.实验目的:82.实验内容:8实验五 设置鼠标形状,加固定shp文件91.实验目的:9(1) 鼠标形状9(2) 添加固定图层92.实验内容:9(1) 显示不同鼠标形状9(2) 加载固定文件夹下的shp文件9实验六 以对话框形式加shp图层91.实验目的:92.实验内容:10实验七 以对话框打开栅格格式图层111.实验目的:112.实验内容:11实验八 图层的显示、隐藏、添加和清除121.实验目的:122.实验内容:12(1) 清除图层12(2) 使图层隐藏12(3) 使图层可见12实验九 用legend显示和控制图层121.实验目的12(1) 用legend显示和控制图层,熟悉MO的legend的方法和属性;12(2) 用list控件显示和控制图层122.实验内容12(1)用legend显示和控制图层12(2)用list控件显示和控制图层13实验十 实现鹰眼功能141.实验目的142.实验内容14(1) 在加图层的地方给map2加个图层14(2) 使Map2和Map1联动; map1改变map214(3) 在Map2上画红色指示框;14(4) 实现用Map2改变Map1的功能;14实验十一 实现identify功能,完成空间到属性的查询151.实验目的152.实验内容15实验十二 完成属性查询161.实验目的162.实验内容16实验十三 以表达式方式完成属性到空间的查询171.实验目的172.实验内容17实验十四 窗口重新布局时,各控件的布局调整191.实验目的192.实验内容19实验十五 实现对图层颜色的控制201.实验目的202.实验内容201.通过代码设置初始颜色202. 双击legend控件改变图层颜色20实验十六 添加注记功能的实现201.实验目的202.实验内容20计算机地图制图实验指导书课程编号:课程英文名称:Computer Aided Cartography学时数: 36 学分数:3适用层次和专业: 地理信息系统专业实验一 添加地图控件1. 实验目的:熟悉VB+MapObject编程环境,map控件右键添加地图,显示地图运行成功2.实验内容:(1) MapObjects的概念MapObjects是一组供应用开发人员使用的制图与GIS功能组件。它有一个叫Map控件的ActiveX控件和一系列可编程的ActiveX对象组成,它们可以在标准的Windows编程环境下使用。利用MapObjects开发人员可以在应用程序中添加制图和GIS功能。它不是为最终用户而是专门为开发人员提供的。开发人员可在熟悉和喜欢的开发环境中利用MapObjects开发出系统开销小的制图应用,或在现有的应用中添加制图功能。n MapObjects的功能使用MapObjects,你可以完成以下这些功能:(1)显示具有多个地图层的地图、如道路、河流和边界线等;(2)放大、缩小和漫游整个地图;(3)显示图形特征(Feature),如点、线;(4)显示标注字符;(5)通过点击识别图上特征;(6)选择沿线的特征和在矩形、区域、多边形和圆内的特征;(7)选择在已知特征附近规定距离内的特征;(8)使用SQL语句查询持征;(9)对选择的特征进行基本的统计;(10)查询和更新选择特征的属性数据(Shape格式);(11)用特定的方法对特征进行着色处理,如ValueMapRenderer,Class-BreakRenderer,DotDensityRenderer; (12)用字段值的字符标注特征; (13)显示多种格式的栅格图像文件; (14)动态显示实时或时间系列的数据; (15)输出地理匹配的地理位置。n MapObjects的结构 MapObjects是建立在微软的对象连接和嵌入(ActiveX)基础之上的。ActiveX是当今得到广泛支持的面向对象的软件集成技术。用户像用砖块盖房子一样利用ActiveX组件开发和集成Windows应用程序。 一个ActiveX控件是一个可重复使用的软件组件。ActiveX控件可以将许多其他ActiveX对象包装在一个包中。这个包可以反映某些特定的功能,如统计图和多媒体等,并可以直接嵌入支持ActiveX的应用中。ActiveX对象具有特征和方法,可以通过对它们的编程来控制对象的外观、行为以及相互作用。 MapObjects是一个提供制图与GIS功能的ActiveX控件,它包含35个可编程的ActiveX对象。MapObjects地图控件可以直接插入到许多标准开发环境的工具集中。可以通过属性页操纵地图。这些属性页是在诸如VisualBasic之类的开发环境中建立的,或者通过其他程序化相关对象来控制地图。 这些对象为应用开发人员提供了有力的制图与GIS功能支持。因为MapObjects是一个ActiveX控件,它又可以用于大量开发框架中,包括流行的像VB、VC、Delphi、Microsoft Acccss、FoxPro、PowerBuild等之类的程序设计环境。n MapObjects的特点MapObjects允许定制利用制图和GIS组件的应用程序,MapObjects的特点包括:(1)支持ARC/INFO层(Coverage);(2)支持ESRI的Shape文件格式,SDE(空间数据库引擎)图层(Layer)以及大量栅格格式,如BMP、TIFF等;(3)支持通过微软ODBC规范进行的外部数据库访问;(4)把数据作为多个图层在一张图中进行显示,当然可进行图幅的变化;(5)特征表示使用数理方法如数值地图、分类、个体符号以及点值图等;(6)文字注记和放置;(7)用一个事件跟踪层来动态显示实时数据;(8)用标准SQL表达式进行特征选择和查询;(9)通过大量搜索与框架操作特进行空间选择;(10)地址匹配(地理编码);(11)强大而出色的对象模型。n MapObjects可以满足哪些用户要求 任何应用开发人员都能利用MapObjects在应用中加入地图,一些从MapObjects中获益的开发者将成为ESRI公司软件的用户。许多人可能只有很简单的要求,比如在应用中加入生动的地图。另一些人则可能把MapObjects与其他技术一起使用建立更加复杂的系统。使用MapObjects建立应用程序的开发人员包括: 数据出版商 软件产品开发商 纵向市场应用开发商 咨询业者 SDE开发者 公司客户(2) 在Visual Basic下使用MapObjects 安装MapObjects之后,打开Visual Basic的程序开发环境,在左边的控件点击右键将弹出控件选择柜。选择ESRI MapObjects后,控件中将增加一个Map的控件。现在可以进行MapObjects编程了。n 增加控件 在Form上加一个按钮,并在按键上标注“全图”。如果在应用程序中加入地图,则在控件栏中选择Map控件,然后把光标移人Form中,拖放该图框,地图控件将成为一块空白色区域。n 增加图层在Form上有一个Map控件后,我们必须在上面显示地图特征,如道路、河流和边界线等。右击Map控件,选择属性(property),添加图层运行程序。实验二 实现放大缩小功能1.实验目的: 验证放大、缩小功能,区分放在Button click和Map1的Mousedown事件中的区别 2.实验内容:(1) 放大功能(在放大按钮的click事件中,还是map1的mouse down 事件中)方法1.Set Map1.Extent = Map1.TrackRectangle方法2.Dim r As MapObjects2.RectangleSet r = Map1.Extentr.ScaleRectangle 0.5 Map1.Extent = r(2) 缩小功能(在缩小按钮的click事件中,还是map1的mouse down 事件中) Dim r As MapObjects2.Rectangle Set r = Map1.Extent r.ScaleRectangle 1.5 .ScaleRectangle 0.5 应该就是放大了 Map1.Extent = r(3) 怎么区分map1的mouse down 事件,是放大还是缩小?如果两个都同时放在一个事件中?放大和缩小都放在map1的mouse down 事件中,怎么办?可采用添加一个变量flag来区分,添加两个按钮控件,分别标注“放大”和“缩小”,在两个按钮的click事件中对flag进行赋值,flag= fangda或suoxiao。在Map1的Mousedown事件中添加以下语句:Select Case flagCase fangda: Zoomin Case suoxiao: Zoomout 并添加以下函数Sub Zoomin ( ) Dim r As MapObjects2.RectangleSet r = Map1.Extentr.ScaleRectangle 0.5 Map1.Extent = rEnd SubSub Zoomout ( ) Dim r As MapObjects2.Rectangle Set r = Map1.Extent r.ScaleRectangle 1.5 .ScaleRectangle 0.5 应该就是放大了 Map1.Extent = rEnd Sub实验三 实现平移和全图功能1.实验目的: 验证平移和全图功能,添加flag变量,在Map1的Mousedown事件中分别实现放大、缩小、平移和全图2.实验内容:(1) 平移功能(在平移按钮的click事件中,还是map1的mouse down 事件中)Map1.Pan(2) 全图功能Map1.Extent = Map1.FullExtent(3) 可采用添加一个变量flag来区分添加四个按钮控件,分别标注“放大”、“缩小”、“平移”和“全图”,在四个按钮的click事件中分别对flag进行赋值,flag= fangda、suoxiao、pingyi、quantu,即添加如下代码:flag= fangdaflag=suoxiaoflag=pingyi flag=quantu在Map1的Mousedown事件中添加以下语句:Select Case flagCase fangda: Zoomin Case suoxiao: Zoomout Case pingyi: Panfuc Case quantu: Quantu 并添加以下函数Sub Zoomin ( ) Dim r As MapObjects2.RectangleSet r = Map1.Extentr.ScaleRectangle 0.5 Map1.Extent = rEnd SubSub Zoomout ( ) Dim r As MapObjects2.Rectangle Set r = Map1.Extent r.ScaleRectangle 1.5 .ScaleRectangle 0.5 应该就是放大了 Map1.Extent = rEnd SubSub Panfuc ( ) Map1.PanEnd SubSub Quantu ( ) Map1.Extent = Map1.FullExtentEnd Sub实验四 添加工具栏1.实验目的: 添加工具栏,分别实现放大、缩小、平移和全图2.实验内容:添加工具栏要使用VB的扩展控件:ToolBar, ImageList。这两个扩展控件开始的时候并不在工具箱中,使用的时候需要使用VB的“工程”菜单添加。具体步骤是:选择菜单工程部件,添加microsoft windows common controls 6.0或microsoft windows common controls 5.0后,这样就可以在左边的工具箱中找到ToolBar, ImageList。然后,把ToolBar, ImageList拖放到Form中就可以了。步骤如下:l 在窗体上放置ImageList控件l 设置ImageList1的属性,增加图片ZoomIn.bmp; ZoomOut.bmp; Pan.bmp; Globe.bmp l 在窗体上放置ToolBar控件l 设置ToolBar1的属性,将ToolBar1的图像列表设置为ImageList1;增加按钮ZoomIn,ZoomOut,Pan,设置样式为2-tbrButtonGroup,并设置相应的显示图片;增加第4个按钮设置样式为4-tbrPlaceholder;增加第5个按钮btnFullExtent设置图片为Globe.bmp注意:VB控件库 Microsoft Windows Common Controls 6.0 中包含ToolBar 和ImageList控件要求设计至少有放大、缩小、平移和全图等工具按钮的工具栏。实验五 设置鼠标形状,加固定shp文件1.实验目的: (1) 鼠标形状(2) 添加固定图层2.实验内容:(1) 显示不同鼠标形状在相应按钮(放大、平移、缩小和全图)的click事件中分别加入以下代码(或在工具栏的click事件中加入以下代码):Map1.MousePointer = moZoomInMap1.MousePointer = moPanMap1.MousePointer = moZoomOutMap1.MousePointer = moDefault(2) 加载固定文件夹下的shp文件Dim dc As New DataConnectionDim layer As MapLayerdc.Database = App.Path If Not dc.Connect Then MsgBox 在指定的文件夹下没找到图层数据文件! End End If Set layer = New MapLayer Set layer.GeoDataset = dc.FindGeoDataset(States) Map1.Layers.Add layer Set layer = New MapLayer Set layer.GeoDataset = dc.FindGeoDataset(Rivers) Map1.Layers.Add layer Map1.Refresh实验六 以对话框形式加shp图层1.实验目的: 验证以打开对话框的形式打开MapObjects支持的所有格式中shp格式的图层,完成显示。掌握CommandDialog 组件添加图层的方法2.实验内容:导入CommonDialog 组件,这一组件在对象库Microsoft Common Dialog Control 6.0 中。添加Map控件,Conmon Dialog 控件,并将其名称改为cDlg1,添加一个按钮。在Form上增加一个标注“增加图层”的按钮,并增加Visual Basic的CommonDialog控件,以便确定Shape文件的路径和文件名。双击增加图层按钮就可以编程了,增加以下的VB语句。Private Sub Commandl_Click() 打开对话框的方式添加图层 CommonDialog1.CancelError = True CommonDialog1.DialogTitle = 选择地图文件 Dim oConnect As New DataConnection Dim oDataset As GeoDataset Dim sName As String Dim oLayer As MapObjects2.MapLayer CommonDialog1.Filter = ESRI Shapefiles (*.shp)|*.shp CommonDialog1.ShowOpen If Len(CommonDialog1.FileName) = 0 Then Exit Sub oConnect.Database = CurDir If Not oConnect.Connect Then Exit Sub sName = Left(CommonDialog1.FileTitle, Len(CommonDialog1.FileTitle) - 4) Set oDataset = oConnect.FindGeoDataset(sName) If oDataset Is Nothing Then Exit Sub Set oLayer = New MapLayer oLayer.GeoDataset = oDataset Map1.Layers.Add oLayer Map2.Layers.Add oLayer legend1.setMapSource Map1 legend1.LoadLegend True Map1.RefreshEnd Sub执行程序,点击增加图层按钮,并选择所要显示的shape文件名。可以改变Map控件的属性,如Map的大小、滚动条的设置、图层及基本图层表示、背景颜色的设置,这些属性页在VB的整个设计过程中都存在。可以预置所有图层以及它们的显示属性,或者可以建立一个界面,让最终用户可以指定要删除或插入的图层以及它们的代表符号。实验七 以对话框打开栅格格式图层1.实验目的: 验证以打开对话框的形式打开MapObjects支持的栅格图层,完成显示2.实验内容: 打开栅格图层Public Sub addImage() Dim fullFile As String Dim ilyr As New MapObjects2.ImageLayer cDlg1.CancelError = True On Error GoTo FileOpenCancel cDlg1.Filter = Standard image formats |*.bmp;*.dib;*.tif;*.jpg;*.jff;*.bil;*.bip;*.bsq;*.gis;*.lan;*.rlc;*.sid;*.sun;*.rs;*.ras;*.svf;*.img;*.gif cDlg1.DialogTitle = Select file for new layer cDlg1.ShowOpen If cDlg1.FileTitle = Then Exit Sub fullFile = Trim$(cDlg1.FileName) ilyr.File = fullFile Map1.Layers.add ilyrExit SubFileOpenCancel: Exit SubEnd SubPrivate Sub raster_Click(Index As Integer)Call addImageEnd Sub实验八 图层的显示、隐藏、添加和清除1.实验目的: 验证图层的显示和隐藏、添加和清除2.实验内容:(1) 清除图层 Set layer = Map1.Layers(0)Layer.Clear 清除Map1的所有图层。Map1.Refresh(2) 使图层隐藏Set layer = Map1.Layers(0)layer.Visible = false TrueMap1.Refresh(3) 使图层可见Set layer = Map1.Layers(0)layer.Visible = TrueMap1.Refresh实验九 用legend显示和控制图层1.实验目的 (1) 用legend显示和控制图层,熟悉MO的legend的方法和属性;(2) 用list控件显示和控制图层2.实验内容(1)用legend显示和控制图层添加legend控件,这一控件在对象库esri mapobjects lengend control 中。加入legend部件到工程中,实现legend与Map1控件中图层的联动,具体过程如下:n 在legend1_AfterSetLayerVisibl事件中加入Map1.Refreshn 在程序中加图层后,map1.refresh前加legend1.setMapSource Map1legend1.LoadLegend Truen 在图层隐藏和可见的地方加legend1.LayerVisible(0) = False or truen 在清除图层的地方(Map1.Layers.Clear)加legend1.RemoveAll或者加 legend1.setMapSource Map1 legend1.LoadLegend True(2)用list控件显示和控制图层n 置顶当前图层Private Sub lstLayers_DblClick() Dim lyr As MapObjects2.MapLayer If lstLayers.ListIndex -1 Then Map1.Layers.MoveToTop lstLayers.ListIndex Map1.Refresh lstLayers.Clear For Each lyr In Map1.Layers lstLayers.AddItem lyr.Name Next lyr End IfEnd Subn 上移图层Private Sub Command2_Click() Dim i As Integer Dim lyr As MapObjects2.MapLayer If lstLayers.ListIndex -1 And lstLayers.ListIndex 0 Then i = lstLayers.ListIndex - 1 Map1.Layers.MoveTo lstLayers.ListIndex, i Map1.Refresh lstLayers.Clear For Each lyr In Map1.Layers lstLayers.AddItem lyr.Name Next lyr lstLayers.Selected(i) = True End IfEnd Subn 下移图层Private Sub Command4_Click() Dim i As Integer Dim lyr As MapObjects2.MapLayer If lstLayers.ListIndex -1 And lstLayers.ListIndex = 0 Then Exit Sub If Map1.Layers(0).Records.Fields(Combo1.List(Combo1.ListIndex).Type = moString Then strExpression = Combo1.List(Combo1.ListIndex) & & Combo2.List(Combo2.ListIndex) & & Combo3.Text & Else strExpression = Combo1.List(Combo1.ListIndex) & & Combo2.List(Combo2.ListIndex) & & Combo3.Text End If Set recSelection = Map1.Layers(0).SearchExpression(strExpression) If Not recSelection.EOF Then Map1.DrawShape recSelection, g_symSelection End If Set recSelection = NothingEnd SubPrivate Sub Command1_Click() Map1.RefreshEnd SubPrivate Sub Form_Load() DrawLayer If Not Map1.Layers.Count = 1 Then End Label1.Caption = 选择表达式: Command1.Caption = 查找 With Combo1 Dim fldLyr As MapObjects2.Field For Each fldLyr In Map1.Layers(0).Records.Fields If fldLyr.Type 20 Then .AddItem fldLyr.Name End If Next fldLyr .ListIndex = 0 End With With Combo2 .AddItem = .AddItem .AddItem = .AddItem Like .ListIndex = 0 End With Combo3.Text = Call ListValues Set g_symSelection = New MapObjects2.Symbol With g_symSelection .SymbolType = Map1.Layers(0).Symbol.SymbolType .color = moDarkGreen End WithEnd SubPrivate Sub Combo1_Click() Dim recLyr As MapObjects2.Recordset Dim strName As String If Len(Combo1.List(Combo1.ListIndex) 0 Then Set recLyr = Map1.Layers(0).Records strName = Combo1.List(Combo1.ListIndex) Combo3.Clear Do While Not recLyr.EOF Combo3.AddItem recLyr.Fields(strName).ValueAsString recLyr.MoveNext Loop End IfEnd Sub实验十四 窗口重新布局时,各控件的布局调整1.实验目的 验证窗口重新布局(最大化、最小化、还原等)时,各控件的布局调整(以同一比例方式来布局)2.实验内容窗口放大时,各个控件的重新布局(search用表达式的方式)Private Sub Form_Resize() Map1.Move 60, 60, Me.ScaleWidth - 180, Me.ScaleHeight - 2000 Label1.Mo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年环保产业技术创新与产业升级技术创新合作模式研究报告
- 2025年电商平台大数据分析在眼镜行业精准营销策略报告
- 2025年核能产业铀矿资源需求预测与市场供应分析报告
- 2025年环保行业环保产业环保教育与培训技术进展与应用研究报告001
- 押题宝典高校教师资格证之《高等教育法规》试题含答案详解(完整版)
- 2025至2030年中国生蚝市场运行态势及行业发展前景预测报告
- 押题宝典高校教师资格证之《高等教育心理学》通关考试题库及答案详解【夺冠系列】
- 推拿治疗学试题库含答案详解(基础题)
- 考点解析-冀教版七年级下册期末试题附答案详解【典型题】
- 2025年度汽车租赁与新车购买双重保障合同
- 物业费催费技巧(干货版)
- 物业保盘行动策划方案
- 2023-2024学年江苏省南通市如皋市重点中学八年级(上)第二次月考数学试卷(含解析)
- 脑梗塞个案护理查房
- 2013年天津公务员考试职位表
- 矿山安全供电讲义
- 小学语文阅读理解答题万能公式全套
- 最全婚礼筹备清单:婚礼流程婚礼采购必备清单
- 公司管理程序文件模板
- 化学(医药卫生类)中职PPT完整全套教学课件
- 下腔静脉滤器置入与取出术
评论
0/150
提交评论