靳 磊,朱 濤,任 爽
(中國(guó)鐵路信息科技集團(tuán)有限公司,北京 100844)
列車運(yùn)行圖是運(yùn)用坐標(biāo)原理對(duì)列車運(yùn)行時(shí)間、空間關(guān)系的圖解表示,可視化地表達(dá)了列車運(yùn)行的時(shí)空過(guò)程,是鐵路日常生產(chǎn)和應(yīng)急指揮不可或缺的重要工具[1]。我國(guó)鐵路過(guò)去采用手工作業(yè)方式在圖紙上繪制列車運(yùn)行圖。隨著信息技術(shù)的發(fā)展與應(yīng)用,利用計(jì)算機(jī)技術(shù)繪制列車運(yùn)行圖在提高信息承載力、增強(qiáng)信息交互體驗(yàn)、全方位展示運(yùn)輸生產(chǎn)鏈路、提高生產(chǎn)作業(yè)效率、保障行車組織安全等方面發(fā)揮了重要作用。
我國(guó)鐵路應(yīng)用計(jì)算機(jī)繪制列車運(yùn)行圖以來(lái),倪少權(quán)等人[2]提出了列車運(yùn)行圖人機(jī)交互的基本要求;得益于計(jì)算機(jī)繪制技術(shù)的快速發(fā)展,薛武軍等人[3]在衛(wèi)星自動(dòng)報(bào)點(diǎn)研究中采用Delphi語(yǔ)言繪制了不同類型的列車運(yùn)行線,具備縮放、平移等基本操作功能;陳旭鷹[4]論述了PowerBuilder可視化開發(fā)工具在運(yùn)行圖信息管理方面的實(shí)踐經(jīng)驗(yàn);張志會(huì)[5]基于Flash與Action Script語(yǔ)言探索了列車運(yùn)行圖動(dòng)態(tài)可視化仿真技術(shù);祝建平等人[6]通過(guò)B/S架構(gòu)向用戶提供列車運(yùn)行圖客戶端下載功能,并通過(guò)C/S架構(gòu)實(shí)現(xiàn)列車運(yùn)行圖聯(lián)網(wǎng)編制,驗(yàn)證了列車運(yùn)行圖網(wǎng)絡(luò)化編制系統(tǒng)設(shè)計(jì)路線的可行性;李詩(shī)雄[7]采用GDI+靜態(tài)圖片繪圖技術(shù),結(jié)合EMF和WMF矢量圖形文件傳輸機(jī)制,實(shí)現(xiàn)了列車運(yùn)行圖的遠(yuǎn)程共享與動(dòng)態(tài)展示;史常慶等人[8]在計(jì)算機(jī)編制列車運(yùn)行圖方法與技術(shù)研究中,采用Visual C++和C/S架構(gòu)繪制了列車運(yùn)行圖;白紫熙等人[9]研究了列車運(yùn)行仿真系統(tǒng)構(gòu)建技術(shù),并基于C#語(yǔ)言和.net技術(shù)棧研發(fā)了列車運(yùn)行圖組件;廖志林等人[10]基于Java2D技術(shù)和Eclipse插件機(jī)制研究了列車運(yùn)行圖矢量繪制方法與臺(tái)間拼接技術(shù)。從以上學(xué)者的研究成果可見,列車運(yùn)行圖計(jì)算機(jī)繪制技術(shù)經(jīng)歷了靜態(tài)圖片、動(dòng)態(tài)可交互客戶端、C/S架構(gòu)網(wǎng)絡(luò)化、混合架構(gòu)網(wǎng)絡(luò)化及Web富客戶端等發(fā)展階段,通過(guò)持續(xù)地引入各個(gè)時(shí)期的主流計(jì)算機(jī)圖形圖像繪制技術(shù),為同一時(shí)期鐵路事業(yè)發(fā)展建設(shè)提供了有力支持。
基于以上研究成果并結(jié)合鐵路運(yùn)輸調(diào)度領(lǐng)域各級(jí)、各類用戶對(duì)列車運(yùn)行圖提出的新需求,本文總結(jié)了瀏覽器繪制列車運(yùn)行圖亟需突破的技術(shù)難點(diǎn),提出了基于Web技術(shù)棧的列車運(yùn)行圖繪制方案,以期為相關(guān)信息系統(tǒng)的研發(fā)與集成提供參考。
列車運(yùn)行圖計(jì)算機(jī)繪制基本需求通常包括4項(xiàng)。
(1)根據(jù)工作要求,將鐵路線、樞紐、調(diào)度臺(tái)管轄范圍作為列車運(yùn)行圖的底圖,并確定底圖的時(shí)間范圍與時(shí)分格式;
(2)通過(guò)各種數(shù)據(jù)源獲取與底圖相關(guān)的業(yè)務(wù)數(shù)據(jù),并將這些數(shù)據(jù)轉(zhuǎn)換為列車運(yùn)行圖的圖形數(shù)據(jù);
(3)按照《列車運(yùn)行圖編制管理規(guī)則》繪制列車運(yùn)行線、機(jī)車交路、車底交路及天窗、施工等業(yè)務(wù)信息;
(4)提供平移、縮放、點(diǎn)選、拾取、拖拽及顯示內(nèi)容疊加避讓、鷹眼圖、快速定位等圖形圖像交互操作等功能。當(dāng)前主流的列車運(yùn)行圖繪制技術(shù)已能夠較好地實(shí)現(xiàn)這些基本需求。
隨著互聯(lián)網(wǎng)技術(shù)與移動(dòng)應(yīng)用的普及與發(fā)展,業(yè)務(wù)用戶對(duì)列車運(yùn)行圖提出了更多新需求,可概括為3類。
(1)豐富列車運(yùn)行圖的信息承載能力,能夠以列車運(yùn)行圖為紐帶,聯(lián)動(dòng)查閱列車編組、隨乘人員、客票、貨票、確報(bào)、調(diào)度命令、施工揭示命令及相關(guān)站段作業(yè)計(jì)劃、作業(yè)實(shí)績(jī)、統(tǒng)計(jì)分析等信息;
(2)提高列車運(yùn)行圖的易訪問性,能夠通過(guò)瀏覽器、移動(dòng)終端等設(shè)備隨時(shí)隨地、簡(jiǎn)便快捷地使用列車運(yùn)行圖;
(3)提升列車運(yùn)行圖的用戶體驗(yàn)與性能效率,支持實(shí)時(shí)刷新與動(dòng)態(tài)反饋,能夠適應(yīng)大流量訪問與高并發(fā)訪問等業(yè)務(wù)場(chǎng)景。
此外,業(yè)務(wù)系統(tǒng)研發(fā)與運(yùn)行維護(hù)(簡(jiǎn)稱:運(yùn)維)人員還要求列車運(yùn)行圖能夠?qū)崿F(xiàn)組件化與服務(wù)化,具備可重用、可擴(kuò)展、易集成、易維護(hù)等能力。
以上新需求理論上采用云計(jì)算和Web技術(shù)即可較好地實(shí)現(xiàn),而實(shí)際使用過(guò)程中,基于瀏覽器的列車運(yùn)行圖繪制存在繪圖性能差、加載時(shí)間長(zhǎng)、響應(yīng)不及時(shí)、資源要求高等問題,主要原因如下。
(1)數(shù)據(jù)處理量較大。計(jì)算機(jī)在列車運(yùn)行圖上繪制一條運(yùn)行線需要經(jīng)過(guò)數(shù)據(jù)加載、坐標(biāo)轉(zhuǎn)換、圖形對(duì)象生成、數(shù)據(jù)傳輸和圖形繪制等步驟,這是一個(gè)串行過(guò)程,當(dāng)需要繪制的運(yùn)行線數(shù)據(jù)量較大時(shí),整個(gè)處理時(shí)間將迅速增加;此外,我國(guó)鐵路路網(wǎng)結(jié)構(gòu)錯(cuò)綜復(fù)雜,日均開行上萬(wàn)次列車,數(shù)據(jù)規(guī)模極其龐大,而列車運(yùn)行圖底圖通常僅關(guān)聯(lián)路網(wǎng)中很小的一部分,進(jìn)一步增加了數(shù)據(jù)篩選難度與數(shù)據(jù)處理時(shí)間。因此,需要詳細(xì)劃分?jǐn)?shù)據(jù)處理過(guò)程,并對(duì)每個(gè)步驟采取有針對(duì)性的優(yōu)化措施,才能有效縮減數(shù)據(jù)處理時(shí)間。
(2)前端和服務(wù)端分工不合理。傳統(tǒng)列車運(yùn)行圖計(jì)算機(jī)繪制技術(shù)大多采用C/S架構(gòu)模式,其中,服務(wù)端一般僅負(fù)責(zé)查詢數(shù)據(jù)庫(kù)與傳輸查詢結(jié)果等任務(wù),其余處理任務(wù)均由客戶端完成。當(dāng)Web技術(shù)采用這種方式時(shí),由于瀏覽器存在可用內(nèi)存受限、不支持多線程、不支持硬件加速等技術(shù)限制,數(shù)據(jù)量較大時(shí),瀏覽器資源將被迅速耗盡,甚至引起瀏覽器崩潰、停止響應(yīng)等情況。因此,應(yīng)調(diào)整優(yōu)化前端和服務(wù)端任務(wù)分工,將非必須由前端處理的任務(wù)最大程度地劃分給服務(wù)端,降低前端的資源需求與處理步驟,并充分利用服務(wù)端資源優(yōu)勢(shì)及多線程并發(fā)技術(shù)降低整體處理時(shí)間。
(3)前端繪制代碼編寫方式待優(yōu)化。無(wú)論采用哪種繪制技術(shù),均需要消耗用戶前端資源,而繪制代碼的編寫方式會(huì)影響前端資源的調(diào)用次數(shù)與調(diào)用頻次,當(dāng)數(shù)據(jù)量增大時(shí),由此引起的耗時(shí)問題和資源消耗問題將會(huì)凸顯并且極難修正。因此,從代碼編寫之初就應(yīng)按照繪制技術(shù)特點(diǎn)和最佳實(shí)踐,優(yōu)化代碼結(jié)構(gòu)、編寫方式和組織方式,減少非必要的資源調(diào)用。
本文基于Web技術(shù)棧提出一套解決方案,通過(guò)調(diào)整服務(wù)端與前端的任務(wù)分工,將數(shù)據(jù)處理與圖形數(shù)據(jù)運(yùn)算任務(wù)全部交由服務(wù)端處理,實(shí)現(xiàn)以Web組件的方式提供列車運(yùn)行圖集成服務(wù)。解決方案由服務(wù)端運(yùn)行環(huán)境、服務(wù)端技術(shù)架構(gòu)及前端優(yōu)化措施構(gòu)成,總體架構(gòu)如圖1所示。
圖1 解決方案總體架構(gòu)
列車運(yùn)行圖組件在中國(guó)鐵路主數(shù)據(jù)中心部署運(yùn)行,主數(shù)據(jù)中心云環(huán)境提供了計(jì)算、存儲(chǔ)、網(wǎng)絡(luò)、安全等資源及虛擬機(jī)、負(fù)載均衡、數(shù)據(jù)庫(kù)等基礎(chǔ)服務(wù)。為進(jìn)一步提高資源利用效率,增強(qiáng)服務(wù)端運(yùn)行環(huán)境的可靠性、穩(wěn)定性與可維護(hù)性,在主數(shù)據(jù)中心基礎(chǔ)設(shè)施即服務(wù)(IaaS,Infrastructure as a Service)層的基礎(chǔ)上搭建平臺(tái)即服務(wù)(PaaS,Platform as a Service)層,并提供列車運(yùn)行圖組件集成服務(wù)與數(shù)據(jù)共享服務(wù)。此外,根據(jù)用戶使用方式需求,通過(guò)擴(kuò)展PaaS平臺(tái)安全模塊,增加數(shù)據(jù)安全、訪問監(jiān)控、日志審計(jì)、傳輸安全及客戶端安全等功能,提升列車運(yùn)行圖組件在大數(shù)據(jù)量訪問與高并發(fā)訪問等場(chǎng)景的運(yùn)維保障能力。
服務(wù)端采用微服務(wù)架構(gòu)、多線程并發(fā)技術(shù)優(yōu)化提升各項(xiàng)功能運(yùn)行效率,并針對(duì)主要耗時(shí)的功能采取了進(jìn)一步優(yōu)化措施。例如,通過(guò)分庫(kù)分表、SQL語(yǔ)句優(yōu)化提升運(yùn)行線與底圖匹配算法效率;通過(guò)分布式計(jì)算技術(shù)加快坐標(biāo)換算、圖形對(duì)象生成和數(shù)據(jù)封裝處理過(guò)程;通過(guò)數(shù)據(jù)壓縮技術(shù)減少數(shù)據(jù)傳輸量;通過(guò)緩存技術(shù)減少運(yùn)算量等。4項(xiàng)主要功能如下。
(1)鐵路路網(wǎng)數(shù)據(jù)管理。定義了鐵路路網(wǎng)對(duì)象的數(shù)據(jù)結(jié)構(gòu)和關(guān)聯(lián)關(guān)系,可提供數(shù)據(jù)管理工具和數(shù)據(jù)共享服務(wù),為運(yùn)行圖底圖管理和運(yùn)行圖數(shù)據(jù)管理提供基礎(chǔ)數(shù)據(jù)支持。
(2)運(yùn)行圖底圖管理。負(fù)責(zé)提供各種列車運(yùn)行圖底圖管理功能和數(shù)據(jù)共享服務(wù),可按類型、鐵路局集團(tuán)公司、鐵路線提供底圖數(shù)據(jù)服務(wù),同時(shí)支持自定義底圖功能。
(3)運(yùn)行圖數(shù)據(jù)管理。負(fù)責(zé)提供運(yùn)輸生產(chǎn)數(shù)據(jù),包括基本計(jì)劃、調(diào)度日(班)計(jì)劃和運(yùn)輸生產(chǎn)實(shí)績(jī)等。
(4)圖形數(shù)據(jù)預(yù)處理。提供運(yùn)行線與底圖篩選、圖形坐標(biāo)轉(zhuǎn)換等功能,通過(guò)建立規(guī)范的數(shù)據(jù)結(jié)構(gòu),屏蔽不同數(shù)據(jù)源間的數(shù)據(jù)結(jié)構(gòu)差異,保障前端可按照統(tǒng)一的數(shù)據(jù)模型繪制列車運(yùn)行圖;通過(guò)運(yùn)行圖元素預(yù)繪制、底圖預(yù)繪制、分層復(fù)制等模塊提前創(chuàng)建圖形數(shù)據(jù),進(jìn)一步分擔(dān)前端計(jì)算壓力。
在服務(wù)端分擔(dān)大量工作的基礎(chǔ)上,本文在前端采用HTML5 Canvas繪制列車運(yùn)行圖。HTML5 Canvas是Web 2.0新增的技術(shù)組件,通過(guò)畫筆級(jí)繪圖函數(shù),在HTML上用JavaScript繪制各種圖形與動(dòng)畫,適用于像素處理、動(dòng)態(tài)渲染和大數(shù)據(jù)量繪制等場(chǎng)景,且獲得當(dāng)前主流瀏覽器的支持。
為充分提升HTML5 Canvas的性能效率,根據(jù)最佳實(shí)踐,可通過(guò)優(yōu)化代碼編寫質(zhì)量,減少對(duì)前端資源的調(diào)用;也可利用Canvas提供的離屏渲染和分層畫布技術(shù)提高繪圖性能[11-12]。對(duì)于縮放、平移操作后需要重新計(jì)算坐標(biāo)或加載數(shù)據(jù)的場(chǎng)景,利用前端與服務(wù)端緩存技術(shù)存儲(chǔ)常用縮放等級(jí)對(duì)應(yīng)的數(shù)據(jù),并結(jié)合預(yù)繪制技術(shù)提高前端響應(yīng)效率、提升用戶體驗(yàn)。此外,通過(guò)在服務(wù)端提前生成列車運(yùn)行圖圖片,前端繪制圖片后再逐項(xiàng)添加可交互矢量圖形數(shù)據(jù),可提升啟動(dòng)及刷新效率。
為驗(yàn)證解決方案的有效性,本文對(duì)其進(jìn)行耗時(shí)性能測(cè)試,檢測(cè)被測(cè)性能指標(biāo)的極限值。本次耗時(shí)性能測(cè)試以京滬(北京—上海)高速鐵路全線為底圖,涉及車站30座,時(shí)間范圍為36 h,不考慮天窗、施工和交路等元素,通過(guò)滿圖鋪畫列車運(yùn)行線進(jìn)行測(cè)試。本次測(cè)試分別記錄了列車運(yùn)行圖鋪畫運(yùn)行線200對(duì)、400對(duì)、500對(duì)和1 000對(duì)時(shí)關(guān)鍵環(huán)節(jié)處理過(guò)程的時(shí)間消耗,并對(duì)其性能表現(xiàn)進(jìn)行分析。性能測(cè)試結(jié)果如表1所示,測(cè)試結(jié)果對(duì)比分析如圖2所示。
表1 性能測(cè)試結(jié)果
圖2 測(cè)試結(jié)果對(duì)比分析
本次測(cè)試所選5個(gè)被測(cè)項(xiàng)的耗時(shí)合計(jì)占總運(yùn)行耗時(shí)的85%以上,證明了所選測(cè)試方法的合理性和有效性。根據(jù)測(cè)試結(jié)果對(duì)比分析,列車運(yùn)行圖從啟動(dòng)到完成繪制整個(gè)運(yùn)行過(guò)程耗時(shí)較低,數(shù)據(jù)量較大時(shí)加載時(shí)間在2 s左右,處于用戶可容忍的時(shí)間范圍內(nèi),說(shuō)明技術(shù)難點(diǎn)問題得到了有效解決。測(cè)試采用跳躍增加數(shù)據(jù)量的方式,總耗時(shí)增長(zhǎng)趨勢(shì)平穩(wěn),說(shuō)明數(shù)據(jù)量波動(dòng)對(duì)整體性能影響不大。此外,圖形繪制、數(shù)據(jù)加載和數(shù)據(jù)傳輸占比較大,是影響耗時(shí)性能的主要因素,還需采取進(jìn)一步優(yōu)化措施。
基于Web技術(shù)棧的列車運(yùn)行圖繪制方案較傳統(tǒng)技術(shù)的創(chuàng)新點(diǎn)為:具備服務(wù)化和組件化條件,可與相關(guān)信息系統(tǒng)融合集成;解決方案采用微服務(wù)架構(gòu)和云計(jì)算運(yùn)行環(huán)境,降低了前端資源要求,提升了整體的可靠性、安全性和可維護(hù)性;解決方案所采用的設(shè)計(jì)思路和研發(fā)方法可總結(jié)形成設(shè)計(jì)經(jīng)驗(yàn)或最佳實(shí)踐,為類似場(chǎng)景信息系統(tǒng)的研發(fā)工作提供參考。此外,由于Web操作方式和桌面操作方式存在一定差異,后續(xù)還需要深入研究交互方式,進(jìn)一步擴(kuò)大該列車運(yùn)行圖繪制方案的應(yīng)用范圍及用戶體驗(yàn)。