李剛 姬同凱 楊建光 曾國玉 梁通
摘 要: 位置指紋采集工作是實施Wi-Fi定位系統的重要環節。為了減少無效作業、保障數據可用性、提高團隊協作能力,設計并實現了一種基于Android平臺的位置指紋數據采集系統。該系統具備采集規則自定義、地圖及采集點展示、無線信號采集和結果實時上傳等功能,具有交互體驗順暢簡便、施工過程可視化等優點。測試效果表明:系統運行良好,功能穩定可靠,滿足實際應用需要。
關鍵詞: Android; 位置指紋; 無線信號采集; Wi-Fi定位系統實施
中圖分類號:TP311 文獻標志碼:A 文章編號:1006-8228(2017)09-09-04
Abstract: The location fingerprint acquisition is the important basic part of Wi-Fi positioning system. In order to reduce the fruitless work, guarantee the data availability and improve the teamwork cooperation, an Android-based location fingerprint acquisition system is designed. The system has the functions of defining acquisition rule, displaying map and acquisition points, acquiring the wireless signal data and uploading the results in real time, and has the advantages of smooth and simple of interactive experience and visualization of construction progress. The test results show that the system runs well and the function is stable and reliable, which meets the needs of practical application.
Key words: Android; location fingerprint; wireless signal acquisition; Wi-Fi positioning system implementation
0 引言
隨著移動互聯網技術發展,LBS(Location Based Service)發揮著越來越重要的作用[1-2]。Wi-Fi(Wireless Fidelity)定位技術是在室內環境實現LBS的重要手段之一[3-4]。得益于支持Wi-Fi技術智能移動終端的普及,Wi-Fi定位技術已在商場、校園、圖書館、博物館、旅游景區、醫院、礦井等多個場景得到應用,并取得了不錯效果。
基于Wi-Fi的位置指紋定位是以定位環境中各個無線AP(Access Point)接入點的RSSI(Received Signal Strength Indicator)匯集形成的位置指紋庫為基礎的無線定位解決方案,具有定位成本低、擴展性強和定位精度比較高的優勢,成為當前較廣泛使用的熱點技術[5]。其中,位置指紋數據采集工作相當關鍵。
根據移動、持續作業等特點,使用智能移動設備采集無線信號數據是較理想的選擇。目前,Android和iOS設備具有較高的市場占有率。相較于iOS平臺,Android平臺開放了掃描Wi-Fi相關信息的API(Application Programming Interface),具有豐富的開源資源[6-7]。故選用Android平臺,實現位置指紋數據采集系統。
1 系統設計
1.1 系統總體設計
系統采用C(客戶端)/S(服務器)架構,分為客戶層、業務處理層和數據服務層,如圖1所示。其中業務處理層和數據服務層運行在服務器端。各層功能描述如下。
⑴ 數據服務層。提供系統運行所需的數據支撐,包括數據采集所需的地圖文件、采集點位置文件、采集數據結果以及通過采集數據生成的位置指紋數據等,數據的具體形式包括數據庫和SVG(Scalable Vector Graphics)文件。
⑵ 業務處理層。是系統業務實現的核心部分,為客戶層提供相關業務的處理。包括地圖及采集點位置文件下載、指紋數據制作、數據服務層相關數據資源獲取、采集結果上傳存儲等相關服務。
⑶ 客戶層。主要通過基于Android平臺的智能終端設備進行位置指紋采集的相關工作。
1.2 客戶端設計
系統客戶端的功能結構如圖2所示,主要包括基礎功能、地圖及采集點展示和操作、Wi-Fi信號掃描及采集、采集數據上傳4大功能模塊。
⑴ 基礎功能模塊。用戶登錄后設置采集規則。采集規則分為無線設備AP過濾規則、采集操作規則和采集結果要求。其中,無線設備AP(Access Point)過濾規則有兩種,匹配Mac地址前三段和匹配SSID前綴;采集操作規則包括采集的次數、設備所處方向和每次采集的時間;采集結果要求包括掃描到的AP數量和相應采集的數據量。
⑵ 地圖及采集點展示和操作模塊。智能終端從服務器端下載地圖和采集點位置文件,在地圖上顯示各個采集點的具體位置及采集狀態。采集狀態包括未采集、已采集未上傳、已上傳和已上傳有更新四種,分別用紅色、黃色、藍色和綠色表示。
⑶ Wi-Fi信號掃描及采集模塊。根據采集操作規則,智能終端在采集點相應位置掃描Wi-Fi信號,將滿足要求的采集結果存儲到本地數據庫。采集結果包括采集點ID、AP Mac、RSSI值和采集時間。endprint
⑷ 采集數據上傳模塊。在采集點的信號采集工作完成后,同步結果至服務器端。
1.3 服務端設計
系統服務器端主要實現基礎資源管理、指紋數據制作和基于RESTful風格的HTTP服務發布[8]。系統服務器端架構如圖3所示。
⑴ 基礎資源采集。系統所需的基礎資源數據包括地圖數據和規劃的采集點位置數據。把采集后的相關數據以符合SVG標準的文件形式組織,通過FTP技術上傳至服務器。
⑵ 指紋數據制作。針對某一采集點,當其采集結果上傳完成后,以AP為單元,對采樣RSSI值進行處理。處理方法是采用σ高斯濾波模型,選取高概率發生區的RSSI值[9],取其中位數作為最終值,存入指紋數據庫中。
⑶ HTTP服務。基于SSH框架[10],使用JAVA語言進行開發,提供RESTful風格的HTTP服務,通過Tomcat服務器部署發布。
2 系統實現
系統實現的關鍵點包括地圖及采集點的顯示和操作、Wi-Fi信號掃描及采集、信號采集結果上傳。
2.1 地圖及采集點的顯示和操作
本系統使用EepSvgMapLib和EepPhotoViewL-ib兩個自定義封裝Library庫實現地圖及采集點的顯示和操作。其中EepSvgMapLib庫主要實現地圖和采集點位置文件的下載、更新、文件解析、渲染和顯示功能;EepPhotoViewLib庫主要實現地圖的手勢操作,包括縮放、平移、旋轉等操作。以下是各個Library庫中用到的核心類。
⑴ SVG類。將SVG文件類型的地圖和采集點位置文件最終解析成的對象類型,該類中包含了S-VG文件中所有類型的節點和屬性值,通過調用re-nderToPicture方法將解析的SVG對象轉換為Ima-geView控件能夠直接顯示的Drawable對象。
⑵ SVGParser類。SVG文件解析的工具類,將地圖和采集點位置文件解析成SVG類對象,使用Parse(InputStream is)函數解析SVG文件流,將地圖文件和采集點文件分別解析成兩個SVG對象,然后將兩個SVG對象在合并為一個SVG對象進行渲染,達成在地圖上顯示采集點位置的效果。
⑶ MapView類。地圖顯示的封裝類,內部封裝了顯示地圖的ImageView控件、顯示地圖方向的指北針控件、顯示地圖覆蓋物的容器控件、地圖縮放控件和地圖標尺控件。
⑷ EepMap類。MapView的操作類,主要負責對MapView上的元素進行操作,如文字、POI元素、Marker、InputWindow、Polyline、Cicle等元素的添加、刪除和自適應顯示等。另一個重要作用是負責地圖及采集點文件的下載和更新,顯示地圖前,在另起的獨立子線程中,判斷當前地圖和采集點文件的狀態,具體操作參見圖4。
⑸ PhotoAttacher類。地圖的手勢操作工具類,包括平移、縮放、旋轉操作,提供地圖Matrix變更及地圖操作的回調監聽,方便對地圖在手勢操作過程中進行各類調整。
2.2 Wi-Fi信號掃描及采集
使用Android系統提供的WifiManager服務,在采集點位置上根據設定的采集操作規則,以1秒鐘間隔持續掃描Wi-Fi信號,掃描結果通過Broadcast方式廣播,在自定義WifiScanRecevier類中對掃描結果作接收處理。處理時,先根據設定的AP過濾規則對采集到的所有信號數據進行過濾,篩選出符合條件的數據結果。然后根據采集結果要求對數據結果進行檢查:對不符合要求的結果提示重新采集;對符合要求的采集結果,拼接成JSON字符串,存儲到本地SQLlite數據庫中,等待上傳至服務器端。在采集操作完成后,更新SQLite中相應的采集點狀態,并更新地圖上采集點的顏色,以免重復采集。用到的核心類包括:
⑴ WifiSearcher類。獲取WifiManager服務并開啟Wi-Fi掃描,將掃描結果通過Broadcast的方式廣播出去;內部自定義WifiScanRecevier類接收掃描結果,并通過SearchWifiListener監聽回調將掃描數據交由其他類處理。
⑵ ApCollectionFragment類。實現SearchWif-
iListener監聽器的方法,對掃描到的信號數據進行過濾、校驗和存儲。
2.3 采集結果上傳
本系統支持多人同時進行數據采集,所以在進入數據上傳頁面時,需保證數據同步:智能終端從服務器端獲取所有采集點的采集狀態,更新相應本地維護的狀態,并以列表形式展示所有采集點的狀態,然后選擇未同步的數據進行上傳。
采集結果以采集點為單元,通過HTTP請求方式依次上傳到服務器。數據上傳成功后,更新本地存儲的采集點狀態、更新地圖上的采集點狀態、刪除本地存儲的采集數據。
3 系統測試
在某實驗中心(長30米、寬22米)規劃80個采樣點,選用8個型號為Huawei AP6010DN的無線AP設備進行無線覆蓋,選用魅族MX5手機(Android5.0系統)作為采集設備。對每個采集點分0?、120?和240?三個方向進行數據采集,每次采集時間為30s,系統運行效果如圖5所示。根據服務器數據統計結果顯示,未出現數據缺失現象。
4 結束語
該系統基于Android平臺實現,可根據位置指紋數據采集工作的實際需求動態地調整相關采集參數,參照地圖找尋待采集點;在采集過程中加入了計時器提醒、方向傳感器引導、RSSI波動曲線等輔助手段;采集完成后可實時反饋結果,有助于提高團隊協作效率和工作質量。今后系統將進一步增強多并發大數據量環境下的數據同步能力,以便更好滿足大型項目的實施要求。
參考文獻(References):
[1] 羅軍舟,吳文甲,楊明.移動互聯網:終端、網絡與服務[J].計算
機學報,2011.34(11):2029-2051
[2] 陳龍彪,李石堅,潘綱.智能手機:普適感知與應用[J].計算機學
報,2015.38(2):423-438
[3] Jinlong E,Jie Ma. A Research on Seamless Indoor and
Outdoor Positioning[J]. Journal of Computers,2013.8(12):3047-3057
[4] 章嫚娜,王玉槐,曹世華,張慧熙,謝曉婷.GPS+WIFI室內外混
合定位服務系統研究[J].計算機時代,2016.3:12-14
[5] 陳斌濤,劉任任,陳益強,劉軍發,蔣鑫龍,劉定俊.動態環境中的
WiFi指紋自適應室內定位方法[J].傳感技術學報,2015.28(5):729-738
[6] 曹文靜.基于iOS的室內定位系統的研究與實現[D].四川師
范大學,2015.
[7] 楊凱,郭英,畢京學.基于安卓平臺的室內實時定位[J].測繪科
學,2015.40(6):125-128,155
[8] 王鵬飛.移動瘦客戶端架構在企業中的應用研究[J].計算機
時代,2016.3:27-30
[9] 陳麗,王學東,孫晶晶,李明.基于改進高斯濾波的室內無線定
位算法[J].電氣自動化,2014.36(3):31-33,53
[10] 薛桂香,任女爾,閆世峰,林濤.基于簡單工廠模式的SSH+
ExtJs架構泛型化研究[J].河北工業大學學報,2015.44(3):65-69endprint