SuperMap流數據應用技術方案


流數據應用技術方案針對流數據應用場景,針對流數據的海量、多源、持續等特征,進行持續地獲取相關的動態位置,以及持續地分析、處理和挖掘。
本章沿用基於單機SuperMap iServer環境,介紹流數據處理的整個過程。所使用到的工具和前端展示代碼請提前進行下載

iServer軟件下載地址(本文使用10.0.1 win64位):
http://support.supermap.com.cn/DownloadCenter/DownloadPage.aspx?id=1203

模擬流數據下載地址:

https://share.weiyun.com/50VnG4Z 密碼:vx2d03

一、總體流程

通過模擬器定時讀取CSV文件,將讀取的信息發送給SuperMap iServer流數據服務(Streaming Service)。該服務將分析處理結果向SuperMap iClient客戶端進行廣播,當SuperMap iClient客戶端訂閱流數據服務后,即可自動接收服務器推送的數據。

為了便於讀者在本地模擬流數據處理過程,我們提供了流數據發送模擬器(File2WebSocket.bat),通過模擬器直接從提供的數據中讀取全球航班實時位置數據(flights2w.csv)模擬流數據產生應用場景,該數據以“,”逗號分隔,其中包含航班旋轉角度、航班號、航班當前時間的經緯度信息。

78,UAL2831,-168.78334,52.16667
62,MHO220,-155.78334,19.93333
48,ANZ28,-175.56667,-28.65
40,UAL99,-167.63333,-10.75
80,KAL35,-178.34415,43.22642
49,UAL870,-172.14999,-11.08333
80,AAL176,-177.64999,43.31667

二、流數據處理流程

2.1 模擬發送流數據

(1)可以使用記事本打開File2WebSocket.bat文件

WebSocketServer.exe 8181 127.0.0.1 ./flights2w.csv 1000 2000

參數解釋

  • 8181:WebSocket服務端口。
  • 127.0.0.1:IP地址,因為是單機環境,填寫本機地址即可。
  • ./flights2w.csv:發送文件路徑。
  • 1000:間隔時間(單位:毫秒)。
  • 2000:間隔時間內發送多少條。

(2)編輯完成后,雙擊運行File2WebSocket.bat,可以看到發送的服務地址為:

ws://127.0.0.1:8181

2.2 SuperMap iServer配置流數據處理服務

(1)確認SuperMap iServer已啟動並已開啟本地Spark分布式計算集群,並將本機加入集群,勾選“報告器是否啟用”與“是否分布式分析節點”


(2)使用瀏覽器訪問http://localhost:8090/iserver/manager,登陸SuperMap iServer管理頁面,點擊【首頁】 -> 【快速發布一個或一組服務】

填寫服務名為dataflow點擊下一步發布完成(這里名稱必須與后面流模型配置相符)

(3)點擊【服務】 -> 【概述】 -> 【配置流數據服務】。

(4)將“接收器”中“WebSocket接收器”,用鼠標拖到“節點編輯器”中。鼠標單擊“節點編輯器”中的“WebSocket接收器”。“接收數據格式”選擇“CSVFormatter”,“元數據”選擇“StreamingMetadata”,“WebScoket服務地址”填寫“ws://127.0.0.1:8181”


(5)點擊“元數據”上的“StreamingMetadata”標簽,在隨后顯示的頁面中,“epsg”填寫“4326”,“id字段名”填寫“id”,“接收數據類型”選擇“POINT”。由於原數據中有4個字段,所以“字段信息”添加4個FieldInfo。

(6)點擊“FieldInfo-0”標簽,根據航班數據內容,

78,UAL2831,-168.78334,52.16667

從“FieldInfo-0”到“FieldInfo-3”依次填寫以下內容,填寫完成后,點擊檢查並返回。

字段信息 字段名稱 字段來源 字段類型
FieldInfo-0 direction 0 INT32
FieldInfo-1 id 1 TEXT
FieldInfo-2 x 2 DOUBLE
FieldInfo-3 y 3 DOUBLE




(7)將鼠標放到“元數據”的“StreamingMetadata”標簽上,可以看到上一步的詳細配置信息,確認信息無誤后,點擊“檢查並返回”按鈕。

(8)將“接收器”中的“WebSocket發送器”用鼠標拖到“節點編輯器”中,鼠標單擊“節點編輯器”中的“WebSocket發送器”,“結果信息格式”選擇“GeoJsonFormatter”,“WebSocket服務地址”填寫如下內容。

ws://127.0.0.1:8800/iserver/services/dataflow/dataflow/broadcast?token=sTVZbj6ivkvrX9gcSbYlgpdaZpj97RenP49MIUDQl3bS1Jmjgz9ToaeFf0jaXKbPlE0rUnY3YbXPekG0sFwjkA..

其中Token是需要申請的,訪問http://localhost:8090/iserver/services/security/tokens,填寫完成后“點擊檢查並返回”


(9)拖拽“節點編輯器”中的“WebSocket接收器”右側的綠色方塊,將拖出的箭頭指向“WebSocket發送器”,命名為“flights2wDemo”,點擊“發布”即可發布流處理模型,發布完成后顯示流數據處理服務基本信息。

(10)打開模擬發送流數據窗口,可以看到數據在實時進行信息推送,訪問Apache Spark地址:http://localhost:4040/jobs/, 查看Apache Spark運行狀態是否正常。

(11)發布完流模型后,點擊【服務】->【服務管理】->【數據流服務】點擊dataflow“超鏈接”

點擊服務地址

點擊“subscribe”

點擊“訂閱”按鈕,就能看到模擬器推送過來的詳細數據內容。

注意:如沒有看到推送來的數據,請查看電腦是否有多塊虛擬網卡,例如:vmware或virtualbox,如果有請在網絡中禁用,然后在停止iServer與推送程序,重新打開與啟動iServer即可。

下一步我們將使用web客戶端進行展示。

三、Web客戶端展示

(1)將下載材料中的流數據可視化示例代碼文件dataflowLayer.html,使用文本編輯器打開,修改Token值,這里的Token值與配置的“WebSocket發送器”中WebSocket服務地址Token完全相同。

(2)將修改后的dataflowLayer.html與plane.png文件復制到%SuperMap iServer_HOME%\iClient\forJavaScript\examples\openlayers目錄下,使用瀏覽器訪問http://localhost:8090/iserver/iClient/forJavaScript/examples/openlayers/dataflowLayer.html,就可以實時監控飛機所在位置與角度



(轉發請注明出處:http://www.cnblogs.com/zhangyongli2011/ 如發現有錯,請留言,謝謝)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM