《GoogleEarthCOMAPI及KML技术在旅游管理信息系统开发中.pdf》由会员分享,可在线阅读,更多相关《GoogleEarthCOMAPI及KML技术在旅游管理信息系统开发中.pdf(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第 12卷 第 6期2010年 12月地 球 信 息 科 学 学 报JOURNAL OF GEO?INFORMATI ON SCI ENCEVol?12,No?6Dec?,2010收稿日期:2010-07-07;修回日期:2010-08-28.基金项目:长江项目示范区生态功能监测与早期预警信息系统(C/I V/S/08/151);国家生物多样性信息服务平台(F/I V/S/09/165)。作者简介:马立广(1980-),男,博士,研究方向为地理信息共享环境,主要是信息共享技术环境研究及地理环境与人口健康。E?mai:l malg lreis?ac?cnGoogle Earth COM API及
2、 KML技术在旅游管理信息系统开发中的应用马立广,曹彦荣(中国科学院地理科学与资源研究所 资源与环境信息系统国家重点实验室,北京 100101)摘要:地理信息技术的发展,推动了旅游业信息化的进展。特别是随着生态环境保护意识的增强,生态旅游的行为和内容也逐步纳入到旅游信息和旅游资源管理范畴中。本文采用 Google Earth COM API,基于开放式 KML 数据标准,探讨开放式地理信息技术在旅游资源管理信息系统中的应用。与读者分享基于 KML数据标准,对多元异构的旅游资源数据进行的标准化分类组织和整合的技术方法,介绍使用 Google Earth三维数字地球平台提供的免费 API快速实现旅
3、游景观资源的可视化,旅游景观资源和信息的快速查询与空间定位功能,以及旅游景观资源的 3D自动漫游飞行功能的实现途径和方法,归纳总结开发中的技巧和经验。并实际应用 Google Earth COM API与 C#.Net语言联合开发了旅游资源管理信息系统,为部门管理旅游资源信息和公众交互访问旅游资源提供便捷的技术平台,也为同类型的旅游资源信息系统的研发提供技术参考。关键词:Google Earth(GE)COM API;KM L;旅游信息系统;漫游1?引言随着信息技术的发展,地理信息的产业化推动旅游业中的信息化和数字旅游的发展,使得利用地理信息系统技术开发旅游地理信息系统成为旅游业发展的一项关键
4、技术 1-5。2005年 6月,谷歌推出 Google Earth(简称 GE),给互联网用户带来全新的感受,也给地理信息行业带来了巨大的冲击。GE作为优秀的地图平台,不仅能够提供较强的地图图像传输功能,更能提供免费的 API(Appli?cation Progra mm ing Interface),用户只需加上业务代码,即可构架一个满足基本业务需要的行业地理信息系统。这一技术对旅游信息化的发展起到推波助澜的作用 6-14。作为谷歌 API的一种,Google EarthCOM API技术有助于建立旅游地理信息系统,实现旅游资源的信息化管理,使得用户能够全方位地观察旅游景观。2?KML数据格
5、式与数据组织2.1?KML数据格式随着地理信息技术在各个行业中的普及,发展专业的数据模型,应用传统的地理数据承载传递丰富的行业数据和信息,已经成为信息系统构建不可或缺的组成部分。W eb技术和公众 GIS技术的普及与快速应用,自发地理信息(Volunteered Geographic Infor m ation,VGI)数据资源迅速膨胀,用户通过移动设备和浏览器终端,自发贡献各种地理数据,极大地丰富了数据内容。如一些在线地图服务中,用户可以进行简单的地物要素勾绘和标注。这意味着公众自发提供的数据需要与现有的 GIS数据模型融合在一起,这同样推动地理数据模型的建立。KML(Keyhole M a
6、rkup Language)是一种基于XML(eXtensible M arkup Language,可扩展标记语言)语法和文件格式的数据文件,可用来描述和保存地理数据(包括点、线、面、多边形,多面体和模型等),能在 Google Earth客户端中显示。KML 文件作为一种多功能的地理数据格式,它可以将网页链接、图片、模型及各种媒体档案资料在 Google Earth中作完整的呈现。现在 KML已经成为 OGC(OpenGeospatialConsortium)的开放式地理资讯编码标准,作为一种新型的地理数据格式,提供地理数据的组织模型。更 多 的 KML 信 息,可访 问:http:/co
7、de.google.co m/intl/zh-CN/apis/k m l/documentation/。KML数据格式运用 、四个元素作为文件的根标签组织数据。Feature作为抽象元素,实现地理信息的封装与管理,NetworkLink元素实现 KML的共享;P lace m ark元素实现地理对象的封装与 可视化;Folder元素实现对地理对象的层次化管理;Docu?ment元素实现各类 Feature元素、Style元素、Schema元素的封装与管理;Overlay元素实现屏幕贴图与地面贴图功能;Style元素实现地理对象的外在样式表示;Schema元素对 Placemark元素的继承实现
8、地理对象属性值扩展。为减少数据组织和数据转换的工作量,充分发挥 KML数据格式的优势和可复用性,基于 KML 数据模型,可对旅游资源数据进行分层组织整理。2.2?KML数据组织旅游资源数据根据实际情况可归纳为:景点、景区、旅游路线、文档、图片、视频等多种数据。区域基础地理数据和高分辨的遥感影像数据作为旅游资源的重要背景数据,也可弥补 GE 中部分影像数据现势性不足的缺陷。应用地理数据模型,表达旅游资源数据和信息。传统的地理数据模型把现实世界抽象为点(Point)、线(L ine)、面(Polygon)等简单实体。从数据组织的角度,有人对点、线、面三种简单对象实体进行组合派生,提出复杂对象概念,
9、考虑注记(An?notation)信息,给出地理空间中存在 5种基本对象的概念:点、线、面、注记和复杂对象。在将简单对象和复杂对象的不同组合形成数据集合,定义为对象集合,类别有简单对象集合,符合对象集合和场。从地理数据几何图形要素的角度,将景点为主的点状类要素数据,旅游路线为主的线状类要素和以景区为主的面状类要素分别抽象表达为地理要素的点、线、面,将文本信息、图片、路线景区的描述信息等作为对应点、线、面几何要素的属性或附加说明。借助于 KML的数据组织功能,将旅游资源点状、线状、面状三类数据整合在一起,使用 KML 中的要素标签来表示三类数据的几何特征,即用Point、L ineString和
10、 Polygon要素来分别描述景点、路线和景区的几何信息,用 L ink、style、description等标签或简单 HTML 语法描述超级链接和图片等标注信息,表达各几何对象的样式及属性说明。旅游资源数据对象与 KML几何要素对象之间的抽象对应关系如表 1所示。表 1?旅游资源数据对象与 KM L要素对象关系Tab.1?Relationship bet ween tourism data andKM L ele m ents旅游资源数据地理数据数据格式 对象实体KML要素点状类(景点/地名点/地标等)线状类(旅游路线/道路等)面状类(景区、规划区)矢量点Po int线LineString
11、面Po lygon影像数据栅格数据I mageO verlay?此外,由于景区可能包含多条旅游路线和/或多个旅游景点。旅游路线又是由多个景点构成。因此,需要表现旅游数据对象间的关系,即点、线、面要素之间存在的对应和包含关系,并能在自定义的系统中自动解析景区、路线和景点之间的关系,采用 Placemark标签,通过添加特殊的标记,在 KML文件中存储要素间的关系。对于遥感影像数据的显示,GE提供了影像叠加层功能(Overlay)。但是影像数据的直接叠加存在如下不足:初始加载影像叠加层,特别是高分辨率的影像数据,由于覆盖范围较广,数据量较大,叠加层功能需要占用大量内存资源,导致遥感影像数据一次加载
12、速度较慢,影响用户的体验。采用 LOD(Level of Detail的缩写)技术,可提高影像数据的加载速度 15。把高分辨率影像数据进行切片,应用KML的、标签组合的方式,实现切片影像数据组织加载,切片的原理在很多的文献中都有所介绍 16-18,这一策略可以很大程度上降低内存的占有率和缩短影像加载的时间?。?遥感影像处理软件 ENVI在新版本中提供影像数据转化成KML文件的工具 Goog le Earth Bridge,可辅助实现影像数据的切片和 KML的转换功能。8296期马立广 等:Google Earth COM API及 KML技术在旅游管理信息系统开发中的应用?3?基于 Googl
13、e Earth COM API的系统开发与应用3.1?系统设计与开发采用 C/S三层架构方式,构建的旅游资源管理信息系统的架构如图 1所示:在数据层,采用 KML 数据格式,完成旅游资源数据的分类、整合和多样化描述与组织,其中,描述景点信息的 KML文件片段如下所示:图 1?系统的结构图F ig.1?Structure chart of the system?宝兴?蜂桶寨?生态旅游景点?nor mal?#sn_car?highlight?#sh_car?1.3?.在技术层,开发人员采用谷歌提供的 COMAPI,利用可视化编程工具,如 Visual Studio 2005等,调用 COM API
14、函数或用户自定义的方法,添加业务逻辑,构建应用程序 19,通过对 Google Earth发送指令进行信息查询,加载 KML、查询当前视图,控制 3D视角等操作。功能层是面向用户的应用和技术功能的实现。下文主要围绕旅游资源管理信息系统功能和 GECOM API开发的几个关键部分的 C#代码实现进行说明。系统的主要功能和关键步骤之一,是通过 API函数完成三维地球控件的加载和初始化,初始化的C#函数片段如下:public void Init()?GeApp=new A pplicationGEClass();?/获得 GE主程序句柄?GEHWnd=(Intprt)GeA pp.GeM t a i
15、n Hwnd();?/获得 GE球体句柄?GEHrender=(Intprt)GeA pp.Get R ender Hwnd();?/获得 GE主程序和球体范围?RECT ma inRect=new RECT();?NativeM ethods.G eWtindowRect(GEHWnd,outmainRect);?RECT clientRect=new RECT();?NativeM ethods.G eWtindowRect(GEH render,out clientRect);?/获得 GE主窗体和球体之间的差值?int offseWt=ma inRect.W idth-clientRe
16、ct.W idth;830地 球 信 息 科 学 学 报?2010年?int offset H=mainRect.Height-client R ect.Height;?/设置主窗体?N ative M ethods.SeWtindowPos(GEHWnd,N ative M ethods.HWND _BOTTOM,0,0,?this.W idth+offseWt+5,this.Height+offsetH+5,NativeM ethods.S WP_HI DE W I NDOW);?/设置球体?Native M ethods.M ove W indow(GEH reder,0,0,this.
17、W idth,this.Height,true);?Native M ethods.SetParent(GEHrender,this.H andle);?/若 GE没有完成初始化,则继续初始化?while(GeA pp.IsI nitialized()=0)?Thread.Sleep(500);?/设置钩子事件?mousehook=new M ouseHook();?mousehook.M ouseU p+=new MouseEvent Handler(mousehook _M ouse U p);?mousehook.StartHook(HookType.WH_ MOUSE_LL,0);KM
18、L格式的旅游资源数据文件是系统的核心。KML文件的加载和显示是系统的重要功能,通过调用 I ApplicationGE 接口中 的 Open Km lF ile 方 法或LoadKm lFile实现 KML文件的加载,加载函数片段如下:protected override void OnLoad(EventArgs e)?base.OnLoad(e);?if(!this.Design M ode)?/EarthControl类包括四个参数,存放景点、路线、景区、目录信息?earthControl=new EarthControl(lsScenSpot,lsRoute,lsS?cenArea,t
19、vA llFiles);?paneM l e.Controls.A dd(earthContro l);?earthContro.l Dock=DockStyle.F il;l?/调整地球大小?earthContro.l SizeChanged+=new Event Handler(earthCon?trol_SizeChanged);?/GE 初始化?earthContro.l Init();?/加载 KML 数据?earthContro.l OpenKmlF ile(Path.GetFullPath(.?.Data D ata.kmz,1);?tempFeatureGE=earthCont
20、ro.l GetTemporaryP laces();?/通过 DOM 解析 KML文件?earthContro.l ShowP laces(tempFeatureGE);?/生成飞行的 KML文件?Po intsChange pc=new PointsChange(.Data GER?oute.kml);?pc.ToTour();?ti me.Elapsed+=new ElapsedEvent Handler(ti me _ E?lapsed);?ti me.Enabled=tr ue;?为避免瞬时加载大量 KML数据文件,导致系统资源占用率过高,也避免在有限的视窗范围内出现要素混乱现象,影
21、响用户视觉和美观效果。对KML数据的显示采取分级控制策略尤为重要。分级显示控制策略可通过如下两种方法实现:一种方法是在 KML文件中,利用 标签和 标签控制要素对象的显隐。标签对数据进行分层,描述屏幕上的投射区域必须达到指定范围时才被视为 处于激活!状态。同时指定用于淡入(透明到不透明)和淡出(不透明到透明)的像元梯度大小。标签用来决定要素对象在目标区域是否显示。另外一种方法是,采用程序编码,用数据目录节点和视窗显示比例来控制KML数据元素的显示和隐藏,根据当前数据的地理范围和地图视窗大小计算显示的比例,结合数据元素显示的优先级别标签,用显示比例控制 KML 的显示和加载顺序。本文采用后一种方
22、法,实现 KML数据显隐控制的代码片段如下:/KM L分级显示控制?private voidV iewYes No(object ob,j string Str)?I V iewExtentsGE v ie=G eApp.V iewExtents;?double NS=vie.North?vie.South;?double E W=vie.East?v ie.West;?I FeatureGE t=G eApp.GetFeatureByName(Str);?if(flag)?if(NS 0.265|EW 0.372)?t.V isibility=1;?else?t.V isibility=0;
23、?浏览旅游信息(地标)是系统的重要功能,通过与 KML文件的交互,系统实现自定义的漫游飞行模式和视觉效果。功能实现采用 I ApplicationGE接口提供的 GetCamera和 SetCamera等方法,设置飞8316期马立广 等:Google Earth COM API及 KML技术在旅游管理信息系统开发中的应用?行地标的经度、纬度、高度、飞行范围和方位角转角、速度等指标参数。用 I Ca m eraInfoGE接口,辅助实现照相机的焦点位置、转角、仰角、方位角等参数设置。有关漫游飞行视角设置的代码片段如下:?/获得当前的视角?public I CameraInfoGE G etCam
24、era(interface bl)?try?return G eApp.GetCamera(bl)as I CameraInfoGE:?catch(exception e)?ThrowException(e);?return nul;l?/调转到指定的视角?public void SetCamera(I CameraInfoGE cameraInfoGE,double speed)?try?GeApp.SetCamera(cameraInfoGE as CameraInfoGE,speed);?catch(Exception e)?ThrowException(e);?从用户功能的角度,借助于
25、 GE COM API,实现KML数据加载/解析,数据的显隐与分级显示控制,旅游路线、景点、景区等景观信息的自动漫游,为用户带来直观体验。此外,系统也实现了旅游景观资源的快速查询与定位功能等。3.2?应用案例分析基于 M icrosoft Visual Studio 2005开发平台和GE COM API的系统方法,在 长江流域自然保护与洪水控制 项目中得到应用,并在云南丽江老君山示范区和四川宝兴县示范区生态旅游资源信息管理中进行了实践,实现了非 GIS专业人员快速搭建系统,系统的主界面如图 2所示:生态旅游资源的点、线、面状地理要素数据存储于 KML数据文件中,在 GE软件平台上地理要素以分
26、层结构呈现,系统实现景点、路线、景区等资源的自动解析和加载功能,效果如图 3所示:基于 KML数据标准的特性,系统实现如下漫游功能:(1)点到点的漫游:从一个地标跳转到另外一个地标,并显示单个地标的描述信息,文字、图片、超链接及视频等;(2)沿固定线路定制的漫游飞行:沿定制的 KML路线进行资源浏览,展示视场范围内的地标信息,以最佳的视角和显示比例,沿线控制飞行速度向用户进行显示。4?结语采用 GE COM API和.NET Framework开发环境,快速高效地实现旅游资源管理信息系统的构建,利用 KML的数据格式,将多样化的旅游资源数据,以地理要素为核心,实现了数据资源的组织整理和分层管理
27、。借助 GE COM API的开放式开发接口提供的多种免费地理信息系统功能,以旅游资源832地 球 信 息 科 学 学 报?2010年信息发布为目标,并通过与 GE COM API的交互,基于 Google Earth桌面软件平台,完成旅游数据资源的管理和可视化。基于 GE COM API和 KML 数据格式相结合的开发模式,是小型地理信息系统开发项目的快速解决方案,也是 GIS技术推广应用的一种十分有效途径,非 GIS专业的技术人员亦可掌握,独立进行开发与应用。同时,这一技术方法在旅游资源信息管理中的应用,为管理旅游资源数据,分析区域自然景观的分布与形成条件,反映景观资源的特点与功能,以及旅
28、游区的设施布局等提供技术支持。当然,受诸多条件限制,GE COM API功能还需完善,例如,数据叠加层的顺序控制,飞行漫游过程中地标描述信息的加载等。参考文献:1 符海月,赵军,李满春.从 GoogleM aps看我国全球化地理信息服务面临的挑战和对策 J.地理与地理信息科学,2006,22(2):1-3.2 凌琳.地理信息系统(GIS)在旅游业中的应用研究 D.复旦大学,2009.3 李娟,郝志刚.基于 Google Earth虚拟地球平台的旅游规划研究 J.国土资源遥感,2010,(1):130-133.4 罗立宏,陈志.Google Earth在旅游景点展示中的应用 J.计算机工程,20
29、09,35(3):277-281.5 向民锦,李云星.利用 Google earth建立旅游资源导航信息平台 J.湖南城市学院学报(自然科学版),2010,19(1):64-66.6 陈飞霖,阮翠冰.利用 Google earth软件进行气象台站观测环境调查评估 J.气象水文海洋仪器,2009,3(4):166-168.7 刘晓威.基于 Google Earth的公路路线漫游解决方案 J.山东交通科技,2010(1):57-59.8 乐通潮,陈杰,聂森,等.利用 Google Earth影像制作海门岛景观类型分布图 J.防护林科技,2009(5):65-66.9 彭和强,张有能.基于 Goog
30、le Earth的地形图制作技术 J.测绘通报,2009(10):56-58.10 孙乐平,梁幼生,田增喜,等.江苏省血吸虫病监测预警系统的研究基于 Google Earth的实时操作与表达平台的建立 J.中国血吸虫病防治杂志,2009,2(5):368-372.11 唐勇,刘昌忠,吴宏刚.基于 Google Earth的三维航迹监视及六自由度飞行仿真 J.计算机应用,2009,29(12):3385-3387.12 王彤,郝冬梅.基于 Google Earth的黑龙江省林火信息系统的开发与实现 J.东北林业大学学报,2009,37(5):119-120.13 黄舒,寒懋,苗放,等.基于 Go
31、ogle Earth的数字九寨应用 J.地理空间信息,2009,7(2):97-99.14 王强.基于 Google Earth平台的数字旅游应用研究D.北京林业大学,2007.15 袁俊超,苗放,李玉林.使用 KML实现多细节层次技术 J.地理空间信息,2009,7(4):159-161.16 漆明生,徐家清.基于 km l的地理数据表示 J.四川林勘设计,2008,(1):77-80.17 肖高铭,敖水金.Google Earth矢量数据多级聚合实验 J.测绘通报,2009(7):45-47.18 谭庆全,毕建涛,池天河.一种灵活高效的遥感影像金字塔构建算法 J.计算机系统应用,2008(
32、4):124-128.19 马谦.智慧地图:Google Earth/M aps/KML核心开发技术揭秘 M.北京:电子工业出版社,2010.Application of Google Earth COM API and KML in Tourism InformationSystem DevelopmentMA L iguang,CAO Yanrong(StateKey Laboratory of Resources and Environmental Information System,Institute of Geographic Sciences and NationalResour
33、cesResearch,CAS,Beijing 100101,China)Abstract:The development of infor m ation technology,especially the develop m ent of geographical infor mation sys?te m and the open source software has promoted the progress of tourism information syste m.W ith the enhancementof awareness of ecological and envir
34、onmental conservation,eco-touris m hasbeen gradually integrated into touris minfor mation management fields and this extended the scope of tourism information system.Based on the freeGoogle8336期马立广 等:Google Earth COM API及 KML技术在旅游管理信息系统开发中的应用?Earth COM API and the open KML data standard,the develop
35、m ent methods of tourism information system werediscussed in this paper.Application ofKML based data model helps to organize/manage and classify tourism datahierarchically.Methodsof using theGoogle Earth 3D D igitalEarth platfor m interface to realized the visualization oftourism landscape and resou
36、rces were introduced.The developing skill about the tourism resources retrieva,lsearching and spatialposition function aswell as the landscape resource touringm eansw ith Google Earth COM APIon 3D platfor m was explained in detai.l Finally,the authors have designed the tourism infor mation system by
37、 in?tegrating Google Earth COM APIw ith C#.NET,which has the capability in tourism infor mation query and browse,and custom ized touring for both public and tourism manager on an independent soft ware package.The developmentskill and experience aswell as the matters need attention in developing proc
38、esswere summarized.The practiceproved that the application of Google Earth COM API components andKML data specification for tourism infor ma?tion system develop m ent and tourism data manage m ent is feasible and effective.The example,method and keypoints provide in this paper are repeatable to other progra m s.Key words:Google Earth(GE)COM API;KML;tourism infor mation system;touring834地 球 信 息 科 学 学 报?2010年