《毕业设计(论文)基于GIS和智能手机漫游定位系统的设计与实现.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)基于GIS和智能手机漫游定位系统的设计与实现.doc(34页珍藏版)》请在三一办公上搜索。
1、本科毕业设计(论文)基于GIS和智能手机漫游定位系统的设计与实现学生姓名: 专 业: 计算机科学与技术 学 号: 100341317 指导教师: 技术 二一四年六月中国民航大学本科毕业设计(论文)基于GIS和智能手机漫游定位系统的设计与实现The design and implementation of intelligent mobile roaming positioning system based on GIS学生姓名:专 业:计算机科学与技术学 号:100341317指导教师:学 院:计算机科学与技术2014 年 6 月创见性声明本人声明:所呈交的毕业论文是本人在指导教师的指导下进行
2、的工作和取得的成果,论文中所引用的他人已经发表或撰写过的研究成果,均加以特别标注并在此表示致谢。与我一同工作的同志对本论文所做的任何贡献也已在论文中作了明确的说明并表示谢意。毕业论文作者签名: 签字日期: 年 月 日本科毕业设计(论文)版权使用授权书本毕业设计(论文)作者完全了解中国民航大学有关保留、使用毕业设计(论文)的规定。特授权中国民航大学可以将毕业设计(论文)的全部或部分内容编入有关数据库进行检索,并采用影印、缩印或扫描等复制手段保存、汇编以供查阅和借阅。同意学校向国家有关部门或机构送交毕业设计(论文)的复印件和磁盘。(保密的毕业论文在解密后适用本授权说明)毕业论文作者签名: 指导教师
3、签名:签字日期: 年 月 日 签字日期: 年 月 日摘 要当前移动互联网技术飞速发展,Android智能手机逐渐占据手机消费市场的主流。由于Android平台的开源性及其内置的丰富API接口,吸引了众多安卓开发爱好者。因此,基于Android智能手机的应用越来越广泛,人们对基于手机的位置服务需求越来越强烈。当下的GPS全球定位系统虽然可以满足人们室外定位的需求,然而在室内,由于受到建筑物的遮挡,GPS终端接收到的信号强度比较微弱,导致定位精度与速度不高,无法很好满足用户室内定位的需求。近些年,随着WiFi技术的广泛发展,WiFi网络的室内覆盖越来越普及,利用WiFi进行室内定位已经成为一种研究
4、趋势。基于位置指纹的WiFi室内定位技术,以其原理简单,易理解,容易实现,定位精度高的优点迅速成为室内定位技术的研究热点1。虽然WiFi室内定位已经有了一定的研究,但是和GIS相结合的室内定位还比较少。本文在研究了WiFi位置指纹定位算法基本原理的基础上,针对WiFi信号不稳定影响定位精度的问题,提出了改进方法,并融合移动GIS开发的相关知识,设计并实现了基于GIS和智能手机漫游的定位系统。关键词: 移动GIS;位置指纹;WiFi定位;室内定位AbstractWith rapid development of the current mobile Internet technology, An
5、droid intelligent mobile phones gradually occupy the mainstream consumer market. Due to the open nature of Android platform and its built-in rich API interface, attracted a lot of Android development enthusiasts. Therefore, based on the application of the Android smartphone is more and more widely,
6、people based on the location of the mobile phone service demand more and more strong. Although the current GPS global positioning system can satisfy the demand of people outdoor positioning ,GPS terminal receives the signal strength weakly because of the structure of the shade, so its positioning ac
7、curacy and speed is not high and it cant very well meet the needs of users of indoor positioning.In recent years, with the extensive development of Wireless Fidelity technology, Wireless Fidelity network becomes more and more popular indoor coverage, using Wireless Fidelity for indoor positioning ha
8、s becomes a trend. Location based fingerprint Wireless Fidelity indoor positioning technology, with its simple principle, easy to understand, easy to implement, the advantage of high precision rapidly become the focus in the indoor positioning technology. While Wireless Fidelity indoor positioning h
9、as a certain amount of research, indoor positioning that combines with geographical information system is less. In this paper, after studying the basic principle of the Wireless Fidelity location fingerprint localization algorithm, for Wireless Fidelity instability problems affected the accuracy of
10、positioning, put forward the improved method. And the fusion of mobile geographical information system development related knowledge, designed and implemented the positioning system of intelligent mobile roaming based on geographical information system.Key Words: Mobile GIS; Fingerprint positions; W
11、ireless Fidelity positioning; Indoor positioning目 录摘 要IAbstractI第1章 绪论11.1 研究背景11.2 室内外定位技术研究现状11.3 研究意义11.4 论文研究内容1第2章 开发环境及相关技术简介12.1 软硬件开发环境12.2 移动GIS平台UCMap简介12.3 Socket通信机制简介12.4 主要定位算法12.4.1 位置指纹定位算法12.4.2 最近邻法12.4.3 K近邻法12.5 本章小结1第3章 系统需求分析13.1 系统目标13.2 系统描述13.3 系统功能需求13.4 本章小结1第4章 系统设计14.1 系
12、统整体架构14.2 服务器端设计14.2.1 服务器功能模块划分14.2.2 服务器端功能描述14.3 移动客户端设计14.3.1 移动客户端功能模块划分14.3.2 移动客户端功能描述14.4 本章小结1第5章 系统实现15.1 服务器端具体实现15.1.1 数据库模块15.1.2 定位算法模块15.2 客户端具体实现15.2.1 离线采集模块15.2.2 定位显示模块15.2.3 历史轨迹查询模块15.3 系统结果展示15.3.1 离线训练阶段测试15.3.2 定位结果展示15.4 实验结果分析15.5 系统关键技术15.6 本章小结1第6章 总结与展望1参考文献1致 谢1附录:外文翻译资
13、料1第1章 绪论1.1 研究背景在移动互联网技术的快速发展之下,智能手机迅速成为手机消费市场的主流。当前,WiFi几乎已被嵌入到每一部智能手机,从而把WiFi的发展与研究推入高潮。位置服务市场也发展迅速,人们对定位服务的需求快速增长。卫星定位导航系统(GPS)的产生及发展,已经基本上解决了室外空间中的准确定位问题,并已在军事,资源,交通运输,农业,环境领域有着非常广泛的应用2。然而,当终端接收机在室内工作的时候,由于建筑物的遮挡使信号强度大大衰减,导致定位精度低甚至不能完成定位。例如,A-GPS定位(GPS)必须通过多个网络的传输实现,这样会导致大量无线信道资源被占用2。因此对处于楼群聚集或者
14、室内的定位目标,可以利用广泛存在的WiFi网络对其进行定位,这种定位技术有着广阔的发展前景。通过WiFi网络和信号强度进行定位,能够弥补GPS在室内定位的限制,扩大定位服务的应用领域,降低部署成本,提高定位精度和设备利用率,提高室内应急救援能力。一般来说,通过无线信号强度获取目标位置信息的过程,实际上就是建立无线信号强度和位置信息映射关系。现有室内无线定位系统主要采用蓝牙、超声波、WiFi(Wireless Fidelity)磁场3、RFID4(Radio Frequency Identification )等短距离无线技术。其中基于WiFi网络的无线定位技术由于部署广泛且成本较低,迅速成为研
15、究的热点。1.2 室内外定位技术研究现状无线局域网络(WLAN)是一种全新的信息获取平台,可在广泛的应用领域内实现大范围的复杂定位、监测和追踪任务,然而大多数应用的前提和基础是网络节点自身的定位。当前无线局域网络协议标准之IEEE802.11的比较流行的一种定位解决方案是WiFi定位。该系统通过经验测试和信号传播模型相结合达到定位的目的,具有易于部署,需要很少的基站,能采用相同的底层无线网络结构,系统定位总精度高的优良特性。由于部署广泛且成本较低,使得基于WiFi网络的无线定位技术备受关注。最早的基于WiFi网络的定位系统是由微软开发的RADAR5系统。基于WiFi网络的无线定位通常采用位置指
16、纹的定位方法,而且能够达到比较好的定位效果。但是现阶段的位置指纹定位算法需要在离线阶段耗费大量的人力物力,选取大量的参考位置,并且在每个样本点的各个方向采集大量的数据来建立位置指纹数据库。这样给室内定位系统的普及带来很大的障碍。除位置指纹定位法之外,还有三边定位法、三角定位法、近似法和场景分析法。综上所述,当前WiFi室内定位技术虽有一定的研究与发展,但还有不完善的地方。而且与GIS(地理信息系统)相结合的室内定位系统还较少。1.3 研究意义当前使用最广泛、用户最多的全球性定位系统是美国的GPS卫星定位系统。GPS系统由24颗卫星组成,在任何时刻任何地点地面接收终端都可以同时接收到4颗以上的卫
17、星发出的信号。根据电磁波的传播原理,通过卫星信号的到达时间差来计算出搜索到的卫星和终端用户之间的距离,采用三边定位法计算出终端用户的具体位置,其室外民用定位精度可以达到15m以内。但在城市或室内环境中,由于受到建筑物的影响,信号强度大大衰减,信号接收端收到的电磁波信号太微弱,导致定位精度低甚至不能完成定位。近年来一种基于WiFi的室内定位技术进入到大家的视野中2,可以很好的弥补GPS室内定位精度不高的问题。目前在现代生活中WiFi技术已被广泛使用,无论是在机场、车站等公共场所还是咖啡厅等休闲场所都有非常广泛的WiFi热点部署,而且移动接收终端可以直接由智能手机替代,只需要开发一个定位APP即可
18、。由于智能手机的大量普及,这方面的成本几乎可以忽略不计。其次,基于WiFi的室内定位系统在很多室内场合都可以发挥很大的作用:举例如下:在大型的仓储式超市中对商品进行划分区域,分门别类,并且给这些区域部署WiFi热点,然后在智能手机上开发出相应的APP并结合物品信息和广告推送信息,告知顾客哪个位置有促销活动,还有那个物品的具体信息。这样整个购物的流程就会简化,而且大大提高顾客的购物效率。在机场的候机楼内,部署适当的WiFi热点,并开发相应的智能手机可以安装的定位APP,只要乘客手中的智能手机中装有该定位APP,通过给手机定位就可知道乘客的具体位置,并可以在定位服务器端监控候机楼内各个角落的客流量
19、情况,便于随时掌握候机大厅内的情况,对于应对室内突发事件也提供很好的导航和指引作用。从以上的几个例子可以看出基于WiFi的室内定位系统不仅可以弥补GPS室内定位的不足可以部署在很多的大型室内场合,而且具有部署简单,成本较低,便于推广和普及。因此有着广阔的发展前景。1.4 论文研究内容本论文首先研究了WiFi室内定位相关论文,在分析了当前室内定位现状的基础上,提出了一种基于移动GIS6的室内WiFi定位系统7。首先介绍了研究背景、研究现状及研究意义。然后详细阐述了位置指纹定位算法,并针对WiFi信号强度不稳定,影响定位精度的问题,对最近邻法和K近邻法进行改进,并将两者结合使用,最后通过UCMap
20、移动GIS开发插件,实现图形用户界面使客户端可以很直观的知道自己的当前位置。最后,本论文还提出了当前室内WiFi定位还存在的一些问题,并提出了相关解决办法。第2章 开发环境及相关技术简介2.1 软硬件开发环境无线路由器:本次定位系统开发是在南教4五楼完成,分别在南4-522,南4-520,南4-512三个房间内各部署了一个思科无线路由器,其名称分别为Cisco1230、Cisco1231、Cisco1232,三个路由器的摆放呈三角形。智能手机:移动终端开发采用Android操作系统的智能手机定位服务器端:定位服务器端采用联想台式电脑,该电脑为Windows XP操作系统,在该电脑上装有MySQ
21、L数据库及Navicat for MySQL图形界面管理工具、MapInfo、支持java和Android开发的Eclipse开发平台,同时采用Eclipse移动GIS开发插件UCMap for Android SDK。2.2 移动GIS平台UCMap简介UCMap8是当前主流的移动GIS开发组件,其拓展了GIS在移动端的应用,提供了、Windows 8、iOS、Android等系统下的开发包SDK、DEMO演示程序和相关说明文档,便于开发人员在手机或平板电脑上建立移动GIS应用。共有五种开发模式:1) 支持本地矢量地图,即Shapefile、MapInfo等格式的数据经UCMap地图配置程序
22、转换成适合手机显示的格式;2) 支持OGC标准的地图服务,即以网络在线配合本地缓存的模式访问支持OGC标准GIS服务即WMS、WFS、WCS、WFS-T,如主流的ArcGIS Server、Geoserver、Mapserver、Mapguide等;3) 支持互联网地图,即访问Google Maps、Google影像、微软Bing Maps并提供坐标纠正服务,以及本地矢量叠加;4) 支持自定义title地图瓦片,即用户采用自定义的切图工具生成地图瓦片,并提供相关瓦片坐标参数和命名规则,用户自行搭建服务端可以网络在线、本地缓存的模式来访问;5) 支持在Google Maps 、Bing Maps
23、、自定义瓦片上叠加本地矢量数据或WFS查询的矢量数据,可以网络在线、本地缓存的模式来访问。UCMap技术优势:支持大数据量的离线矢量shp地图和影像,且地图浏览速度远超其他任何GIS平台;支持自定义点、线、面矢量符号的制作、渲染以及变换操作;拥有丰富的矢量交互编辑功能支持各种空间查询和空间分析。2.3 Socket通信机制简介TCP/IP通信协议是一种可靠的网络协议,传输层向应用层提供了套接字Socket接口,Socket封装了下层的数据传输细节,应用层的程序通过Socket来建立与远程主机的连接,以及进行数据传输。即利用Socket进行通信的两个程序通过一条双向通信链路实现数据交换。通信的两
24、个终端都称为一个Socket。在客户/服务器通信模式中,服务器程序需要运行在一条有固定IP的主机上,并通过ServerSocket监听该台主机上的一个固定端口,等待客户端的连接请求。当服务器端接收到客户端的连接请求之后,为了记录下客户端的地址及端口信息,服务器端也需要创建与客户连接的Socket,然后通过此Socket的输入输出流与客户端进行通信。客户端程序在创建Socket时,也会监听一个端口,但该端口由客户端所在主机的系统自动分配,需要通过服务器的地址和监听的端口,去请求连接服务器,当服务器接收客户端的连接请求之后,服务器和客户端之间就建立了一条双向通信链路,通过Socket的输入输出流,
25、客户端和服务器便可以进行通信。由于Android开发是基于java语言的,所以在手机端Socket通信机制和java Socket通信机制互通。所不同的是手机的IP是由运营商动态分配的,所以手机端不用来做服务器。2.4 主要定位算法2.4.1 位置指纹定位算法信号的多径传播对环境具有依赖性9,呈现出非常强的特殊性,对于空间中的每个位置而言,该位置上信道的多径结构是唯一的,信号发射终端发射的无线电波经过反射和折射,产生与周围环境密切相关的特定模式的多径信号,这样的多径特征可以认为是该位置的“指纹”。因此,可以事先选取一些样本点,采集这些样本点处的信号特征存储在数据库中,定位阶段再采取所在点出的信
26、号强度特征,与数据库中的指纹数据进行匹配,找出最相似的样本点来进行定位。位置指纹定位算法的实施共有两个阶段10:1) 离线采样阶段:在离线训练阶段主要工作是在所需定位区域的选取适当的样本点并采集样本点的信号特征,例如WiFi信号强度,多径相角等,将一个样本点编号和一组信号特征值构成一组记录插入数据库的指纹表中以便定位阶段进行比对。2) 定位阶段:在该阶段主要工作是通过采集终端接收机当前所在位置处的信号特征将其与指纹表中的样本点进行比对,寻找最相似的样本点进行定位。最常用的比对算法有欧式距离。位置指纹算法是基本的室内定位算法,相比较三边定位法而言,其原理简单,容易理解,易实现,定位精度比较高且可
27、充分利用现有资源,部署成本低,系统升级对客户的影响也较小。但是位置指纹定位算法也存在一些缺点:当所需定位的室内空间比较大时需要建立强大的指纹数据库,离线训练阶段将耗费很多的人力。此外,当指纹数据库过于庞大时,定位阶段采集到的信号特征如果和指纹库中的所有样本点一一进行比对,会花费大量的时间导致定位效率低下,而且有可能影响定位精度。2.4.2 最近邻法最近邻法是一种最基本的确定性位置指纹匹配算法。该方法实际上是利用离线训练阶段采集到的样本点处的信号特征作为样本点“指纹”。在定位阶段,将实时采集到所在位置点处的信号强度与数据库中样本点的指纹进行比对,选择指纹特征最相似的一个样本点,将该点的经纬度看做
28、当前位置的近似估算值。可以采用欧式距离也可以采用权值的方式来描述样本点和待定位处信号特征相似程度。若采用欧式距离,则在定位阶段将采集到的信号特征与指纹库中每一个样本点的指纹进行比对,求欧式距离,然后选取欧式距离最小的一个样本点作为位置近似估计点,然后返回给定位请求客户端。2.4.3 K近邻法当前位置指纹匹配算法的研究目标是进一步提高定位精度。K近邻法就是在最近邻法思想的基础上提出来的另一种位置指纹匹配算法。其实质就是在定位阶段从指纹库中选取与待定位点的位置特征最相近的K个点,然后取出这K个位置点处的经纬度,并对这三个点的经纬度求均值,将此均值当作待测位置点的定位结果。采用此方法可以在一定程度上
29、减小由于信号特征不稳定导致的定位误差的问题,而且可以更好的描述待定位点的位置,提高定位精度。2.5 本章小结本章首先整体介绍了系统开发所需搭建的软硬件环境,然后详细阐述了Android移动GIS开发平台UCMap的几种开发模式和相关技术优势。并介绍了java Socket通信机制的基本原理。对室内WiFi定位通常采用的位置指纹识别算法的基本原理和实施过程进行了详细介绍,并且介绍了两种基本的位置指纹匹配算法最近邻法和K近邻法第3章 系统需求分析3.1 系统目标随着Android智能手机用户人数的普遍增长,人们对于基于手机的位置服务需求也越来越强烈。本文在分析了当前定位形势的基础上对本定位系统提出
30、以下目标: 为用户提供高精度和高可靠性的室内外定位服务; 使用户可以在室内WiFi定位系统覆盖区域内通过该定位系统,获取其所在位置信息; 使用户可以在室外环境下通过GPS获取自己的位置信息; 实现图形用户界面,操作简单,给用户提供良好的使用体验; 定位服务器端可以迅速处理客户端的定位请求,并将定位结果返回给客户端。3.2 系统描述本定位系统分为室内和室外两个模块。其中室内定位系统包括客户端和服务器两个模块,客户端是带有WiFi接收功能的Android智能手机。离线训练阶段需要进行WiFi信号的扫描,将采集到的WiFi信号强度传递给服务器端,帮助服务器端完成样本指纹库的建立。定位阶段将实时采集到
31、的WiFi信号强度传递给服务器端,并及时接收和解析定位服务器返回的定位结果(经纬度),将定位结果显示在本地矢量图中实现图形用户界面,让用户可以很直观的知道自己当前所在的位置。服务器端主要用来建立和维护样本指纹库,实时响应客户端的定位请求,离线采样阶段接收客户端发送过来的样本点的信号强度,将其插入后台数据库的样本指纹表中,实时定位阶段接收并解析移动客户端发送过来的WiFi信号强度,将其与指纹库中的样本点的信号强度进行比对,然后按照一定的选择规则,选取最相似的样本点处的经纬度,当作定位结果并将该结果发送给客户端。室外定位系统则只有移动端,其通过手机在室外接收到的卫星信息,利用GPS获取经纬度,然后
32、根据经纬度将客户端位置信息标注在手机端的校园矢量地图上,使用户可以知道自己当前的位置信息。3.3 系统功能需求1) 服务器功能离线训练:服务器接收智能手机采集的各个样本点处3个路由器的信号强度,将其插入一张collection_tb表中,同时求出信号强度均值,将其插入另外一张名为average_tb的表中,完成样本库的建立。实时定位:服务器端接收手机实时采集到的路由器的信号强度,将其与样本指纹库中各个样本点的信号强度进行比对,选出最接近的一个样本点,近似看做是手机此刻的位置,然后根据该点的样本点编号从另一张经纬度比对表compare_tb中取出该样本点的经纬度并发送给手机端,同时将手机当前位置
33、的经纬度插入历史轨迹表history_loc_tb和当前位置表current_loc_tb中,以达到记录客户端位置信息的目标。 历史轨迹查询:响应客户端的历史轨迹查询请求,按照查询条件,从数据库中取出响应客户端的历史位置点,然后处理后发送给客户端。2) 移动端功能在离线训练阶段,移动端对每个样本点处的WiFi信号强度进行采样,通过Socket套接字发送给服务器,帮助服务器完成样本指纹库的建立。在线定位阶段,若移动端在室内环境中,则实时采集所在点处的WiFi信号强度,将其发送给定位服务器,然后接收服务器发送过来的定位结果,然后将自己的当前位置显示在本地矢量地图中。当移动端在室外时,通过GPS确定
34、自己的当前位置,当位置发生变化时,实时更新手机地图上的位置信息。3) 历史轨迹查询有时移动客户端需要查询自己一天的历史轨迹信息。本系统还提供了室内客户端历史轨迹查询功能。当客户端想要查询自己的历史轨迹时,可以向服务器端发送历史轨迹查询请求,然后服务器从数据库中取出该客户端当天的历史轨迹,按照时间先后顺序发送给客户端,客户端解析之后,在本地地图中回放自己的历史轨迹。3.4 本章小结为了开发出让用户体验良好的系统,本章在第一章研究现状分析的基础上,对系统的需求进行了详细分析。并对服务器和客户端的功能需求分开进行了详细阐述。为后面系统的整体设计提供了很好的指引作用。第4章 系统设计4.1 系统整体架
35、构本定位系统分为室内和室外两个模块。室内定位系统采用C/S架构分为客户端和服务器两个模块,其系统总体架构图如图4-1所示。整个系统流程分为离线采样建立指纹数据库和实时定位两个阶段。图4-1 系统总体架构图 4.2 服务器端设计4.2.1 服务器功能模块划分PC服务器端端主要功能有样本库的建立与维护,响应移动手机端的定位请求,并根据手机端实时发送过来的WiFi强度,进行定位计算,并将定位结果发送给手机端。服务器端功能模块图如图4-2所示。图4-2 服务器功能模块图4.2.2 服务器端功能描述1) 数据库模块服务器端的数据库模块用来存放数据信息,包括样本点的位置指纹信息,经纬度信息,方便在定位阶段
36、进行定位计算。另外,该数据库中还存放了定位时客户端的当期位置信息和历史轨迹信息,实现对移动目标的监控。2) 离线采集模块该模块在离线采集阶段,负责接收并解析客户端发送过来的样本点指纹信息,然后将数据进行处理后存入后台数据库。3) 定位模块在实时定位时,服务器端定位模块,主要负责接收客户端的定位请求,然后通过定位算法进行计算,将定位信息发送给客户端同时将其插入后台数据库。4) 历史轨迹查询模块实时响应客户端历史轨迹查询请求,取出数据库中相应客户端的历史轨迹信息取经过处理之后,将其发送给客户端。4.3 移动客户端设计4.3.1 移动客户端功能模块划分移动客户端主要负责在离线训练阶段,采集各样本点的
37、信号强度,提交给服务器,帮助服务器完成指纹数据库的建立。在定位阶段,实时采集所在位置点的信号强度,将其提交给服务器进行定位计算,并接收服务器返回过来的定位结果,将其显示在UCMap加载的本地矢量图中,以图形用户界面的形式向用户展示当前位置。此外,移动客户端还可以向服务器请发送历史轨迹查询请求并接收服务器返回过来的结果,实现历史轨迹的回放,其功能模块图如图4-3所示。图4-3 移动端功能模块图4.3.2 移动客户端功能描述1) 离线采集模块离线采集模块,移动客户端需要多次采集样本点信号特征,将其提交给服务器。然后服务器解析每个样本点的信号特征信息,建立样本指纹库。2) 定位显示模块移动端定位显示
38、模块,主要用来在室内定位阶段采集自己当前所在位置点处的信号特征向服务器发送定位请求,然后接收并解析服务器返回的定位结果,将其显示在手机端的地图中,使用户可以在地图中直观的知道自己当前所处的位置。在室外定位阶段,接收室外GPS信号,进行定位。3) 历史轨迹查询模块该模块实现的功能主要是客户端向服务器端发送历史轨迹查询请求,然后解析服务器端返回过来的信息,按照时间先后顺序将其在地图上显示出来。4.4 本章小结本章主要完成了系统的设计工作。先概述了室内定位系统的整体架构,然后对系统的服务器和客户端的功能模块进行划分,并对服务器端和移动客户端的各个功能模块的功能进行了详细介绍,使得整个系统的模块化结构
39、比较清晰,为后续开发工作提供了很好的指引,便于模块化开发和单元测试。第5章 系统实现5.1 服务器端具体实现5.1.1 数据库模块后台数据库采用Mysql,在Mysql数据库中新建一个名称为graduate的数据库,该数据库下总共有5张表。分别为collection_tb(样本点信号强度采集表)、average_tb(样本库)、current_loc_tb(当前位置表)、history_loc_tb(历史轨迹表)、compare_tb(经纬度对照表)。collection_tb存储采样阶段手机提交的信号强度,其逻辑结构如表5-1所示。表5-1 collection_tb逻辑结构属性名类型长度允
40、许为空备注l_numberint 50否主键Cisco1230varchar50是路由器信号强度Cisco1231varchar50是路由器信号强度Cisco1232varchar50是路由器信号强度average_tb用来存储样本点信号强度均值,其逻辑结构如表5-2所示。表5-2 average_tb逻辑结构属性名类型长度允许为空备注l_numberint 50否主键Cisco1230varchar50是路由器信号强度Cisco1231varchar50是路由器信号强度Cisco1232varchar50是路由器信号强度current_loc_tb用来存储移动客户端当前位置,其逻辑结构如表5
41、-3所示。表5-3 current_loc_tb逻辑结构属性类型长度备注idint50主键l_numbervarchar50样本点编号sim_numbervarchar50手机SIM号compare_tb存放每个样本点的经纬度,其逻辑结构如表5-4所示。表5-4 compare_tb逻辑结构属性类型长度是否为空备注idint50否主键l_numbervarchar50是样本号编号sim_numbervarchar50是手机SIM卡号datimevarchar50是时间history_loc_t存放移动客户端的历史轨迹,其逻辑结构如表5-5所示表5-5 history_loc_tb逻辑结构属性类
42、型长度允许为空备注idint 11否主键locationvarchar255是样本点编号Xdouble0是经度Ydouble0是维度5.1.2 定位算法模块在服务器端定位算法分别采用了最近邻法(NNSS),K近邻法(K-NNSS)并在此基础上进行改进,然后进行定位计算,本系统均采用欧式距离描述手机当前位置点信号强度和指纹库中样本点的信号强度相似程度,本定位系统总共部署三个思科路由器,因此采用三维欧式距离计算公式即 (5-1)然后选取欧式距离最小的样本点,近似当作是手机端的当前位置,根据该样本点的经纬度将其显示在本地矢量地图上,以界面形式展示给用户,实现可视化移动目标监控,并将定位结果返回给手机
43、端。在实际应用阶段,使用定位阶段采集到的WiFi信号强度与指纹数据库中的样本点的信号特征值进行比对,使用欧式距离描述两者之间的相似程度,然后选取欧式距离最小的一个样本点的经纬度作为手机端的估计位置。由于WiFi信号强度受环境的影响比较严重,波动非常大,在同一个位置连续采集的信号强度也可能会有很大的区别,最开始本系统在定位时只采集一次WiFi信号强度,然后就向服务器发送定位请求,定位精度很低,误差比较大。为了克服WiFi信号强度(RSSI)不稳定的问题,本系统提出在定位阶段和离线训练阶段一样,在同一个位置点,也连续采集多次WIFI信号强度(本系统采集5次),然后求这些信号强度的均值,将均值发送给
44、服务器端进行定位计算。当前室内定位系统的研究目标主要是提高定位精度,为了提高定位精度后续研究相继提出了K近邻法和加权K近邻法。本系统采用了K近邻法并加以改进,在定位阶段将移动端发送的当前位置信号特征值与数据库中的样本点的信号特征值求欧式距离,然后对欧式距离进行排序,选取欧式距离较小的三个点,对这三个参考点的信号强度求一个均值,再次与指纹库中的样本点的信号强度求欧式距离,选取欧式距离最小的一个样本点作为手机端的估计位置。其实现关键性代码如图5-1所示:图5-1 K近邻法实现关键代码当用K近邻法选取最相似的三个样本点之后,对三个样本点的信号强度求均值,然后再次利用最近邻法进行计算,其关键代码如图5
45、-2所示。图5-2 最近邻法关键代码由于本定位系统是基于GIS开发的,显示定位结果所用地图是用MapInfo绘制的本地矢量图,图上的任意一点都有经纬度。所以本系统又提出一种改进方案,及在选取欧式距离较小的3个邻近点后,不再求欧式距离,而是取出这三个样本点的经纬度并对经纬度求均值,将此均值作为手机端的估计位置。其实现关键性代码如图5-3所示:图5-3 改进K近邻法实现关键代码5.2 客户端具体实现5.2.1 离线采集模块Android是一种以Linux为内核开发的操作系统,自谷歌2007年推出以来,安卓以其开源性、基于java的编程思想和容易上手的特点,吸引了很多Android开发爱好者。因此,
46、基于Android平台的智能手机应用也越来越丰富。由于Android操作系统11的开源性,因此向外界提供了非常齐全的类库和框架12,开发者在编程时,通过调用相应的接口和类,可以很快实现相应的功能,而且开发效率较高。本定位系统是以WiFi来进行定位的,因此调用的是WiFiManager类的startScan方法。本系统客户端离线采集模块流程图如图5-4所示。图5-4 客户端离线采集模块流程图客户端扫描WiFi信号强度实现关键代码如图5-5所示图5-5 WiFi信号强度扫描 客户端向服务器提交扫描结果关键代码如图5-6所示:图5-6 客户端向服务器提交扫描结果5.2.2 定位显示模块在该模块,主要用于实时采集信号强度信息,向服务器发送定位请求并接收服务器返回的定位结果,然后将其显示在本地地图中。本系统采用当前很流行的Android移动GIS开发插件UCmap for Android SDK,通过UCMap地图配置程序将MapInfo格式的矢量地图转换为UCMap可以识别的数据格式,并