国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于組件化的數(shù)據(jù)可視化系統(tǒng)設(shè)計與實現(xiàn)

2019-01-24 06:01:14林嘉琦馬建雄高齊琦
智能物聯(lián)技術(shù) 2019年1期
關(guān)鍵詞:數(shù)據(jù)源圖表組件

江 婷,林嘉琦,馬建雄,高齊琦

(中國電子科技集團第五十二研究所,浙江 杭州 310000)

0 引言

隨著大數(shù)據(jù)時代的到來,從多種類型的數(shù)據(jù)中,快速獲得有價值信息變得越來越重要。大數(shù)據(jù)技術(shù)[1-2]由數(shù)據(jù)采集、存儲、管理、分析挖掘、可視化等技術(shù)集成。其中數(shù)據(jù)可視化[3-4]是將不同類型的數(shù)據(jù)通過多樣、適當?shù)姆绞匠尸F(xiàn)出來,讓人與數(shù)據(jù)真正實現(xiàn)溝通、交流,并且能夠讓人理解數(shù)據(jù)背后蘊藏的規(guī)律和價值,從而幫助決策者提高決策效率。

大多數(shù)網(wǎng)站制作時需要根據(jù)設(shè)計進行代碼編寫,在展示數(shù)據(jù)可視化時更是需要大量的圖表,大大增加了技術(shù)人員的開發(fā)難度,導致開發(fā)效率降低,后期維護成本提升。同時現(xiàn)有的數(shù)據(jù)可視化技術(shù),支持的組件少,展示數(shù)據(jù)維度不夠,支持的用戶交互較少,難以滿足自定義網(wǎng)頁功能需求。本文設(shè)計了基于組件化的數(shù)據(jù)可視化系統(tǒng)HikVis,它是一款定位于為各種應(yīng)用場景的前端數(shù)據(jù)可視化軟件產(chǎn)品,通過快速搭建交互式實時數(shù)據(jù)可視化幫助業(yè)務(wù)人員發(fā)現(xiàn)、診斷問題。

1 系統(tǒng)設(shè)計目標

將單一的數(shù)據(jù)轉(zhuǎn)化為豐富多彩的可視化圖表,并支持實時展示數(shù)據(jù)給用戶;能在簡單的一頁中展示數(shù)據(jù)之間的層次與關(guān)聯(lián),幫助用戶快速搭建單頁面以及指揮中心、地理分析、實時監(jiān)控、態(tài)勢展示等場景頁面;純拖拽式圖形化界面,無需編程也可快速實現(xiàn),提供多種頁面元素和相應(yīng)的配置方式。

系統(tǒng)分為四個頁面:管理界面、編輯界面、預覽界面、可視化界面。每個頁面根據(jù)功能分為多個組件,每個組件通過VueX通信獲取最新數(shù)據(jù)。

(1)管理界面:包括用戶登錄信息、用戶配置數(shù)據(jù)源、用戶添加自定制可視化界面、用戶自定制可視化列表、用戶對當前已有的自定制可視化增刪改查等功能;

(2)編輯可視化界面:支持多種圖表類型,支持拖拽圖表至畫布、畫布編輯、各類型圖表樣式及數(shù)據(jù)編輯、圖層編輯、拖拽時對齊吸附、導入導出自定制的可視化數(shù)據(jù)和配置數(shù)據(jù)源;

(3)預覽自定制的可視化界面;

(4)發(fā)布自定制的可視化界面。系統(tǒng)功能結(jié)構(gòu)如圖1所示。

1.1 支持多種類型圖表和基礎(chǔ)地圖組件

如圖2所示,系統(tǒng)支持多種數(shù)據(jù)類型分析展示,除基本圖表外,還支持文字、滾動文字、表格、漏斗圖、雷達圖等多種顯示內(nèi)容,并提供地圖圖層。

圖1 系統(tǒng)功能結(jié)構(gòu)樹

圖2 支持的圖表類型

圖3 支持接入的數(shù)據(jù)源種類

1.2 支持數(shù)據(jù)庫、CSV、API等多種數(shù)據(jù)源

如圖3所示,系統(tǒng)配有豐富的數(shù)據(jù)源配置,支持處理多種數(shù)據(jù)源。其能夠接入多種數(shù)據(jù)庫類型,包括本地CSV上傳和API接入,支持各大類數(shù)據(jù)實時計算、實時監(jiān)控,有利于充分發(fā)揮大數(shù)據(jù)計算能力。

2 系統(tǒng)設(shè)計實現(xiàn)

2.1 前端設(shè)計

系統(tǒng)前端采用Vue.js漸進式框架進行組件化開發(fā)。Vue.js是一個輕巧、高性能、可組件化的MVVM庫,也是一個構(gòu)建數(shù)據(jù)驅(qū)動的Web界面的庫,擁有非常容易上手的API。系統(tǒng)的操作界面完全基于瀏覽器,體系結(jié)構(gòu)采用了先進的用戶界面層、業(yè)務(wù)邏輯層、數(shù)據(jù)存儲層三層結(jié)構(gòu)系統(tǒng),如圖4所示。

2.1.1 管理界面組件

如圖5所示,Longin.vue組件控制用戶登錄登出狀態(tài),登錄成功后會進入Index.vue組件,通過路由可以進入可視化列表MyVis.vue組件和數(shù)據(jù)源列表MyData.vue組件,查看用戶創(chuàng)建的可視化列表和數(shù)據(jù)源列表。在可視化列表MyVis.vue組件嵌套增加可視化Add.vue組件,通過Add.vue組件,用戶可新增可視化方案;在數(shù)據(jù)源列表MyData.vue組件嵌套增加數(shù)據(jù)源組件Adddata.vue組件,通過Adddata.vue組件,用戶可新增用戶可視化數(shù)據(jù)源。

2.1.2 可視化編輯界面

圖4 可視化系統(tǒng)的三層架構(gòu)體系

圖5 管理界面組件樹

可視化編輯界面組件如圖6所示。

在Left.vue組件中,集成了Echarts的24種不同類型圖表和12種前端常用圖表,如邊框、計數(shù)器、時間器等,這些圖表通過Orign.vue組件封裝,成為點擊可克隆拖動組件。當Left.vue中圖表組件被點擊復制拖動至畫布范圍內(nèi),VueX將記錄該圖表的類型、位置、大小等信息,并傳遞至Middle.vue,Middle.vue下的Drag.vue組件將該圖表封裝成畫布范圍內(nèi)可拖拽和八個方向改變圖表大小的div,并通過Draggeble.vue解析成相應(yīng)的圖表,渲染至畫布上;之后VueX將該圖表的信息傳遞至Right.vue組件,Right.vue下的DataStyleController.vue組件判斷解析該圖表,從而顯示該圖表的樣式和數(shù)據(jù),并通過DataController.vue和StyleController.vue組件顯示,通過以上兩個組件還可以更改圖表數(shù)據(jù)及樣式。圖7為可視化編輯界面邏輯示意圖。

DataController.vue組件用于配置圖表數(shù)據(jù)源[11]。該組件設(shè)計并實現(xiàn)4種接入數(shù)據(jù)組件,并在每個接入組件中定義了一種數(shù)據(jù)格式轉(zhuǎn)換機制進行數(shù)據(jù)匹配,通過數(shù)據(jù)匹配可以將外部常見的文本數(shù)據(jù)轉(zhuǎn)換為系統(tǒng)架構(gòu)內(nèi)部通用的數(shù)據(jù)格式,并將接入的數(shù)據(jù)進行保存、展示和屬性配置,如圖8所示。

圖6 可視化編輯界面部分組件樹

圖7 可視化編輯界面邏輯示意圖

圖8 圖表樣式和數(shù)據(jù)源配置

圖9 用戶行為的可視化分析

圖10 節(jié)點的可視化分析

CanvasController.vue組件可以修改畫布的大小、進行顏色設(shè)置等。

通過使用Vue.js框架,每個組件既相互獨立,又相互耦合,通過改變數(shù)據(jù),從而改變圖表渲染、圖表數(shù)據(jù),真正實現(xiàn)了Vue.js的數(shù)據(jù)驅(qū)動。圖9~10為系統(tǒng)應(yīng)用事例。

2.2 后端設(shè)計

如圖11所示,系統(tǒng)后端使用REST Server保存用戶創(chuàng)建資源和用戶操作,統(tǒng)一管理用戶認證、數(shù)據(jù)可視化項目、用戶配置數(shù)據(jù)源、文件和圖片,使用數(shù)據(jù)庫連接池技術(shù)保證多用戶操作場景下用戶資源的正常訪問。REST Server提供RESTful風格的API與前端應(yīng)用交互,主要包括用戶認證、可視化資源操作、數(shù)據(jù)庫資源操作、文件資源操作、異常資源操作等接口。

圖11 服務(wù)端架構(gòu)

用戶認證采用基于加密token的認證方式,對用戶名和用戶密碼進行數(shù)據(jù)保護。可視化資源操作接口可以實現(xiàn)用戶可視化項目的增加、編輯、刪除、預覽和發(fā)布功能。數(shù)據(jù)源資源操作接口可以實現(xiàn)用戶自定義配置源的增加、編輯、刪除、有效性驗證、數(shù)據(jù)獲取功能。文件資源接口支持將文件(包括圖片、CSV等)發(fā)送到服務(wù)器端統(tǒng)一進行標識后分配給可視化項目或數(shù)據(jù)源使用。

在系統(tǒng)數(shù)據(jù)流設(shè)計中,提出了“狀態(tài)收集器”這一理念,即用戶操作及更改的數(shù)據(jù)都將暫時集中于VueX下的“狀態(tài)收集器”中,每3秒觸發(fā)一次收集器,收集該當前可視化所有信息,并通過后端API保存至數(shù)據(jù)庫中。系統(tǒng)的數(shù)據(jù)流向如圖12所示。

該數(shù)據(jù)流向設(shè)計的優(yōu)勢在于用戶操作和向后臺傳輸數(shù)據(jù)為多線程操作,互不干擾,用戶無需擔心頻繁操作系統(tǒng)而丟失已創(chuàng)建的可視化信息,達到數(shù)據(jù)保護功能。

3 系統(tǒng)設(shè)計的主要技術(shù)

系統(tǒng)基于Vue.js[5-6]前端架構(gòu)融合Echarts[7]開源圖表庫及MongoDB[8]數(shù)據(jù)庫構(gòu)建。

3.1 Echarts圖表庫

Echarts是一個免費開源的可視化圖表組件。Echarts底層依賴輕量級的Canvas類庫ZRender,提供直觀、生動、可交互、可高度個性化定制的可視化圖表。Echarts4.0提供了常規(guī)的折線圖、柱狀圖、散點圖、餅圖、K線圖,用于地理數(shù)據(jù)可視化的地圖、熱力圖、線圖,用于關(guān)系數(shù)據(jù)可視化的關(guān)系圖、treemap,還有用于BI的漏斗圖。

3.2 Vue.js

Vue.js是一款輕量級的JavaScript庫,具有功能豐富、使用簡潔且清晰的文檔。Vue.js的核心思想是“數(shù)據(jù)驅(qū)動的組件化系統(tǒng)”,采用MVVM架構(gòu)去描述數(shù)據(jù)與界面的關(guān)系,采用嵌套的組件樹來描述界面。除此之外,Vue的組件化也是一個核心功能,即將用戶界面拆分成一系列相互關(guān)聯(lián)的組件,每個組件相互獨立,具有相互獨立的業(yè)務(wù)邏輯,卻又能通過數(shù)據(jù)傳遞和其他組件相互聯(lián)系,如圖13所示。Vue.js具有MVVM思想,組件化開發(fā),輕量級并且能與其他庫或項目整合優(yōu)勢[9],故成為越來越熱門的前端開發(fā)框架。

圖12 數(shù)據(jù)流設(shè)計

圖13 Vue.js組件化示意

3.3 VueX[10]

由于Vue.js的數(shù)據(jù)流為單向數(shù)據(jù)流,在遇到多個組件共享同一狀態(tài)時,傳參的方法對于多層嵌套的組件將會非常繁瑣,并且兄弟組件間的狀態(tài)傳遞基本無法解決。VueX為此專門為Vue.js設(shè)計了狀態(tài)管理庫,利用 Vue.js的細粒度數(shù)據(jù)響應(yīng)機制來進行高效的狀態(tài)更新,它采用集中式存儲管理應(yīng)用的所有組件的狀態(tài),并以相應(yīng)的規(guī)則保證狀態(tài)以一種可預測的方式發(fā)生變化。

3.4 MongoDB

MongoDB是一個介于NoSQL數(shù)據(jù)庫和MySQL數(shù)據(jù)庫之間的數(shù)據(jù)存儲系統(tǒng),沒有嚴格的數(shù)據(jù)格式,但又支持復雜的數(shù)據(jù)查詢??梢暬椖俊?shù)據(jù)源等數(shù)據(jù)實體結(jié)構(gòu)變化較大,易用JSON格式表示,MongoDB非常適合存儲JSON格式的數(shù)據(jù)。

4 結(jié)語

傳統(tǒng)數(shù)據(jù)分析可視化需要專業(yè)技術(shù)人員針對不同場景進行圖表開發(fā),大量圖表及特效開發(fā)周期長,前后端接口聯(lián)調(diào)也同樣耗時耗力。基于組件化的數(shù)據(jù)可視化系統(tǒng)HikVis解決了這一問題,該系統(tǒng)不僅不局限于數(shù)據(jù)可視化展示,還可快速搭建用戶自定義式的網(wǎng)頁構(gòu)建,包含數(shù)據(jù)驅(qū)動式的渲染設(shè)計、獨特的數(shù)據(jù)收集系統(tǒng)、快速制作自定義式網(wǎng)頁數(shù)據(jù)可視化,無需編程即可一鍵制作、預覽和發(fā)布用戶自定義網(wǎng)頁數(shù)據(jù)可視化。

猜你喜歡
數(shù)據(jù)源圖表組件
無人機智能巡檢在光伏電站組件診斷中的應(yīng)用
能源工程(2022年2期)2022-05-23 13:51:50
新型碎邊剪刀盤組件
重型機械(2020年2期)2020-07-24 08:16:16
U盾外殼組件注塑模具設(shè)計
Web 大數(shù)據(jù)系統(tǒng)數(shù)據(jù)源選擇*
基于不同網(wǎng)絡(luò)數(shù)據(jù)源的期刊評價研究
雙周圖表
足球周刊(2016年14期)2016-11-02 10:54:56
雙周圖表
足球周刊(2016年15期)2016-11-02 10:54:16
雙周圖表
足球周刊(2016年10期)2016-10-08 18:30:55
圖表
世界博覽(2016年16期)2016-09-27 18:25:26
基于真值發(fā)現(xiàn)的沖突數(shù)據(jù)源質(zhì)量評價算法
利川市| 德阳市| 溆浦县| 琼结县| 中牟县| 吴堡县| 江源县| 南溪县| 阿勒泰市| 泗阳县| 固始县| 雅安市| 罗甸县| 仪陇县| 雅江县| 桂阳县| 华坪县| 长寿区| 樟树市| 商都县| 宜兰市| 太白县| 封开县| 洪泽县| 扎囊县| 尚志市| 乐东| 宣恩县| 历史| 丹巴县| 河津市| 大冶市| 新竹县| 朝阳县| 华容县| 田林县| 巫山县| 张家界市| 宜章县| 金堂县| 石首市|