孟德軍
(中國(guó)鐵路沈陽(yáng)局集團(tuán)有限公司 信息技術(shù)所,沈陽(yáng) 110001)
反映鐵路路網(wǎng)結(jié)構(gòu)及線路設(shè)備的圖紙(如站場(chǎng)平面示意圖、車站信號(hào)平面布置圖、區(qū)間信號(hào)平面布置圖等)是鐵路重要的基礎(chǔ)技術(shù)資料[1]。隨著鐵路信息化應(yīng)用的深入開展,多種信息系統(tǒng)中的設(shè)備以建模后的圖形文檔(簡(jiǎn)稱:圖檔)作為人機(jī)交互操作界面,具有簡(jiǎn)明直觀的特點(diǎn)[2]。行車相關(guān)的輔助決策類應(yīng)用(如行車調(diào)度自動(dòng)調(diào)整),需要直接提取或識(shí)別設(shè)備圖檔中的信息作為智能計(jì)算的基礎(chǔ)參數(shù),從而簡(jiǎn)化數(shù)據(jù)維護(hù)[3]。以上應(yīng)用具有共性需求,即設(shè)備建模后圖紙的繪制、展示、交互及信息提取。
針對(duì)以上需求,現(xiàn)有的解決方案大多采用AutoCAD 或Visio 等國(guó)外商業(yè)軟件提供的二次開發(fā)技術(shù)來(lái)實(shí)現(xiàn)[4],但存在以下問(wèn)題:(1)AutoCAD 或Visio 繪制的圖紙,圖形元件允許被打散,設(shè)備信息識(shí)別與提取存在困難;(2)AutoCAD 與Visio 雖然提供了嵌入其他應(yīng)用的圖形組件,但均采用COM/ActiveX 技術(shù)實(shí)現(xiàn),僅能在Windows 平臺(tái)上由桌面應(yīng)用程序調(diào)用,缺少面向Web 應(yīng)用的圖形組件,與目前主流的基于Web 的應(yīng)用系統(tǒng)集成困難;(3)即使在Windows 平臺(tái)桌面應(yīng)用上,其二次開發(fā)方式也不夠靈活,需要購(gòu)買國(guó)外軟件授權(quán),投入較大;(4)缺少面向鐵路應(yīng)用的語(yǔ)義層抽象,開發(fā)難度較大。此外,國(guó)內(nèi)文獻(xiàn)關(guān)于如何使用二次開發(fā)技術(shù)提高繪圖質(zhì)量與效率方面的研究較多[5-8],但對(duì)圖紙信息與業(yè)務(wù)系統(tǒng)集成方面的研究較少。
基于此,本文研發(fā)了一套鐵路固定行車設(shè)備建模軟件包,利用可擴(kuò)展標(biāo)記語(yǔ)言(XML,eXtensible Markup Language)定義了圖形元件(簡(jiǎn)稱:圖元)模具文檔格式、圖檔格式;設(shè)計(jì)了圖檔的編輯功能(即圖檔編輯器)、圖元模具的制作功能(即圖元模具設(shè)計(jì)器);設(shè)計(jì)了桌面應(yīng)用交互組件、Web 應(yīng)用交互組件及組件類庫(kù),可與其他應(yīng)用系統(tǒng)深度融合,實(shí)現(xiàn)對(duì)鐵路運(yùn)輸生產(chǎn)運(yùn)營(yíng)線路設(shè)備的數(shù)字化、可視化管理,滿足運(yùn)輸管理相關(guān)應(yīng)用系統(tǒng)中集成或利用設(shè)備圖檔的共性需求,擺脫對(duì)國(guó)外商用軟件的過(guò)度依賴。
圖檔是由抽象化的描述股道、道岔、信號(hào)機(jī)等固定行車設(shè)備的圖元及其業(yè)務(wù)屬性與關(guān)聯(lián)關(guān)系構(gòu)成。圖元模具用于復(fù)制出同一類型的圖元,其定義了圖元的矢量圖形表示,即一系列參數(shù)控制的繪圖指令序列。因此,建模圖檔也是一種矢量圖描述。
利用XML 定義圖元模具文檔格式,根元素命名為StencilDocument。一個(gè)圖元模具文檔可以包含多個(gè)圖元模具;每個(gè)圖元模具包含圖形表示的相關(guān)元素,如形狀、字體、填充、線條樣式、文本樣式等,其中,形狀可以嵌套定義,即形狀元素可包含子形狀元素。形狀元素包含繪制路徑(GraphicsPath)集合,由直線、折線、圓弧、橢圓弧、二次貝塞爾曲線、三次貝塞爾曲線、SPLINE 樣條曲線、NURBS樣條曲線為基本的繪圖指令組成。
此外,圖元模具還包含控制點(diǎn)、連接點(diǎn)及業(yè)務(wù)屬性定義。同一圖元在不同的業(yè)務(wù)屬性下可以有不同的外觀呈現(xiàn)。圖形坐標(biāo)、樣式、屬性都可以使用由算數(shù)表達(dá)式及自定義函數(shù)組成的“公式”,利用詞法分析、語(yǔ)法分析、表達(dá)式樹等技術(shù)實(shí)現(xiàn)“公式”的動(dòng)態(tài)求值。
利用XML 定義圖檔格式,根元素命名為RailDrawDocument,其下可包含圖元模具引用元素集合、圖層元素集合、節(jié)點(diǎn)元素集合、連接元素集合及柵格圖像集合。
節(jié)點(diǎn)元素集合下可包含分組元素與節(jié)點(diǎn)元素,分組是嵌套定義的,其下可包含子節(jié)點(diǎn)與子分組。節(jié)點(diǎn)按類型分為塊圖元節(jié)點(diǎn)、線圖元節(jié)點(diǎn)與一般形狀節(jié)點(diǎn),圖元節(jié)點(diǎn)引用圖元模具,其外觀是由模具決定的,僅包含形狀屬性與業(yè)務(wù)屬性的修改值,節(jié)省了存儲(chǔ)空間。如建模圖檔中的道岔節(jié)點(diǎn),包含節(jié)點(diǎn)坐標(biāo)與道岔類型、道岔編號(hào)等業(yè)務(wù)屬性,其業(yè)務(wù)屬性是在圖元模具中嚴(yán)格定義的。連接元素由源節(jié)點(diǎn)、源端口、目的節(jié)點(diǎn)、目的端口四元組表示,用來(lái)建立建模圖檔中節(jié)點(diǎn)間的連接關(guān)系,從而形成圖元節(jié)點(diǎn)間的拓?fù)潢P(guān)聯(lián)結(jié)構(gòu)。
圖1 給出了一個(gè)具體的XML 格式圖檔示例,其表示一個(gè)調(diào)車信號(hào)機(jī)及與之關(guān)聯(lián)的2 個(gè)股道。其中,Masters 元素下通過(guò)UID 引用了“矮調(diào)”與“普通線路”2 個(gè)圖元模具;Nodes 元素下,ID 為“1”的Sym 元素的M 屬性為0,其代表Masters 中索引0,即“矮調(diào)”圖元模具;Links 元素下的2 個(gè)Link 元素表示調(diào)車信號(hào)機(jī)與左右兩側(cè)的股道的連接。從示例可見,XML 表示的圖檔具有開放共享、簡(jiǎn)潔明了、易于處理的特點(diǎn),通過(guò)圖元模具的引用,節(jié)省了數(shù)據(jù)存儲(chǔ)空間。
圖1 調(diào)車信號(hào)機(jī)與連接股道圖檔示例
軟件包設(shè)計(jì)了2 種圖元模具制作方法:(1)通過(guò)自由繪制圖形與模具制作元件(包括定位點(diǎn)、對(duì)稱點(diǎn)、輔助線、標(biāo)簽、格式文本、交叉點(diǎn)、控制點(diǎn)、卯接頭、榫接頭、元件屬性等)相配合,組合后自動(dòng)生成圖元模具;(2)通過(guò)圖元模具設(shè)計(jì)器,更加精細(xì)化地調(diào)整圖元形狀,利用樹形視圖展示模具結(jié)構(gòu)定義,通過(guò)屬性框定義變換公式與業(yè)務(wù)屬性,如圖2 所示。
圖元模具設(shè)計(jì)器的輸出除了XML 表示的模具文檔之外,還可以導(dǎo)出Web 應(yīng)用所需要的Javascript 圖元模具庫(kù),其中的屬性公式轉(zhuǎn)換為Javascript 函數(shù),提高了瀏覽器端的計(jì)算效率。
圖檔編輯器提供了圖形對(duì)象的變換操作(平移、旋轉(zhuǎn)、縮放、翻轉(zhuǎn))、組合拆分、組合嵌套、復(fù)制粘貼、撤銷重做等功能。設(shè)計(jì)了自定義連接點(diǎn)管理、曲形曲線編輯、自動(dòng)折線避讓等編輯功能,可從圖元模具選項(xiàng)板中選取圖元模具,拖放至圖形編輯區(qū),創(chuàng)建該圖元模具對(duì)應(yīng)的圖元節(jié)點(diǎn)。圖元節(jié)點(diǎn)是圖元模具的實(shí)例化,繼承了圖元模具的形狀及屬性、控制點(diǎn)、連接點(diǎn)。
控制點(diǎn)可用來(lái)調(diào)整圖元節(jié)點(diǎn)的外觀形狀,如用鼠標(biāo)拖動(dòng)控制點(diǎn)改變復(fù)式交分道岔的形狀、道岔號(hào)的相對(duì)顯示位置等。連接點(diǎn)是用于與其他圖元節(jié)點(diǎn)建立連接的,一個(gè)圖元可以有多個(gè)連接點(diǎn)。連接點(diǎn)分為榫接頭、卯接頭2 種類型,在處于編輯狀態(tài)的圖形中用“x”表示卯接頭,“+”表示榫接頭。線圖元(如股道線)的2 個(gè)端點(diǎn),默認(rèn)是連接點(diǎn),且都為榫接頭,可以與其他圖元節(jié)點(diǎn)中的卯接頭建立連接。在編輯器中拖動(dòng)卯接頭所屬圖元節(jié)點(diǎn),會(huì)連帶改變與之相連接的榫頭所屬圖元節(jié)點(diǎn)的形狀。拖動(dòng)榫接頭到卯接頭附近則建立連接,快速拖動(dòng)榫接頭離開卯接頭則斷開連接。另外,按照鐵路信號(hào)平面布置圖的特點(diǎn),設(shè)計(jì)了“魔法棒”功能,即只需要將設(shè)備圖元拖放到線路附近,就可自動(dòng)建立連接,提高建模效率。
2.3.1 交互組件設(shè)計(jì)
分別針對(duì)桌面應(yīng)用與Web 應(yīng)用,設(shè)計(jì)了圖形組件及類庫(kù),供外部應(yīng)用程序調(diào)用。圖形組件可讀取并顯示編輯器生成的建模圖檔,具備平移、鼠標(biāo)焦點(diǎn)縮放、縮略圖導(dǎo)航,以及路徑選取、圖元選取、浮動(dòng)提示、信息標(biāo)注等功能。指定開始節(jié)點(diǎn)與終止節(jié)點(diǎn),在標(biāo)出路徑的同時(shí),還可給出該路徑經(jīng)過(guò)的道岔、信號(hào)、軌道區(qū)段信息。
2.3.2 類庫(kù)設(shè)計(jì)
類庫(kù)分為底層和上層,底層是沒(méi)有業(yè)務(wù)含義的圖元對(duì)象層,上層是具有鐵路專業(yè)含義的語(yǔ)義對(duì)象層。語(yǔ)義對(duì)象層建立在圖元對(duì)象層之上,與應(yīng)用需求相關(guān),不同類別的圖檔建立不同的語(yǔ)義對(duì)象層。
對(duì)于信號(hào)平面布置圖,主要設(shè)計(jì)以下幾類對(duì)象:(1)INodeInLine 接口對(duì)象,代表與線路管理相關(guān)的設(shè)備(道岔、信號(hào)機(jī)、絕緣子等);(2)IRailLine接口對(duì)象,代表線路、實(shí)體線路與聯(lián)動(dòng)道岔的內(nèi)部隱含的邏輯線路,聯(lián)動(dòng)道岔類繼承簡(jiǎn)單道岔類,主要有雙動(dòng)、交叉渡線、4 組復(fù)式交分、5 組復(fù)式交分與6 組復(fù)式交分;(3)軌道區(qū)段對(duì)象,以信號(hào)機(jī)、軌道絕緣子為邊界確定軌道區(qū)段;(4)供電單元對(duì)象,以接觸網(wǎng)絕緣與接觸網(wǎng)開關(guān)為邊界確定供電單元對(duì)象。
2.3.3 導(dǎo)入/導(dǎo)出功能設(shè)計(jì)
為了避免重復(fù)的制圖工作,軟件包設(shè)計(jì)了數(shù)據(jù)導(dǎo)入轉(zhuǎn)換功能,包括:(1)導(dǎo)入既有的Visio 2007格式的圖形文件,轉(zhuǎn)換為本軟件包定義的XML 格式文件;(2)導(dǎo)入Visio 模具庫(kù)文件,轉(zhuǎn)換為本軟件包定義的模具庫(kù)文件;(3)導(dǎo)入SVG 圖形文件,并可將Adobe Illustrator 制圖中的符號(hào)圖形轉(zhuǎn)換為圖元模具;(4)導(dǎo)入AutoCAD 交換圖紙格式(DXF)圖形文件,對(duì)應(yīng)于一般幾何圖形對(duì)象;(5)導(dǎo)出SVG 格式的圖形文檔;(6)導(dǎo)出Web 應(yīng)用的JSON格式文檔。
針對(duì)不同平臺(tái),分別使用不同的技術(shù)棧,如表1所示,實(shí)現(xiàn)用戶界面與圖形渲染功能。
表1 軟件包實(shí)現(xiàn)技術(shù)棧
軟件包采用面向?qū)ο蟮能浖O(shè)計(jì)方法,不同平臺(tái)上使用的編程語(yǔ)言(C#與Typescript)雖然不同,但核心類設(shè)計(jì)具有同構(gòu)性。
目前,大多信息系統(tǒng)是基于Web 技術(shù)開發(fā)的,但應(yīng)用開發(fā)框架多種多樣,如Vue、Angular 等。不同的應(yīng)用開發(fā)框架采用不同的組件封裝技術(shù),互操作困難。為了使Web 圖形組件與調(diào)用方使用的開發(fā)框架無(wú)關(guān),軟件包采用了Web Component 技術(shù)。
Web Components 是萬(wàn)維網(wǎng)聯(lián)盟推動(dòng)的一項(xiàng)標(biāo)準(zhǔn),旨在豐富 HTML 的 DOM 特性,讓 HTML 有更強(qiáng)大的復(fù)用能力。無(wú)論調(diào)用方采用什么框架,只要在HTML 頁(yè)面中簡(jiǎn)單插入“
軟件包內(nèi)含的圖形組件,應(yīng)用在“鐵路營(yíng)業(yè)線施工計(jì)劃管控信息系統(tǒng)”中,如圖3 所示。
圖3 施工計(jì)劃錄入界面
圖3 上半部視圖顯示軟件包提供的圖形組件所呈現(xiàn)車站的信號(hào)平面布置圖,提供施工計(jì)劃圖形化錄入界面,用戶可用鼠標(biāo)點(diǎn)選信號(hào)機(jī)、股道、道岔等設(shè)備圖元,在圖上直接標(biāo)注施工影響范圍,具有操作直觀、準(zhǔn)確、明晰的特點(diǎn)。由于圖元本身包含業(yè)務(wù)屬性,所以能夠自動(dòng)轉(zhuǎn)換為文本描述,如圖3中“5 號(hào)道岔至X1 信號(hào)機(jī)至4 號(hào)道岔間線路”,形成了數(shù)字化的施工計(jì)劃。
通過(guò)本文軟件包繪制的站場(chǎng)及區(qū)間平面信號(hào)布置圖,以及可編程組件,已應(yīng)用在“調(diào)度集中區(qū)段行車指揮虛擬仿真實(shí)驗(yàn)系統(tǒng)”中,如圖4 所示。
圖4 虛擬仿真實(shí)驗(yàn)教學(xué)界面
上部視圖是由軟件包圖形組件所呈現(xiàn)的站內(nèi)及區(qū)間線路設(shè)備模型,其中,設(shè)備圖元根據(jù)模擬指令顯示不同的狀態(tài)。圖4 中的“11316”運(yùn)行在進(jìn)站線路上,其下線路變紅色表示閉塞分區(qū)占用,其后方區(qū)間四顯示信號(hào)機(jī)分別顯示紅燈、黃燈、黃綠燈。
通過(guò)在虛擬仿真實(shí)驗(yàn)教學(xué)平臺(tái)上模擬車站及區(qū)間線路信號(hào)聯(lián)鎖,結(jié)合列車運(yùn)行圖表,仿真列車運(yùn)行,幫助學(xué)生學(xué)習(xí)理解列車運(yùn)行圖、進(jìn)路聯(lián)鎖、調(diào)度命令等基本概念,掌握在調(diào)度集中區(qū)段行車調(diào)度指揮的基本原理與相關(guān)知識(shí)。
本文介紹了鐵路行車設(shè)備建模軟件包的設(shè)計(jì)思路、實(shí)現(xiàn)技術(shù)與應(yīng)用案例。軟件包中的圖檔編輯器可用于繪制鐵路路網(wǎng)示意圖、站場(chǎng)區(qū)間平面布置圖,替代AutoCAD、Visio 等平面建模軟件,節(jié)約應(yīng)用系統(tǒng)集成時(shí)的軟件采購(gòu)成本;軟件包實(shí)現(xiàn)的圖形組件類庫(kù),方便與其他系統(tǒng)集成,具有廣泛的應(yīng)用前景。相比于商業(yè)軟件,本軟件包偏重于鐵路系統(tǒng)內(nèi)應(yīng)用,通用性不強(qiáng),產(chǎn)品化程度較低,在利用內(nèi)嵌動(dòng)態(tài)語(yǔ)言或宏腳本,以及實(shí)現(xiàn)用戶自定義的功能等方面有待進(jìn)一步研究探索。