
基于openlayers和websocket的旅游资源配置实时可视化设计与实现.doc
8页基于 OpenLayers 和 WebSocket 的旅游资源配置实时可视化设计与实现 包诗亮 周伟强 祝若鑫 王腾飞 裴红卫 信息工程大学 郑州供电段 摘 要: 随着旅游业的蓬勃发展, 许多景区开发了各自的旅游管理平台, 但这些平台在实时数据的更新上效率较低为合理调配旅游资源, 提高景区管理效率, 本文结合 OpenLayers、WebSocket 的关键技术, 设计了支持实时数据更新的旅游地理信息服务平台架构该系统采用 OpenLayers 技术实现旅游资源配置信息在专题旅游地图上的显示, 使用 WebSocket 实时通信框架实现了数据实时更新本文设计的旅游景区管理平台结构清晰, 可扩展性强, 可以在各种景区中实现最后, 本文实现了原型系统并验证了该系统在实时通信领域具有较高的效率关键词: OpenLayers; WebSocket; GeoJSON; 实时通信; 可视化; 作者简介:包诗亮 (1991-) , 男, 河南周口人, 地理信息系统专业硕士研究生, 主要研究方向为地理信息系统工程研发收稿日期:2017-08-01Design and Implementation of Real-time Visualization of Tourism Resources Configuration Based on OpenLayers and WebSocketBAO Shi-liang ZHOU Wei-qiang ZHU Ruo-xin WANG Teng-fei PEI Hong-wei Information Engineering University; Zhengzhou Power Supply Section; Abstract: With the vigorous development of tourism, many scenic spots have developed their own tourism management platforms, but these platforms have low efficiency on data updating. In order to improve the efficiency of scenic management, this paper designs the architecture of tourism geographic information service platform which supports real-time data updating with the key technology of Open Layers and Web Socket. Open Layers technology was used to display tourism resources configuration information on the theme tourism map, Web Socket real-time communication framework was used to realize real-time data updating. Intelligent tourism scenic management platform designed in this paper is clear in structure and extensible, and can be implemented in various scenic spots. Finally, this paper implements a prototype system, which verified the system was efficient in the field of real-time data updating.Keyword: OpenLayers; WebSocket; GeoJSON; real-time communication; visualization; Received: 2017-08-010 引言随着社会经济的发展和人们生活水平的提高, 旅游业的发展越来越快, 人们对旅游的需求日益增加。
景区资源具有显而易见的不可再生性和非完全流动性, 使得固定的静态景区资源配置设计在面对大量游客时出现配置不均和消息滞后问题, 甚至部分旅游资源无法被有效利用为了解决这些问题, 许多景区纷纷研发了各自的景区信息服务平台, 如景区管理平台、景区客流量监测平台、景区车流量监测平台等希望能够实时地了解旅游资源在各个景点的具体配置情况, 从整体上了解景区的实时状况, 并进一步调控景区资源配置当前, 国内各地旅游景点研制的 Web GIS 平台主要包含基于 Arc GIS API 或Super Map API 二次开发的系统这些商业平台性能稳定、功能强大, 但是需要花费相当高的费用去购买相关的软件[1-2]开源的 Open Layers 凭借其源代码公开, 可以快速灵活地修改、复制、再分发, 从而实现 Web GIS 系统的快速、简洁的开发和部署, 可以代替商业平台的主要功能[3-4]在实时数据的传递方面, 传统旅游地理信息服务平台大都采用基于 AJAX 轮询的方式, 即按照一定的时间间隔, 由浏览器向服务器发出 HTTP 请求轮询方式为了保证浏览器页面数据的及时更新, 每次获取数据时均需要浏览器向 Web 服务器发起 HTTP 请求, 再由服务器做出响应。
这种方式有着明显的缺点, 即以固定的频率向服务器发出请求, 如果设定的轮询频率过低可能会遗失有效信息, 而过高就会加重网络负担和服务器负载[5]Web Socket 是通过在浏览器和服务器之间搭建 TCP-Socket 类的双向、持续的通信模式[6-7], 实现长连接模式服务器推送, 能够满足智慧旅游实时性需求由于旅游数据并非所有内容均需要实时更新, 本文将需要实时更新的旅游资源配置数据在地理信息服务平台中实时可视化该过程需要 Web Socket 和 AJAX穿插应用于平台建设中, 并要求实时模块和非实时模块协同工作其中, 实时数据通过 Web Socket 访问, 非实时数据依然使用 AJAX 访问相对于通过定时刷新获取数据的传统 AJAX 轮询方法, 本文设计的实时可视化方法能有效地减少网络负担和服务器负载1 关键技术1.1 Open LayersOpen Layers 是由 Meta Carta 公司研发的用于开发 Web GIS 客户端的 Java Script 包, 它支持多种地图来源, 如 Google Maps、OSM 等, 可以支持某些格式的图片并能够实现图片与其他图层的叠加, 在 Web 浏览器中提供了浏览、缩放与定位地图等功能。
Open Layers 访问地理数据的方法都符合 WMS、WFS 等行业标准Open Layers 是一个面向对象的地图库, 它提供了许多 API, 可将地图动态地加载到网页中, 主要的 API 有map、layers、controls、events、markers、renderer 等, 这些接口将不同的数据源分成不同的图层并整合到 map 中Open Layers 能够利用WMS、WFS、GML、JSON、GEOJSON 等多种数据格式, 也可以调用本地图片数据源, 来实现矢量地理数据的展示和渲染开源的 Open Layers 使开发人员可以使用Java Script 自由添加所需的功能, 同时提供了分块读取功能, 有效地提高了地图加载速度Open Layers 实现了无刷新更新地图与页面, 满足了客户端的实时交互, 提高了 Web 的实时性和交互性[8]1.2 Web SocketWeb Socket 是基于 HTML5 的一种双向通信协议, 实现了基于浏览器的原生Socket, 使浏览器客户端具备了类似 C/S 架构下桌面客户端的实时通信能力[9-12]一旦 Web Socket 通过握手建立连接后, 在浏览器断开 Web Socket 连接或服务器断掉连接前, 不需要浏览器和服务器重新发起连接请求, 数据在这段时间内都以帧序列的形式传输。
相对于传统 HTTP 请求-响应模式每次都需要客户端与服务端建立连接, 节省了网络带宽资源的消耗, 在面对并发访问时有明显的性能优势, 且在浏览器客户端发送和接受消息是同一个持久连接方面, 实时性优势更为明显1.3 Geo JSONJSON (Java Script Object Notation) 是一种轻量级的数据交换格式, 以文字为基础, 能够表示各种复杂的结构, 独立于语言和平台并可以自我描述, 容易生成并且方便计算机解析, 以键/值 (key/value) 对的形式存在Geo J-SON是基于 JSON 的数据格式, 可以对地理要素进行编码Geo JSON 对象包括几何特征、属性或属性集, 几何特征遵循 OGC 规范Geo JSON 定义了以下几种几何类型:Point、Line String、Polygon、Multi Point、Multi Line String、MultiPolygon 和 Geometry Collection, 属性包含几何对象及附加信息, 以及属性集Geo JSON 比基于 XML 数据交换格式的 GML 更为简洁, 有利于地理信息数据的传输, 浏览器客户端可以直接利用 Java Script 进行解析[13-15]。
2 系统设计总体结构景区管理的核心在于景点的管理以及景区实时数据的管理, 本文根据景区实时数据的特点, 基于 Openlayers 和 Web Socket 设计了景区实时管理系统, 在B/S 的基础上采用.NET MVC 三层架构, 分别为数据层、服务层和界面层, 如图1 所示图 1 平台总体结构图 Fig.1 The architecture of platform 下载原图2.1 数据层平台数据库主要包括地图影像数据、景点基础数据、景点实时数据以及景点资源配置实时数据其中景区及其周边的地图影像数据选用谷歌影像数据, 采用精确到 20 级的谷歌影像能够十分清晰地展示出景点的环境详情, 将数据存储在Mongo DB 中, 通过发布的基础地图影像服务进行数据组织并通过数据访问接口访问景点位置、道路等景点基础数据存储为 KML 数据景区景点人数、当天购票人数等的景点实时数据存储到数据库 My Sql, 同样将景区车辆、管理人员位置、状态等景点资源配置实时数据通过物联网设备存储到关系型数据库 My Sql 中2.2 服务层服务层主要分为基础地图服务、实时数据推送服务以及其他服务基础地图服务主要利用谷歌影像发布 WMTS 服务和 Tile Mill 样式配置, 提供地图矢量注记瓦片服务做基础地图服务, 实时数据推送服务通过将数据转换为 Geo JSON 数据模型发送数据, 完成景点实时数据推送, 其他服务包括景点详情查询、定位以及网络服务等, 则通过系统整合旅游服务信息结合旅游服务业务逻辑, 采用Web Service 技术, 以 Rest 接口形式提供 Web 服务。
2.3 界面层界面层的设计主要是基于 Open Layers 的图层管理, 主要分为以下三层:旅游基础地图的展示、景点数据展示, 以及旅游资源配置实时数据的展示Open Layers 中的 Map 类是网页中的动态地图, 它相当于一个容器, 可向 Map 中添加图层 Layer 和控件 ControlLayer 类是支持各种数据格式的图层, 将 WMTS 影像图以及基础标注样式作为底图分层展示并创建不同业务需求的图层在动态交互以及实时信息展示方面, 利用 Web Socket 协议和服务器端进行 Geo JSON数据的交换, 在客户。
