本發(fā)明涉及一種三維探地雷達(dá)在采集過(guò)程的實(shí)時(shí)監(jiān)控方法,尤其涉及一種基于websocket的三維探地雷達(dá)分組直播方法,并進(jìn)一步涉及采用了該基于websocket的三維探地雷達(dá)分組直播方法的系統(tǒng)。
背景技術(shù):
1、在傳統(tǒng)的探地雷達(dá)數(shù)據(jù)監(jiān)控系統(tǒng)中,由于缺乏有效的實(shí)時(shí)數(shù)據(jù)傳輸和多客戶端監(jiān)控機(jī)制,導(dǎo)致數(shù)據(jù)的實(shí)時(shí)性和監(jiān)控的多維度性受到限制。特別是在三維探地雷達(dá)領(lǐng)域,如果有多個(gè)探測(cè)隊(duì)伍/多臺(tái)采集車(chē)輛在外實(shí)施探測(cè)時(shí),由于數(shù)據(jù)量大、實(shí)時(shí)性要求高,以及監(jiān)控需求的多樣性,傳統(tǒng)的技術(shù)手段難以滿足多客戶端同時(shí)監(jiān)控不同采集設(shè)備的探地雷達(dá)數(shù)據(jù),無(wú)法從雷達(dá)圖譜和視頻畫(huà)面等多個(gè)維度對(duì)多個(gè)探測(cè)隊(duì)伍/多臺(tái)采集車(chē)輛的采集數(shù)據(jù)進(jìn)行實(shí)時(shí)監(jiān)控,因此,現(xiàn)有技術(shù)并不能滿足多維度實(shí)時(shí)監(jiān)控系統(tǒng)的實(shí)際應(yīng)用需求。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明所要解決的技術(shù)問(wèn)題是需要提供一種基于websocket的三維探地雷達(dá)分組直播方法,旨在能夠?qū)崿F(xiàn)多客戶端分別實(shí)時(shí)監(jiān)控不同采集設(shè)備的探地雷達(dá)數(shù)據(jù),并且還能夠從多個(gè)緯度監(jiān)控采集數(shù)據(jù),包括雷達(dá)圖譜、視頻畫(huà)面、實(shí)時(shí)位置以及解譯結(jié)果。在此基礎(chǔ)上,還進(jìn)一步提供采用了該基于websocket的三維探地雷達(dá)分組直播方法的系統(tǒng)。
2、對(duì)此,本發(fā)明提供一種基于websocket的三維探地雷達(dá)分組直播方法,包括以下步驟:
3、步驟s1,啟動(dòng)websocket服務(wù),將客戶端指定要監(jiān)控的采集設(shè)備與服務(wù)端建立連接,并保存采集設(shè)備與服務(wù)端在建立連接之后的關(guān)聯(lián)關(guān)系;
4、步驟s2,服務(wù)端接收采集設(shè)備所上傳的雷達(dá)數(shù)據(jù),并將雷達(dá)數(shù)據(jù)解析成時(shí)序雷達(dá)圖譜、視頻幀畫(huà)面、ai解譯結(jié)果和車(chē)輛定位信息;
5、步驟s3,服務(wù)端將消息通過(guò)websocket服務(wù)發(fā)送給指定該采集設(shè)備所對(duì)應(yīng)的客戶端;
6、步驟s4,客戶端接收到消息后,在時(shí)間軸上查找對(duì)應(yīng)與消息對(duì)應(yīng)的時(shí)間,并在播放列表中集合運(yùn)動(dòng)軌跡以實(shí)現(xiàn)多維度采集信息的實(shí)時(shí)動(dòng)態(tài)展示。
7、本發(fā)明的進(jìn)一步改進(jìn)在于,所述步驟s1包括以下子步驟:
8、步驟s101,通過(guò)指令ws/{equipmentid}/{clientid}設(shè)置websocket服務(wù)的鏈接地址,其中,equipmentid為采集設(shè)備id,用于對(duì)應(yīng)客戶端指定要監(jiān)控的采集設(shè)備;clientid為客戶端id;
9、步驟s102,客戶端新建一個(gè)websocket對(duì)象,設(shè)置鏈接地址,然后調(diào)用connect()函數(shù)開(kāi)啟并建立連接;
10、步驟s103,服務(wù)端將采集設(shè)備id與客戶端id以一對(duì)一的關(guān)系進(jìn)行關(guān)聯(lián)后得到所述關(guān)聯(lián)關(guān)系,并對(duì)所述關(guān)聯(lián)關(guān)系進(jìn)行保存。
11、本發(fā)明的進(jìn)一步改進(jìn)在于,所述步驟s102包括以下子步驟:
12、步驟s1021,客戶端通過(guò)發(fā)送一個(gè)?http?請(qǐng)求到服務(wù)器以發(fā)起?websocket?協(xié)議的握手,該http請(qǐng)求包含頭部信息、upgrade頭部字段、?connection?頭部字段以及sec-websocket-key?頭部字段,用于標(biāo)識(shí)這次握手;
13、步驟s1022,服務(wù)器通過(guò)websocket?協(xié)議,返回一個(gè)?http?101?狀態(tài)碼,表示協(xié)議切換成功,同時(shí),服務(wù)器會(huì)在響應(yīng)中包含?sec-websocket-accept?頭部;
14、步驟s1023,握手成功后,客戶端和服務(wù)器之間的連接升級(jí)為?websocket?協(xié)議連接,以通過(guò)websocket?協(xié)議連接進(jìn)行雙向的數(shù)據(jù)傳輸。
15、本發(fā)明的進(jìn)一步改進(jìn)在于,所述步驟s2包括以下子步驟:
16、步驟s201,采集設(shè)備每采集一幀數(shù)據(jù),記錄下該幀數(shù)據(jù)的道號(hào)trace、時(shí)間time、采集設(shè)備id、攝像頭畫(huà)面videoframe以及gps定位坐標(biāo)position,每采集預(yù)設(shè)道號(hào)數(shù)量的三維雷達(dá)數(shù)據(jù)后進(jìn)行打包,并上傳到服務(wù)端;
17、步驟s202,服務(wù)端將上傳過(guò)來(lái)的三維雷達(dá)數(shù)據(jù)進(jìn)行ai解譯處理,獲得解譯結(jié)果airesults以及雷達(dá)圖譜;雷達(dá)圖譜包括三維雷達(dá)圖譜的垂直豎切面ascan、水平切面bscan和垂直橫切面cscan,將雷達(dá)圖譜轉(zhuǎn)換成json格式用于表示消息messag,并與步驟s201所記錄的時(shí)間time進(jìn)行關(guān)聯(lián)以獲得時(shí)序雷達(dá)圖譜。
18、本發(fā)明的進(jìn)一步改進(jìn)在于,所述步驟s202,將上傳過(guò)來(lái)的數(shù)據(jù)進(jìn)行ai解譯處理的過(guò)程為:先將預(yù)設(shè)道號(hào)數(shù)量的三維雷達(dá)數(shù)據(jù),分為x向水平橫軸、y向垂直豎軸和z向水平前后軸,取出x水平橫向垂直切面二維數(shù)據(jù),將其中最大的數(shù)據(jù)設(shè)為max,其中每個(gè)數(shù)據(jù)值value根據(jù)公式value*(255/max)計(jì)算成0到255之內(nèi)的數(shù)值,并轉(zhuǎn)成rgb灰度顏色rgb(value,value,value);然后,根據(jù)二維數(shù)據(jù)的長(zhǎng)寬創(chuàng)建同樣大小的png圖片,將與二維數(shù)據(jù)坐標(biāo)一一對(duì)應(yīng)的顏色設(shè)置到對(duì)應(yīng)png圖片的像素點(diǎn)上,以形成雷達(dá)圖譜的水平切面bscan;并以同樣方式生成y向垂直數(shù)軸對(duì)應(yīng)的垂直豎切面ascan和z向水平前后軸的垂直橫切面cscan;接著,然后將水平切面bscan調(diào)整為224*224大小的圖像,調(diào)用預(yù)訓(xùn)練好的ai模型,輸出ai識(shí)別出的結(jié)果以作為解譯結(jié)果airesults,該解譯結(jié)果airesults包括位置坐標(biāo)信息bbox、得分score和識(shí)別類(lèi)型class。
19、本發(fā)明的進(jìn)一步改進(jìn)在于,所述步驟s202,將雷達(dá)圖譜轉(zhuǎn)換成json格式的過(guò)程通過(guò)指令[{time:100000000,trace:100,airesults:[{class:“hole”,score:?90,bbox:[1,2,3,4]}],ascan:“image/png;base64”,bscan:”image/png;base64”,cscan:”image/png;base64”,videoframe:”image/png;base64”,position:{lon:?123.33,lat:23.33}}]來(lái)實(shí)現(xiàn),其中,time為unix?紀(jì)元開(kāi)始到當(dāng)前時(shí)刻的總毫秒數(shù),airesults為ai解譯結(jié)果數(shù)組,其中class為解譯類(lèi)型;hole表示空洞;score為表示結(jié)果準(zhǔn)確性的分?jǐn)?shù);bbox為雷達(dá)圖譜上的畫(huà)框位置信息,從左上為原點(diǎn)位置,第1位表示x橫軸最小位置,第2位表示y豎軸最小位置,第3位表示x橫軸最大位置,第4位表示y豎軸最大位置;videoframe為視頻幀畫(huà)面,以base64ascii?字符串的編碼方式表示;position為車(chē)輛gps定位經(jīng)緯度坐標(biāo),其中l(wèi)on表示經(jīng)度,lat表示緯度。
20、本發(fā)明的進(jìn)一步改進(jìn)在于,所述步驟s3中,服務(wù)端將消息發(fā)送給指定該采集設(shè)備所對(duì)應(yīng)的客戶端時(shí)采用同步消息發(fā)送,同步消息發(fā)送的實(shí)現(xiàn)過(guò)程為:先將消息message加入到一個(gè)有序數(shù)組messagelist中,有序數(shù)組messagelist的數(shù)組下標(biāo)從0開(kāi)始,第一個(gè)加入的下標(biāo)為0,后續(xù)依次加1,然后采用先入先出和后入后出的方式將下標(biāo)為0的消息取出,在取出后,其后面的所有數(shù)據(jù)下標(biāo)全部減1;接著,將取出的消息message向客戶端發(fā)送;最后,判斷客戶端是否返回接收成功信號(hào),若否則在等待預(yù)設(shè)時(shí)間之后選擇重新發(fā)送,直到客戶端返回接收成功后才進(jìn)行下一個(gè)下標(biāo)為0的消息message的取出和發(fā)送。
21、本發(fā)明的進(jìn)一步改進(jìn)在于,所述步驟s4包括以下子步驟:
22、步驟s401,客戶端接收到消息message后,先將消息message加入至播放序列playsequence,并初始化一個(gè)用于播放的時(shí)間軸,時(shí)間軸的起始時(shí)間starttime為播放序列playsequence的第一個(gè)消息message的時(shí)間time,時(shí)間軸的結(jié)束時(shí)間endtime為播放序列playsequence的最后一個(gè)消息message的時(shí)間time,當(dāng)總時(shí)間endtime-starttime在10秒內(nèi),先緩沖暫停等待,當(dāng)總時(shí)間endtime-starttime大于10秒,時(shí)間軸開(kāi)始從起始時(shí)間starttime按設(shè)定的播放速度播放,播放速度為speed,當(dāng)前播放時(shí)間curtime每1秒前進(jìn)speed/1秒;
23、步驟s402,監(jiān)聽(tīng)當(dāng)前播放時(shí)間curtime的變化,根據(jù)當(dāng)前播放時(shí)間curtime在播放序列playsequence中通過(guò)二分查找法進(jìn)行查找,查找到消息message中時(shí)間time小于當(dāng)前播放時(shí)間curtime的消息message,取出這部分消息message中的雷達(dá)圖譜和視頻畫(huà)面,并顯示在客戶端窗口中;
24、步驟s403,將解譯結(jié)果airesults根據(jù)位置坐標(biāo)信息bbox的坐標(biāo)位置,在雷達(dá)圖譜中繪制一個(gè)黃色高亮方框以提示該處發(fā)現(xiàn)隱患;
25、步驟s404,在地圖中根據(jù)車(chē)輛gps定位經(jīng)緯度坐標(biāo)添加一個(gè)車(chē)輛模型顯示在地圖中,以實(shí)時(shí)查看到車(chē)輛的位置;并且將播放序列playsequence中所有消息message的gps定位坐標(biāo)position集合起來(lái)繪制成地圖上的車(chē)輛行駛軌跡,以得到動(dòng)態(tài)實(shí)時(shí)展示的三維探地雷達(dá)的多維度采集信息。
26、本發(fā)明的進(jìn)一步改進(jìn)在于,所述步驟s402中,通過(guò)二分查找法查找到消息message中時(shí)間time小于當(dāng)前播放時(shí)間curtime的消息message的實(shí)現(xiàn)過(guò)程為:先在播放序列playsequence中,確定指針left和指針right,用于分別指向有序數(shù)組messagelist的第一個(gè)元素和最后一個(gè)元素的位置,通過(guò)公式mid=math.floor((left?+?right)?/?2)計(jì)算中間位置mid,math.floor為向下取整;然后比較,如果目標(biāo)值等于中間位置mid的元素值,查找結(jié)束,返回中間位置mid的索引;如果目標(biāo)值小于中間位置mid的元素值,調(diào)整指針right到mid?-?1,繼續(xù)在左半部分查找;如果目標(biāo)值大于中間位置mid的元素值,調(diào)整指針left到mid?+?1,繼續(xù)在右半部分查找;重復(fù)上述步驟,直到找到目標(biāo)值或搜索范圍為空;
27、所述步驟s403中,在雷達(dá)圖譜中繪制一個(gè)黃色高亮方框的實(shí)現(xiàn)過(guò)程為:根據(jù)解譯結(jié)果airesults的元素中的位置坐標(biāo)信息bbox,根據(jù)其中的左上和右下2個(gè)坐標(biāo)位置,在水平切面bscan上定位出方框的具體位置以及長(zhǎng)高,其中長(zhǎng)度為位置坐標(biāo)信息bbox的第3個(gè)元素減第1個(gè)元素后的數(shù)值,高度為位置坐標(biāo)信息bbox的第4個(gè)元素減第2個(gè)元素后的數(shù)值,設(shè)置方框的線條寬度為2px,顏色為rgba(255,255,0,1)黃色,進(jìn)而畫(huà)出黃色高亮方框用于提示該處的隱患。
28、本發(fā)明還提供一種基于websocket的三維探地雷達(dá)分組直播系統(tǒng),采用了如上所述的基于websocket的三維探地雷達(dá)分組直播方法,并包括:
29、建立連接模塊,啟動(dòng)websocket服務(wù),將客戶端指定要監(jiān)控的采集設(shè)備與服務(wù)端建立連接,并保存采集設(shè)備與服務(wù)端在建立連接之后的關(guān)聯(lián)關(guān)系;
30、雷達(dá)數(shù)據(jù)上傳和解析模塊,服務(wù)端接收采集設(shè)備所上傳的雷達(dá)數(shù)據(jù),并將雷達(dá)數(shù)據(jù)解析成時(shí)序雷達(dá)圖譜、視頻幀畫(huà)面、ai解譯結(jié)果和車(chē)輛定位信息;
31、信息發(fā)送模塊,服務(wù)端將消息通過(guò)websocket服務(wù)發(fā)送給指定該采集設(shè)備所對(duì)應(yīng)的客戶端;
32、實(shí)時(shí)動(dòng)態(tài)展示模塊,客戶端接收到消息后,在時(shí)間軸上查找對(duì)應(yīng)與消息對(duì)應(yīng)的時(shí)間,并在播放列表中集合運(yùn)動(dòng)軌跡以實(shí)現(xiàn)多維度采集信息的實(shí)時(shí)動(dòng)態(tài)展示。
33、與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果在于:先啟動(dòng)websocket服務(wù),并將客戶端指定要監(jiān)控的采集設(shè)備與服務(wù)端建立連接,保存建立連接之后的關(guān)聯(lián)關(guān)系;然后在服務(wù)端接收采集設(shè)備所上傳的雷達(dá)數(shù)據(jù)之后,將雷達(dá)數(shù)據(jù)解析成時(shí)序雷達(dá)圖譜、視頻幀畫(huà)面、ai解譯結(jié)果和車(chē)輛定位信息;最后,通過(guò)服務(wù)端將消息發(fā)送給對(duì)應(yīng)的客戶端,在時(shí)間軸上查找對(duì)應(yīng)與消息對(duì)應(yīng)的時(shí)間,并在播放列表中集合運(yùn)動(dòng)軌跡以實(shí)現(xiàn)多維度采集信息的實(shí)時(shí)動(dòng)態(tài)展示。因此,本發(fā)明能夠?qū)崿F(xiàn)基于websocket的三維探地雷達(dá)分組直播方法及系統(tǒng),能夠?qū)崿F(xiàn)多客戶端分別實(shí)時(shí)監(jiān)控不同采集設(shè)備的探地雷達(dá)數(shù)據(jù),并且還能夠從多個(gè)緯度監(jiān)控采集數(shù)據(jù),包括雷達(dá)圖譜、視頻畫(huà)面、實(shí)時(shí)位置以及解譯結(jié)果,以滿足多維度實(shí)時(shí)監(jiān)控系統(tǒng)的實(shí)際應(yīng)用需求。