1、课程设计方案vb和MapObjects的二次开发课 程 设 计 报 告课程名称: 地理信息系统 设计名称:MapObjects的二次开发院 系):* 专业班级:*姓 名: *学 号: *指导教师:*年 * 月 *日一、设计目的:1)、实习类型:课程设计;2)、了解VB的软硬件环境、MapObjects数据类型;3)、初步掌握该软件的基本操作技能;4)、能够熟练的操作VB6.0软件,并能应用该软件简单的与MO进行开发5)、掌握产品的输出设计。6)、培养利用GIS方法解决实际问题的能力。二、设计主要仪器设备,器材,药品,软件等1)软件准备:VB6.02)硬件准备:PC机 500M内存,128M显卡
2、最低)3)资料准备:MapObjects控件、USA等SHP文件三、设计原理和内容:1)设计题目:MapObjects的二次开发2)具体要求:应用VB软件与MO控件进行结合,实现MO的二次开发。 也就是Map控件,还包括45个 ActiveX 自动对象。可用于符合IT行业标准的Windows编程环境。 MapObjects主要功能: 显示一张包含多个图层的地图(道路,河流,边界。 放大,缩小,漫游。 创建新的几何图形,如点,线,圆,多边形。 为图层添加注释。 识别地图上被选中的要素点,线,面)。 可以通过线,矩形,多边形,圆来选择要素 可以选取距某参照物一定距离范围内的要素。 可以通过SQL语
3、句来选择要素。 对选择的要素进行统计。 查询与更新被选择的要素的属性数据 制作专题地图。 根据字段的值标注图层要素。 显示从航片或卫星图片上获取的图像。 动态显示实时或时间系列数据。 通过输入地址在地图上定位。 将数据投影到不同的坐标系下 MapObjects对象模型具体见附录) 数据通道对象组 地图显示对象组Map Display Objects) 几何图形对象组 地址匹配对象组Address Match Objects) 地理坐标对象组|*.shpCommonDialog1.InitDir = App.Path + dataCommonDialog1.ShowOpen2、添加菜单栏 工具菜
4、单编辑器3、Toolbar和ImageList If Toolbar1.Buttons(1.Value = 1 Then Map1.MousePointer = moZoomIn ElseIf Toolbar1.Buttons(2.Value = 1 Then Map1.MousePointer = moZoomOut ElseIf Toolbar1.Buttons(3.Value = 1 Then Map1.MousePointer = moPan ElseIf Toolbar1.Buttons(4.Value = 1 Then Map1.MousePointer = moArrow Set
5、 Map1.Extent = Map1.FullExtent ElseIf Toolbar1.Buttons(5.Value = 1 Then Map1.MousePointer = moIdentify ElseIf Toolbar1.Buttons(6.Value = 1 Then Map1.MousePointer = moArrow Form5.Show Toolbar1.Buttons(6.Value = tbrUnpressed ElseIf Toolbar1.Buttons(7.Value = 1 Then Map1.MousePointer = moArrow Toolbar1
6、.Buttons(7.Value = tbrUnpressed ElseIf Toolbar1.Buttons(8.Value = 1 Then Map1.MousePointer = moCross reflash ElseIf Toolbar1.Buttons(9.Value = 1 Then Map1.MousePointer = moCross reflash ElseIf Toolbar1.Buttons(10.Value = 1 Then Map1.MousePointer = moCross reflash ElseIf Toolbar1.Buttons(11.Value = 1
7、 Then Map1.MousePointer = moCross reflash ElseIf Toolbar1.Buttons(12.Value = 1 Then Map1.MousePointer = moCross Reflash If Button = 1 Then If Toolbar1.Buttons(1.Value = 1 Then Set Map1.Extent = Map1.TrackRectangle ElseIf Toolbar1.Buttons(2.Value = 1 Then Set r = Map1.Extent r.ScaleRectangle 1.5 Map1
8、.Extent = r ElseIf Toolbar1.Buttons(3.Value = 1 Then Map1.Pan ElseIf Toolbar1.Buttons(5.Value = 1 Then Form2.TreeView1.LineStyle = tvwRootLines Form2.TreeView1.Nodes.Clear Set l = Map1.Layers(Me.Combo1.text Set p = Map1.ToMapPoint(x, y Set partNode = Form2.TreeView1.Nodes.Add(, , r, Me.Combo1.text t
9、heTol = Map1.ToMapDistance(Searchtolpixels * Screen.TwipsPerPixelX * 3 For Each l In Map1.Layers If l.Visible = True And l.LayerType = moMapLayer Then Set Rect = l.SearchByDistance(p, theTol, If Not Rect.EOF Then Form2.ListView1.ListItems.Clear For Each Fld In Rect.Fields Set newItem = Form2.ListVie
10、w1.ListItems.Add newItem.text = Fld.name newItem.SubItems(1 = Fld.ValueAsString Form2.Text1.text = 当前坐标: ( & p.x & , & p.y & End If Set partNode = Form2.TreeView1.Nodes.Add(r, tvwChild, , Rect.Fields(NAME.ValueAsString End If Next partNode.EnsureVisible Form2.Show ElseIf Toolbar1.Buttons(8.Value = 1
11、 Then Dim Shp As MapObjects2.Polygon Set PL = Map1.TrackLine Map1.TrackingLayer.Refresh True ElseIf Toolbar1.Buttons(9.Value = 1 Then Set Poly = Map1.TrackPolygon Map1.TrackingLayer.Refresh True ElseIf Toolbar1.Buttons(10.Value = 1 Then Set PL = Map1.TrackLine Set BLine = PL.Buffer(Combo2.text Map1.
12、TrackingLayer.Refresh True ElseIf Toolbar1.Buttons(11.Value = 1 Then Set Poly = Map1.TrackPolygon Set BLine = Poly.Buffer(Combo2.text Map1.TrackingLayer.Refresh True ElseIf Toolbar1.Buttons(12.Value = 1 Then Set p = Map1.ToMapPoint(x, y Pts.Add p Set BLine = Pts.Buffer(Combo2.text Map1.TrackingLayer
13、.Refresh True End If ElseIf Button = vbRightButton Then PopupMenu view End If 例如:鹰眼放大属性4、图层控制本设计的图层可以实现上下移动、显示和隐藏图层等功能Private Sub Form_Load( legend1.setMapSource Map1End SubPrivate Sub Map1_AfterLayerDraw(ByVal Index As Integer, ByVal canceled As Boolean, ByVal hDC As stdole.OLE_HANDLElegend1.LoadLe
14、gend TrueEnd SubPrivate Sub legend1_AfterSetLayerVisible(Index As Integer, isVisible As BooleanMap1.RefreshEnd Sub5、显示比例尺、动态坐标和时间等Private Sub refreshScale(ScaleBar1.MapExtent.MaxX = Map1.Extent.RightScaleBar1.MapExtent.MinX = Map1.Extent.LeftScaleBar1.MapExtent.MaxY = Map1.Extent.BottomScaleBar1.Map
15、Extent.MinY = Map1.Extent.TopScaleBar1.PageExtent.MinX = Map1.Left / Screen.TwipsPerPixelXScaleBar1.PageExtent.MinY = Map1.Top / Screen.TwipsPerPixelYScaleBar1.PageExtent.MaxX = (Map1.Left + Map1.Width / Screen.TwipsPerPixelXScaleBar1.PageExtent.MinY = (Map1.Top + Map1.Height / Screen.TwipsPerPixelY
16、ScaleBar1.RefreshEnd SubPrivate Sub Timer1_Timer(Me.StatusBar1.Panels.Item(5.text = 当前时间 : & Now(End Sub五、设计总结分析 设计阶段是在VB中创建应用程序的最重要的部分。首先需要为应用程序设计一用户界面,然后对每个功能模块编写代码。但设计代码的结构是一项很复杂的工作,不易掌握。构造应用程序的方法不同,可能会造成应用程序的性能以及代码的可维护性、可使用性不同。 在此次课程设计中,我们针对MO二次开发过程中遇到的问题进行了如下总结:一)实验难点1. 由于对VB的应用环境不大熟悉,各个控件的使用方法
17、不甚了解,所以在开始构建工程模块时很是吃力。2. VB编程是实验中的一大难点,每个功能都要通过编写代码来实现,对加载的每个功能函数需要不断的修改和调试。二)注意事项1. 在构建不同的窗体模块时,要注意模块之间的链接;2. 每个模块有多个过程,每个过程是一个可执行的代码片段,要划分清晰每个子过程、函数过程或是属性过程,以便程序的调试、检查;3. 在很多情况中存在多个对象共享的重复过程,这样可创建一个共享的子过程,以方便调用,来增加程序的可读性和可维护性;4. 应用每一个变量前需要进行定义,以保证程序可读;5. 在调试程序时可通过设置断点来进行追踪分析;6. 在工具栏设计中,Toolbar里按钮的
18、索引号要与ImageList的图像编号链接一致,按钮样式要设为“tbrButtonGroup”,否则无法对地图实现各项操作;7. 在实现“打开”功能前,需加入CommonDialog控件,否则无法实现;心得体会: 在这次上机实习中,我们使用VB和MO中的Text,Label,Toolbar,Command,Statusbar,list,Listview,Map,Legend等控件创建了一个用户界面,并通过编程实现了MO的一些主要功能。 通过上机实习,我们熟悉了VB的工作环境,初步掌握了该软件的基本操作与用法,学会了用属性窗口及代码设置对象窗体和控件)属性的方法,学会了如何用对象建立界面及在代码编辑器中输入程序代码的基本操作,基本掌握了用VB开发应用程序的一般步骤。 由于时间关系,我们对VB软件的学习和了解还不够深入透彻,开发实现的MO功能还不够全面,以后还需要加强学习和训练,培养自己利用GIS方法解决实际问题的能力。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1