超图课程设计.docx
- 文档编号:6898107
- 上传时间:2023-01-12
- 格式:DOCX
- 页数:30
- 大小:5.09MB
超图课程设计.docx
《超图课程设计.docx》由会员分享,可在线阅读,更多相关《超图课程设计.docx(30页珍藏版)》请在冰豆网上搜索。
超图课程设计
1课题背景
随着网络技术的迅速发展,各种行业纷纷应用网络技术操作和管理。
当然大随着网络技术的迅速发展,各种行业纷纷应用网络技术操作和管理。
当然学校是一个很大的管理系统,随着学生的大量增加,其管理难度也越来越大,如何将校园导航做好,给予大家提供一定的方便,这就是我们研究这个课题的目的。
在计算机迅速发展的今天,将计算机这一信息处理器应用于学生的个人生活之中已是势必所然,而且这也将校园导航带来前所未有的改变。
采用计算机对校园导航是信息科学化和现代化的重要标志,它也给各大高校带来了明显的社会效益。
主要体现在:
极大地提高了在校师生的方便,给大家对学校的了解,给予了很大的便利。
为了能够更好的给在校师生提供一个校园导航,通过对校园各个建筑物进行了解、勘察,同时,我认为本系统会对我们的生活提供极大的便利,具有一定的实际开发价值和使用价值。
2 需求分析
应用二次开发模式,以VisualBasic为软件环境,运用Supermap面向对象的二次开发语言,开发出一个山西农业大学校园电子导航地图。
系统应具有以下功能:
1.校园全貌展示(放大、缩小、漫游);
2.普通双向查询,包括图查属性,属性查图功能;
3.最佳路径分析。
2.1地图操作功能
地图显示是地理信息系统的基本模块。
在本系统中,设计了各种地图符号,使图形简洁而形象。
在地图操作功能模块中,可以快速显示矿大校园地图,实现地图放大、缩小、全图显示;二维平面图和三维场景的切换显示;选择、距离量算、面积量算功能;模糊查询的实现,使地图操作更加人性化。
2.2信息查询功能
本系统中,信息查询是一个最主要的功能,主要实现了区域位置查询、服务信息查询、最近设施查询、路经查询。
此项功能帮助用户熟悉校园各类建筑设施的位置及信息,特别是最优路径查询,根据用户提供的若干个位置点和选择的交通工具方式,分析连接各点的最优路径,在地图上高亮显示,并且能进行路径导航显示。
3.课程设计过程
1.对校园影响矢量化、专题制作。
2.实现电子地图的浏览功能
3.校内单位的查询(地块、建筑物)
4.导航功能的实现(最佳、最短路径分析)
5.写出分析、设计报告。
4.课程设计任务
3.1专题图制作
3.1.1.总体设计:
明确制图目标,搜集专题图制作相关资料与数据,制定专题图技术路线与流程,要求技术路线完整,实施性强;
3.1.2.详细设计:
1)专题图制作所需数据的收集与整理,要求数据的现势性好,精度高;
2)地理地图的制作,要求符合国家基本比例尺地形图的要求,内容完整、符合制图规范;
3)专题属性信息的整理与编辑,要求信息丰富,现势性好,数据完整准确;
4)专题地图的设计与制作,要求制图设计方案合理,颜色协调、符号分级明确;
5)专题图的布局与整饰,要求布局合理,要素完善,配置协调。
3.2.空间分析的应用
1.分析问题,应用GIS空间分析功能设计解决方案;
2.收集必要的数据,进行数据转换、编辑与重分类;
3.依据空间分析模型进行数据的各项空间分析。
4.输出地图、图例及图表等可视化成果;
5.不同分析模型间的成果分析与比较。
5.课程设计步骤
5.1专题地图的制作
5.1.1收集山西农业大学遥感地图,可通过稻歌在谷歌地图中进行裁剪,获得底图。
图1裁剪后农大遥感图
5.1.2将图片文件转换成shapefile格式导入到Arcmap中。
图2导入
5.1.3分别建立底图层、道路层、道路缓冲区层、建筑物层等,进行地图矢量化。
图3道路层矢量化
图4建筑物层
图5公共设施层
图6标记地点名称
5.1.4由此,便完成了地理底图的编制。
图7完成地图矢量化
5.2查询界面的建立
查询界面阅览
5.3功能实现
5.3.1打开数据并全幅显示
关键代码:
PrivateSubForm_Load()
'建立地图窗口与工作空间的联系,用于显示数据
SuperMap1.ConnectSuperWorkspace1.Object
DimstrAliasAsString'数据源别名
DimnEngineTypeAsseEngineType'数据源引擎类型
DimstrDataSourceNameAsString'数据源所在路径
DimobjDataSourceAssoDataSource'数据源对象,指向打开的数据源
DimbReadOnlyAsBoolean'数据源是否只读打开
DimobjLayerAssoLayer'图层对象变量,指向将要打开的图层
DimbAddToHeadAsBoolean'是否将数据集加到地图最上一层显示
DimiAsInteger'数据集索引
strAlias="MyDataSource"'别名可任意,但建议取数据源文件名相同的名称,便于区分
nEngineType=sceSDBPlus'可打开不同引擎的数据源,此处打开文件型SDBPlus
strDataSourceName="C:
\ProgramFiles(x86)\SuperMap\SuperMapDeskpro6\Samples\sxau\sxau.sdb"'数据源所在路径,也可以是相对路径
bReadOnly=False'非只读打开
'打开数据源
SetobjDataSource=SuperWorkspace1.OpenDataSource(strDataSourceName,strAlias,nEngineType,bReadOnly)
IfobjDataSourceIsNothingThen
MsgBox"打开数据源失败!
",vbInformation
Else
Fori=1ToobjDataSource.Datasets.Count
'把数据源中的所有数据集加入到SuperMap中显示
bAddToHead=True
SetobjLayer=SuperMap1.Layers.AddDataset(objDataSource.Datasets.Item(i),bAddToHead)
Next
EndIf
'刷新地图窗口
SuperMap1.Refresh
'可定制选中对象风格,或保持默认
SuperMap1.selection.style.PenColor=RGB(231,77,0)
SuperMap1.selection.style.PenWidth=1
SuperMap1.selection.style.PenStyle=1
SuperMap1.selection.style.BrushStyle=5
SuperMap1.selection.style.BrushColor=RGB(115,69,140)
SuperMap1.selection.style.BrushBackColor=RGB(239,150,255)
SuperMap1.selection.style.BrushOpaqueRate=50
'释放内存
SetobjDataSource=Nothing
SetobjLayer=Nothing
EndSub
PrivateSubCommand6_Click()
SuperMap1.ViewEntire
EndSub
5.3.2长度测量并将结果显示在文本框中
关键代码:
PrivateSubCommand1_Click()
SuperMap1.Action=scaTrackPolyline
EndSub
PrivateSubSuperMap1_Tracking(ByValxAsDouble,ByValyAsDouble,ByValdCurrentLengthAsDouble,ByValdCurrentAngleAsDouble,ByValdTotalLengthAsDouble,ByValdTotalAreaAsDouble,ByValnButtonClickedAsLong)
DimjieguoAsString
jieguo="当期长度="+Str(dCurrentLength)+"--总长度="+Str(dTotalLength)
Text2.Text=jieguo
EndSub
5.3.3实现自由缩放功能
关键代码:
PrivateSubCommand5_Click()
SuperMap1.Action=scaZoomFree
EndSub
5.3.4实现地图的缩小功能
关键代码:
PrivateSubCommand7_Click()
SuperMap1.Action=scaZoomOut
EndSub
5.3.5实现地图的放大功能
关键代码:
PrivateSubCommand4_Click()
SuperMap1.Action=scaZoomIn
EndSub
5.3.6实现图查属性功能
关键代码:
PrivateSubCommand8_Click()
SuperMap1.Action=scaSelect
EndSub
5.3.7实现属性查图功能
关键代码:
PrivateSubCommand9_Click()
SuperMap1.Action=scaSelect
DimobjDsAssoDataSource'数据源
DimobjDtVectorAssoDatasetVector'矢量数据集
DimobjRecordsetAssoRecordset'记录集
DimobjSelectionAssoSelection'选择集'取矢量数据集:
取其中面数据集"World"进行查询
SetobjDs=SuperWorkspace1.Datasources.Item("MyDataSource")
IfobjDsIsNothingThenExitSub
SetobjDtVector=objDs.Datasets("building")
IfobjDtVectorIsNothingThen
MsgBox"打开数据集错误",vbInformation
ExitSub
EndIf
'使用SQL过滤条件安从数据集中查询出记录集,SQL条件的WHERE子句部分从编辑框中获取。
(Query方法只适用于soDatasetVector类对象)
SetobjRecordset=objDtVector.Query(Text1.Text,True)
IfobjRecordsetIsNothingThen
ExitSub
Else'将查询结果加入到选择集中,使其高亮显示
SetobjSelection=SuperMap1.selection
objSelection.FromRecordsetobjRecordset
SuperGridView1.ConnectobjRecordset'SuperGridView1.'刷新地图窗口
SuperMap1.Refresh
EndIf
SetobjDs=SuperWorkspace1.Datasources.Item("MyDataSource")
IfobjDsIsNothingThenExitSub
SetobjDtVector=objDs.Datasets("building")
IfobjDtVectorIsNothingThen
MsgBox"打开数据集错误",vbInformation
ExitSub
EndIf
'使用SQL过滤条件安从数据集中查询出记录集,SQL条件的WHERE子句部分从编辑框中获取。
(Query方法只适用于soDatasetVector类对象)
SetobjRecordset=objDtVector.Query(Text1.Text,True)
IfobjRecordsetIsNothingThen
ExitSub
Else'将查询结果加入到选择集中,使其高亮显示
SetobjSelection=SuperMap1.selection
objSelection.FromRecordsetobjRecordset
SuperGridView1.ConnectobjRecordset'SuperGridView1.
'刷新地图窗口
SuperMap1.Refresh
EndIf
EndSub
5.3.8实现地图的漫游功能
漫游前
漫游后
向右漫游
向左漫游
关键代码:
PrivateSubCommand3_Click()
SuperMap1.Action=scaPan
EndSub
5.3.9闪烁功能与风格设置
关键代码:
PrivateSubTimer1_Timer()
DimselectionAssoSelection
Setselection=SuperMap1.selection
Ifselection.Count>=1Then
DimrecordsetAssoRecordset
Setrecordset=selection.ToRecordset(False)
recordset.MoveFirst
Setgemtry=recordset.GetGeometry
DimstyleAsNewsoStyle'定义跟踪点风格变量
selection.RemoveAll
EndIf
IftmMod2=0Then
Withstyle
.PenColor=vbRed
.PenWidth=5
.BrushColor=vbYellow
.BrushStyle=10
EndWith
Else
Withstyle
.PenColor=vbGreen
.PenWidth=5
.BrushColor=vbRed
.BrushStyle=10
EndWith
EndIf
SuperMap1.TrackingLayer.ClearEvents
SuperMap1.TrackingLayer.AddEventgemtry,style,"闪烁对象"
SuperMap1.TrackingLayer.Refresh
tm=tm+1
EndSub
5.3.10查询最短路径
关键代码:
PrivateSubCommand2_Click()
DimobjNetAnalystAsNewsoNetworkAnalyst'网络分析对象
DimobjDTVAssoDatasetVector'网络数据集
DimobjSelectionAssoSelection'网络分析结果的选择集
'获得网络数据集)
SetobjDTV=SuperMap1.Layers
(1).Dataset
IfobjDTVIsNothingThenExitSub
'进行最佳路径的网络分析,并将结果显示
SetobjSelection=objNetAnalyst.FindPathEx(objDTV,objfrompoint,objtopoint,1000,True)
IfobjSelectionIsNothingThen
MsgBox"分析失败!
",vbInformation
ExitSub
Else
SuperMap1.selection.RemoveAll
SetSuperMap1.selection=objSelection
EndIf
SuperMap1.Refresh
SetobjNetAnalyst=Nothing
SetobjDTV=Nothing
Setobjfrompoint=Nothing
SetobjSelection=Nothing
Setobjtopoint=Nothing
EndSub
PrivateSubCommand10_Click()
qi=True
SuperMap1.Action=scaSelect
EndSub
PrivateSubCommand11_Click()
zhong=True
SuperMap1.Action=scaSelect
EndSub
PrivateSubSuperMap1_MouseDown(ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSingle)
Ifqi=TrueThen
objfrompoint.x=SuperMap1.PixelToMapX(ScaleX(x,vbTwips,vbPixels))
objfrompoint.y=SuperMap1.PixelToMapY(ScaleY(y,vbTwips,vbPixels))
qi=False
EndIf
Ifzhong=TrueThen
objtopoint.x=SuperMap1.PixelToMapX(ScaleX(x,vbTwips,vbPixels))
objtopoint.y=SuperMap1.PixelToMapY(ScaleY(y,vbTwips,vbPixels))
zhong=False
EndIf
EndSub
6.课程设计总结
6.1成员分工
杜会芳:
负责专题地图的矢量化处理;
高婷、关晓丹:
负责地图的功能实现;
周小驰:
整理分析课程设计总结。
6.2心得体会
在这次GIS的课程设计中我们小组确实付出很多的努力,以前的实验总是按照书本来操作,但是这次有些不同,虽然有借鉴之处,除此之外自己不仅提高GIS的应用基础,而且在一定程度上更加深层次的了解到GIS的作用及功能,为以后的会提供了很好的基础。
通过此次课程设计,使我们更加扎实的掌握了有关ArcGis方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我们在这方面的知识欠缺和经验不足。
实践出真知,通过亲自动手操作,使我们掌握的知识不再是纸上谈兵。
在课程设计过程中,我们不断发现错误,不断改正,不断领悟,不断获取。
最终的检测调试环节,我们小组组员为每一个错误的修改正确而欢呼。
通过这次课程设计,认识到这个软件的强大及方便。
我们巩固了对地理信息系统数据结构理解,基本上掌握了地理信息系统空间数据库的设计思路,掌握了GIS基础平台的使用方法,包括数据的输入、数据的处理、图形的编辑、数据库设计、空间分析和专题地图的输出等,为以后的学习奠定了基础。
回顾起此课程设计,至今我们仍感慨颇多,从理论到实践,不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
此次设计也让我们明白了思路即出路,有什么不懂不明白的地方要及时请教或上网查询,只要认真钻研,动脑思考,动手实践,就没有弄不懂的知识,收获颇丰。
6.3结语
校园导航系统的建立是校园数字化的一种表现。
同时为学校日后建立科学、智能、网络一体化的综合校园管理体系奠定了基础。
本校园导航系统应用SuperMapDeskpro6,实现了图形数据编辑处理,其为校园导航系统提供了可有效使用的地理底图。
利用SuperMapObjects全面的GIS功能,使系统实现了属性数据与空间数据双向查询、空间分析、空间数据的数据库存储与管理等功能。
7.附录
全体实现代码
PublictmAsInteger
PublicgemtryAssoGeometry
PrivateSubCommand1_Click()
SuperMap1.Action=scaTrackPolyline
EndSub
PrivateSubCommand2_Click()
DimobjNetAnalystAsNewsoNetworkAnalyst'网络分析对象
DimobjDTVAssoDatasetVector'网络数据集
DimobjSelectionAssoSelection'网络分析结果的选择集
DimobjfrompointAssoPoint
DimobjtopointAssoPoint
'获得网络数据集
SetobjDTV=SuperMap1.Layers
(1).Dataset
IfobjDTVIsNothingThenExitSub
'进行最佳路径的网络分析,并将结果显示
SetobjSelection=objNetAnalyst.FindPathEx(objDTV,objfrompoint,objtopoint,1000,True)
IfobjSelectionIsNothingThen
MsgBox"分析失败!
",vbInformation
ExitSub
Else
SuperMap1.selection.RemoveAll
SetSuperMap1.selection=objSelection
EndIf
SuperMap1.Refresh
SetobjNetAnalyst=Nothing
SetobjDTV=Nothing
Setobjfrompoint=Nothing
SetobjSelection=Nothing
Setobjtopoint=Nothing
EndSub
PrivateSubCommand3_Click()
SuperMap1.Action=scaPan
EndSub
PrivateSubCommand4_Click()
SuperMap1.Action=scaZoomIn
EndSub
PrivateSubCommand5_Click()
SuperMap1.Action=scaZoomFree
EndSub
PrivateSubCommand6_Click()
SuperMap1.ViewEntire
EndSub
PrivateSubCommand7_Click()
Supe
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 超图 课程设计