徐 瑋,李世春,解 亮,朱海佳,王清玉
(1.中國鐵路蘭州局集團有限公司 客運部,蘭州 730000;2.中國鐵路蘭州局集團有限公司 信息技術所,蘭州 730000;3.中國鐵路蘭州局集團有限公司 科技和信息化部,蘭州 730000)
鐵路客運運價里程表(簡稱:里程表)和全國 鐵路(簡稱:全路)客運營業站示意圖(簡稱:營業站示意圖)是鐵路客運基礎技術資料。其中,里程表包含線路車站里程表、全路客運管轄線路示意圖、客運運價里程接算站示意圖、站名首字音序索引表、站名首字筆劃索引表、站名索引表等一整套鐵路客運基礎數據[1],是客運服務、客運票價核定、客運清算、客運計劃與統計等業務的常用資料。營業站示意圖以簡圖形式,標示全路多條客運運營線路上的車站分布情況,常作為里程表的輔助配套資料,為用戶查找里程表數據提供直觀、便捷的指引。
多年來,紙質里程表和營業站示意圖由中國鐵道出版社負責編制,定期正式出版發行。隨著鐵路路網規模的不斷擴大,以及較為頻繁的線路運營方案調整,在數據管理、維護及使用方面,現有紙質里程表和營業站示意圖存在諸多不便,主要體現為:(1)里程表內容繁雜,篇幅較長,現有的紙質排版方式不便于用戶查閱;(2)全路路網密集,營業站示意圖線路屬性、車站辦理限制等信息無法在圖上標注,用戶查找業務辦理所需信息時,需要結合使用里程表,在紙質圖和表之間來回翻閱查對,數據獲取費時費力;(3)紙質營業站示意圖使用CAD制圖軟件繪制,由于客運線路錯綜復雜,車站分布密集,繪制費時費力,且存在與里程表數據不一致的問題;(4)紙質出版物的制作和發行周期較長,致使紙質版里程表和營業站示意圖往往滯后于實際情況的變化,給客運管理和運輸生產帶來諸多不利影響;(5)對于出版周期中出現的數據變更,用戶需要依據相關電報和文件資料,依靠手工修改和粘貼來自行維護紙質里程表,不但耗時耗力,也容易產生錯誤,且紙質里程表經反復修改后難以辨認,影響了數據的準確使用。
為此,亟需研究和開發鐵路客運里程表數據管理系統(簡稱:里程表系統),運用數字化技術,實現全路客運里程表數據的統一管理和維護,提供基于里程表數據的電子化營業站示意圖繪制工具,方便數據維護人員及時更新里程表和營業站示意圖數據并快速完成發布,方便最終用戶準確獲取和使用數據。
堅持實用、經濟、先進、開放、安全的原則,統籌兼顧相關各類業務需求,嚴格遵循規章管理要求,運用先進的信息技術,自主研發鐵路客運里程表數據管理系統。注重系統功能適用性和整體兼容性,建立全路客運里程表數據及營業站示意圖的統一管理和維護平臺,為相關業務部門提供便捷、可靠的數據查詢工具,在確保數據及時更新和準確使用的同時,還能為其他業務應用系統提供安全、可靠的數據共享接口。
(1)實現全路里程表數據統一電子化管理
建立線路、車站、業務辦理限制和線路/車站關系的完整數據模型,實現里程表數據的電子化管理,建立“集中維護,全路使用”的新型數據管理、維護和使用模式,規范全路客運運價里程表數據的管理與維護,從根本上解決在出版周期中用戶自行手工維護紙質表圖數據的難題,促進相關業務工作質量和效率的全面提升。
(2)提供基于里程表的營業站示意圖編輯工具
建立鐵路網數據模型,實現簡潔、直觀的營業站示意圖輔助繪制功能,方便數據維護人員通過簡單操作高效地完成日常數據維護工作,并確保里程表與營業站示意圖的數據一致性。
(3)為最終用戶提供便捷的數據查詢工具
針對里程表和營業站示意圖的各類應用場景,對系統功能模塊進行優化整合,為相關業務人員提供操作便捷、數據準確、性能高效的里程表數據和營業站示意圖查詢工具。
(4)提供客運運價里程表數據共享服務
為其他業務信息系統提供客運運價里程表數據共享服務,為后續開展鐵路客運延伸課題研究和項目開發提供有利條件,促進鐵路信息系統的集成與業務融合創新。
系統采用“B/S+C/S”的混合應用模式,劃分為數據層、服務層、網絡層、應用層,如圖1 所示。

圖1 系統架構示意
(1)數據層:使用MySQL 數據庫和Redis 內存高速緩存數據庫,支持大容量數據存儲,并保證數據讀取的高性能。
(2)服務層:運用Tomcat 微服務技術,將線路數據維護、車站數據維護、營業站示意圖繪制、數據發布、數據查詢、營業站示意圖查閱等應用功能封裝成獨立的微服務,由服務注冊中心對服務進行調度管理,多服務器協同工作[2];微服務之間松耦合,各個微服務可獨立部署、運行和升級;通過微服務網關,還可為其他業務信息系統提供客運運價里程表數據共享服務。
(3)網絡層:服務網關提供統一的服務入口[3],有效解決大量用戶高并發訪問時,系統服務器壓力過大的問題。
(4)應用層:提供客戶端和瀏覽器端2 類應用;客戶端應用主要完成線路、車站數據維護及營業站示意圖繪制;瀏覽器端應用主要提供里程表數據和營業站示意圖查詢功能。
系統用戶包括數據維護人員和數據使用人員(即系統最終用戶)2 類。對于數據維護人員,系統提供操作簡便、安全可靠的里程表及營業站示意圖數據管理與維護功能,包括線路數據維護、車站數據維護、營業站示意圖編輯與配色等功能;對于各類數據使用人員,根據其實際業務需求,系統提供便捷、靈活的定制化數據查詢功能。
2.2.1 字典維護與系統參數設置
完成各類數據字典的維護,為系統應用功能提供基礎數據;可靈活設置系統運行參數,以獲得最佳的系統性能。
(1)數據字典維護:完成系統所需基礎數據字典的維護,包括鐵路局集團公司、省份、車務站段、國境等數據類字典,以及整圖參數、圖元參數、顏色表、特型圖元等圖形類字典;數據類字典可與中國國家鐵路集團有限公司(簡稱:國鐵集團)主數據平臺的基礎數據進行同步,保證數據字典的完整性。
(2)系統參數設置:設置系統初始化和運行時的各類系統參數,包括線路/車站/里程動態數組、圖元雙緩沖因子等的初始值及動態擴展參數,系統功能模塊可根據系統參數,動態調整數據結構的存儲空間大小及數據處理方式。
2.2.2 線路數據維護
當線路運營方案發生變化時,數據維護人員及時對線路數據進行維護,確保線路數據與實際情況相符。
(1)新開通線路數據錄入:根據新線開通電報,輸入線路起訖點、線路屬性、附注(主要包括線路所屬公司及計費規則)等信息,完成新增線路的客運里程表數據錄入。
(2)線路數據修改:根據線路修改電報,對線路的起訖點數據、資產類別、附注等信息進行修改。提供線路撤并、線路分段、車站里程批量修改等快捷操作功能,以提高數據修改效率;使用線路撤并操作時,系統可自動將用戶選擇的撤銷線路上的車站合并到指定的線路上,保持站序并自動計算里程;使用線路分段操作時,系統可自動將用戶選擇的線路上所選定的車站,按指定的順序(順序或倒序)生成新的線路數據;使用車站里程批量修改操作時,系統可自動完成用戶所選定車站的里程數據批量增減處理。
(3)取消線路數據刪除:根據線路取消電報,從系統中刪除相應線路的所有數據,并在刪除時檢查車站數據的完整性。
(4)線路顏色設置:設置鐵路局集團公司管內線路的顯示顏色。
2.2.3 車站數據維護
當車站運營方案發生變化時,數據維護人員及時對車站數據進行修改,包括車站基礎信息和營業辦理限制信息維護。
(1)車站基礎信息維護:完成車站基礎信息修改,包含站名、略號、鐵路局集團公司、省份、等級等。
(2)營業辦理限制信息維護:完成營業辦理限制信息的添加、刪除和修改,包含旅客乘降所、不辦理行李和包裹業務的車站、不辦理包裹業務的車站、不辦理客運業務的線路連接點等。
2.2.4 營業站示意圖編輯與配色
數據維護人員依據里程表數據,完成營業站示意圖的鋪畫和修改,并檢查數據的完整性。
(1)營業站示意圖鋪畫:數據維護人員選定一條線路的起訖點,系統可根據里程表數據,自動補全該線路上所有車站;數據維護人員可在營業站示意圖上點選車站,通過鼠標拖拽操作來調整該線路上車站的分布距離及位置。
(2)營業站示意圖線路配色:按照車站所屬鐵路局集團公司,在營業站示意圖上,將不同鐵路局集團公司所轄線路以不同顏色顯示,并將高鐵線路以高亮顏色突出顯示。
2.2.5 數據一致性檢查
系統自動檢查營業站示意圖數據與里程表數據是否一致,檢查出營業站示意圖中缺失、多余或重復的車站,給出提示并輔助數據維護人員進行更正。
(1)線路一致性檢查:依據里程表線路數據,對營業站示意圖上線路間連接關系進行一致性檢查,在提示框列出連接關系不一致的線路信息。
(2)車站一致性檢查:依據線路—車站的邏輯關系,以節點站(包括干線和支線的起訖點、連接2 條以上線路的車站)為節點構建鐵路網框架,系統自動在節點間連線上插入其他車站,檢查并更新示意圖中車站數據,在提示框列出缺失或重復的車站信息。
2.2.6 數據版本管理與發布
實現里程表和營業站示意圖數據的分版本存儲與發布,可通過版本號進行數據版本控制、數據差異對比,并按照客運管理要求,完成指定版本數據的發布。
(1)數據版本管理:分版本存儲里程表和營業站示意圖數據,支持數據的增量更新,提供不同版本數據的差異對比,確保里程表和營業站示意圖數據更新過程可追溯。
(2)數據版本發布:根據客運運營條件電報執行時間要求,發布對應版本的里程表和營業站示意圖數據,嚴格、有序地控制全路里程表和營業站示意圖的數據更新。
2.2.7 營業站示意圖查閱
提供營業站示意圖的查閱瀏覽以及接算站示意圖、客運管轄線路示意圖等子圖查閱功能,包括整圖與局部縮放、顯示比例調整、漫游等,滿足不同場景下用戶靈活便捷查看不同示意圖的需求。
(1)整圖放大與縮小:通過默認的縮小和放大量把整個顯示的圖元統一縮小和放大一定的比例。
(2)高度/寬度合適顯示:根據區域的高度或寬度,自適應得到一個合適的比例。
(3)動態放大和窗口放大:在當前的顯示比例下,對用戶選定的矩形框區域大小進行調整,操作完成后得到需要顯示的區域放大圖。
(4)整圖漫游:在客戶區域只顯示整圖一部分的情況下,通過鼠標拖拽等操作把客戶區域定位在相應的區域上。
(5)接算站查閱:僅顯示接算站節點和接算站節點間的線路。
2.2.8 定制化數據查詢
根據實際業務需求,提供便捷、適用的定制化數據查詢功能,方便各類最終用戶查詢和使用里程表數據。
(1)客運服務數據查詢:針對客運服務人員的日常作業,提供車站站名、車站營業辦理限制、線名、線路起訖點、線路營業里程、站間營業里程等里程表數據查詢,以辦理旅游團體票發售、包車和旅游列車等相關業務;利用接算站示意圖,為旅客推薦最優旅行規劃、車票購票方案。
(2)客運運價數據查詢:面向鐵路局集團公司客運部業務主管人員,提供車站相關信息查詢,包括車站站名、車站營業辦理限制、車站所屬鐵路局集團公司、管轄局界、省界等;提供線路相關信息查詢,包括線名、線路起訖點、線路營業里程、站間營業里程、線路資產歸屬、接算站接續線名等;提供多種O-D(Origin-Destination)經由及里程條件查詢,包括同線與跨線的O-D 經由及里程信息、計算準軌與窄軌鐵路運價里程所需的O-D 經由及里程信息;提供針對特殊運價區段、特殊車種及動車組列車等多種查詢條件的客運運價數據查詢。
(3)客運清算數據查詢:面向鐵路局集團公司財務部業務主管人員,提供線路營業里程和資產歸屬清算線路使用費、車站旅客服務費、售票服務費、接觸網使用及電費查詢。
(4)計統指標數據查詢:面向鐵路局集團公司計統部業務主管人員,提供里程計算旅客周轉量、千輛公里、千機公里、配屬機車走行公里、支配機車萬噸公里、日車公里等指標數據的查詢。
線路和車站是里程表的核心數據實體,線路與車站為多對多實體關系,如圖2 所示。

圖2 線路與車站多對多實體關系示意
結合鐵路網結構特征,全國客運鐵路網劃分干線和支線,構建2 級樹形數據結構,實現全國鐵路客運線路數據的結構化管理,線路節點信息包含線路屬性、類型和附注等內容[4],如圖3 所示。

圖3 全國客運鐵路網數據結構示意
線路與車站關系數據的存儲結構采用動態數組,便于實現車站節點數據的靈活插入、刪除及車站順序調整的操作。
系統根據車站節點、線路車站順序,對營業站示意圖與里程表數據的一致性進行檢查,按先干線、后支線的順序,自動檢查數據是否一致。一般情況下,當檢測到線路數據正確、但車站數據不一致時,通過緩存補充、分段排列的順序,系統自動完成數據一致性校正;特殊情況下,當發現線路連接關系不一致時,系統提示數據維護人員進行手工調整,最終完成里程表數據和營業站示意圖的同步更新。營業站示意圖與里程表數據一致性檢查流程如圖4所示。

圖4 營業站示意圖與里程表數據一致性檢查流程
為保證按任意比例縮小和放大時,營業站示意圖可保持清晰的圖面顯示,營業站示意圖采用矢量圖技術。
3.3.1 矢量圖圖層劃分
根據鐵路路網特征,營業站示意圖的鋪畫以鐵路網數據層為基礎圖層,再輔以靈活的圖元繪制層,提供多層次、多應用模式的矢量圖形繪制機制[5]。
(1)鐵路網數據層:鐵路網繪制以節點站(包括干線和支線的起訖點、連接2 條以上線路的車站)為節點,由節點間連線構成鐵路網骨干,再將其他車站插補在鐵路網骨干上,可快速、靈活地完成全國鐵路網簡圖的鋪畫。
(2)輔助數據層:在繪制基本鐵路網的基礎上,針對一些特殊情況,如設置待建線路、輪渡線路、鐵路局集團公司標識、省份邊界、運輸企業邊界等,可通過靈活增加各種特定圖元,構建信息完備的營業站示意圖。
(3)圖形顯示模式調整:針對鐵路網擴充及特殊打印需求,提供所有圖元整體平移、畫布基本屬性調整等功能,為營業站示意圖維護提供快捷調整操作。
3.3.2 GDI 矢量圖繪制
營業站示意圖的繪制采用圖形設備接口(GDI,Graphics Device Interface)技術[6~8]。GDI 提供一組動態鏈接庫(DLL,Dynamic Link Library)函數,提供功能豐富、處理靈活的圖形繪制和文本顯示功能,支持多種圖形輸出設備,可保證營業站示意圖的繪制和打印輸出達到所見即所得的效果。
營業站示意圖編輯模塊和營業站示意圖查閱通過調用GDI DLL 函數,創建一個矢量圖形集成環境,完成營業站示意圖的繪制和顯示,可實現在任何顯示比例下圖形顯示均不失真,且比例越大越清晰。同時,在實現拖拽線路、動態調整車站分布距離和位置時,系統響應迅速,無明顯卡頓延遲。
3.3.3 十字鏈表存儲
營業站示意圖是一個有向圖,其數據采用十字鏈表存儲。如圖5 所示,十字鏈表結點分為頂點結點(對應于節點站)和弧結點(對應于節點站之間的連接線)2 類。

圖5 營業站示意圖十字鏈表存儲的弧結點和頂點結點數據結構
(1)弧結點由5 個域組成:tailvex 域為弧尾頂點在圖中的位置;headvex 域為弧頭頂點在圖中的位置;hlink 域為指向弧頭相同的下一個弧結點的指針,tlink 域為指向弧尾相同的下一個弧結點的指針,這樣可使弧頭相同的弧結點在同一鏈表上,弧尾相同的弧結點也在同一鏈表上;data 域存儲弧的具體詳細信息,包括線路里程、顏色等。
(2)頂點結點由3 個域組成:data 域存儲頂點的具體詳細信息,包括車站名稱、電報碼、所屬路局等;firstin 域為以該頂點為弧頭的第一個弧結點的指針;firstout 域為以該頂點為弧頭的第一個弧結點的指針。
存儲營業站示意圖數據的十字鏈表構造算法如下:


鐵路客運運價里程表數據管理系統基于微服務技術,采用“C/S+B/S”混合應用模式,實現了全路客運運價里程表及營業站示意圖數據的集中管理和統一維護,提供多種定制化數據查詢功能,方便最終用戶準確獲取和使用數據,并可為其他業務應用系統提供客運運價里程表數據共享服務。該系統構造了2 級樹形結構的全國客運鐵路網數據模型,采用動態數組存儲線路與車站關系數據,便于靈活增刪車站節點和調整車站順序;基于全國客運鐵路網數據,采用矢量圖形技術繪制營業站示意圖,提供多層次、多應用模式的矢量圖形繪制機制,并使用十字鏈表存儲營業站示意圖繪制數據,便于實現快速且較為靈活的營業站示意圖鋪畫操作。此外,該系統提供了營業站示意圖與里程表數據一致性檢查功能,有效地保證系統數據的完整性;支持數據版本管理,保證數據更新過程可追溯。
自2020 年8 月起,鐵路客運運價里程表數據管理系統正式向國鐵集團和中國鐵路蘭州局集團有限公司客運工作人員提供數據查詢功能。系統維護人員根據國鐵集團和各鐵路局集團公司動態發布的客運管理電報,及時更新和發布客運運價里程表,方便全路相關業務人員使用準確的數據,有助于提高系統用戶的工作質量和效率。此外,該系統已為鐵路分線成本核算工作量統計系統提供了里程表數據共享服務。
下一步,將針對系統應用過程中出現的問題,持續完善和優化系統各功能模塊,不斷提升系統的適用性、可靠性、健壯性及性能,加快推進該系統在全路的推廣應用。同時,結合客運實際業務需求,探索相關的延伸課題研究和項目開發,充分利用里程表數據資源,為客運業務融合創新賦能。