位置信息服务技术的应用研究与实现

2016-01-20 12:50李利正

李利正

(绍兴职业技术学院信息工程学院, 浙江 绍兴 312000)



位置信息服务技术的应用研究与实现

李利正

(绍兴职业技术学院信息工程学院, 浙江绍兴312000)

[摘要]针对新城区商家分散、信息不集中的特点,本文充分利用移动平台的应用优势,从软件设计与开发的角度对基于位置信息服务的移动应用进行研究,重点探讨利用移动位置信息服务和与Internet服务器交互的关键技术,并应用百度地图API实现地图导航功能.实践证明应用的可行性与便利性,具有较高应用价值.

[关键词]位置信息服务;MVC;交互响应式应用

Android系统自发布以来,以其系统开源、适用的机型多、便于应用开发等优势,推动了基于Android操作系统的移动应用开发的迅速发展.随着3G网络的不断发展,位置信息服务及移动互联网的应用普遍被业界看好[1],众多研究单位把目光投向了移动位置信息服务,力求为广大用户提供更简单、更贴心、更个性化的手机应用服务.

基于位置的服务(Location Based Services,LBS)是指移动通信运营商利用移动设备的定位技术[2],获得用户的位置信息和用户的上下文信息,从而提供个性化的服务,其关键技术是移动设备的定位技术.目前,LBS定位采用的主流技术包括GPS卫星定位、基站蜂窝移动定位和无线局域网定位[3].GPS有极高的可用性和可靠性,定位精度高;移动蜂窝网络是目前覆盖范围最大的无线网络,定位受基站距离、信号强弱和测量误差等影响.但随着蜂窝网络基础设施的完善、移动终端功能增强,利用移动蜂窝网络定位被日益看重[4].无线局域网定位系统设施简单、覆盖范围广、服务可集成度高,但因为受距离限制主要用于室内定位.通过对定位技术对比分析,本文设计开发了一个基于GPS、移动蜂窝网络定位的智能商家导航系统.本系统将Internet网络资源的丰富性与移动设备便携性相结合,通过移动智能设备为用户提供方便、个性化的移动位置信息服务.这不仅符合信息服务发展的趋势,而且具有较好的市场应用前景.

1商家导航系统架构与设计方案

系统架构图如图1所示.商家导航系统主要通过导航卫星和移动蜂窝网络获取移动设备的位置信息服务,在服务器端检索周边的特定商家、商品和活动信息,并在客户端根据商家坐标计算距离远近,并根据距离显示商家列表.系统同时提供了线路查询、地图导航等功能方便用户快捷地找到商家,而当用户进入特定商圈时,启动广告推送服务功能.

系统采用B/S架构,服务器端应用PHP+MYSQL开发,负责基础数据维护,并在接收到客户端通信连接请求和位置信息后,根据条件进行信息检索,并将检索到的信息以XML文件形式反馈给客户端.客户端是基于Android平台的智能设备,支持GPS定位,具有联网功能,能随时随地提供位置信息服务.客户端主要有4个功能模块:通信模块,负责与服务器建立通信连接;数据封装模块,负责数据类型、数据对象的定义和封装;解析模块,负责数据的解析处理;应用模块,负责应用APP与用户的交互.在软件开发模式上主要采用MVC模式,即模型(Model)、视图(View)和控制器(Controller)[5],将数据处理和数据表现进行分离,利用控制器负责模型和视图的信息通信,控制应用程序的流程,使程序结构更加直观.

图1 商家导航系统架构图

考虑到移动设备运算能力、存储能力的限制,软件在数据存储上设计了本地数据和服务器数据存储两部分,如个人用户信息、最近一次访问的数据信息等存储在本地设备上,而服务器上存储的是全部的用户数据、商家数据、产品数据和活动数据等,当移动设备在联通网络的情况下可以从服务器加载最新信息.

系统总体功能结构设计如图2所示.

图2 系统总体功能结构图

2算法设计

移动设备在获取位置信息后,与服务器进行交互,在数据库中检索出一定距离范围内的商家.由于在数据库中保存的是每个商家的经纬度,因此在信息检索的过程中,需要实时计算移动设备与商家之间的球面距离,从而筛选符合距离范围的商家信息.

地球是一个椭球体,为了计算两地的距离,一般应将椭球面上两地的大地坐标按一定的规律投影到平面上[6],并以相应的平面直角坐标表示.目前世界各国常采用的是高斯投影.本系统对计算精度不做严格要求,忽略不同经纬度上半径的变化,假设地球是一个规则的圆球体,以地心为球心,半径为R,移动设备的经纬度为T1(lat1,lon1),利用向量公式计算设备所在点的空间坐标为:

(1)

若某商家的经纬度为T2(lat2,lon2),应用反三角函数求出T1和T2的夹角公式:

a=arccos(x1*x2+y1*y2+z1*z2)

(2)

再利用弧度的计算公式α/180*π*R,可求出两点的最短距离为:

(3)

图3 地球坐标系统

3关键技术

3.1 Android手机客户端与服务器端的数据通信

作为控制与数据共享中心,服务器端主要负责数据维护以及与移动设备的数据通信.其功能包括商户注册、登陆,并管理其场所信息、商品和活动等信息.管理员管理商户信息以及数据库的管理.下面详细介绍通信模块的实现.

客户端将移动设备当前的位置的经纬度(lat1,lon1)、商家类别以及搜寻半径r作为参数,使用GET方式发送请求至服务器端进行检索处理,服务器端检索符合类别的所有商家,并根据公式(3)计算每个商家的经纬度与请求参数中的经纬度计算出两者之间的距离,过滤掉不符合要求的商家,将符合要求的商家生成XML文件,作为对查询结果的数据封装返回给客户端.

Android中解析XML主要有DOM、SAX和PULL三种方式.DOM提供了标准的解析方式,在解析XML时,解析器需要读入整个文档并构建一个驻留内存的树结构(节点树)[7],才可以使用DOM的标准接口来操作这个树结构,因此效率低下.SAX是一种XML解析的替代方法,读取文档时就能处理它,不必等待整个文档被存储之后才采取操作.PULL解析是在XML文档中寻找想要的标记,把需要的内容读入内存,而不需要整个文档都读入内存.这种方式比较适合手机等内存有限的小型的移动设备.本系统主要使用PULL方式解析数据.

客户端将用户的位置、查询半径作为参数,通过HttpURLConnection对象与服务器建立连接,向服务器发送一个uri请求,并获取服务器响应的数据流InputStream.InputStream对象代表了服务器返回的XML文件数据流,客户端将此对象用XML解析器XmlPullParser进行解析后获得XML数据,并把数据直接压入Shop、Product等数据模型对应的数据列表,交由前端页面显示获得的结果.

3.2 Android系统的位置信息服务

Android系统的位置信息服务包括自我定位、地图模式、线路查询,并应用Intent接收器实现了广告推送,即以经纬度和半径划定一个区域,当设备出入该区域时,发出活动提醒信息.

Android位置信息服务分为两部分:位置信息服务和地图.位置信息服务API主要使用LocationManager来获取设备的位置信息,追踪设备的移动路线或设定敏感区域.这个服务是按照“交互响应式”来实现的,具体步骤是:

1)在Activity类中通过getSystemService(Context.LOCATION_SERVICE)获得LocationManager对象;

2)指定定位方法.主要有GPS定位和网络定位. GPS定位一般可以提供比较精确的位置信息,但定位速度和质量受到卫星数量和环境情况的影响.网络定位的位置信息精度较差,但速度较GPS定位快.

3)在指定LocationManager的定位方法后,调用getLastKnowLocation()方法获取位置信息Location.用getLastKnowLocation()获得的位置一般为上次位置,因此在应用程序中一般使用requestLocationUpdates()注册一个周期性的位置更新,在监听位置变化时调用LocationListener,获取当前的位置信息Location.

4)从服务器读取商家信息保存于ShopList列表.当用户选择地图浏览方式时,系统调用MapView展示地图图层,同时在MyLocationOverlay图层显示移动设备位置,而设备附近的商家主要应用自定义图标显示在ItemizedOverlay图层上.当用户点击这些自定义的图标时,在PopupOverlay弹出窗图层上用户读取到商家简介,同时调用路线规划类MKRoutePlan的getDistance方法,获取路线距离.若用户对该商家有意向,可以点击路线导航按钮,在RouteOverlay图层查看导航路线.

4系统测试结果

在开通2G网络情况下,对上述系统进行了现场测试.测试中,客户端为三星I9300智能手机.测试结果表明,整个系统运行稳定.特别是在开启GPS时定位速度快,地图数据正确,达到了预期的使用效果.商家列表和商家地图画面分别如图4和图5所示.

图4 商家列表

图5 商家地图浏览图

5结语

本文使用“交互响应式App”软件开发方法,利用PHP和Android开发环境设计并实现了一个移动式商家导航系统.实践证明,这个系统具有较高的稳定性和可靠性.这个系统的使用充分体现了基于位置信息服务的移动增值业务的价值.随着3G、4G移动网络传输速度和智能移动设备性能的提高,移动位置信息服务必将具有广阔的运用前景.

[参考文献]

[1]黄志勇,赵霁.基于Android平台的移动位置信息服务开发研究[J].自动化技术与应用,2011,30(12):22-26.

[2]唐科萍,许方恒,沈才梁.基于位置服务的研究综述[J].计算机应用研究,2012,29(12):4432-4436.

[3]吕品,李瑞敏,王雨阳.基于位置服务的智能化出租车调度系统研究[J].交通信息与安全,2012,30(5):113-116.

[4]赵勋.基于地理位置服务的商圈建模方法[J].沈阳大学学报:自然科学版,2013, 25(6):485-491.

[5]胡扬帆,杨刚,胡颢石.结合LBS和信息推送的博物馆APP的设计实现[J].计算机应用与软件,2013,30(12):108-112.

[6]公磊.基于Android的GPS测量系统开发[D]. 南昌:南昌大学,2008.

[7]姚建辉,宋建农.基于XML的数据管理探索[J].邢台职业技术学院学报,2005, 23(2):39-41.

(责任编辑穆刚)

Research and application on the technology of the

location-based services

LI Lizheng

(College of Information Engineering, Shaoxing Vocational & Technical College, Shaoxing Zhejiang 312000, China)

Abstract:According to the characteristics of the scattered new city businesses and asymmetric information, the paper makes full use of the advantages of the application of the mobile platform which is the location-based services from the perspective of the software design and development. It focuses on the location-based services and the interaction with Internet. Meanwhile, the applications of Baidu map API achieve the navigation function. The result of the experiment validates that this application is feasible, convenient and has greater useful value.

Key words:location based on services; MVC; application of interactive response

[中图分类号]TP311.52

[文献标志码]A

[文章编号]1673-8004(2015)05-0117-04

[作者简介]李利正(1979—),女,浙江绍兴人,讲师,硕士,主要从事数字媒体、算法分析方面的研究.

[基金项目]绍兴职业技术学院2013学年科研计划项目(201343).

[收稿日期]2015-01-28