课程设计方案vb和MapObjects的二次开发.docx
- 文档编号:7595278
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:10
- 大小:505.81KB
课程设计方案vb和MapObjects的二次开发.docx
《课程设计方案vb和MapObjects的二次开发.docx》由会员分享,可在线阅读,更多相关《课程设计方案vb和MapObjects的二次开发.docx(10页珍藏版)》请在冰豆网上搜索。
课程设计方案vb和MapObjects的二次开发
课程设计报告
课程名称:
地理信息系统
设计名称:
MapObjects的二次开发
院<系):
*********
专业班级:
*********
姓名:
***************
学号:
***********
指导教师:
********
****年*月*日
一、设计目的:
<1)、实习类型:
课程设计;
<2)、了解VB的软硬件环境、MapObjects数据类型;
<3)、初步掌握该软件的基本操作技能;
<4)、能够熟练的操作VB6.0软件,并能应用该软件简单的与MO进行开发
<5)、掌握产品的输出设计。
<6)、培养利用GIS方法解决实际问题的能力。
二、设计主要仪器设备,器材,药品,软件等
<1)软件准备:
VB6.0
<2)硬件准备:
PC机500M内存,128M显卡<最低)
<3)资料准备:
MapObjects控件、USA等SHP文件
三、设计原理和内容:
<1)设计题目:
MapObjects的二次开发
<2)具体要求:
应用VB软件与MO控件进行结合,实现MO的二次开发。
<3)功能描述:
✓MapObjects是可以允许用户向应用程序中添加地图的制图软件控件集合。
✓MapObjects可以在多种符合工业标准的开发环境下使用,比如VisualBasic,PowerBuilder,VisualC++等。
MapObjects可以直接嵌入到这些开发环境中使用,允许用户快捷地创建应用程序。
✓MapObjects运行于WindowsXP或WindowsNT4.0或更高版本。
✓MapObjects包括一个ActiveX控件(OCX>也就是Map控件,还包括45个ActiveX自动对象。
可用于符合IT行业标准的Windows编程环境。
✓MapObjects主要功能:
Ø显示一张包含多个图层的地图(道路,河流,边界>。
Ø放大,缩小,漫游。
Ø创建新的几何图形,如点,线,圆,多边形。
Ø为图层添加注释。
Ø识别地图上被选中的要素<点,线,面)。
Ø可以通过线,矩形,多边形,圆来选择要素
Ø可以选取距某参照物一定距离范围内的要素。
Ø可以通过SQL语句来选择要素。
Ø对选择的要素进行统计。
Ø查询与更新被选择的要素的属性数据
Ø制作专题地图。
Ø根据字段的值标注图层要素。
Ø显示从航片或卫星图片上获取的图像。
Ø动态显示实时或时间系列数据。
Ø通过输入地址在地图上定位。
Ø将数据投影到不同的坐标系下
✓MapObjects对象模型<具体见附录)
Ø数据通道对象组
Ø地图显示对象组 Ø几何图形对象组 Ø地址匹配对象组 Ø地理坐标对象组 四、设计步骤 1、添加图层 CommonDialog1.Filter="ESRIShapefiles(*.shp>|*.shp" CommonDialog1.InitDir=App.Path+"\data" CommonDialog1.ShowOpen 2、添加菜单栏 工具——菜单编辑器 3、Toolbar和ImageList IfToolbar1.Buttons(1>.Value=1Then Map1.MousePointer=moZoomIn ElseIfToolbar1.Buttons(2>.Value=1Then Map1.MousePointer=moZoomOut ElseIfToolbar1.Buttons(3>.Value=1Then Map1.MousePointer=moPan ElseIfToolbar1.Buttons(4>.Value=1Then Map1.MousePointer=moArrow SetMap1.Extent=Map1.FullExtent ElseIfToolbar1.Buttons(5>.Value=1Then Map1.MousePointer=moIdentify ElseIfToolbar1.Buttons(6>.Value=1Then Map1.MousePointer=moArrow Form5.Show Toolbar1.Buttons(6>.Value=tbrUnpressed ElseIfToolbar1.Buttons(7>.Value=1Then Map1.MousePointer=moArrow Toolbar1.Buttons(7>.Value=tbrUnpressed ElseIfToolbar1.Buttons(8>.Value=1Then Map1.MousePointer=moCross reflash ElseIfToolbar1.Buttons(9>.Value=1Then Map1.MousePointer=moCross reflash ElseIfToolbar1.Buttons(10>.Value=1Then Map1.MousePointer=moCross reflash ElseIfToolbar1.Buttons(11>.Value=1Then Map1.MousePointer=moCross reflash ElseIfToolbar1.Buttons(12>.Value=1Then Map1.MousePointer=moCross Reflash IfButton=1Then IfToolbar1.Buttons(1>.Value=1Then SetMap1.Extent=Map1.TrackRectangle ElseIfToolbar1.Buttons(2>.Value=1Then Setr=Map1.Extent r.ScaleRectangle1.5 Map1.Extent=r ElseIfToolbar1.Buttons(3>.Value=1Then Map1.Pan ElseIfToolbar1.Buttons(5>.Value=1Then Form2.TreeView1.LineStyle=tvwRootLines Form2.TreeView1.Nodes.Clear Setl=Map1.Layers(Me.Combo1.text> Setp=Map1.ToMapPoint(x,y> SetpartNode=Form2.TreeView1.Nodes.Add(,,"r",Me.Combo1.text> theTol=Map1.ToMapDistance(Searchtolpixels*Screen.TwipsPerPixelX*3> ForEachlInMap1.Layers Ifl.Visible=TrueAndl.LayerType=moMapLayerThen SetRect=l.SearchByDistance(p,theTol,""> IfNotRect.EOFThen Form2.ListView1.ListItems.Clear ForEachFldInRect.Fields SetnewItem=Form2.ListView1.ListItems.Add newItem.text=Fld.name newItem.SubItems(1>=Fld.ValueAsString Form2.Text1.text="当前坐标: ("&p.x&","&p.y&">" EndIf SetpartNode=Form2.TreeView1.Nodes.Add("r",tvwChild,,Rect.Fields("NAME">.ValueAsString> EndIf Next partNode.EnsureVisible Form2.Show ElseIfToolbar1.Buttons(8>.Value=1Then DimShpAsMapObjects2.Polygon SetPL=Map1.TrackLine Map1.TrackingLayer.RefreshTrue ElseIfToolbar1.Buttons(9>.Value=1Then SetPoly=Map1.TrackPolygon Map1.TrackingLayer.RefreshTrue ElseIfToolbar1.Buttons(10>.Value=1Then SetPL=Map1.TrackLine SetBLine=PL.Buffer(Combo2.text> Map1.TrackingLayer.RefreshTrue ElseIfToolbar1.Buttons(11>.Value=1Then SetPoly=Map1.TrackPolygon SetBLine=Poly.Buffer(Combo2.text> Map1.TrackingLayer.RefreshTrue ElseIfToolbar1.Buttons(12>.Value=1Then Setp=Map1.ToMapPoint(x,y> Pts.Addp SetBLine=Pts.Buffer(Combo2.text> Map1.TrackingLayer.RefreshTrue EndIf ElseIfButton=vbRightButtonThen PopupMenuview EndIf 例如: 鹰眼 放大 属性 4、图层控制 本设计的图层可以实现上下移动、显示和隐藏图层等功能 PrivateSubForm_Load(> legend1.setMapSourceMap1 EndSub PrivateSubMap1_AfterLayerDraw(ByValIndexAsInteger,ByValcanceledAsBoolean,ByValhDCAsstdole.OLE_HANDLE> legend1.LoadLegendTrue EndSub PrivateSublegend1_AfterSetLayerVisible(IndexAsInteger,isVisibleAsBoolean> Map1.Refresh EndSub 5、显示比例尺、动态坐标和时间等 PrivateSubrefreshScale(> ScaleBar1.MapExtent.MaxX=Map1.Extent.Right ScaleBar1.MapExtent.MinX=Map1.Extent.Left ScaleBar1.MapExtent.MaxY=Map1.Extent.Bottom ScaleBar1.MapExtent.MinY=Map1.Extent.Top ScaleBar1.PageExtent.MinX=Map1.Left/Screen.TwipsPerPixelX ScaleBar1.PageExtent.MinY=Map1.Top/Screen.TwipsPerPixelY ScaleBar1.PageExtent.MaxX=(Map1.Left+Map1.Width>/Screen.TwipsPerPixelX ScaleBar1.PageExtent.MinY=(Map1.Top+Map1.Height>/Screen.TwipsPerPixelY ScaleBar1.Refresh EndSub PrivateSubTimer1_Timer(> Me.StatusBar1.Panels.Item(5>.text="当前时间: "&Now(> EndSub 五、设计总结分析 设计阶段是在VB中创建应用程序的最重要的部分。 首先需要为应用程序设计一用户界面,然后对每个功能模块编写代码。 但设计代码的结构是一项很复杂的工作,不易掌握。 构造应用程序的方法不同,可能会造成应用程序的性能以及代码的可维护性、可使用性不同。 在此次课程设计中,我们针对MO二次开发过程中遇到的问题进行了如下总结: <一)实验难点 1.由于对VB的应用环境不大熟悉,各个控件的使用方法不甚了解,所以在开始构建工程模块时很是吃力。 2.VB编程是实验中的一大难点,每个功能都要通过编写代码来实现,对加载的每个功能函数需要不断的修改和调试。 <二)注意事项 1.在构建不同的窗体模块时,要注意模块之间的链接; 2.每个模块有多个过程,每个过程是一个可执行的代码片段,要划分清晰每个子过程、函数过程或是属性过程,以便程序的调试、检查; 3.在很多情况中存在多个对象共享的重复过程,这样可创建一个共享的子过程,以方便调用,来增加程序的可读性和可维护性; 4.应用每一个变量前需要进行定义,以保证程序可读; 5.在调试程序时可通过设置断点来进行追踪分析; 6.在工具栏设计中,Toolbar里按钮的索引号要与ImageList的图像编号链接一致,按钮样式要设为“tbrButtonGroup”,否则无法对地图实现各项操作; 7.在实现“打开”功能前,需加入CommonDialog控件,否则无法实现; 心得体会: 在这次上机实习中,我们使用VB和MO中的Text,Label,Toolbar,Command,Statusbar,list,Listview,Map,Legend等控件创建了一个用户界面,并通过编程实现了MO的一些主要功能。 通过上机实习,我们熟悉了VB的工作环境,初步掌握了该软件的基本操作与用法,学会了用属性窗口及代码设置对象<窗体和控件)属性的方法,学会了如何用对象建立界面及在代码编辑器中输入程序代码的基本操作,基本掌握了用VB开发应用程序的一般步骤。 由于时间关系,我们对VB软件的学习和了解还不够深入透彻,开发实现的MO功能还不够全面,以后还需要加强学习和训练,培养自己利用GIS方法解决实际问题的能力。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 方案 vb MapObjects 二次开发
![提示](https://static.bdocx.com/images/bang_tan.gif)