




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计报告(20142015学年第1学期)题目名称:基于GIS的南阳市旅游信息系统的设计与开发课程名称: GIS设计与开发 年级与专业: 11级地信一班 课程设计小组成员姓名与学号 311105030121 石浩 (组长) 311105030118 潘飞宏 311105030116 吕华奇 311105030120 沈希凡 授课教师: 葛小三 批阅意见: 2014年9月26日基于GIS的南阳市旅游信息系统的设计与开发 摘要:基于Arcgis的旅游信息系统,特别是运用MicrosoftVisualStudio技术实现了地图加载,查询功能,路线查询等功能,并以南阳市为例,进行了实践探索。在此软件的基础上又对地图运用ArcMap进行了一系列的处理,添加了超链接等一系列功能,便于游客对景点,酒店,地区的详细信息的查询,制定适合自己的路线。 关键词:旅游;信息系统;南阳;MicrosoftVisualStudio1引言(1)改革开放以来,伴随着中国旅游业的高速发展,我国旅行社行业发生了巨大的变化,特别是近十年来,行业规模不断扩大,从业人员不断增加,经营体制不断创新,经营环境不断改善,中国旅游业已经成为我国拉动经济增长、扩大就业渠道的重要的服务行业之一。广西壮族自治区的南阳市,地处广西壮族自治区东北部,10936至11129、北纬2415至2623,平均海拔150米,总面积 27809 平方公里,是世界著名的风景游览城市和历史文化名城,。(2)Arcengine概述ArcGIS Engine是用于构建定制应用的一个完整的嵌入式的GIS组件库。利用ArcGIS Engine,开发者能将ArcGIS功能集成到一些应用软件。1.ArcEngine包括核心ArcObjects的功能,是对AO中的大部分接口、类等进行封装所构成的嵌入式组件。2.ArcEngine中的组件接口、方法、属性与AO是相同的。开发环境 :ArcObjects必须依赖ArcGIS Desktop桌面平台,即购买安装了ArcGISDesktop的同时,安装ArcObjects,才能利用AO进行开发;ArcEngine是独立的嵌入式组件,不依赖ArcGISDesktop桌面平台,直接安装ArcEngine Runtime和DeveloperKit后,即可利用其在不同开发语言环境下开发。AO的功能更强大,AE的功能相对弱些,AE不具备AO的少部分功能。ArcEngine具有简洁、灵活、易用、可移植性强等的特点。2南阳市旅游信息系统设计2.1系统功能设计(1)在公众信息服务功能模块中主要实现了两个功能:地图属性双向查询功能以及交通出行支持功能,如图4-6所示。其中地图属性双向查询功能实现了基础地理信息查询功能。在该功能模块中,实现了线路名称查询、公交站点信息查询以及道路名称查询,在查询过程中输出查询结果并在地图上进行地理定位,选中查询的信息在电子地图上高亮显示。交通出行支持功能主要实现交通出行者比较关心的信息查询,如酒店宾馆信息查、公交路径查询、停车场信息查询以及售票信息查询等。公众信息服务功能地图-属性双向查询功能交通出行支持功能站点查 询道路名称查 询线路名称查 询路径信息查 询路况信息查 询停车信息查 询售票信息查 询出行辅助信息查询(2)在统计查询与分析功能模块中主要实现了重复系数计算、站点覆盖率的计算、线路覆盖率的计算以及缓冲区分析四个功能模块。统计查询与分析功能重复系数站点覆盖率线路覆盖率缓冲区分析利用缓冲区分析功能实现了对某公交站点周围情况的简单分析。缓冲区是地理空问目标的一种影响范围或服务范围,而缓冲区分析研究根据GIS数据库的点、线、面实体,自动建立起周围一定范围内的缓冲区多边形,帮助解决临近度问题。缓冲区是给定一个几何图形和一个缓冲距离,进行缓冲区运算后,返回一个多边形,此多边形覆盖了到该几。何图形的距离小于或者等于缓冲距离的所有点。缓冲区根据基础图层的几何类型分为点缓冲区、线缓冲区和面缓冲区。在实际应用中可以通过指定缓冲区距离生成指定距离缓冲区;可基于要素的某属性字段创建一个可变距离生成缓冲区。在缓冲区分析模块中,主要实现了对指定点要素进行缓冲区操作,并融合相邻缓冲区的功能。公交站点覆盖率的计算时通过基于空间位置查询方法来实现的。基于空间位置查询是根据对象的空间位置查询有关的属性信息,又叫“图形查属性。在此实现了统计地图上与指定范围相交的公交站点的个数,同时计算选择范围的面积,分析选中区域的公交站点的覆盖率,最后以对话框的形式输出统计结果。(3)地图数据是电子地图的核心,正确有效地对地图数据分析建模是提高地图数据库存储和操作的关键。地图数据空间数据属性数据点状地 物线状地 物面状地 物 由于本系统是使用ArcEngine组件进行二次开发,所以由ArcEngine本身来管理电子地图数据。ArcEngine可以使用shape文件、图像文件、属性表或通过ESRI的专用数据库引擎连接专用数据库。Shape文件是地图数据的矢量形式,图像文件是栅格图像或航空卫星的畸变图形的纠正片,属性表是可用ODBC装入的任意格式,专用数据库是网络上通过ESRI专用数据库引擎连接的UNIX服务器。在本系统只包含了Shape文件,并将这些文件全部装入到地理数据库。2.2系统结构设计 本系统是为了方便广大游客去南阳市旅游而设计开发的,采用Arcengine软件,构建组件窗口,编写代码,设计开发一些自主功能。ArcEngine相当于控件,它可以加载在多种编程软件中使用。现今,ArcEngine编程语言一共有三种。SDK for c#,可以在Visual Studio2008等系列中加载工具箱控件后进行编程开发。SDK for VB,很显然,当我们安装了ArcGis for VB时,则可以用Visual Basic编程软件来加载控件后编程。也需要把ArcGis License服务停止。SDK for C+,如果你下载的Visual Studio支持C+编程,那么可以在VS当中加载控件,和一样。不同的是,你添加Form或者网页时语言要选择c+。2.3系统数据采集与数据库设计(1)系统数据采集超链接图层属性下载南阳市地图到桌面,经过ArcGis处理,描述路线,加载正确位置点的名称和坐标,输出成矢量桂林市地图。然后再经过catalog创建要素,新建网络数据集和几何数据集处理路线,以便于进行最短路径的代码实现。在属性表中添加超链接地址,在ArcGis中形成超链接。(2)系统数据库设计在本系统的数据库中,把空间数据库和属性表集合都放在ArcGis中进行处理,在catalog中新建个人地理数据库,添加已有的矢量地图然后再进行其他处理来获得所需的地图。添加矢量地图3南阳市旅游信息系统的功能实现本系统是以c+开发语言为基础,在Arcengine上二次开发完成的。从本次开发基础上可以看出Arcengine的开发窗口还是比较完善的,有利于各种控件的组合和利用,功能也是比较齐全的,便于我们设计开发。(1) 数据管理模块在ArcGis中增加和删减所需用户的个数,并在Arcengine中显示和运行。(2) 空间数据和属性编辑和更新在ArcGis的catalog中创建数据集,简单的编辑操作如画点、画线、画面等都可以完成,通过设置MapControl控件可以显示在地图上。在ArcGis中显示某一图层的属性表在其中修改和添加字段,来完成属性的更新和编辑。属性表更新首先根据图层属性中的字段创建一个空的DataTable,然后根据数据内容一行行填充DataTable数据,再将DataTable绑定到DataGridView控件,最后调用并显示属性表窗体。在Arcengine中通过右键菜单来实现这一种功能,在AE开发中,右键菜单有两种实现方式,一是使用VS2005自带的ContextMenuStrip控件,二是用AE封装的IToolbarMenu接口。相比较而言,后者更为简单实用,本文采用后者的实现方法。公路属性表(3) 地图操作模块实现如下图所示地图操作(4)加载ArcGIS控件1、加载组件:将ArcGIS的组件库导入VC中,才能使用它说提供的组件接口、类型和对象。在此采用“import语句来实现组件导入。“import语句可以实现自动创建编译器所需要的组件相关文件。#import “D:Program FilesArcGIScomesriSystem.olb” raw_interfaces_only, raw_native_types,no_namespace,named_guids,exclude(“OLE_COLOR”,”OLE_HANDLE”,”VARTYPE”)在此需要注意的是,在ArcGIS9中有很多的组件类型库,每个具有不同的功能函数,而且每个类型会调用其它类库中的内容,但是“import不会自动包含所需的类库。如当引入esriGeometry组件时,需要参考esriSystem中定义的类型,因此就必须在引入esriGeometry前引入esriSystem,因此在组件导入时需要注意一些类库的顺序。2、添加控件:在VC工程中从Project菜单的Add To Project中“添加引用”菜单项添加所需的控件。在此添加了MapControl、PageLayoutControl、TOCControl、ToolbarControl和LicenseControi五个控件。3、建立控件关联:将MapControl、PageLayoutCotrol、ToolbarControl和TOCControl控件添加到应用工程中后,添加代码,建立三个控件间的关联,来实现地图的显示和操作。实现图层控制功能在同一个文件夹下加载如果你的程序和GIS图层文件(dbf、shp、shx等)在一个文件夹,图层为Mexico文件夹下的States和Rivers,加载程序如下:(工程Chapter302一Form01)Option ExplicitPrivate Sub Form_Load()Dim dc As New DataConnectionDim layer As MapLayerdc.Database = App.Path设当前文件夹为图层文件夹;If Not dc.Connect ThenMsgBox 在指定的文件夹下没找到图层数据文件!EndEnd IfSet layer = New MapLayerSet layer.GeoDataset = dc.FindGeoDataset(States)Map1.Layers.Add layerSet layer = New MapLayerSet layer.GeoDataset = dc.FindGeoDataset(Rivers)Map1.Layers.Add layerMap1.RefreshEnd Sub加载图层后,要用Map1.Refresh进行刷新后一样显示。 在不同文件夹中加载由于在实际的应用程序中,图层文件和程序文件都很多,为了方便管理,一般程序文件和图层文件不放在一个文件夹,推荐采用一个文件夹(如DATA)单独存放图层文件,而把各个程序文件和它并列放置。例如应用程序文件夹路径为“D:MO”,程序在“D:MOVB1”文件夹下,图层文件放在“D:MOMexico”文件夹下,这时要用+”.”返回上级文件夹;(工程Chapter301一Form02)Option ExplicitPrivate Sub Form_Load()Dim dc As New DataConnectionDim layer As MapLayerdc.Database = App.Path + . + MexicoIf Not dc.Connect ThenMsgBox 在指定的文件夹下没找到图层数据文件!EndEnd IfSet layer = New MapLayerSet layer.GeoDataset = dc.FindGeoDataset(States)Map1.Layers.Add layerSet layer = New MapLayerSet layer.GeoDataset = dc.FindGeoDataset(Rivers)Map1.Layers.Add layerMap1.RefreshEnd Sub如果你的图层文件夹要向上返回2级,可以用以下2级返回语句:dc.Database = App.Path + . + Mexico 图层的卸载和移动用语句:Map1.Layers.Remorve O可以把第O层卸载。注意:卸载了一个图层后,其它图层的序号就发生了变化。用语句:Map1.Layers.Clear可以一次卸载所有的图层。可以用MoveTo方法来把图层从位置l移动到位置2,如原来图层cities在第2层,用以下语句可以把它移动到第0层:Map1.Layers.MoveTo 2,0(5)实现地图符号化1、图层渲染在实现图层渲染功能时,主要用到了三类组件:渲染器组件、符号组件合样式库组件。下面对这三类组件进行简单介绍。1) 渲染器组件:一个特征渲染器就是一个特征层的绘制方法。特征渲染器使用符号和颜色来可视化地显示一个地图。如果要从图层中获取特征渲染器,应该先查询IGeoFeatureLayer接口,获取其Randerer属性。如果渲染器不存在,则创建一个新的简单渲染器。当一个新的特征类的特征类加载到图层中是,默认渲染器是一个简单渲染器。力验查是否是特征层Hr=ipLayer-QueryInterface(IID IGeoFeatureLayer,(void+)ipGeoFeatureLayer);办检查是否有一个简单渲染器,并获取其指针hr=ipGeoFeatLyr-get Renderer(&ipRndrr);ff(ipSimpleRndrr=ipRadrr)=NULL)letllrn FALSE;简单渲染器(Simple render)组件类使用同一个符号绘制所有地理特征。地图符号通常与图层的几何类型相匹配,面状符号绘制多变性,线状符号绘制线,点状符号绘制点。2、图层标注在实现图层标注之前,要先用ArcMap的样式管理器向land_useStyle文件中中添加标注类字体符号,然后使用MakeServerStyleSetexe工具,将桌面样式库land_usestyle文件转为服务器库文件land_useSeverStyle。地图标注具体实现如下。IStyleGalleryltemPtr ipSGltem;IUnknownPtr ipUnk;ITextSymbolPtr ipSymbol;ipSGltem-GetStyleGallltem(”XXXfl,Text Symbols”,”,”F:毕业设计hMyMapkstyleServerStyle”);从样式库文件中读取样式hr=ipSGltem-get_Item(&ipUnk);i自ffamev(hr)D(ipSymbol=ipUnk)-NULL) return FALSE;hr=ipLEnginePropputref_Symbol(ipSymb01);(6)站点信息查询下面以查询公交站点信息为例来说明数据访问的基本过程。首先获取要访问的目标图层,在此用到了CMapCompoer类中的GetLyrByName(CString)函数。然后由接口IFeatureLayer获得特征类(FeatureClass)。获得特征类之后,找到目标层中要访问的字段。最后通过循环获得每一项的各个字段的值,并以列表的形式输出。具体实现如下:脓得目标层ILayerPtr ipLyr=MapComposerGetLyrByNamel(”公交站点”);IFeatureLayerPtr ipFLyr; 巡(ipFIp=ipLyr)=-NULL) return FALSE;脏取特征类HRESULT hr; IFeatureClassPtr ipFC;hr-=ipFLyr-get_FeatureClass(&ipFC);获取访问字段IongisName;hr=m_ipFCSchool-FindField(Cbstr_t)”NAME,&isName);过循环取得每一项的各个字段的值IFeaturePtr ipFeature;VARIANTvat;CString Name;long i,iCnt,iCurlD;IQucryFilterPtr ipOF(CLSID_OueryFiltcr);hr=m_ipFCSch001FeatureCount(ipOF,&iCnt);for(iCarlD=0,i-0;iGetFeature(iCurlD,&ipFeature);取值hr=ipFeatuxeget_Value(isName,vat);ifffAILFD(hr) continue;Name=varbstrVal;(7)路径信息息查询在此主要实现公交起讫站点的查询。输入起点和终点,查找起点到终点的公交线路,并在地图上显示出所经过的公交站点,同时以列表的形式输出具体的公交站点信息。通过调用函数GetLyrByName获取公交站点图层CMapCompoer MapComposer;, MapComposerm ipMapCS=m_ipMap;jycPtr ipLyr=MapComposerGetLyrByName(”公交站点);IFeatureLayerPtr ipFeatLyr;,HRESULT lIf:从FeatureIayer获得FeatureClassIFeatureClassPtr ipFC; 111,=ipFeatLyr-get_FeatureClass(&ipFC);一查询公交车次包括转乘车次CString str;查询条件,获取查询过滤条件的过程IQueryFilterPtr ipOF(CLSID_QueryFilter); 查询过滤hr=ipQF-put_WhereClause(_bstr_t)str);所匝过查询过滤选择FeatureISelectionSetPtr ipSelSet; IFcatureSelectionPtr ipFeatSel(ipFeatLyr);ipFeatScl一SelectFeatures(ipQF,esriSelectionResultNew,VARIANT_FALSE);hr=ipFtSelget_SelectionSet(&ipSelSet);删新地图IActiveViewPtr ipAV(m_ipMap);hr=ipAV-PartialReffesh(esriViewGeoSelection,NUUNUL峨CTableViewGongJiaoXian Dig;DlgSetShowGongJiaoHuanCheng(ipSclSct);DlgDoModalO;脂息输出(8)道路信息查询通过输入具体路段的名称,在地图上高亮度显示出该路段的在地图上的具体位置。此查询功能是通过选择数据来实现的。选择数据有两种方法,一种是向ToolBar空间添加个选择按钮实现选择的功能;另种是通过指定相应字段查询过滤来选择数据。在此主要实现后一种方法。在实现此功能的过程中,主要用到了查询、光标、选择集和查询过滤这些对象,因此,先对此进行简单介绍。查询定义(QueryDef)对象代表了对一个或多个表或特征类的数据库查询。查询的结果已光标的形式返回给应用程序,由应用程序来通过光标获取查询结果集中的行对象。选择集对象允许应用程序指向一个选中对象的集合,这些对象当是同属一个表或特征类的行。光标是一个数据访问对象,可以用来一次完整的复述一个表或查询的集合。在此用到了AO中的搜索光标,它可以用来获取用查询过滤确定的行,支持NextRow方法。特征光标对象是一种光标,特征光标基于特征类,而普通光标基于一般的表,除此之外两者没有区别。查询过滤对象定义了对于表数据的基于属性值的一个过滤条件,用来限定用单个表或特征及获取的行与列的集合。查询过滤首要的应用场合是在打开一张表的光标时定义要获取的行集合,另外在一些需要定义表中数据的一个子集时也会用到。下面以查询“百丈路为例实现数据选择。通过调用函数GetLyrByName获取目标层CMapCompoer MapComposer; MapComposcrm_ipMap=m_ipMap;BayerPtr ipLyr=MapComposeTGetLyrByName(”lu”)查询Road图层1FeaturcLaycrPlr ipFcatLyr;,if(ipFeatLyt=ipLyr)=NULL) ifturn FALSE;HRESULT hr;从FeatureLayer获得FeatureClass。IFeatureClassPU ipFC;hr=ipFeatLyr-get_FeatureClass(&ipFC);设置where子句来查询过滤,这里设置过滤NAME字段为JB-1的所有项CString str=“路段名=百丈路”;lOueryFilterPtr ipQF(CLSID Qu上ryFilteO;hr=ipQF-put_WhereClause(_bstr_t)str);通过查询过滤选择FeatureISelectionSetPtr ipSelSet; IFeatureSelectionPtr ipFeatSel(ipFeatLyr);ipFeatSel-SelectFeatures(ipQF,esriSelectionResultNew,VARlANT_FALSE);ht=ipFeatSelget SelectionSet(&ipSelSet);(9)实现缓冲区分析功能该功能实现了对指定要素进行缓冲区操作,并融合相邻缓冲区的功能。空间几何图形集合运算需要用到的接口主要包括ITopologicalOperator、IGeometry等。ITopologicalOperator提供了一系列几何图形的空间拓扑算子,利用该接口可根据现存的几何图形之间的拓扑关系创建一个新的几何图形。GeometryBag、Multipoint、Point、Polyline、Polygon等组件被封装与该接口中。在此用到的主要方法如下:Buffer:用于根据指定几何图形和缓冲区距离生成缓冲区。其原形为:HRESULT Buffer(double DistanceIGeometry幸毒outBuffer);Distance:表示缓冲区的距离,其单位与指定几何图形的单位保持一致;outBuffer:表示输出的几何图形。outBuffer:表示输出的几何图形。x寸每一个几何图形进行缓冲区操作IFcaturePtr ipFeat; ipEnuFeatNext(&ipFeat);ITopolo#calOperatorPtr ipTopoOpc;wh
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 索引动态更新算法-洞察及研究
- 慢镜头技术的情感传递研究-洞察及研究
- 碳中和国际合作路径-洞察及研究
- 人民法院建筑方案设计
- 零延迟交互技术-洞察及研究
- 化肥厂化肥渠道开发规定
- 河北省张家口市蔚县2025-2026学年上学期九年级历史第一次月考质量检测题(无答案)
- 物联感知技术和智慧城市建设-洞察及研究
- 安徽省安庆市九一六学校2024-2025学年高三下学期第七次强化训练物理试题(含答案)
- 北京市文汇中学2024-2025学年八年级下学期4月期中道德与法治试题
- 颈部引流管的护理
- 2025至2030中国门诊外科中心行业项目调研及市场前景预测评估报告
- 2025年食药监局考试题库
- 2024年下半年黑龙江省嫩江铁路有限责任公司校招笔试题带答案
- 2025廉洁答题题库与答案
- 2025年协作机器人产业发展蓝皮书-高工咨询
- 整本书阅读教学课件
- 企业法制讲座课件
- 医院禁烟控烟管理制度大全(10篇)
- 【高朋律师事务所】RWA发展研究报告:法律、监管和前瞻(2025年)
- 汽车网销电话邀约话术培训
评论
0/150
提交评论