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