课程设计方案vb和MapObjects的二次开发.docx

上传人:b****6 文档编号:7595278 上传时间:2023-01-25 格式:DOCX 页数:10 大小:505.81KB
下载 相关 举报
课程设计方案vb和MapObjects的二次开发.docx_第1页
第1页 / 共10页
课程设计方案vb和MapObjects的二次开发.docx_第2页
第2页 / 共10页
课程设计方案vb和MapObjects的二次开发.docx_第3页
第3页 / 共10页
课程设计方案vb和MapObjects的二次开发.docx_第4页
第4页 / 共10页
课程设计方案vb和MapObjects的二次开发.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

课程设计方案vb和MapObjects的二次开发.docx

《课程设计方案vb和MapObjects的二次开发.docx》由会员分享,可在线阅读,更多相关《课程设计方案vb和MapObjects的二次开发.docx(10页珍藏版)》请在冰豆网上搜索。

课程设计方案vb和MapObjects的二次开发.docx

课程设计方案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方法解决实际问题的能力。

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 工学

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

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