• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于WebSocket和Redis的移動目標軌跡跟蹤系統(tǒng)設計與實現(xiàn)

      2021-09-05 05:05魏江東涂繼輝賴少東高夢然
      計算機時代 2021年8期

      魏江東 涂繼輝 賴少東 高夢然

      摘 ?要: 針對物聯(lián)網(wǎng)系統(tǒng)中監(jiān)控移動目標位置和軌跡信息的需求,設計和實現(xiàn)了一種基于Websocket和Redis移動目標軌跡跟蹤系統(tǒng)。該系統(tǒng)主要分為三個部分:首先利用手機App客戶端采集移動目標的軌跡信息,然后利用Webocket將軌跡信息傳輸?shù)竭h程服務器進行保存,最后服務端將傳送的軌跡信息保存在Redis+MySQL數(shù)據(jù)庫中,并根據(jù)客戶需要實現(xiàn)軌跡信息的查詢和在地圖上進行軌跡重現(xiàn)。經(jīng)過測試表明,該系統(tǒng)能夠準確、實時地獲取移動目標的軌跡信息,并進行有效的存儲,這為物聯(lián)網(wǎng)移動目標的軌跡跟蹤提供了較好的解決方案。

      關鍵詞: 移動目標跟蹤; WebSocket; 軌跡重現(xiàn); Redis

      中圖分類號:TN919.3;TP311.1 ? ? ? ? ?文獻標識碼:A ? ? 文章編號:1006-8228(2021)08-76-05

      Design and implementation of moving target tracking system

      based on WebSocket and Redis

      Wei Jiangdong, Tu Jihui, Lai Shaodong, Gao Mengran

      (Electronic Information Collage of Yangtze University, Jingzhou, Hubei 434023, China)

      Abstract: In response to the need to monitor the location and trajectory information of moving targets in the Internet of Things system, a moving target trajectory tracking system is designed and implemented based on Websocket and Redis. The system includes three parts, collecting the trajectory information of the moving target by using the mobile App client, transmitting the trajectory information to the remote server for storage by using Webocket and saving the transmitted trajectory information in the server with Redis+MySQL database, which realizes the tracking information query and the trajectory replay on map according to the needs of customer. Tests show that the system can accurately obtain the trajectory information of the moving target in real time and store it effectively, which provides a better solution for the trajectory tracking of moving target in the Internet of Things system.

      Key words: moving target tracking; WebSocket; trajectory replay; Redis

      0 引言

      物聯(lián)網(wǎng)作為新一代互聯(lián)網(wǎng)信息技術已經(jīng)應用到我們生活中的各個領域,而移動目標的軌跡信息跟蹤和監(jiān)控是物聯(lián)網(wǎng)技術中非常重要的環(huán)節(jié),它能較好的了解物聯(lián)網(wǎng)中終端節(jié)點的位置信息以及移動情況,因此,實時、準確和高效地對移動目標軌跡信息進行跟蹤和保存是物聯(lián)網(wǎng)系統(tǒng)研究的熱點。

      目前應用廣泛的移動目標軌跡跟蹤系統(tǒng)多以車載GPS終端與基于B/S的Web方式實現(xiàn),系統(tǒng)中傳統(tǒng)的HTTP請求方式帶來了大量的無效請求,造成了服務器資源的不必要開銷,同時,傳統(tǒng)的MySQL數(shù)據(jù)庫存取數(shù)據(jù)較慢,交互方式存在一定的延遲,而基于PC端查詢物流、巡邏等工作移動目標軌跡跟蹤的系統(tǒng),無法滿足用戶實時性、便攜性的需求,小規(guī)模企業(yè)與零散客戶也難以承擔類似系統(tǒng)的開發(fā)成本[1-2]。

      針對以上問題,本文設計并實現(xiàn)了基于WebSocket和Redis的移動目標軌跡跟蹤系統(tǒng),以Android App作為客戶端,提高了系統(tǒng)在物聯(lián)網(wǎng)中使用的便捷性,實現(xiàn)了高效的通信機制與數(shù)據(jù)存儲方式。

      1 系統(tǒng)總體結(jié)構(gòu)設計

      本文設計的移動目標軌跡跟蹤系統(tǒng)如圖1所示,整個系統(tǒng)主要分為三個部分:移動目標軌跡采集和顯示模塊、數(shù)據(jù)傳輸和接收模塊以及服務端存儲模塊。移動目標軌跡采集和顯示模塊主要是在Android平臺利用手機App結(jié)合百度地圖實現(xiàn),數(shù)據(jù)傳輸和接收模塊主要是利用WebSocket方式進行通信,服務端采用Redis+MySQL數(shù)據(jù)庫進行數(shù)據(jù)的存儲。系統(tǒng)總體結(jié)構(gòu)如圖1所示。

      2 系統(tǒng)具體實現(xiàn)

      2.1 移動終端模塊實現(xiàn)

      移動終端作為用戶與物聯(lián)網(wǎng)移動目標軌跡跟蹤系統(tǒng)交互的入口,選擇Android App作為客戶端,需要實現(xiàn)用戶信息、照片處理和軌跡跟蹤三個功能模塊。三個功能模塊的UI界面設計都是采用Android基本布局中的相對布局RelativeLayout、線性布局LinearLayout、表格布局TableLayout相結(jié)合的形式。客戶端的功能模塊如圖2所示。

      在用戶信息模塊中,包括用戶注冊、登錄、個人信息編輯。用戶注冊時,先填寫個人信息,然后客戶端將用戶信息提交到服務器,服務器判斷數(shù)據(jù)庫中用戶表中是否已存在該賬戶,若存在,則顯示“該用戶名已存在,請修改”,若不存在,則新增用戶到數(shù)據(jù)庫中。用戶登錄時,用戶需提前設置服務器地址及端口,當用戶登錄后,客戶端將登錄信息發(fā)送至服務器,由服務器與數(shù)據(jù)庫交互核對數(shù)據(jù)并給予反饋。個人信息編輯則是對個人信息的完善,比如上傳圖片、填寫地域信息等。

      照片處理模塊為用戶在移動過程中,通過拍照或上傳相冊照片來主動反饋自己的位置信息。此模塊實現(xiàn)了拍照加載圖片、本地照片加載、圖片裁剪處理與圖片上傳功能。圖片的加載部分都是先通過裁剪圖片的uri獲取Bitmap對象,然后使用ImageView組件的方法setImageBitmap()將圖片加載顯示出來。圖片的裁剪處理采用android系統(tǒng)自帶的裁剪功能,通過intent.putExtra設置合適的裁剪框形狀和大小。同時,本文借助了網(wǎng)絡請求庫OkHttp,使用HTTP協(xié)議的POST方法實現(xiàn)圖片上傳功能。

      軌跡跟蹤模塊主要是依托百度地圖SDK [3]進行開發(fā)。在使用百度地圖免費API接口提供的各種功能之前,先要在百度地圖官網(wǎng)申請一個百度地圖開發(fā)密鑰,才能在程序中使用百度地圖提供的地圖服務、定位服務及數(shù)據(jù)服務等。在滿足實時定位的基本功能后,該模塊的關鍵問題是對軌跡點信息的采集,本文利用百度地圖SDK自定義一個定位監(jiān)聽類LocationListener,并實現(xiàn)其中的方法來獲取用戶的位置。其中,定位方式有網(wǎng)絡定位和GPS定位兩種,使得定位更加精確。而對于移動目標軌跡點的采集時間,本文設置為每隔一秒采集一次,主要考慮其時間過長導致軌跡不夠完整,過短則造成采集頻繁,產(chǎn)生不必要的數(shù)據(jù)消耗。定位中利用location.getLatitude()、location.getLongitude()方法分別獲取該軌跡點的緯度和經(jīng)度,最后將所有的軌跡點信息保存到點集合List中。當用戶提交軌跡信息時,使用WebSocket協(xié)議上傳到服務器,服務器將軌跡信息保存到Redis數(shù)據(jù)庫中[4]。軌跡重現(xiàn)主要是服務器將數(shù)據(jù)庫中獲取類型為List的軌跡信息點集合發(fā)送給客戶端,然后通過客戶端創(chuàng)建地圖覆蓋物OverlayOptions對象來設置繪制折線的相關屬性,并將軌跡點添加到地圖上,同時將這些軌跡點依次使用折線相連,在百度地圖上進行繪制,最終實現(xiàn)物聯(lián)網(wǎng)中移動目標的軌跡重現(xiàn)。

      為了優(yōu)化客戶端與服務端之間的通信,減少HTTP協(xié)議的無效請求[5],本系統(tǒng)的通信協(xié)議主要采用WebSocket協(xié)議[6]。WebSocket是一款html5推出的協(xié)議標準,它是一種在單個TCP連接上進行全雙工通信的協(xié)議[7],解決了傳統(tǒng)Ajax輪詢、Comet技術的弊端,它能主動使服務器向客戶端推送消息,解決了服務器資源消耗的問題[8]。在構(gòu)建客戶端的WebSocket接口時,本文采用WebSocket的開源框架Java-WebSocket。首先創(chuàng)建一個WebSocketClient類對象,然后重寫該類中的四個方法onOpen()、onMessage()、onClose()、onError(),分別在WebSocket連接開啟時、接收消息時、連接斷開時,以及連接出錯時調(diào)用。重寫的onMessage()方法中包含客戶端上傳信息至服務端以及處理服務端反饋的代碼,其中客戶端上傳的字符串信息需要轉(zhuǎn)化為更加輕量、簡潔的Json格式進行傳輸,同時自定義了java bean類以方便客戶端對Json信息進行解析。對于服務端的接口,本文采用高性能的PHP Socket服務框架Workerman進行構(gòu)建。在加載完Workerman的相關文件后,創(chuàng)建一個Worker對象,搭建起移動終端與服務端之間的通道,然后調(diào)用函數(shù)onMessage與客戶端進行通信。

      2.2 服務端的實現(xiàn)

      服務端主要包括PHP服務器和Redis+MySQL數(shù)據(jù)庫兩部分。

      PHP服務器部分主要是對客戶端傳來的數(shù)據(jù)進行處理和反饋,同時與Redis數(shù)據(jù)庫交互,實現(xiàn)對數(shù)據(jù)的存取,然后將數(shù)據(jù)持久化到MySQL當中??蛻舳藗鱽淼恼埱笾饕譃槲孱?,分別是注冊信息的存儲、登錄信息的驗證、軌跡信息的存儲、軌跡信息的查詢以及圖片的上傳。如圖3所示,客戶端的每種請求對應一種狀態(tài)state,然后服務器根據(jù)傳入的狀態(tài)調(diào)用相應的方法對請求進行處理。同時為了防止用戶密碼信息泄露,本文還對用戶密碼使用了Crypt加密。

      Redis+MySQL數(shù)據(jù)庫部分負責對數(shù)據(jù)進行緩存并實現(xiàn)持久化,首先Redis是基于內(nèi)存的數(shù)據(jù)庫[9],讀取速度快,同時其支持的數(shù)據(jù)結(jié)構(gòu)很適合軌跡信息的存儲,因此將系統(tǒng)的熱點軌跡信息緩存其中,能夠大幅度提升系統(tǒng)的性能;然后,將重要的數(shù)據(jù)存放于MySQL數(shù)據(jù)庫中實現(xiàn)持久化,防止由于Redis數(shù)據(jù)庫帶來的內(nèi)存增長速度過快,達到最大內(nèi)存限制,從而導致的數(shù)據(jù)丟失。對于Redis數(shù)據(jù)庫,本文針對用戶信息和軌跡信息的特點,分別采用字符串和hash數(shù)據(jù)結(jié)構(gòu)來緩存數(shù)據(jù)[10]。用戶信息的存儲結(jié)構(gòu)模型如圖4所示,鍵users:count采用字符串結(jié)構(gòu)記錄用戶的個數(shù);鍵user.to.id采用hash結(jié)構(gòu),作用是記錄用戶名和id之間的映射關系;鍵user:id也是采用hash結(jié)構(gòu)保存用戶的詳細信息,包含用戶名、密碼、email、車牌號等,其中存儲的密碼是加密后的結(jié)果。軌跡信息的存儲結(jié)構(gòu)模型如圖5所示,鍵tracks:count采用字符串結(jié)構(gòu)保存軌跡信息的個數(shù);鍵track:id采用hash結(jié)構(gòu),存儲著軌跡信息的名稱、提交時間、所屬用戶的id、軌跡點坐標等。對于重要或者訪問不頻繁的數(shù)據(jù),我們將其持久化到MySQL數(shù)據(jù)庫中,以varchar類型進行存儲,從而能夠容納更多的數(shù)據(jù),同時保證數(shù)據(jù)存儲的可靠性。

      3 系統(tǒng)測試

      3.1 測試環(huán)境

      在整個測試中安排了50名大學生進行參與,學生以自行車騎行的方式自由繞行整個校園參與測試。對于客戶端,測試過程中采用版本Android 7.1的智能手機,而服務端的系統(tǒng)設計環(huán)境為Centos 7操作系統(tǒng),開發(fā)工具為PHP 5.6+Redis 5.0+MySQL 5.7,兩者通過4G網(wǎng)絡進行通信。

      3.2 測試結(jié)果

      移動目標軌跡跟蹤系統(tǒng)的移動終端部分操作界面如圖6所示。

      圖6(a)是終端的登錄界面,用戶在填寫服務器地址后,輸入賬號和密碼登錄。圖6(b)是登錄成功后跳轉(zhuǎn)到地圖界面,實時顯示當前位置為經(jīng)度112.219674,緯度30.33881,用戶點擊地圖界面左下方的開始按鈕進行軌跡記錄,然后點擊結(jié)束來命名軌跡并提交給服務端,若用戶需要查看軌跡,只需在上方的搜索框進行搜索,此次保存的軌跡信息為(112.219674 30.33881|112.219754 30.338599|112.219830 30.33827…),并在地圖上實現(xiàn)軌跡的重現(xiàn),如圖6(c)所示。

      經(jīng)過反復實驗,用戶系統(tǒng)的客戶端界面操作性好,功能完善,測試人員可以通過此系統(tǒng)了解物聯(lián)網(wǎng)中移動目標的實時位置,掌握目標的軌跡路線,極大幫助了管理人員對移動目標軌跡路線的評估與分析。

      4 結(jié)束語

      本文設計和實現(xiàn)的移動目標軌跡跟蹤系統(tǒng),以WebSocket協(xié)議和Redis數(shù)據(jù)庫為基礎,解決了物聯(lián)網(wǎng)系統(tǒng)中管理人員對移動目標實時位置和軌跡路線掌握難的問題??紤]到現(xiàn)有市場安卓手機的占有率,該系統(tǒng)以Android App為移動客戶端,實現(xiàn)了高效的PHP服務器,同時結(jié)合了HTTP協(xié)議來解決客戶端與服務端之間的實時性雙向通信問題。經(jīng)過測試,該系統(tǒng)并發(fā)量高,交互性強,操作簡便,為物聯(lián)網(wǎng)中移動目標的實時定位和軌跡監(jiān)測提供了解決方案,具有良好的市場應用前景。

      參考文獻(References):

      [1] 張舒.面向公路物流的車輛追蹤系統(tǒng)設計、實現(xiàn)與優(yōu)化[D].南京理工大學,2018.

      [2] 鐘波,陶智勇.基于WebSocket的車輛GPS信息實時推送系統(tǒng)的實現(xiàn)[J].電子設計工程,2017.25(13):48-52

      [3] 滿紅任.基于Android平臺的車道偏離預警系統(tǒng)的實現(xiàn)[D].東南大學,2015.

      [4] Xiongfei Liu,Jiakang Liu,Beiping Liao,Yunyi Zhu,Huimin

      Liu. Design of IoT Web Server Communication Platform based on Netty and WebSocket[A]. Wuhan Zhicheng Times Cultural Development Co.,Ltd.Proceedings of 3rd International Conference on Mechatronics Engineering and Information Technology(ICMEIT 2019)[C].Wuhan Zhicheng Times Cultural Development Co,2019:7.

      [5] 覃家皓.基于WebSocket的即時通信研究及其性能分析[J].移動通信,2017.41(12):44-48

      [6] 李先懿,郭正光.基于Websocket的車聯(lián)網(wǎng)報警推送系統(tǒng)[J].計算機系統(tǒng)應用,2020.29(3):127-131

      [7] Benfano Soewito, Christian, Fergyanto E. Gunawan, et al.Websocket to Support Real Time Smart Home Applications,2019.157:560-566

      [8] 惠苗,賴道健.基于WebSocket協(xié)議的即時通訊系統(tǒng)的開發(fā)[J].榆林學院學報:自然科學版,2019.29(6):76-79

      [9] 馬豫星.Redis數(shù)據(jù)庫特性分析[J].物聯(lián)網(wǎng)技術,2015.5(3):105-106

      [10] 曾超宇,李金香.Redis在高速緩存系統(tǒng)中的應用[J].微型機與應用,2013.32(12):11-13

      [11] 涂繼輝,趙劍.基于WebService的通信實驗設備排隊系統(tǒng)設計與實現(xiàn)[J].長江大學學報:自然科學版,2015.12(10):44-47,4

      [12] 李明珠.基于Android手機的軌跡導航系統(tǒng)的設計與實現(xiàn)[D].長安大學,2013.

      [13] 郝帥,程德福.基于Android的航跡指示儀的設計與實現(xiàn)[J].湘潭大學自然科學學報,2018.40(2):50-53

      收稿日期:2021-02-04

      基金項目:國家自然科學基金(No.61901059);湖北省高等學校大學生創(chuàng)新創(chuàng)業(yè)訓練計劃項目(2019)

      作者簡介:魏江東(1996-),男,湖北宜昌人,碩士研究生,主要研究方向:深度學習,模式識別,自然語言處理。

      通信作者:涂繼輝(1979-),男,湖北武漢人,博士,副教授,主要研究方向:圖像處理與模式識別,深度學習,計算機網(wǎng)絡。

      城步| 简阳市| 浦东新区| 涪陵区| 青田县| 丽江市| 项城市| 和林格尔县| 永登县| 夏邑县| 于田县| 吉林省| 罗甸县| 横峰县| 彭水| 邮箱| 津南区| 曲阜市| 循化| 万年县| 东宁县| 青田县| 房产| 资溪县| 镇雄县| 宁南县| 长宁区| 湘阴县| 林芝县| 威信县| 丹东市| 温泉县| 通渭县| 沾化县| 安仁县| 潮州市| 犍为县| 正阳县| 广饶县| 柘荣县| 昔阳县|