靳 磊,朱 濤,任 爽
(中國鐵路信息科技集團有限公司,北京 100844)
列車運行圖是運用坐標原理對列車運行時間、空間關系的圖解表示,可視化地表達了列車運行的時空過程,是鐵路日常生產和應急指揮不可或缺的重要工具[1]。我國鐵路過去采用手工作業方式在圖紙上繪制列車運行圖。隨著信息技術的發展與應用,利用計算機技術繪制列車運行圖在提高信息承載力、增強信息交互體驗、全方位展示運輸生產鏈路、提高生產作業效率、保障行車組織安全等方面發揮了重要作用。
我國鐵路應用計算機繪制列車運行圖以來,倪少權等人[2]提出了列車運行圖人機交互的基本要求;得益于計算機繪制技術的快速發展,薛武軍等人[3]在衛星自動報點研究中采用Delphi語言繪制了不同類型的列車運行線,具備縮放、平移等基本操作功能;陳旭鷹[4]論述了PowerBuilder可視化開發工具在運行圖信息管理方面的實踐經驗;張志會[5]基于Flash與Action Script語言探索了列車運行圖動態可視化仿真技術;祝建平等人[6]通過B/S架構向用戶提供列車運行圖客戶端下載功能,并通過C/S架構實現列車運行圖聯網編制,驗證了列車運行圖網絡化編制系統設計路線的可行性;李詩雄[7]采用GDI+靜態圖片繪圖技術,結合EMF和WMF矢量圖形文件傳輸機制,實現了列車運行圖的遠程共享與動態展示;史常慶等人[8]在計算機編制列車運行圖方法與技術研究中,采用Visual C++和C/S架構繪制了列車運行圖;白紫熙等人[9]研究了列車運行仿真系統構建技術,并基于C#語言和.net技術棧研發了列車運行圖組件;廖志林等人[10]基于Java2D技術和Eclipse插件機制研究了列車運行圖矢量繪制方法與臺間拼接技術。從以上學者的研究成果可見,列車運行圖計算機繪制技術經歷了靜態圖片、動態可交互客戶端、C/S架構網絡化、混合架構網絡化及Web富客戶端等發展階段,通過持續地引入各個時期的主流計算機圖形圖像繪制技術,為同一時期鐵路事業發展建設提供了有力支持。
基于以上研究成果并結合鐵路運輸調度領域各級、各類用戶對列車運行圖提出的新需求,本文總結了瀏覽器繪制列車運行圖亟需突破的技術難點,提出了基于Web技術棧的列車運行圖繪制方案,以期為相關信息系統的研發與集成提供參考。
列車運行圖計算機繪制基本需求通常包括4項。
(1)根據工作要求,將鐵路線、樞紐、調度臺管轄范圍作為列車運行圖的底圖,并確定底圖的時間范圍與時分格式;
(2)通過各種數據源獲取與底圖相關的業務數據,并將這些數據轉換為列車運行圖的圖形數據;
(3)按照《列車運行圖編制管理規則》繪制列車運行線、機車交路、車底交路及天窗、施工等業務信息;
(4)提供平移、縮放、點選、拾取、拖拽及顯示內容疊加避讓、鷹眼圖、快速定位等圖形圖像交互操作等功能。當前主流的列車運行圖繪制技術已能夠較好地實現這些基本需求。
隨著互聯網技術與移動應用的普及與發展,業務用戶對列車運行圖提出了更多新需求,可概括為3類。
(1)豐富列車運行圖的信息承載能力,能夠以列車運行圖為紐帶,聯動查閱列車編組、隨乘人員、客票、貨票、確報、調度命令、施工揭示命令及相關站段作業計劃、作業實績、統計分析等信息;
(2)提高列車運行圖的易訪問性,能夠通過瀏覽器、移動終端等設備隨時隨地、簡便快捷地使用列車運行圖;
(3)提升列車運行圖的用戶體驗與性能效率,支持實時刷新與動態反饋,能夠適應大流量訪問與高并發訪問等業務場景。
此外,業務系統研發與運行維護(簡稱:運維)人員還要求列車運行圖能夠實現組件化與服務化,具備可重用、可擴展、易集成、易維護等能力。
以上新需求理論上采用云計算和Web技術即可較好地實現,而實際使用過程中,基于瀏覽器的列車運行圖繪制存在繪圖性能差、加載時間長、響應不及時、資源要求高等問題,主要原因如下。
(1)數據處理量較大。計算機在列車運行圖上繪制一條運行線需要經過數據加載、坐標轉換、圖形對象生成、數據傳輸和圖形繪制等步驟,這是一個串行過程,當需要繪制的運行線數據量較大時,整個處理時間將迅速增加;此外,我國鐵路路網結構錯綜復雜,日均開行上萬次列車,數據規模極其龐大,而列車運行圖底圖通常僅關聯路網中很小的一部分,進一步增加了數據篩選難度與數據處理時間。因此,需要詳細劃分數據處理過程,并對每個步驟采取有針對性的優化措施,才能有效縮減數據處理時間。
(2)前端和服務端分工不合理。傳統列車運行圖計算機繪制技術大多采用C/S架構模式,其中,服務端一般僅負責查詢數據庫與傳輸查詢結果等任務,其余處理任務均由客戶端完成。當Web技術采用這種方式時,由于瀏覽器存在可用內存受限、不支持多線程、不支持硬件加速等技術限制,數據量較大時,瀏覽器資源將被迅速耗盡,甚至引起瀏覽器崩潰、停止響應等情況。因此,應調整優化前端和服務端任務分工,將非必須由前端處理的任務最大程度地劃分給服務端,降低前端的資源需求與處理步驟,并充分利用服務端資源優勢及多線程并發技術降低整體處理時間。
(3)前端繪制代碼編寫方式待優化。無論采用哪種繪制技術,均需要消耗用戶前端資源,而繪制代碼的編寫方式會影響前端資源的調用次數與調用頻次,當數據量增大時,由此引起的耗時問題和資源消耗問題將會凸顯并且極難修正。因此,從代碼編寫之初就應按照繪制技術特點和最佳實踐,優化代碼結構、編寫方式和組織方式,減少非必要的資源調用。
本文基于Web技術棧提出一套解決方案,通過調整服務端與前端的任務分工,將數據處理與圖形數據運算任務全部交由服務端處理,實現以Web組件的方式提供列車運行圖集成服務。解決方案由服務端運行環境、服務端技術架構及前端優化措施構成,總體架構如圖1所示。

圖1 解決方案總體架構
列車運行圖組件在中國鐵路主數據中心部署運行,主數據中心云環境提供了計算、存儲、網絡、安全等資源及虛擬機、負載均衡、數據庫等基礎服務。為進一步提高資源利用效率,增強服務端運行環境的可靠性、穩定性與可維護性,在主數據中心基礎設施即服務(IaaS,Infrastructure as a Service)層的基礎上搭建平臺即服務(PaaS,Platform as a Service)層,并提供列車運行圖組件集成服務與數據共享服務。此外,根據用戶使用方式需求,通過擴展PaaS平臺安全模塊,增加數據安全、訪問監控、日志審計、傳輸安全及客戶端安全等功能,提升列車運行圖組件在大數據量訪問與高并發訪問等場景的運維保障能力。
服務端采用微服務架構、多線程并發技術優化提升各項功能運行效率,并針對主要耗時的功能采取了進一步優化措施。例如,通過分庫分表、SQL語句優化提升運行線與底圖匹配算法效率;通過分布式計算技術加快坐標換算、圖形對象生成和數據封裝處理過程;通過數據壓縮技術減少數據傳輸量;通過緩存技術減少運算量等。4項主要功能如下。
(1)鐵路路網數據管理。定義了鐵路路網對象的數據結構和關聯關系,可提供數據管理工具和數據共享服務,為運行圖底圖管理和運行圖數據管理提供基礎數據支持。
(2)運行圖底圖管理。負責提供各種列車運行圖底圖管理功能和數據共享服務,可按類型、鐵路局集團公司、鐵路線提供底圖數據服務,同時支持自定義底圖功能。
(3)運行圖數據管理。負責提供運輸生產數據,包括基本計劃、調度日(班)計劃和運輸生產實績等。
(4)圖形數據預處理。提供運行線與底圖篩選、圖形坐標轉換等功能,通過建立規范的數據結構,屏蔽不同數據源間的數據結構差異,保障前端可按照統一的數據模型繪制列車運行圖;通過運行圖元素預繪制、底圖預繪制、分層復制等模塊提前創建圖形數據,進一步分擔前端計算壓力。
在服務端分擔大量工作的基礎上,本文在前端采用HTML5 Canvas繪制列車運行圖。HTML5 Canvas是Web 2.0新增的技術組件,通過畫筆級繪圖函數,在HTML上用JavaScript繪制各種圖形與動畫,適用于像素處理、動態渲染和大數據量繪制等場景,且獲得當前主流瀏覽器的支持。
為充分提升HTML5 Canvas的性能效率,根據最佳實踐,可通過優化代碼編寫質量,減少對前端資源的調用;也可利用Canvas提供的離屏渲染和分層畫布技術提高繪圖性能[11-12]。對于縮放、平移操作后需要重新計算坐標或加載數據的場景,利用前端與服務端緩存技術存儲常用縮放等級對應的數據,并結合預繪制技術提高前端響應效率、提升用戶體驗。此外,通過在服務端提前生成列車運行圖圖片,前端繪制圖片后再逐項添加可交互矢量圖形數據,可提升啟動及刷新效率。
為驗證解決方案的有效性,本文對其進行耗時性能測試,檢測被測性能指標的極限值。本次耗時性能測試以京滬(北京—上海)高速鐵路全線為底圖,涉及車站30座,時間范圍為36 h,不考慮天窗、施工和交路等元素,通過滿圖鋪畫列車運行線進行測試。本次測試分別記錄了列車運行圖鋪畫運行線200對、400對、500對和1 000對時關鍵環節處理過程的時間消耗,并對其性能表現進行分析。性能測試結果如表1所示,測試結果對比分析如圖2所示。

表1 性能測試結果

圖2 測試結果對比分析
本次測試所選5個被測項的耗時合計占總運行耗時的85%以上,證明了所選測試方法的合理性和有效性。根據測試結果對比分析,列車運行圖從啟動到完成繪制整個運行過程耗時較低,數據量較大時加載時間在2 s左右,處于用戶可容忍的時間范圍內,說明技術難點問題得到了有效解決。測試采用跳躍增加數據量的方式,總耗時增長趨勢平穩,說明數據量波動對整體性能影響不大。此外,圖形繪制、數據加載和數據傳輸占比較大,是影響耗時性能的主要因素,還需采取進一步優化措施。
基于Web技術棧的列車運行圖繪制方案較傳統技術的創新點為:具備服務化和組件化條件,可與相關信息系統融合集成;解決方案采用微服務架構和云計算運行環境,降低了前端資源要求,提升了整體的可靠性、安全性和可維護性;解決方案所采用的設計思路和研發方法可總結形成設計經驗或最佳實踐,為類似場景信息系統的研發工作提供參考。此外,由于Web操作方式和桌面操作方式存在一定差異,后續還需要深入研究交互方式,進一步擴大該列車運行圖繪制方案的應用范圍及用戶體驗。