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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

GIS二次开发程序设计.docx

1、GIS二次开发程序设计重 庆 交 通 大 学GIS二次开发程序设计班级: 姓名: 学号: 2013年7月4日一 界面设计(1)目的要求 1、学会对MO进行安装。 2、熟悉Visual Basic和Map Object程序的基本操作。 3、掌握toolbar的操作步骤。 4、设置GIS二次开发的界面,要求界面具有菜单、工具条及设计程序时用到的各种控件等。(2)内容1、利用Visual Basic相应控件和操作以及Map Object完成界面设计,运用所安装的MO的控件进行所需界面设计。 2、在设计的界面上一次添加菜单、工具条、图例控件、map控件、状态栏等,并熟练掌握其操作步骤。(3)操作步骤1

2、、在有MO和VB的环境中进行所设计的界面设计。 菜单的设计。要求具有一些常用的功能。如下图所示:图1 菜单编辑2、对toolbar进行设计。在菜单栏下面进行插入Button按钮,并在按钮上插入相应图像。步骤如下图:图2 编辑toolbar 3、插入map、legend、status等控件,并调整其大小。得到最后成果图如下图所示:图3 界面二 加载图层(1)目的要求1、熟悉Map Object中commondialog控件的调用方法。2、掌握在Visual Basic中利用Map Object二次开发软件实现command控件、菜单、类模块和toolbar加载Shape图层的操作。(2)内容1、

3、用菜单的方法加载Shape图层。2、用toolbar的方法加载Shape图层。3、用命令按钮command的方法加载Shape图层。4、用类模块的方式加载Shape图层。(3)操作步骤在设计好的界面环境中的菜单、toolbar、command、类模块中分别写入打开图层的代码。进行打开图层的操作。1、运用菜单代开代码:Private Sub dakaituceng_Click() 第一步,定义一个新的MO对象组的DataConnection对象 Dim dConn As New MapObjects2.DataConnection 第二步,定义一个新的MO对象组的MapLayer对象 Dim s

4、hpLayer As New MapObjects2.MapLayer Dim filename As String 第三步,设置DataConnection对象的方法Connection连接到指定的存放数据的地方 dConn.Database = H:MODevelopDemoMOandVBDemoL4-Exam-AddShapeData 第三步,利用DataConnection对象的方法Connect进行数据连接 dConn.Connect 第四步,将MapLayer对象的GeoDataset属性设置为DataConnection对象的FindGeoDataset方法(用Shape 文件名

5、作参数)的返回值。 Set shpLayer.GeoDataset = dConn.FindGeoDataset(STATES) 第五步,用地图控件Layers对象的方法Add向地图控件中添加Shape图层 Map1.Layers.Add shpLayer 设置对话框过滤器 CommonDialog1.Filter = ESRI Shape文件(*.shp)|*.shp 对话框显示为打开类型的对话框 CommonDialog1.ShowOpen 如果打开文件名的长度为0,则终止这个过程 If Len(CommonDialog1.filename) = 0 Then Exit Sub 设置Dat

6、aConnection对象的方法Connection连接到当前目录 dConn.Database = CurDir App.path If Not dConn.Connect Then Exit Sub MsgBox dConn.Connect 得到从对话框返回的文件名 filename = Left(CommonDialog1.FileTitle, Len(CommonDialog1.FileTitle) - 4) 设置图层的数据集 Set shpLayer.GeoDataset = dConn.FindGeoDataset(FileName) Set shpLayer.GeoDataset

7、 = dConn.FindGeoDataset(filename) 增加新图层End Sub图4 窗口 结果如下图:图5 加载2、用toolbar的方式代开图层代码:首先在设置Button时将打开图层的key值标为打开图层。Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)Select Case Button.Key Case 打开图层 Call dakaituceng_Click End SelectEnd Sub 3、用command方式进行打开的代码:Private Sub Command5_Click

8、()Call dakaituceng_ClickEnd Sub 得到如下结果:图6 效果 4、用类模块方式打开图层的代码:Sub Class1_Initialize() 第一步,定义一个新的MO对象组的DataConnection对象 Dim dConn As New MapObjects2.DataConnection 第二步,定义一个新的MO对象组的MapLayer对象 Dim shpLayer As New MapObjects2.MapLayer Dim filename As String 第三步,设置DataConnection对象的方法Connection连接到指定的存放数据的地

9、方 dConn.Database = H:MODevelopDemoMOandVBDemoL4-Exam-AddShapeData 第三步,利用DataConnection对象的方法Connect进行数据连接 dConn.Connect 第四步,将MapLayer对象的GeoDataset属性设置为DataConnection对象的FindGeoDataset方法(用Shape 文件名作参数)的返回值。 Set shpLayer.GeoDataset = dConn.FindGeoDataset(STATES) 第五步,用地图控件Layers对象的方法Add向地图控件中添加Shape图层 Ma

10、p1.Layers.Add shpLayer 设置对话框过滤器 Form1.CommonDialog1.Filter = ESRI Shape文件(*.shp)|*.shp 对话框显示为打开类型的对话框 Form1.CommonDialog1.ShowOpen 如果打开文件名的长度为0,则终止这个过程 If Len(Form1.CommonDialog1.filename) = 0 Then Exit Sub 设置DataConnection对象的方法Connection连接到当前目录 dConn.Database = CurDir App.path If Not dConn.Connect

11、Then Exit Sub MsgBox dConn.Connect 得到从对话框返回的文件名 filename = Left(Form1.CommonDialog1.FileTitle, Len(Form1.CommonDialog1.FileTitle) - 4) 设置图层的数据集 Set shpLayer.GeoDataset = dConn.FindGeoDataset(FileName) Set shpLayer.GeoDataset = dConn.FindGeoDataset(filename) 增加新图层 Form1.Map1.Layers.Add shpLayerEnd Su

12、b 得到结果如图:图7 结果三 放大、缩小、平移和全视图(1)目的要求学会在菜单、toolbar中添加相应的程序代码实现所加载图层的放大、缩小、平移以及全视图操作。(2)内容1、用程序代码实现图层的放大操作功能。2、用程序代码实现图层的缩小操作功能。3、用程序代码实现图层的平移操作功能。4、用程序代码实现图层的全视图操作功能。(3)操作步骤1、实现图层的放大功能代码:Private Sub Map1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) If i = 1 Then Set Map1.Ex

13、tent = Map1.TrackRectangle End IfEnd SubPrivate Sub fangda_Click() bZoomOrPan = True 标志放大状态 i = 1 设置鼠标指针 Map1.MousePointer = moZoomInEnd Sub结果如图所示:图8 放大2、图层缩小功能代码:Private Sub Map1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) If i = 2 Then Dim r As MapObjects2.rectangleSet

14、 r = Map1.Extentr.ScaleRectangle 1.5 显示框放大1.5倍Map1.Extent = rEnd IfEnd SubPrivate Sub suoxiao_Click() i = 2 Map1.MousePointer = moZoomOutEnd Sub 结果如图所示:图9 缩小3、图层平移功能代码:Private Sub Map1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)If i = 3 ThenMap1.PanEnd IfEnd SubPrivate S

15、ub pingyi_Click() i = 3 标志平移状态 Map1.MousePointer = moPan 设置鼠标指针End Sub 结果如图所示:图10 平移4、图层全视图功能代码:Private Sub quanshitu_Click()设置mainmap的当前显示范围是全图 Set Map1.Extent = Map1.FullExtentEnd Sub 结果如图所示:图11 全视图四 设计鹰眼(1)目的要求 在窗体中添加新的map控件作为鹰眼,并在鹰眼内画红色矩形框。框要求鹰眼与图层能进行联动,红色方框内的内容为图层的显示内容。(2)内容 1、设置Birdeye的属性及位置大小

16、。 2、birdeye与mainmap联动,在birdeye内画出红色矩形框并实现Birdeye的拖拽功能。(3)操作步骤1、添加一个map控件作为鹰眼。图12 添加鹰眼2、添加代码,实现鹰眼与图层的联动机鹰眼的拖拽功能。Private Sub dakai_Click() Dim dConn As New MapObjects2.DataConnection Dim shpLayer As New MapObjects2.MapLayer Dim filename As String CommonDialog1.Filter = ESRI Shape文件(*.shp)|*.shp Common

17、Dialog1.ShowOpen If Len(CommonDialog1.filename) = 0 Then Exit Sub dConn.Database = CurDir If Not dConn.Connect Then Exit Sub filename = Left(CommonDialog1.FileTitle, Len(CommonDialog1.FileTitle) - 4) Set shpLayer.GeoDataset = dConn.FindGeoDataset(filename) Map1.Layers.Add shpLayer Map1.Refresh legen

18、d1.setMapSource Map1 让图层控制控件的作用生效 legend1.LoadLegend True Map2.Layers.Add shpLayer Map2.RefreshEnd Sub= Private Sub Map1_AfterLayerDraw(ByVal Index As Integer, ByVal canceled As Boolean, ByVal hdc As stdole.OLE_HANDLE) If Index = 0 Then Map2.TrackingLayer.Refresh True End IfEnd Sub= Private Sub Map2

19、_AfterTrackingLayerDraw(ByVal hdc As stdole.OLE_HANDLE) Dim sym As New Symbol sym.OutlineColor = moRed sym.Style = moTransparentFill Map2.DrawShape Map1.Extent, symEnd Sub Private Sub Map2_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single) Dim curRectangle As MapObjects2.rectan

20、gle Dim pt As New MapObjects2.point 画方框改变Map1窗口 Set curRectangle = Map2.TrackRectangle Set Map1.Extent = curRectangle 点击改变Map1位置 Set pt = Map2.ToMapPoint(x, y) Map1.CenterAt pt.x, pt.y End Sub3、最终结果图:图13 实现鹰眼五 画点(1)目的要求用一定的程序在图层上进行画点操作。(2)内容1、在菜单中设计代码进行画点操作功能。2、用toolbar中的Button进行画点操作。(3)操作步骤1、用菜单画点代

21、码:Private Sub Map1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)If i = 4 Then Dim point As New MapObjects2.point Dim evpoint As New MapObjects2.GeoEvent Set point = Map1.ToMapPoint(x, y) Set trackShape = point Set evpoint = Map1.TrackingLayer.AddEvent(point, 0) With Map1.T

22、rackingLayer.Symbol(0) .SymbolType = moFillSymbol .Style = moGrayFill .Color = moRed .OutlineColor = moRed End WithEnd SubPrivate Sub huadian_Click()i = 4 Map1.MousePointer = moPencilEnd Sub1、用toolbar中的Button进行画点操作代码:Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)Select Case But

23、ton.Key Case 画点 Call huadian_Click End SelectEnd Sub2、实验结果:图14 画点六 画线(1)目的要求用一定的程序在图层上进行画点操作。(2)内容1、在菜单中设计代码进行画点操作功能。2、用toolbar中的Button进行画点操作。(3)操作步骤1、用菜单画点代码:Private Sub Map1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)If i = 5 Then Dim line As New MapObjects2.line Dim e

24、vline As New MapObjects2.GeoEvent Set line = Map1.TrackLine Set trackShape = line Set evline = Map1.TrackingLayer.AddEvent(line, 0) With Map1.TrackingLayer.Symbol(0) .SymbolType = moFillSymbol .Style = moGrayFill .Color = moGreen .OutlineColor = moGreen End WithEnd IfEnd sub2、用toolbar中的Button进行画点操作代

25、码:Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)Select Case Button.Key Case 画线 Call huaxian_Click End SelectEnd Sub3、实验结果:图15 画线七 画面(1)目的要求用一定的程序在图层上进行画点操作。(2)内容1、在菜单中设计代码进行画点操作功能。2、用toolbar中的Button进行画点操作。(3)操作步骤1、用菜单画点代码:1)画圆:Private Sub Map1_MouseDown(Button As Integer, Shift

26、 As Integer, x As Single, y As Single)If i = 6 Then Dim ellipse As New MapObjects2.ellipse Dim evellipse As New MapObjects2.GeoEvent Set ellipse = Map1.TrackCircle Set trackShape = ellipse Set evellipse = Map1.TrackingLayer.AddEvent(ellipse, 0) With Map1.TrackingLayer.Symbol(0) .SymbolType = moFillS

27、ymbol .Style = moGrayFill .Color = moBlue .OutlineColor = moBlue End WithEnd If2)画矩形:If i = 7 Then Dim rectangle As New MapObjects2.rectangle Dim evrectangle As New MapObjects2.GeoEvent Set rectangle = Map1.TrackRectangle Set trackShape = rectangle Set evrectangle = Map1.TrackingLayer.AddEvent(recta

28、ngle, 0) With Map1.TrackingLayer.Symbol(0) .SymbolType = moFillSymbol .Style = moGrayFill .Color = moBlack .OutlineColor = moBlack End WithEnd If3)画多边形:If i = 8 Then Dim polygon As New MapObjects2.polygon Dim evpolygon As New MapObjects2.GeoEvent Set polygon = Map1.TrackPolygon Set trackShape = poly

29、gon Set evpolygon = Map1.TrackingLayer.AddEvent(polygon, 0) With Map1.TrackingLayer.Symbol(0) .SymbolType = moFillSymbol .Style = moGrayFill .Color = moYellow .OutlineColor = moYellow End WithEnd IfEnd SubEnd sub2、用toolbar中的Button进行画点操作代码:Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)Select Case Button.Key Case 画圆 Call huayuan_Click Case 画矩形 Call huajuxing_Click Case 画多边形 Call huaduobianxing_Click End SelectEnd Sub3、实验结果:图16 画面八 按值渲染(1)目的要求了解图层渲染的方法,掌握Renderer属性设置的语法,掌握按值渲染(ValueMapRenderer)的原理,体会按值渲染的特点,并运用程序代码将图层进行按值渲染。(2)内容1、运用按值渲染中的固定渲染数值的原理和代码来进行图层渲染。

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

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