基于ArcGIS API for Flex的旅游应用示范系统设计与实现

2014-03-27 09:03明,班
地理空间信息 2014年3期
关键词:服务设施调用景点

朱 明,班 媛

(1. 广西基础地理信息中心,广西 南宁 530023; 2.广西遥感信息测绘院,广西 南宁 530023)

传统的旅游信息系统通常以图文形式提供旅游信息,虽然可以展示旅游景区景点的风貌,但是无法反映旅游景区景点的地理位置关系,不能有效地解决游客寻找景点、搜索路径、查询周边服务设施等问题[1,2]。而将旅游信息系统与GIS相结合,除满足传统旅游信息需要外,还可以提供路径搜索、自驾导航、周边查询等功能,提高了旅游信息系统的应用效能。

1 ArcGIS API for Flex

Flex是用于构建表现力强大的Web应用程序的高效率开放源码框架。基于Flex框架开发的程序具有良好的交互性,可以使用矢量图形以及表现能力丰富的用户界面。使用Flex框架开发过程简单,具有良好的可扩展性,能够方便可靠地实现客户端与服务器端的异步通信。程序运行环境仅依赖于Adobe Flash Player,可实现跨平台与浏览器运行[3]。

由于GIS与图形图像技术联系紧密,因此具有良好的矢量可视化表现能力的Flex框架可以与GIS相结合。ArcGIS API for Flex就是ESRI公司利用Flex框架推出的WebGIS开发包,用于实现具有良好用户体验的WebGIS。使用ArcGIS API for Flex开发仅需引用一个库,不需要安装额外的软件,以接口的方式提供功能与数据,使开发人员摆脱了数据管理、地图应用、组件通信等编程工作,专注于核心业务功能的开发与实现[4-6]。

ArcGIS API for Flex提供了一个Flex Viewer客户端框架,Flex Viewer可以便捷地应用地理信息服务,灵活地引入各种地理信息数据。在这个框架中已经包含了基本的WebGIS功能,通过简单设置就能搭建具有基本功能的WebGIS网站。

Flex Viewer使用Widget封装功能,每个Widget就是一个功能模块,Widget之间通过事件进行通信。通过这种模式,Flex Viewer框架中的各个组件可以很好地进行交互,同时又保持了良好的封装[7]。

2 基于ArcGIS API for Flex的旅游信息系统设计

2.1 系统数据的整合与关联

北海市旅游局原有内容丰富的旅游信息数据,包含了文本、图片、视频等旅游业务信息以及在旅游资源普查中采集的旅游地理信息数据,基础地理信息数据则包含了矢量、影像、地名地址、三维等多尺度、多类型数据。这3类数据在存储上相互独立,但在查询、分析、展示时存在逻辑上的关联。要实现旅游专题数据的综合应用,就必须在构建旅游信息系统过程中,完成各类数据的关联与整合。

经过对已有数据的分析,旅游专题数据大多与景区及相关服务设施存在各种关联,而这些景区与相关服务设施同时也是地名地址数据的一部分,因此在设计时将景区及相关服务设施这类实体作为核心对象,对每个实体制定唯一编码,并以此编码为纽带,将各类信息关联在一起。

在数字城市的实际应用中,地理信息公共平台通过符合OGC标准的服务提供基础地理信息数据。旅游地理信息数据通过ArcGIS Server发布,旅游业务数据通过Web服务发布供旅游信息系统使用。ArcGIS API for Flex支持通过上述几种方式获取所需数据,结合旅游实体唯一编码,能够从不同的数据源获取同一旅游实体的各种相关数据,从而实现数据的逻辑上的统一应用。系统数据整合与关联如图1所示。

图1 系统数据整合示意图

2.2 系统体系结构设计

旅游信息系统采用3层结构:数据层、业务逻辑层、表示层,如图2。通过各种Web服务,获取空间分析、操作功能,整合利用基础地理信息数据与旅游专题数据,实现了数据在物理上分布式部署、在应用时统一使用,为用户提供直观、便捷的旅游信息服务。

图2 系统体系结构示意图

2.2.1 数据层

“数字北海”旅游应用示范系统的数据主要分为2类:基础地理信息数据与旅游专题数据。基础地理信息数据存储在文件与数据库中,涵盖了地貌、植被、交通、水系等矢量数据与多尺度影像数据,通过数字北海地理信息公共平台发布的标准服务可获取所有基础地理信息数据。旅游专题数据主要包括旅游地理信息数据及景点、景区、服务设施、旅游产品等旅游业务数据。旅游地理信息数据包括位置信息、旅游区块、游览线路等矢量数据,主要存储在Shapefile文件中;旅游业务数据保存在旅游业务信息数据库中。针对数据整合关联的要求,在原有矢量数据中增加了实体编码字段、地名地址数据编码字段,在旅游业务信息数据库中通过增加视图、建立新表与联系,用于实现业务数据与矢量数据的关联。

表1 系统数据来源与存储方式

2.2.2 业务逻辑层

业务逻辑层包含ArcGIS Server提供的各种功能,向旅游应用示范系统提供旅游信息数据的各种Web服务。通过Web服务,将旅游信息数据封装为SOAP,同时制定好各种方法供使用者调用。本层的服务由旅游产品数据服务、旅游景点查询服务、服务设施查询、公交换乘服务、行程规划服务等构成。主要功能如下:

1)旅游产品数据服务,用于获取旅游产品数据,通过此服务获取旅游产品的详细信息。

2)景点查询服务,用于查询景点,通过关键字在数据库中检索相关的景点信息并返回给客户端。

3)服务设施查询服务,用于查询景点内及周边的各种服务设施,通过关键字以及位置关系等条件在数据库中检索相关服务设施信息。

4)公交换乘服务,包含一组应用接口,用于查询两点间的公交线路,并提供可能的换乘方案。

5)行程规划服务,用于提供旅游线路信息,包括旅游部门推荐的线路以及用户自选线路。

2.2.3 表示层

表示层由旅游信息系统以及旅游信息管理系统构成,主要用于展示与管理旅游信息数据,实现地图浏览、景点查询与预览、行程规划、公交换乘、自驾线路查询等系统的主要功能。在表示层中,利用ArcGIS API for Flex调用各种服务,从不同的数据源获取相关数据。在这些数据中,基础地图与影像来自基础地理信息数据库,均已按照《地理信息公共服务平台电子地图数据规范》配置符号与注记,并进行切片处理,由系统调入直接使用;景点、自驾线路、公交换乘线路等矢量信息由ArcGIS API for Flex实时绘制,并根据实际需要动态控制绘制效果,与地图、影像、文字、图片、视频、三维景观等数据相结合,增强旅游信息的表现形式。

3 旅游信息系统关键方法

旅游应用示范系统采用Adobe Flash Builder 4.0与Visual Studio.Net开发,使用C#语言编写Web服务、服务器端应用程序,旅游信息数据库采用Access。

3.1 ArcGIS API for Flex调用Web服务获取旅游业务数据

在.Net环境开发的Web服务包含于.asmx文件内, Web Service发布后可通过URL访问,通过WSDL获得关于Web服务的详细描述。客户端程序调用服务器端分发的WSDL生成代理类,代理类中包含了Web Service中定义的方法,客户端程序通过代理类可以如本地一样调用Web服务方法[8]。以下为Flex调用Web服务的示例代码。

首先定义一个Web服务:

服务的定义中包含了调用地址、调用服务成功后的处理函数SearchInfo_result(event)以及调用参数InfoKeyWord,定义完成后就可以如本地方法一样调用SearchInfo服务接口获取数据:

ws1.SearchInfo(InfoKeyWord); //请求服务

代码中的SearchInfo是Web服务提供的方法,Flex只要提供SearchInfo方法的参数InfoKeyWord,就能直接获得数据,获得的数据由SearchInfo_result(event)函数处理。

通过Web服务,ArcGIS API for Flex可以获得旅游局发布的旅游信息数据、“数字北海”发布的基础地理信息数据。

Web服务具有良好的扩展性与适应性,当数据库结构发生变化时,通过改写服务就能适应新的数据结构变化。只要服务提供的数据结构不变,就无需改动客户端代码。使用者通过调用新服务就可使用新的数据,通过不断地发布与完善服务,旅游应用示范系统可以不断地扩展功能、提高功效。

3.2 利用ArcGIS API for Flex获得基础地理信息数据

“数字北海”地理信息公共服务平台提供基础地图的方式为切片地图Web服务(wmts)。ArcGIS API for Flex并不支持切片地图Web服务,为此必须对原有切片服务API进行扩展,通过继承API中的TiledMapServiceLayer,按切片地图Web服务的要求改写后,新的扩展API才可支持切片地图Web服务。

3.3 利用ArcGIS API for Flex实现空间操作功能

ArcGIS API for Flex提供任务Task用于完成特定的任务,通过Task可以实现查询、搜索、属性查询等各种GIS功能。调用这些Task时,向服务器发出请求参数,服务器获得请求后根据参数进行处理,并将处理结果返回请求方。以下以RouteTask为例说明如何使用Task实现WebGIS功能。

RouteTask在本系统中的作用为构建连接几个点之间的最短路径,使用标签定义一个RouteTask,使用定义RouteTask中需要的若干参数:

标签中id用于唯一标识RouteTask任务,url属性指定RouteTask使用Web服务的地址,solveComplete属性指定查询成功后的结果处理函数。中directionsLengthUnits为长度单位,stops为保存景点空间信息的数组。

定义完成后在程序中使用routeTask.solve(routeParams)开始查询,当处理完成后调用solve CompleteHandler(event)处理结果。系统实际效果如图3所示。

图3 旅游应用示范实现效果

实例说明,通过调用服务器端发布的旅游业务数据服务,使用ArcGIS API for Flex开发的客户端能在基础地理信息数据之上,通过调用Task实现各种空间操作功能。

[1]尚文捷.基于ArcGIS Server的旅游地理信息系统研究[D].西安:西安科技大学, 2011

[2]刘立铖.基于混合结构的泰山地质公园旅游GIS设计与实现[D]. 北京:中国地质大学, 2007

[3]Adobe.Flex概 述[DB/OL]. http://www.adobe.com/cn/products,2011-12-01

[4]钟广锐. 基于ArcGIS Flex API的WebGIS设计[J].测绘科学,2012,37(3): 147-149

[5]袁怀月,侯澄宇,杨恒. 基于ArcGIS Flex API的工厂基础地理信息共享服务系统设计[J].测绘工程, 2011,20(2): 61-65

[6]周炳喜.基于LCDS和Flex Viewer的电网台风WebGIS研究[D].上海:华东师范大学, 2010

[7]Esri. ArcGIS API for Flex 2.3 Help [EB/OL]. http://resources.arcgis.com/en/help,2011-12-01

[8]朱明,杨海燕,李景文,等. 基于Web Service的测绘档案服务平台设计与实现[J].桂林理工大学学报, 2010,30(4): 590-594

猜你喜欢
服务设施调用景点
民政部等16部门:到2025年村级综合服务设施覆盖率超80%
核电项目物项调用管理的应用研究
LabWindows/CVI下基于ActiveX技术的Excel调用
打卡名校景点——那些必去朝圣的大学景点
基于实效性的社区居住服务设施统筹研究
北京三山五园绿道综合服务设施系统调查探究
论高速公路收费服务水平的提高和收费服务设施的完善
基于系统调用的恶意软件检测技术研究
英格兰十大怪异景点
没有景点 只是生活