APP下载

基于位置服务的移动GIS①

2017-05-17洪文菊薛现斌贵州大学计算机科学与技术学院贵阳550025

计算机系统应用 2017年4期
关键词:位置服务服务器端好友

洪文菊, 苟 刚, 薛现斌(贵州大学 计算机科学与技术学院, 贵阳 550025)

基于位置服务的移动GIS①

洪文菊, 苟 刚, 薛现斌
(贵州大学 计算机科学与技术学院, 贵阳 550025)

随着移动终端的普遍应用, 无线通信技术和地理信息系统的飞速发展, 基于位置的服务LBS(Location Based Service)与移动GIS(Geographic Information system)相结合的应用模式已成为研究热点, 并且开拓了一个具有无限潜能的市场. 本文首先论述了基于位置服务的移动GIS的基本概念, 探讨了Android开发平台的系统架构与基于LBS的移动GIS体系结构, 在此基础上设计了一个基于android平台的移动GIS系统, 该系统在传统移动GIS的基础上进行了改进, 克服了传统移动GIS缺乏社交互动性的缺点, 不仅能够实现准确的实时定位与轨迹记录查询, 还能够与好友互相分享实时位置以及进行多人轨迹的同时追踪, 可以用于对老人儿童等弱势群体进行实时监护, 也可以用于企业员工、车辆的管理调度等.

位置服务; 移动GIS; 移动定位

目前, 随着智能手机的普及以及移动定位的迅速发展, 位置服务与移动GIS相结合的应用模式, 已经成为研究热点. 许多公司、组织或者个人开发了各种基于位置服务的移动GIS应用, 这些应用大多都是基于地图浏览或者个人移动定位方面, 偏向于导航功能, 而在用户轨迹记录及社交分享以及用户互动方面的功能则比较少.

为了弥补以上的这些不足之处, 本文设计并开发了一款基于位置服务的可用于实时定位与轨迹分享的移动GIS, 本系统在实现了传统移动GIS的导航与定位等基础功能的基础上, 还增加了轨迹记录、历史轨迹查询、好友之间的位置分享及多人轨迹同时查看等功能, 以期为用户提供更加实用便捷的位置服务.

1 基于LBS的移动GIS概念

地理信息系统(Geographic Information System,GIS), 是在计算机软件、硬件和网络的支持下, 对地理空间数据进行采集、存储、查询、分析和显示的技术系统[1]. 移动GIS是目前地理信息系统研究的重要方向之一, 它在继承了传统地理信息系统对地理空间数据处理的基础上, 还集成了嵌入式技术、移动计算技术、移动通信技术和定位技术, 使得地理空间数据的采集与处理更加具有灵活性与实时性. 基于位置的服务(Location Based Service, LBS), 是指移动终端利用各种定位技术获得当前位置信息, 再通过无线网络得到某项服务[2]. 与传统的GIS相比, 基于位置服务的移动GIS具有移动性、实时性、灵活性、多样性等特点, 能够提供实时的空间信息“4A服务”, 已经成为了人们日常生活中的一种必不可少的信息服务.

2 Android系统架构

Android是一种基于Linux平台的、开源的、智能移动终端的操作系统, 它由谷歌公司开发而成, 近年来已逐渐成为主流的移动终端操作系统之一. Android操作系统采用分层架构设计, 从高层到低层可以分为四层架构, 分别是应用层、应用框架层、系统运行库层和 Linux 内核层[3].

1) Linux内核层:基于 Linux 2.6内核开发, 主要用来为Android设备的各种硬件提供底层的驱动, 如显示驱动、音频驱动、照相机驱动、蓝牙驱动等, 它是硬件和软件之间的抽象层.

2) 系统运行库层: 通过C/C++库来支持Android系统提供的各个组件或者模块. 这一层包含有Android运行时库, 它提供的核心库能够允许开发者使用Java语言来编写Android应用. 运行时库中还包含Dalvik虚拟机, 它专为移动设备服务, 使得每一个Android应用都能运行在独立的进程当中.

3) 应用框架层:提供开发者构建应用程序时所需要的各种API.

4) 应用层:该层包含所有运行在Android机上的应用程序, 即开发者所开发的“手机应用”.

3 基于LBS的移动GIS体系结构

基于LBS的移动GIS主要由3部分构成: 客户端部分、服务器部分和数据源部分[4]. 如图1所示.

客户端: 基于LBS的移动GIS的移动终端是一种能够进行快速定位和地理识别的设备. 它具有方便携带、耗能低等特点, 并且兼容具备卫星导航定位、加载行业应用软件、通信和数据传输等基本功能. 常用的硬件设备主要包括智能手机、便携式电脑、掌上电脑(PDA)、GPS定位仪等.

图1 基于LBS的移动GIS体系结构图

服务器: 系统的服务器包括Internet、Web Server、Map Server等组成部分. 无线通信网络用来连接用户与服务器, 目前主流应用的无线网络分为基于蜂窝通信系统的无线网络(GSM、GPRS、CDMA、LTE等)和无线局域网(WiFi)两种方式. Web服务器接收客户端提交的不同类型数据, 服务器处理逻辑将接收到的数据按照客户端的要求在Web服务器端进行运算, 再将运算的结果返回给客户端进行解析和显示. GIS应用服务器提供LBS服务、空间数据分析、查询、下载等操作[5]. 它是整个系统的核心部分.

数据源: 基于LBS的移动GIS系统包含了与地理位置有关的空间数据以及相应的属性数据, 是地理应用服务器实现地理信息服务的数据来源. 其中属性数据可以存储在嵌入式数据库中(如SQLite), 也可以存储在服务器端的数据库中(如SQL Server). 空间数据可以存放在本地, 作为离线地图使用, 但考虑到空间数据的更新频率较快, 数据量较大等因素, 通常存放在GIS应用服务器中以在线的形式进行访问.

4 系统实现

本文旨在实现一个基于位置服务的移动GIS. 系统通过用户移动终端的GPS或移动网络采集用户的实时位置信息, 用户可以在电子地图上查看自己的位置.同时, 系统可以记录用户移动产生的轨迹, 用户可以通过选择时段查询自己在该时段中的历史轨迹. 系统也集成了社交互动功能, 用户可以添加好友, 在与好友互相开放位置之后可以查看彼此的实时位置与轨迹,同时用户还可以建立群组, 同时查看多个群成员的轨迹情况.

4.1 总体设计

根据分析定位系统的业务需求与系统功能需求,将本系统的主要功能模块设计如图2所示.

图2 系统功能模块图

本系统由移动客户端与后台服务器端两部分构成.移动客户端在Android系统平台上开发, 使用Android studio作为开发工具. 客户端与服务器端采用C/S结构来进行交互, 本系统采用Apache作为Web服务器, 选择SqlServer作为数据库管理系统.

本系统的移动客户端负责接收用户的请求和显示结果, 直接与用户进行交互. Web服务器负责接收客户端的请求, 通过SQL语句等方式调用数据库服务器,然后将数据处理的结果返回给Web服务器, 再由Web服务器传送回客户端.

本文主要讨论基于LBS功能的实现, 因此系统中如添加好友、新建群等辅助功能则不再赘述.

4.2 功能实现

4.2.1 客户端与服务器端的通信

本应用采用Volley框架来处理客户端与服务器端的通信. 尽管Android SDK中提供了HttpClient 和HttpUrlConnection两种方式用来处理网络操作, 但当应用比较复杂的时候就需要我们编写大量的代码处理很多东西, 如图像缓存, 请求的调度等等. 而Volley框架抽象了底层Http Client等实现的细节, 使Android应用网络操作更方便更快捷, 并且Volley在不同的线程上异步执行所有请求而避免了阻塞主线程[6].

Volley的用法如下:

RequestQueue mQueue = Volley. newrequest Queue (context); //获取请求列对象

StringRequest stringRequest = new StringRequest(getString(R.string.webIP), new Response. Listener<String>() {

@Override

public void onResponse(String response

) {

Log.d("TAG", response);

}

}, new Response.ErrorListener() {

@Override

public void onErrorResponse ( VolleyError error)

{

Log.e("TAG",error.getMessage(), error);

}

}); //传入三个参数, 分别是服务器地址, 服务器响应成功回调, 服务器响应失败的回调

mQueue.add(stringRequest);

4.2.2 登录注册模块的实现

用户使用Android客户端时首先看到的是登录页面. 已经注册了的用户可以直接进行登录, 没有注册过的用户需要先进行注册, 然后再登录进入本系统.该模块的内部流程如图3所示.

图3 客户端登录注册流程图

其中部分关键代码如下:

final String user = et_name. getText(). toString(). trim(); //获取用户输入的用户名

final String password = et_password. getText().toString().trim(); //获取用户输入的密码

if(TextUtils.isEmpty(user)||TextUtils.isEmpty

(password)) {

Toast.makeText(getApplicationContext(), "用户名和密码不能为空", Toast. LENGTH_SHORT). show () ;

return;

}

Map<String, String> map = new HashMap<String, String>();

map.put("user", user);

map.put("password", myApp.md5 (pass word));

4.2.3 定位模块的实现

在本系统用户可以在本机页面点击“开启实时位置”实现自我的实时定位. 该部分的界面主要是一个MapView, 界面的底端有放大地图与缩小地图的按钮,用户也可以通过手势拖动或放大缩小地图. 本模块功能实现流程如图4所示.

图4 定位模块流程图

其中部分关键代码如下:

public void start() {

//新建百度地图定位客户端类;

mLocationClient = new LocationClient(ct);

mMyBDLocationListener = new MyBDLocationListener();

/ /注册监听器;

mLocationClient.registerLocationListener(mMyBDLocat ionListener);

//创建定位选项;

LocationClientOption option = new Location ClientOption();

option.setLocationMode(LocationMode.Hight_Accuracy );//设置定位模式, 高精度, 低功耗, 仅设备

option.setCoorType("gcj02");//返回国测局经纬度坐标系: gcj02

option.setScanSpan(1000 * locate_time);//设置发起定位请求的间隔

option.setIsNeedAddress(true);//设置是否需要地址信息

option.setOpenGps(true);//设置是否使用gps

mLocationClient.setLocOption(option);

mLocationClient.start();

}

功能运行结果如图5所示.

图5 定位功能的实现

4.2.4 轨迹查询模块的实现

轨迹查询分为查询自己的历史轨迹与查询好友的历史轨迹. 用户查询自己的历史轨迹时, 首先设定要查找的时间段, 即轨迹的开始时间与结束时间, 时间段的设置通过datePicker与timePicker两个类组成的时间选择器来实现, 然后通过SQL语句查询保存在本机SQLite数据库中的数据, 查询到的这些数据就是这段时间里所定位到的位置点points, 最后通过如下代码将数据绘制成轨迹显示在界面上.

OverlayOptions mopolyline = new PolylinOptins().width(10).color(0xAAFF0000).points(points);

mBaiduMap.addOverlay(mopolyline);

查询本机历史轨迹的开发流程如图6所示.

图6 本机历史轨迹查询模块

若用户要查询好友的历史轨迹, 则在用户设定查找时间段发起请求后, 系统将好友的用户ID, 查询的起始时间通过封装成Map键值对发送到服务器端, 服务器再根据这些信息在SqlServer数据库中进行位置数据查找, 之后将结果返回给客户端. 这部分的关键代码如下:

Map<String, String> map = new HashMap <String, String>();

map.put("friend_id", show_userID);

map.put("starttime", starttime);

map.put("endtime", endtime);

webserverhelper = new WebServerHelper(get-String(R.string.webIP) + getString(R.string.get_location_ url), GET_LOCATIONS, map, baidumap. this, "", "", "get_locations", this);

webserverhelper.request();

查询好友历史轨迹的开发流程如图7所示.功能运行结果如图8所示.

图7 好友历史轨迹查询模块

图8 轨迹查询功能实现

6 结语

本文旨在实现一个基于位置服务的移动GIS. 针对当前的移动GIS应用缺乏社交与互动性的缺陷, 设计并实现了实时定位

首先对Android系统架构与移动GIS体系结构做了简要探讨, 在此基础上研发了一套基于Android平台的移动GIS应用系统, 实现了实时定位、轨迹记录、历史轨迹查询、好友之间的位置分享及多人轨迹同时查看等功能, 极大地提高了移动GIS的互动性与社交性, 可以对特定人员进行追踪, 能够满足朋友、亲人、同事之间的位置需求.

位置服务与移动GIS的密切结合开拓了一个广阔的市场, 这一市场蕴含着巨大的商机, 无限的潜能, 相信随着移动用户的逐步增多, 这一市场将更加壮大, 本系统的设计可以为基于位置服务的移动GIS系统提供参考.

1 肖航宇.移动地理信息系统应用研究[硕士学位论文].武汉:武汉理工大学,2010.

2 Jiang B, Yao X. Location-based services and GIS in perspective. Computers, Environment and Urban Systems, 2006, 30(6): 712–725.

3 姚昱旻,刘卫国.Android 的架构与应用开发研究.计算机系统应用,2008,17(11):110–112,24.

4 许颖,魏峰远.移动 GIS 关键技术及开发模式探讨.测绘与空间地理信息,2008,31(4):45–47.

5 陈飞翔,杨崇俊,申胜利,等.基于LBS的移动GIS研究.计算机工程与应用,2006,42(2):200–202.

6 孟远.Android网络通信框架Volley的解析和比较.软件, 2014,(12):66–68.

Mobile GIS Based on Location Services

HONG Wen-Ju, GOU Gang, XUE Xian-Bin
(School of Computer Science and Technology, Guizhou University, Guiyang 550025, China)

With the rapid development of mobile terminal technology, wireless communication network technology and the universal application of geo-spatial information in all walks of life, the application mode that combines LBS with mobile GIS has become a hot research topic, and it opens up a market with unlimited potential. This paper discusses the basic concept of mobile GIS based on location services and the system architecture of Android development platform and the architecture of mobile GIS based on LBS. On the basis of this, a mobile GIS system based on Android platform is designed. The system has been improved on the basis of traditional mobile GIS, which overcomes the shortcomings of lack of social interaction in traditional mobile GIS, it not only can realize accurate real-time positioning and query trajectory, but also can share real-time location with friends and track the trajectory of many people at the same time. It can be used for real-time monitoring of the old elderly, children and other vulnerable groups, but also for employees, vehicle management scheduling.

location service; mobile GIS; mobile location

贵州省农业资源与环境信息化服务平台关键技术的研究与建设(黔科合NY[2013]3078号)

2016-07-18;收到修改稿时间:2016-08-18

10.15888/j.cnki.csa.005672

猜你喜欢

位置服务服务器端好友
属羊
浅析异步通信层的架构在ASP.NET 程序中的应用
删除好友
互联互通 畅享未来 第12届卫星导航与位置服务运营商大会在深圳举行
位置服务,车联网的风口
在Windows中安装OpenVPN
中位协二十周年庆典暨第四届中国卫星导航与位置服务年会将在北京举行
位置服务中服务点空间可达性评估模型分析
网页防篡改中分布式文件同步复制系统
基于Struts的Web应用系统数据验证