GIS二次开发程序设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

成绩批阅日期重庆交通大学测量与空间信息处理实验报告实验课程:GIS二次开发程序设计实验名称:GIS二次开发班级:学号:姓名:实验日期:2012年6月25日重庆交通大学测量与空间信息处理实验室第1页共38页实验一界面设计一、实验目的和要求1、学会对MO进行安装。2、熟悉VisualBasic和MapObject程序的基本操作。3、掌握toolbar的操作步骤。4、设置GIS二次开发的界面,要求界面具有菜单、工具条及设计程序时用到的各种控件等。二、实验内容1、利用VisualBasic相应控件和操作以及MapObject完成界面设计,运用所安装的MO的控件进行所需界面设计。2、在设计的界面上一次添加菜单、工具条、图例控件、map控件、状态栏等,并熟练掌握其操作步骤。三、实验步骤1、在有MO和VB的环境中进行所设计的界面设计。1)菜单的设计。要求具有一些常用的功能。如下图所示:重庆交通大学测量与空间信息处理实验室第2页共38页2、对toolbar进行设计。在菜单栏下面进行插入Button按钮,并在按钮上插入相应图像。步骤如下图:3、插入map、legend、status等控件,并调整其大小。得到最后成果图如下图所示:四、实验总结4.1、实验中遇到的困难重庆交通大学测量与空间信息处理实验室第3页共38页在进行界面设计时,会遇到一些意想不到的困难,比如在插入toolbar中的Button时,如果没有加入imagelist控件时,就不能在Button上插入图像。还有在进行菜单操作时,有时会因为空格运行不当,而不能得到理想的下拉菜单。4.2、处理方法和技巧在进行设计时,一定要记住操作的先后顺序,不然不能不到效果。插入map和legend等控件时,适当调节其大小,使界面更美观。4.3、经验体会和收获刚开始做实验时感觉好难,不知怎么下手,可在完成这几次实验后我熟悉了MO的最基本功能,发现用VB对GIS进行二次开发没有想象中的那么难,但关于控件的问题很多,而且大家都不是很懂,只能多多交流,从网上搜素相关资料。现如今地理信息系统的应用越来越广发,对它进行二次开发可以更大的发挥此软件的功能。经过这次实习,我学会了MO得使用和安装,也学会了简单的界面设计。使用菜单编辑器,在窗体中插入toolbar,插入map,legend,imagelist等多种控件。初次操作时,很多东西不知道,很多东西不懂,所以做起来比较难,也考验一个人的耐心,但是要不灰心,不气馁,会发现一切变得容易很多。所以不管做什么都要有耐心,沉得住气,才能成功。重庆交通大学测量与空间信息处理实验室第4页共38页实验二加载图层(四种方法)一、实验目的和要求1、熟悉MapObject中commondialog控件的调用方法。2、掌握在VisualBasic中利用MapObject二次开发软件实现command控件、菜单、类模块和toolbar加载Shape图层的操作。二、实验内容1、用菜单的方法加载Shape图层。2、用toolbar的方法加载Shape图层。3、用命令按钮command的方法加载Shape图层。4、用类模块的方式加载Shape图层。三、实验步骤在设计好的界面环境中的菜单、toolbar、command、类模块中分别写入打开图层的代码。进行打开图层的操作。1、运用菜单代开代码:PrivateSubdakaituceng_Click()'第一步,定义一个新的MO对象组的DataConnection对象DimdConnAsNewMapObjects2.DataConnection'第二步,定义一个新的MO对象组的MapLayer对象DimshpLayerAsNewMapObjects2.MapLayerDimfilenameAsString'''第三步,设置DataConnection对象的方法Connection连接到指定的存放数据的地方''dConn.Database=H:\MODevelopDemo\MOandVBDemo\L4-Exam-AddShape\Data'''第三步,利用DataConnection对象的方法Connect进行数据连接''dConn.Connect'''第四步,将MapLayer对象的GeoDataset属性设置为DataConnection对象的FindGeoDataset方法(用Shape文件名作参数)的返回值。''SetshpLayer.GeoDataset=dConn.FindGeoDataset(STATES)重庆交通大学测量与空间信息处理实验室第5页共38页'''第五步,用地图控件Layers对象的方法Add向地图控件中添加Shape图层''Map1.Layers.AddshpLayer'设置对话框过滤器CommonDialog1.Filter=ESRIShape文件(*.shp)|*.shp'对话框显示为打开类型的对话框CommonDialog1.ShowOpen'如果打开文件名的长度为0,则终止这个过程IfLen(CommonDialog1.filename)=0ThenExitSub'设置DataConnection对象的方法Connection连接到当前目录dConn.Database=CurDir'App.pathIfNotdConn.ConnectThenExitSub'MsgBoxdConn.Connect'得到从对话框返回的文件名filename=Left(CommonDialog1.FileTitle,Len(CommonDialog1.FileTitle)-4)'设置图层的数据集'SetshpLayer.GeoDataset=dConn.FindGeoDataset(FileName)SetshpLayer.GeoDataset=dConn.FindGeoDataset(filename)'增加新图层EndSub结果如下图:重庆交通大学测量与空间信息处理实验室第6页共38页2、用toolbar的方式代开图层代码:首先在设置Button时将打开图层的key值标为打开图层。PrivateSubToolbar1_ButtonClick(ByValButtonAsMSComctlLib.Button)SelectCaseButton.KeyCase打开图层Calldakaituceng_ClickEndSelectEndSub得到结果图如下图:重庆交通大学测量与空间信息处理实验室第7页共38页3、用command方式进行打开的代码:PrivateSubCommand5_Click()Calldakaituceng_ClickEndSub得到如下结果:4、用类模块方式打开图层的代码:SubClass1_Initialize()'第一步,定义一个新的MO对象组的DataConnection对象DimdConnAsNewMapObjects2.DataConnection重庆交通大学测量与空间信息处理实验室第8页共38页'第二步,定义一个新的MO对象组的MapLayer对象DimshpLayerAsNewMapObjects2.MapLayerDimfilenameAsString'''第三步,设置DataConnection对象的方法Connection连接到指定的存放数据的地方''dConn.Database=H:\MODevelopDemo\MOandVBDemo\L4-Exam-AddShape\Data'''第三步,利用DataConnection对象的方法Connect进行数据连接''dConn.Connect'''第四步,将MapLayer对象的GeoDataset属性设置为DataConnection对象的FindGeoDataset方法(用Shape文件名作参数)的返回值。''SetshpLayer.GeoDataset=dConn.FindGeoDataset(STATES)'''第五步,用地图控件Layers对象的方法Add向地图控件中添加Shape图层''Map1.Layers.AddshpLayer'设置对话框过滤器Form1.CommonDialog1.Filter=ESRIShape文件(*.shp)|*.shp'对话框显示为打开类型的对话框Form1.CommonDialog1.ShowOpen'如果打开文件名的长度为0,则终止这个过程IfLen(Form1.CommonDialog1.filename)=0ThenExitSub'设置DataConnection对象的方法Connection连接到当前目录dConn.Database=CurDir'App.pathIfNotdConn.ConnectThenExitSub'MsgBoxdConn.Connect'得到从对话框返回的文件名filename=Left(Form1.CommonDialog1.FileTitle,Len(Form1.CommonDialog1.FileTitle)-4)'设置图层的数据集'SetshpLayer.GeoDataset=dConn.FindGeoDataset(FileName)SetshpLayer.GeoDataset=dConn.FindGeoDataset(filename)'增加新图层Form1.Map1.Layers.AddshpLayerEndSub得到结果如图:重庆交通大学测量与空间信息处理实验室第9页共38页四、实验总结4.1、实验中遇到的困难实验中有时操作不当时会加载不了图层。还有在菜单编辑中,由于没在窗体加入对话框,在程序运行的时候就出错。4.2、处理方法和技巧仔细寻找出错的原因,并解决问题。程序不能出错,一旦出错就得不到结果。我们还可以采取一些我们喜欢的而方法,对图层进行设置。比如我们可以进行一些操作,是所加载的图层颜色唯一。4.3、经验体会和收获经过这次实习,我学会了不少东西,比如熟悉MapObject中commondialog控件的调用方法。同时也掌握了在VisualBasic中利用MapObject二次开发软件实现command控件、菜单、类模块和toolbar加载Shape图层的操作。通过对各种打开程序代码的学习,我基本能够自己读懂字里行间的意思,并能对程序代码进行操作,实现打开图层的功能。重庆交通大学测量与空间信息处理实验室第10页共38页在实验中会遇到一些意象不到的困难,有时候甚至根本不知道哪里出错,只能反反复复查看,试运行,知道找出错误并修正它,使工作量大大增加,只有肯多花时间在上面,才能很好地完成任务。重庆交通大学测量与空间信息处理实验室第11页共38页实验三放大、缩小、平移和全视图一、实验目的和要求学会在菜单、toolbar中添加相应的程序代码实现所加载图层的放大、缩小、平移以及全视图操作。二、实验内容1、用程序代码实现图层的放大操作功能。2、用程序代码实现图层的缩小操作功能。3、用程序代码实现图层的平移操作功能。4、用程序代码实现图层的全视图操作功能。三、实验步骤1、实现图层的放大功能代码:PrivateSubMap1_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)Ifi=1ThenSetMap1.Extent=Map1.TrackRectangleEndIfEndSubPrivateSubfangda_Click()bZoomOrPan=True'标志放大状态i=1'设置鼠标指针Map1.MousePointer=moZoomInEndSub结果如图所示:重庆交通大学测量与空间信息处理实验室第12页共38页2、图层缩小功能代码:PrivateSubMap1_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)Ifi=2ThenDimrAsMapObjects2.rectangleSetr=Map1.Ext

1 / 38
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功