基于地理围栏的景点信息推送设计与实现

2022-11-08 08:49
科技视界 2022年21期
关键词:关系数据库围栏景点

王 静 刘 飞

(1.西安交通工程学院,陕西 西安 710300;2.西安现代控制技术研究所,陕西 西安 710065)

0 引言

随着移动通信技术的发展与智能终端的普及化,智慧旅游服务的研究更多的趋向于智能化、个性化多元化,再加上大数据云存储等技术的出现,为智慧旅游自助导游系统奠定了重要的技术基础。

另一方面,由于操作简单,各种智能移动终端应用(App),让人们真正走向了移动信息时代,市面上的各种出行App、旅游类App 也应运而生。当下,较为主流的主要有两类,一类是电子地图,如天地图、高德地图和百度地图等软件,主要提供出行路线规划、周边搜索等服务;另一类是以马蜂窝、携程等为代表,可提供旅游规划、攻略分享以及酒店预订、机票购买等服务。用户使用以上两类App 时,需要主动查询景点相关信息。当距离景点一定范围时,App 能主动为用户推送景点相关信息,用户体验将得到有效提升。

为此,本文以Android 平台为基础,结合移动GIS,通过对地理围栏技术的研究,设计并实现景点信息推送功能。

1 地理围栏技术

LBS 即基于位置的服务,它是通过电信运营商的无线通信网络或外部定位方式(如GPS)获取移动终端用户位置信息,在GIS 平台的支持下,为用户提供相应服务的一种增值业务。地理围栏技术是LBS 的一项新应用,即用虚拟栅栏围出一个地理边界,当手机进入、离开该区域,或在该区域内活动时,手机可以接收自动通知和警告。

地理围栏技术的核心是,判断用户是否落在围栏内部。常用的地理围栏算法有圆形、矩形以及复杂多边形等几类。

本文采用圆形地理围栏算法,数学模型可表示为:

式中,(x,y)为地理围栏的中心;(x,y)为地理围栏的边界坐标;r 为地理围栏的半径。

圆形地理围栏示意图如图1 所示,通过用户手机网络或GPS 模块定位用户位置(x,y),用户距离围栏中心距离为:

图1 圆形地理围栏示意

当d≤r 时,用户进入地理围栏内,触发地理围栏推送或告警。

2 设计与实现

2.1 系统架构设计

本文研究的基于地理围栏的景点信息推送功能,建立在具有地图定位功能的手机App 上,系统采用C/S(Client/Server)结构,整个架构从底层至上层共分为四个,依次是数据层、逻辑服务管理层、逻辑业务处理层和表示层(调用层)。

数据层由地理数据库和普通关系数据库构成。地理数据库包括城市各级道路的线状要素和城市旅游景点的点状要素以及它们组成的网络数据集和针对点状要素的地址定位器;关系数据库包括景点信息、通知信息等内容。数据库是整个系统的基础,用户能否得到正确的景点信息,依赖于数据库的完整。

逻辑服务管理层主要由ArcGIS Server 和Web 服务器提供。ArcGIS Server 用来处理和发布地理数据库,Web 服务器则用来处理和存储关系数据库内容。

逻辑业务处理层是系统架构中的核心部分。逻辑业务层处理层主要实现地图加载定位和共享推送服务等功能,在数据交换中起承上启下作用。该层与逻辑服务管理层接口使用主流Web 接口之一的REST接口。REST 发送数据时,无须进行数据封装,直接向服务器发送,经HTTP 协议将发送的参数置于URL 中进行发送,有利于开发人员理解和应用相关的Web 资源以及整体性能的提升。

表示层主要将推送信息在客户端显示,实现用户对于功能的操作。

2.2 地理围栏数据库

地理围栏的实现,需要的数据包括:景点经纬度信息、围栏半径、推送数据信息等。地理围栏数据存储于关系数据库中,使用的是移动端嵌入式数据库引擎SQLite。存储数据时,每个景点设置唯一Id 作为主键,同时,选取合适的数据类型存储经纬度、围栏半径以及推送信息等内容。

2.3 功能设计

系统的主要功能模块包括地图加载模块、定位功能模块、地理围栏判断模块、信息推送模块。

地图加载模块通过ArcGIS Online 在线地图加载实现。通过ArcGIS Online Services 连接到特定层,将在线切片地图,加载至ArcGIS Tiled Map Service Layer图层,再通过MapView 地图控件显示,实现地图加载。MapView 提供了多种地图缩放的方式,通过调用zoomin()和zoomout()逐级放大、缩小地图。

定位功能模块需通过get System Service 方法从activity 中获得一个Location Manager class 的引用,提供系统的位置服务,使用request Location Updates 方法对位置进行周期更新,包括了经纬度、更新时间等参数。通过调用get Last Known Location 方法获取用户的最新更新的位置信息。

地理围栏判断模块需要调用add Proximity Alert方法设定一个proximity alert,方法有5 个参数,依次是经度、纬度、区域半径、是否过期以及一个广播Pending Intent。此函数用于指定景点坐标(纬度、经度)和围栏半径,根据获取到的用户位置,计算与景点坐标距离,若距离小于等于围栏半径,则认为用户已进入围栏。

信息推送模块通过使用get Brodcast 静态方法来创建一个Pending Intent,同时,创建一个意图过滤器intentFilter,并使用注册广播接收器register Receiver的方法来绑定一个自定义的接收广播Broadcast Receiver 和intentfiler,当设备进入一个监测到的告警alert 区域时发出意图intent。

设计流程图如图2 所示。用户在打开手机App后,进行地图加载,获取关系数据库景点信息后,生成围栏信息。同时,周期采集用户位置,当用户进入围栏,则调用广播函数,发出通知,在手机通知栏显示景点介绍信息。

图2 功能设计流程

2.4 功能实现

2.4.1 景区概况

本文选取大雁塔景区作为研究对象。大雁塔位于十三朝古都西安,由高僧玄奘为保存由天竺带回长安的经卷佛像而主持修建,是现存最早、规模最大的唐代四方楼阁式砖塔,造型简洁、气势雄伟,是我国佛教建筑艺术的标志性建筑和杰出代表。

2.4.2 实现效果

地图加载示意图如图3 所示,使用的背景图层为ArcGIS 在线服务上获取的西安市旅游景点分布图。可实现西安市旅游景点地图的加载、定位、地图界面的缩放等功能。

图3 地图加载示意

本系统设置的景区地理围栏半径为1 km,选取距离大雁塔坐标为围栏中心。为验证地理围栏设置的准确性以及推送功能是否正确,在大雁塔周围选取四个位置作为测试点,如图4 所示。当用户位于围栏外途径围栏边界所选点位时,用户手机通知栏均出现系统发送的提示信息,提示用户进入大雁塔景区,并附有景区的相关介绍,如图5 所示。

图4 地理围栏示意

图5 进入地理围栏的提示信息

3 总结

本文通过移动GIS 和Android 平台,设计实现的基于地理围栏的景点信息推送系统,可实现用户在进入景区范围时主动提醒服务,提升了用户自助旅游时的便捷体验。由于使用手机应用软件方式进行提醒服务的便捷程度仍有不足,下一步可开发更加简便的互联网服务方式(如微信小程序),提供实时、便捷的服务。另一方面,对于推送提醒的内容,可增加视频、VR全景等形式,丰富用户体验。

猜你喜欢
关系数据库围栏景点
关系数据库在高炉数据采集系统中的应用
TBS围栏灭鼠技术
打卡名校景点——那些必去朝圣的大学景点
电子围栏系统在水厂中的应用
英格兰十大怪异景点
没有景点 只是生活
基于索引结构的关系数据库关键词检索
一种基于数据图划分的关系数据库关键词检索方法