黑龙江省旅游景点查询系统设计学士学位论文 推荐.docx
- 文档编号:6689955
- 上传时间:2023-01-09
- 格式:DOCX
- 页数:13
- 大小:549.81KB
黑龙江省旅游景点查询系统设计学士学位论文 推荐.docx
《黑龙江省旅游景点查询系统设计学士学位论文 推荐.docx》由会员分享,可在线阅读,更多相关《黑龙江省旅游景点查询系统设计学士学位论文 推荐.docx(13页珍藏版)》请在冰豆网上搜索。
黑龙江省旅游景点查询系统设计学士学位论文推荐
学士学位论文
题目基于ArcGisEngine的黑龙江省旅游景点查询系统设计
学生闫利爽
指导教师马大龙讲师
年级2009级
专业地理信息系统
系别地理系
学院地理科学学院
哈尔滨师范大学
2013年5月
基于ArcGisEngine的黑龙江省旅游景点查询系统设计题
闫利爽
摘要:
随着地理信息系统及计算机技术的迅速发展和广泛应用,基于ArcGisEngine的地理信息系统应用程序己成为地理信息系统研究的热点。
本文简要介绍了ArcGisEngine体系结构和VC2005开发应用程序。
根据ArcGisEngine的特点及查询系统的性能需求,建立基于ArcGisEngine组件库、VC2005平台等技术为核心的旅游景点查询系统的软件,对整个程序和各主要功能模块设计进行了详细的研究和分析,实现了基于ArcGisEngine黑龙江省旅游景点查询系统基本功能。
关键词:
ArcGisEngine;VC2005;旅游信息查询
1、引言
近些年,随着人们生活水平和消费水平的提高的提高,出门旅游已经成为了一种新的时尚,也是人们一种放松的方式。
因此,出门旅游的人数不断增加,尤其是长假期间,旅游人数剧增。
2005年,我国入境旅游达到了12亿,旅游创汇293亿元,比上年增长13.8%;国内旅游人数达到12.1亿人次,比上年增长10%;其中去黑龙江旅游的人数比去年增长了50%。
我过已经实现了从旅游资源大国向世界旅游打过的历史性跨越。
[1]黑龙江省的旅游资源十分丰富,其中,5A级风景区3个,国家重点风景名胜区2处,省级名声风景区14处,全省各地进行旅游开发建设的风景区点200余处。
【2】丰富的旅游资源吸引了大量的海内外有课。
尤其在炎炎夏日,来黑龙江省旅游的游客与日俱增。
然而,过快过猛的发展也给旅游这个新兴产业带来了必然的压力——很多硬件、软件上的不足和缺陷一步步暴露出来,成为我国旅游业成熟和腾飞过程中的一道无法跨越的障碍[7]。
其中,旅游信息的匮乏,和大众获取信息方式的不畅,便是当前旅游业快速增长的一大瓶颈,直观来说,这个瓶颈所带来的最大弊端,就是令旅游消费者在进行旅游目的地选择时,会面对庞杂而无序的零散信息无从下手[8]。
而消费者最终在盲目或混乱状态下做出的选择,又往往会给出游过程平添许多的不快和麻烦,随之而来的,将是消费者信心的下降和旅游业潜在消费群体的直接损失。
人们在出行前,经常会查阅报纸或翻阅书籍或利用互联网来查询信息,查询他们所到之地的地理位置、景区特点、门票价格、周边状况、风俗习惯、交通情况、住宿状况、客流量以及当地的天气等等信息。
而目前互联网上的旅游信息查询多数以文本、图片、录像等单一的表示方式来展示信息,几乎没有用到地理信息系统,而ArcGisEngine使得地理信息应用在GIS中,使查询更加方便快捷,并且使用数据库技术,当景区信息有变更时,可以实时更新数据库中的内容,操作简便,能够为旅游者们的出行提供极大的方便。
二、ArcGisEngine概述
(一)ArcGis9总览
在GIS系列软件中,ESRI公司的ArcGis系列软件应用最为广泛,其数据格式是业界数据交流的标准格式;支持对象组件技术,各种主流开发工具均可对ArcGis平台进行定制;基于Windows用户界面标准,界面友好,操作方便。
【3】并且ArcGIS为用户提供了一整套功能强大的GIS框架。
ArcGisEngine可以在应用系统中加入地理信息的功能。
在ArcGIS9系列产品中,ArcGISDesktop、ArcGISEngine和ArcGISServer都是基于核心组件库ArcObjects搭建。
ArcObjects组件库有3000多个对象可供开发人员调用,其中有细粒度的小对象,例如:
Geometry对象;也有粗粒度的大对象,例如Map对象,通过这些对象开发人员可以操作控制文档(mxd,3dd,sxd等)、和空间数据库进行交互。
ArcObjects组件库为开发人员集成了大量的GIS功能,可以快速的帮助开发人员进行GIS项目的开发。
由于ArcGISDesktop、ArcGISEngine和ArcGISServer三个产品都是基于ArcObjects搭建的应用,那么对于开发人员来说ArcObjects的开发经验在这三个产品中是通用的。
开发人员可以通过ArcObjects来扩展ArcGISDesktop,定制ArcGISEngine应用。
ArcGISEngine开发包提供了一系列可以在ArcGISDesktop框架之外使用的GIS组件,而在ArcGISEngine发布之前,基于ArcObjects的开发只能在庞大的ArcGISDesktop框架下进行。
(二)ArcGISEngine组成部分
ArcGISEngine由一个软件开发工具包(SDK)和一个运行时(Runtime)组成。
从功能层次上可划分为如下五个部分:
1.基本服务—由GIS核心ArcObjects构成,几乎所有GIS应用程序都需要,如要素几何体(featuregeometry)和显示(display)。
2.数据存取—ArcGISEngine可以对许多栅格和矢量格式进行存取,包括强大的地理数据库(Geodatabase)。
3.地图表达—创建和显示带有符号和标注的地图。
4.开发组件—用于快速开发应用程序的界面控件。
5.运行时选项—ArcGISEngine运行时可以与标准功能或其它高级功能一起部署。
ArcGISEngineDeveloperKit是创建独立的GIS应用程序和制图应用程序的工具包,由控件、工具条和工具、对象库三个部分组成。
[4]
ArcGISEngine的另一个组件就是其运行时(Runtime)。
ArcGISEngineDeveloperKit建立的所有应用程序在运行时都需要相应级别的ArcGISEngine运行时。
ArcGISEngine运行时有多种版本级别,从标准版本一直到企业版本。
标准Engine运行时提供所有ArcGIS应用程序的核心功能。
这个级别的ArcGISEngine运行时可以操作几种不同的栅格和矢量格式、进行地图表达和创建以及通过执行各种空间或属性查询查找要素。
这个级别的ArcGISEngine运行时还可以进行基本数据创建、编辑Shapefile和简单的个人地理数据库(PersonalGeodatabase)及GIS分析。
编辑EnterpriseGeodatabase扩展模块。
ArcGISEngine运行时EnterpriseGeodatabase编辑增加了创建和更新多用户企业Geodatabase的功能。
ArcGISEngine的其它扩展模块包括:
空间分析扩展模块、3D分析扩展模块、网络分析、StreetMap扩展模块等。
(三)ArcGISEngine的功能
♦分图层显示专题图,例如:
道路,河流,行政边界等。
♦浏览、缩放地图
♦查看地图上特征要素的信息
♦在地图上检索、查找特征要素
♦在地图上显示文本注记
♦在地图上叠加卫星影像或航摄影像
♦在地图上绘制点、线、面几何体
♦通过矩形、圆形或多边形来选中地图上的要素
♦通过SQL语句来查找要素
♦使用各种渲染方式来绘制地图图层,例如:
分级渲染,柱状图渲染,点密度渲
染,依比例尺渲染等。
♦动态绘制实时的数据,例如实时的GPS坐标点。
♦转换空间数据的坐标系。
ArcGISEngine的授权文件(*.ecp)控制用户可以使用哪些功能。
ArcGISEngine的功能是否可以使用需要根据用户自己的授权文件而定。
三信息查询系统功能的实现
(1)新建项目
1.启动VS2005,选择“文件→新建→项目”,在项目类型中选择VisualC#,在选择Windows应用程序模版,输入名称“HLJTravelSerch”,点击确定。
在解决方案管理器中将“”Form1.cs重命名为“HLJTravelSerch.cs”,在设计视图中,选中窗体,将其属性中的“text”改为“HLJTravelSerch”
2.添加控件
选择工具箱中的“ArcGISWindowsForms”节,将“ToolbarControl”控件拖入窗体,并将该控件的停靠方式置于整个窗体上方,即将其属性中的Dock设置为Top。
为了将所添加的控件固定,并更加美观,因此添加一个容器空间,选择工具箱中的“容器|SplitContainer”容器拖入窗体。
将TabControl控件拖入Panel1,将选项卡置于底端,即Alignment属性设置为Bottom,Dock属性设置为Fill。
点击TabPages属性右边的按钮,弹出TabPage集合编辑器,将tabPage1的Name设置为tabPageLayer,Text设置为图层。
选择“图层”选项卡,拖入TOCControl控件,设置Dock属性为Fill。
在“地图”选项卡,将MapControl控件拖入panel2中,设置Dock属性为Fill。
最后将LicenseControl控件拖入到窗体的任意地方。
按F5编译运行,可以看到刚才布局好的程序界面了。
图1布局好的页面
3.控件绑定
通过以上步骤添加的控件还只是单独存在,而我们的程序需要各控件间协同工作,因此要对控件进行绑定,现将工具条、图层控件和地图控件绑定在一起。
分别右击ToolbarControl、TOCControl控件,将Buddy设置为axMapControl1。
这样就将ToolbarControl、TOCControl控件和axMapControl1控件绑定在一起了,TOCControl中显示的图层就会是axMapControl1中地图的图层。
ToolbarControl中添加工具的话进行的操作也是对axMapControl1中的地图进行操作。
4.添加工具
右击ToolbarControl,选择“属性→Items”,点击Add,选择Commands选项卡中的Generic,双击Open、SaveAs、Redo、Undo即可将相应工具添加到工具条。
5.加载地图
在arcmap中对地图进行处理,例如对地图进行坐标转换,比例尺选择等操作。
然后在整个程序的bin目录下的Debug文件夹中,将所处理完毕的地图等数据文件打包放入该文件夹下,这样引用地图时可以引用相对路径而不是绝对路径,这样做的好处是当需要更换工作环境时,只需将整个工程文件夹拷走而不必担心文件丢失或者更换目录的情况。
然后在MapControl1上加载需要用的黑龙江省旅游地图,双击Form1.cs的页面,进入代码编辑页面,在页面加载函数HLJTravelSearch_Load中添加代码:
this.axMapControl1.LoadMxFile(Application.StartupPath+@"\data\xuanran1.mxd");
图2加载地图
(2)鹰眼功能
鹰眼功能显示的是整幅地图的全图,当大地图放大时,鹰眼中用一个框框显示大地图中所出现的范围,在页面中添加一个MapControl控件,添加方法同MapControl,其name属性为MapControl2,并将其放入合适的位置。
对MapControl1添加相应事件,在其属性栏的右边的闪电状符号中,找到OnExtentUpdated事件和OnAfterScreenDraw事件并并双击,这样就为地图控件添加了响应函数,当地图进行操作时,对应的响应函数做相应的响应。
由于MapControl2的功能只是显示MapControl1中的地图的功能和特殊标记MapControl2中当前窗口大小,并不需要移动地图,故对MapControl2添加OnMouseDown事件和OnMouseMove事件。
添加完4个事件之后,程序自动生成四个对应的函数:
1.axMapControl1_OnExtentUpdated
2.axMapControl1_OnAfterScreenDraw
3.axMapControl2_OnMouseMove
4.axMapControl2_OnMouseDown
在这四个函数中分别加入代码如下:
在axMapControl1_OnExtentUpdated中添加代码:
IGraphicsContainer pc=this.axMapControl2.ActiveView.GraphicsContainer;
pc.DeleteAllElements();
IElementpe=newRectangleElementClass();
pe.Geometry=this.axMapControl1.ExtentasIEnvelope;
IRgbColorpcolor=newRgbColorClass();
pcolor.Red=255;
pcolor.Transparency=255;
ILineSymbolpls=newSimpleLineSymbolClass();
pls.Width=1;
pls.Color=pcolor;
IFillSymbolpfs=newSimpleFillSymbolClass();
pcolor.Transparency=0;
pfs.Color=pcolor;
pfs.Outline=pls;
IFillShapeElementpfse=peasIFillShapeElement;
pfse.Symbol=pfs;
pc.AddElement(pe,0);
this.axMapControl2.ActiveView.Refresh();
在axMapControl1_OnAfterScreenDraw中添加代码:
IGraphicsContainerpc= this.axMapControl2.ActiveView.GraphicsContainer;
pc.DeleteAllElements();
IElementpe=newRectangleElementClass();
pe.Geometry=this.axMapControl1.ExtentasIEnvelope;
IRgbColorpcolor=newRgbColorClass();
pcolor.Red=255;
pcolor.Transparency=255;
ILineSymbolpls=newSimpleLineSymbolClass();
pls.Width=1;
pls.Color=pcolor;
IFillSymbolpfs=newSimpleFillSymbolClass();
pcolor.Transparency=0;
pfs.Color=pcolor;
pfs.Outline=pls;
IFillShapeElementpfse=peasIFillShapeElement;
pfse.Symbol=pfs;
pc.AddElement(pe,0);
this.axMapControl2.ActiveView.Refresh();
在axMapControl2_OnMouseMove中添加代码:
if(e.button==1)
{
IPointpp=newPointClass();
pp.PutCoords(e.mapX,e.mapY);
IEnvelopepenv=this.axMapControl1.ExtentasIEnvelope;
penv.CenterAt(pp);
this.axMapControl1.Extent=penv;
}
在axMapControl2_OnMouseDown中添加代码:
if(e.button==2)
{
IPointpp=newPointClass();
pp.PutCoords(e.mapX,e.mapY);
IEnvelopepenv=this.axMapControl2.TrackRectangle();
this.axMapControl1.Extent=penv;
}
这时运行就可以看到添加鹰眼后的地图界面,如下图所示:
图3鹰眼功能
(3)列表框查询
在添加列表框前先建立一个access数据库,在数据库添加黑龙江省各市县的信息,建立两个字段,Num字段和city字段,其中Num存储城市的编号,city存储城市的名称,然后用该应用程序连接access,这样列表框可以直接引用数据库中的数据。
修改应用程序中Form.cs中的代码用以连接数据库,连接数据库的代码如下:
usingSystem.Windows.Forms;
usingSystem.Data;
usingSystem.Data.OleDb;
namespaceWindowsFormsApplication1
{
staticclassProgram
{
///应用程序的主入口点。
[STAThread]
staticvoidMain()
{
stringstrConnection="Provider=Microsoft.Jet.OleDb.4.0;";
strConnection+=@"DataSource=//192.168.1.10//access//CSharptest.mdb";
OleDbConnectionobjConnection=newOleDbConnection(strConnection);
objConnection.Open();
OleDbCommandsqlcmd=newOleDbCommand(@"select*fromcity);
OleDbDataReaderreader=sqlcmd.ExecuteReader();
intnum=newint();
if(reader.Read())
num=(int)reader["Num"];
objConnection.Close();
reader.Close();
}
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Form1form=newForm1();
form.Text=age.ToString();
Application.Run(form);
}
}
}
选择工具箱中的“所有Windows窗体”节,将“listBox”控件拖入窗体,为该控件添加SelectedIndexChanged事件,并在窗口初始化函数中在该空间中加载黑龙江省各县市的名称,当点击列表框中某一个县市的时候,相应的地图中的位置出会闪烁并且会将当前选中的地区放大到整幅图面中,具体实现方式为:
HLJTravelSearch_Load中添加代码:
QueryFilterpqf=newQueryFilterClass();
IFeatureLayerpfl=this.axMapControl1.get_Layer
(1)asIFeatureLayer;
IFeatureClasspfc=pfl.FeatureClass;
IFeatureCursorpfcur=pfc.Search(pqf,true);
IFeaturepf;
pf=pfcur.NextFeature();
while(pf!
=null)
{
this.listBox1.Items.Add(pf.get_Value(pfc.FindField("name")));
pf=pfcur.NextFeature();
}
以下是添加完列表框后运行的效果图:
图4列表框查询
(4)添加查询按钮
选择工具箱中的“所有Windows窗体”节,将“listBox”和“button”控件拖入窗体,这时用户可以自由输入地区名称进行查询。
此时为了美观,可添加TabControl控件,将listcontrol控件拖入TabControl中,以达到固定效果,并增加功能“景点查询”,其添加方法同前一个listbox的添加方法。
此时,列表框中所对应的地名已经和地图中的地名对应上了,当双击列表框中某一地名时,相对应的地图上的相应的地方会闪亮显示,然后自动放大到当前页面大小,如图:
图5双击列表框效果图
(5)添加详细信息
同样,在access数据库中添加每个地区每个景点的简介、图片、交通住宿、小贴士信息,使用应用程序调用access数据库中的数据,将数据添加到程序中去,每一个地区对应一种信息,用户可以查看需要的信息,如下图所示:
图6图片查询
(6)添加状态栏
在设计视图中,点击窗体中的状态栏,在其属性面板中找到“Items”项,单击其右边的按钮,在下拉框中选择“StatusLabel”,单击“添加按钮”,依次添加两个个StatusLabel标签,分别将其Text属性设置为:
坐标、比例尺。
在后台添加一定的代码即可显示当前图像的坐标和比例尺,如下图:
图7状态栏
至此,黑龙江省旅游信息查询系统设计完毕。
如下图所示
图8应用程序
四结束语
本论文的研究是在地理信息系统与ArcGisEngin技术不断发展与结合的基础上提出来的。
首先介绍了ArcGIS的基本概念;然后介绍了基于ArcGisEngin的组成部分和功能;最后对黑龙江省旅游信息查询系统的进行设计和实现。
现在常用的信息传播媒介一般有:
平面、电视、网络、人。
但是这些传统的信息来源方式都存在一个弊端:
更新速度慢【6】,而本文则利用ArcGisEngin建立以一款实时更新数据的软件,是一款可以同步反映各种旅游信息的查询系统。
并且由于ArcGisEngin采用了嵌入式的开发技术,使得建立起来的旅游信息查询系统能更更好的兼容目前的系统,并能以最少的投入获取最大的所需信息。
[5]这款应用程序可以使用户很方便快捷地查询到所需要的信息,并且具有很强的扩展功能,技术人员可以添加用户所需的信息,并且本文使用access数据库,可以实时更新数据,使用户对所要旅游的地方有一个更全面更深入的认识。
参考文献:
[1]刘志芳1付华2:
(1.基于WebGIS的旅游信息系统建设(2.中国测绘科学研究院首都师范大学2009。
[2]喜雨:
黑龙江省风景名胜区建设发展概况与分析2008。
[3]高雪山1黄晓红2:
GIS技术在潖江滞洪区洪水淹没模型中的应用(1.广东省北江防洪调度中心(2.拱洞轻工职业技术学院2006
[4]刘庆元,陶佩枫:
基于ArcGisEngin的地图编辑软件的设计与实现
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 黑龙江省旅游景点查询系统设计学士学位论文 推荐 黑龙江省 旅游景点 查询 系统 设计 学士学位 论文