韓旭東



關鍵詞:無人礦卡;Mapbox GL;三維可視化;監控;地圖切片
0 引言
露天煤礦的運輸往往存在路況差、司機職業病嚴重、安全事故頻發、勞動力短缺、投資成本高等問題[1]。在“少人則安,無人則安”的共識下,礦區無人化運營是實現安全生產、降低人工和整車使用成本、提升運行效率的有效途徑[2]。無人駕駛技術的發展為解決上述問題提供了可能,礦區道路相對封閉,行人較少,是無人駕駛技術理想的應用場景。2020年國家能源局、應局部、煤礦安監局等聯合發布《關于加快煤礦智能化發展的指導意見》,明確提出“到2025年露天煤礦實現智能連續作業和無人化運輸”。因而建設礦區無人運輸系統,實現無人化運輸對于提高礦企智能化水平,提高安全生產水平,降低投入成本,提高生產效率具有重要意義。
礦卡實時運行監控是礦區無人運輸系統中的重要組成部分[3],監控反映了調度的執行情況,根據監控結果,調度人員可進行及時調整和管理,比如油量短缺時,及時安排礦卡補充油料;胎壓不足時,及時安排維護保養等。為此本文從WebGIS 角度出發,使用Mapbox技術,在三維地圖上展現礦區地形地貌、道路走勢、礦卡實時位置和當前運行狀態等,實現對礦卡的實時監控。B/S體系結構使得系統便于維護和部署[4],信息共享程度高,在網絡暢通的情況下,可隨時隨地進行訪問和監控。三維展現形式使得場景更加形象直觀,支持縮放、旋轉和漫游等,便于整體把握各礦卡運行情況。
Mapbox 是一款開源的GIS 開發框架,與常用的Leaflet、Cesium和Openlayers并稱四大框架。Mapbox 支持3D地形展示、3D模型加載,支持多種坐標系投影,支持全格式地理數據,且簡單上手,界面美觀,適合于開發交互式地圖,支持離線部署,已經廣泛應用于Web、移動端、IOT以及AR/VR等領域。本系統使用了Mapbox推出的JavaScript SDK 即Mapbox GL JS[5]進行三維可視化開發,在Web頁面渲染礦區、路徑和礦卡三維模型。三維形式在信息承載和表達方面具有系統化、一體化的優勢,同時管理者還能對各個部分的地形地貌特征、空間布局等有所掌握[6]。
1 系統架構
無人礦卡三維可視化系統部署在Web服務器上,使用前后端分離架構,系統整體架構如圖1所示。
系統前端主要與PC客戶端進行交互,根據PC客戶端瀏覽器的頁面請求,完成頁面響應,主要包含用戶登錄、用戶管理、權限管理、礦卡管理、礦卡監控、統計分析等頁面。其中礦卡監控頁面是系統核心功能頁面。
PC客戶端通過瀏覽器訪問系統頁面,獲得響應頁面后,進行加載和渲染。頁面所需數據根據來源不同,通過不同方式獲取。如礦卡管理頁面中,礦卡基本數據通過后端數據接口獲得;在礦卡監控頁面中,礦卡的實時位置和狀態數據通過與后端建立的長連接(如WebSocket) 獲得;前端地圖渲染所需瓦片通過訪問地圖切片服務器獲得等。
系統后端通過數據接口,接收請求并進行處理,訪問數據庫服務器,保存或獲取業務數據,并進行響應。除此之外,后端需要向遠端服務器訂閱礦卡實時位置和狀態信息,獲得的信息存儲到數據庫服務器,并同時通過長連接推送到PC端瀏覽器頁面,更新卡車位置和狀態等。
遠端服務器監聽礦卡上報的礦卡編號(每個礦卡不同)、礦卡位置(經緯度)和運行狀態數據,并及時發布給訂閱者(系統后端)。這里遠端服務器一般要求具有公網IP地址,或者可同時被礦卡和系統后端訪問。
礦卡需要有車載終端、GPS模塊、各類監測傳感器、網絡通訊模塊等。車載終端通過GPS模塊獲取地理位置(經緯度),通過各類監測傳感器可以獲取礦卡運行狀態信息(如車速、載重、胎壓、油量等),通過網絡通訊模塊將以上數據以及礦卡編號,持續報送到遠端服務器。
數據服務器使用支持地理數據的postgresql數據庫,存儲礦卡時間、位置和狀態信息,同時存儲礦卡基本信息。
地圖切片服務器提供切片服務。為了減少對在線地圖的依賴,加快地圖加載速度,搭建本地地圖切片服務器。
2 系統實現
本系統使用springboot+vue 前后端分離架構,使用postgresql數據庫進行數據存儲。功能模塊包含系統登錄、用戶管理、權限管理、礦卡管理、礦卡監控、統計分析等,其中主要業務模塊包括礦卡管理和礦卡監控。礦卡管理模塊用于管理礦卡基本信息,對礦卡進行添加、刪除、修改和查詢。礦卡基本信息包含礦卡編號、類型、核載、負責人、檢修人等。
以下主要介紹礦卡監控模塊。
礦卡監控模塊需要完成以下功能:加載礦區底圖、加載3D地形、添加三維礦卡模型、更新礦卡位置和狀態、顯示礦卡狀態數據。此外,為了加快地圖加載速度,將礦區底圖的柵格瓦片和3D地形的高程數據進行本地化,搭建本地切片服務器。
2.1 加載礦區底圖
前端頁面使用Mapbox GL 提供的API(Mapboxgl.Map) 初始化渲染礦區底圖,將Mapbox的衛星影像作為底圖,將礦區中心的經緯度坐標作為中心點,然后調整放大級別和視角,最大化顯示運輸路線全貌。衛星影像地圖需要的柵格瓦片通過后文的切片服務器獲得。
頁面使用的衛星影像是一種柵格地圖,經過了瓦片化處理,遵循OGC的瓦片地圖服務(TMS:Tile MapService) ,瓦片格式為JPG 或PNG,影像瓦片大小為256×256[7]。
2.2 加載3D 地形
二維底圖需要添加地形數據,才有三維效果。前端頁面調用Mapbox GL的API函數(setTerrain) 設置高程和拉伸比例,即可進行地形渲染。高程切片數據通過后文的切片服務器獲得。
2.3 添加三維礦卡模型
Mapbox GL是基于webgl開發的三維地圖渲染引擎,但有些特效需要使用threejs 來實現。前端使用threejs 的三維模型加載和渲染API(THREE. GLT?FLoader.load) ,將GLTF類型的礦卡模型加載到當前場景的指定坐標上,并根據需要調整大小、朝向等。不同類型礦卡使用不同的三維模型,如圖5所示。
2.4 更新礦卡位置和狀態
礦卡在行進過程中位置是不斷變化的,速度、航向、胎壓等狀態信息也是變化的,這些信息都需要及時采集和顯示出來。礦卡終端通過GPS模塊獲取自身經緯度坐標,通過各類傳感器獲取運行狀態信息,然后通過網絡模塊源源不斷地上報給遠端服務器,遠端服務器采用kafka(一種高吞吐量的分布式發布訂閱消息系統)將消息發布出去。系統后端對該類消息進行訂閱,獲取到礦卡編號、位置(經緯度坐標)和運行狀態信息,保存并通過長連接推送給前端頁面,前端頁面使用Mapbox的API對礦卡位置進行調整更新,從而實現礦卡移動的效果。前端頁面使用WebSocket 與后端建立長連接,后端集成Netty 框架作為Web?Socket的服務端,WebSocket長連接使得后端消息可以隨時推送到前端。系統數據流圖如圖6所示。
由于礦卡相對礦區小很多,需要放大一些才能看到礦卡模型。最終效果如圖7所示。
2.5 顯示礦卡狀態數據
本系統將礦卡運行狀態信息展示在一個矩形的信息面板上,信息面板默認不顯示,當用戶點擊卡車(模型)時,在旁邊彈出信息面板并跟隨卡車移動,如圖8所示。
2.6 搭建本地切片服務器
為了減少對在線地圖的依賴,提高頁面渲染速度,底圖所需柵格瓦片和地形高程切片需要進行本地化,搭建本地切片服務器,實現系統離線訪問。內網計算機無須上外網,只要能訪問web服務器和切片服務器,即可正常使用本系統。
切片可以直接通過軟件工具(如水經注、ArcGIS、GlobalMapper等)制作或下載,也可以先下載影像和高程數據后,自己編程實現切片。鑒于地圖中必須要看到卡車模型,地圖顯示級別應至少支持18級,故切片也要支持18級以上。切片的名稱和位置必須和前端頁面中Mapbox api函數的參數設置的路徑規則(如/MapboxSatellite/{z}/{x}/{y}.png) 保持一致。
圖9為礦區衛星影像柵格瓦片的部分縮略圖,18 表示縮放等級,表示當地圖縮放到18級時,目標區域的底圖使用文件夾18 下的這些圖片進行拼接。216620文件夾與其下面的文件(如104352.png) 對應瓦片編號,瓦片編號(如216620和104352) 與經緯度具有換算關系,Mapbox中展示某處經緯度的底圖時,會換算為瓦片編號,下載該瓦片編號對應的圖片。
圖10為礦區高程數據切片的部分縮略圖,18表示縮放等級,表示當地圖縮放到18級時,目標區域的高程使用文件夾18下的這些圖片進行描述。同樣,216620 和104352表示瓦片編號,與經緯度具有換算關系。Mapbox中展示某處經緯度地形(高程)時,會換算為瓦片編號,下載該瓦片編號對應的地形圖片。在Mapbox中,高程可使用Terrain-RGB模式表征,Map?box收到高程切片后,各個像素的紅色(R) ,綠色(G) 和藍色(B) 值通過下列公式解碼即可得到該像素的高程值[8]。
除此之外,還可以對字體和圖標進行本地化,具體過程不再贅述。切片服務器僅需支持訪問靜態圖片,因此只需安裝nginx進行轉發即可。
3 結束語
本系統使用Mapbox技術對無人礦卡進行監控,B/S體系結構便于用戶進行訪問,三維可視化展現形式更加直觀形象,便于用戶快速、準確掌握礦卡位置、環境和運行狀態,為礦區安全管理、礦卡調度等提供有力支持。同時衛星影像和地形切片的本地化很好地提高了地圖場景的加載速度。本系統技術方案也可應用在物流運輸、智能交通、體育比賽、應急救援等領域的監控中,具有廣闊的應用前景。目前系統能夠滿足無人礦卡監控管理的需求,但也存在一定的不足,一方面地圖精度還不夠高,放大到一定級別會出現模糊現象;另一方面離線切片需要手動更新,如果更新不及時,地圖的地形地貌可能會與實際有一定差距。這也是下一步需要改進和優化的方向。