廖獻安 上海鐵路局電務處
LKJ數(shù)據(jù)TMIS車站號及線路號輔助查詢工具的設計
廖獻安 上海鐵路局電務處
本局與外局的所有的TMIS站號和工務線路號都各自整合在同一個數(shù)據(jù)表環(huán)境中,這個LKJ編譯環(huán)境庫累積有效及無效數(shù)據(jù)信息量龐大,加上沒有明顯的局間范圍劃分,不易維護。針對這個情況,設計一個簡便輔助查詢工具,方便地截取基礎數(shù)據(jù)源文件中所有在用線路號及TMIS車站編號,維護LKJ數(shù)據(jù)編譯庫環(huán)境的準確性和完整性。
LKJ數(shù)據(jù);TMIS車站號;線路線編號
編譯生成LKJ車載數(shù)據(jù)線路表(XLB格式)有兩種方式,使用編譯環(huán)境庫生成和“TMIS站號名取站名表中名稱”即直接取用數(shù)據(jù)源中站名站號表。由于數(shù)據(jù)源中站名表只能顯示一個TMIS車站號,當上下行同一車站號設置不同的TMIS號時,顯示數(shù)據(jù)下行的TMIS車站號。上海局要求精準控制,編制LKJ臨時數(shù)據(jù)做到LKJ上下行控制不缺漏,故選擇環(huán)境庫文件編譯生成LKJ車載數(shù)據(jù)線路表。機車動車LKJ基礎數(shù)據(jù)編譯環(huán)境為同一個庫,這就要求本局外局施工、跨局徑路變動、臨時任務需求,依據(jù)LKJ數(shù)據(jù)實際變動同步進行環(huán)境的更新。
而外局維護方式不盡相同,個別鐵路局使用第二種方式進行編譯,對編譯環(huán)境庫不作要求,在交接數(shù)據(jù)時從編譯環(huán)境庫中導出的TMIS車站號TXT文檔數(shù)據(jù)存在不全或不準確的問題,不能當做依據(jù)進行修改,只能根據(jù)修改說明文件調(diào)整。同時啟用新的TMIS車站名之后原有TMIS車站號是否保留、有臨時任務在交接數(shù)據(jù)源的同時是否交接新增徑路涉及的TMIS車站名和相關工務線路號詳細說明等也不盡相同,這就造成上海局TMIS車站號、線路表文件的日趨膨脹及個別TMIS車站號、線路號的缺漏的可能性,給日常維護帶來很大麻煩??偟膩碚f,目前需解決的問題有:補充完善環(huán)境庫中TMIS站名表及線路表資料、復核這兩個表的準確性、清理無用或錯誤的信息資料(主要是局管外信息)。
2.1 分解需要查詢操作的TMIS車站號和線路號元素存放位置及排列方式(以上海局SH_SW20160921版動車數(shù)據(jù)為例)(見表1)
表1 取用數(shù)據(jù)表文件主要數(shù)據(jù)元素分布表
2.2 對本局機車動車數(shù)據(jù)源文件數(shù)據(jù)結(jié)構(gòu)進行規(guī)劃
取用最新版機車、動車基礎源文件,合理規(guī)劃各局數(shù)據(jù)存放位置。以動車數(shù)據(jù)為例,每條數(shù)據(jù)交路每個行別以未啟用的數(shù)據(jù)元素“GPS數(shù)據(jù)”分割各局管轄數(shù)據(jù)信息,編制LKJ基礎數(shù)據(jù)時快速查找定位至局分界處,輔以特定標記“「上**」局數(shù)據(jù) 開始”、“「**」局數(shù)據(jù) 結(jié)束”注釋信息標明各局數(shù)據(jù)范圍。根據(jù)優(yōu)化簡單管理及查詢的思路,每個行別涉及相關鐵路局數(shù)據(jù)只允許連續(xù)集中在某一位置,按上述起止注釋范圍存放。
2.3 選取數(shù)據(jù)表文件分析
思維LKJ編制軟件編制數(shù)據(jù)生成的基礎數(shù)據(jù)源文件為后綴d2k格式的文件,車站名文件為后綴czm格式的文件,株洲LKJ數(shù)據(jù)編制軟件生成基礎數(shù)據(jù)源文件和車站名文件都是通用的后綴db格式的文件。雖然上海局一直采用思維LKJ數(shù)據(jù)編制軟件進行數(shù)據(jù)編制,為避免文件再次轉(zhuǎn)換的流程,本文取用株洲所的數(shù)據(jù)文件,同時拷貝LKJ數(shù)據(jù)編輯工作站的環(huán)境庫文件,TMIS車站號數(shù)據(jù)文件T_TMIS.db和線路號數(shù)據(jù)文件Dmsj_xlh.db。
用數(shù)據(jù)庫工具打開取用的 LKJ數(shù)據(jù)源文件SH_SW20160921_D、站名表文件SH_SW20160921_D_zmb和環(huán)境庫TMIS表文件T_Tmis,見圖1。LKJ數(shù)據(jù)源文件中TMIS車站號信息存放于數(shù)據(jù)表的GLB字段中,要獲取數(shù)據(jù)中某個車站的TMIS編號,必須關聯(lián)到字段為JLH的交路號,字段為SXX的上下行,字段XXLX代碼為31。同時,為達到查詢統(tǒng)計TMIS車站編號的完整行和準確性,還要匹配車站名表字典站名表文件SH_SW20160921_D_zmb和TMIS車站名字典即T_Tmis文件,組合查詢篩選數(shù)據(jù)結(jié)果為“數(shù)據(jù)交路號,上下行,車站號,車站名,車站TMIS站號,環(huán)境庫TMIS站名”。以LKJ數(shù)據(jù)源文件表為基表,查詢數(shù)據(jù)中所有車站信息,能直觀的比較檢查是否有車站缺少TMIS車站號,或者車站名與環(huán)境庫TMIS站名表中站名不一致現(xiàn)象。
分析LKJ數(shù)據(jù)源文件,工務線路名出現(xiàn)在三個地方,車站信息、公里標突變信息和交路(支線)轉(zhuǎn)移信息,見圖1。交路(支線)轉(zhuǎn)移信息中線路名依附車站信息和里程突變信息存在,沒有單獨查詢的必要。xxlx字段代碼為31或82時,可搜索到字段GHXS(車站信息)和KHXS(里程突變)工務線路號信息,基礎數(shù)據(jù)源文件中線路號信息未包含線路名,須連接環(huán)境庫線路表字典Dmsj_xlh.db進行查詢,組合查詢結(jié)果為“車站信息線路號,里程突變線路號,工務線路名”。同樣,如線路名中覆蓋不全,會存在線路名為空的情況。
圖1 LKJ數(shù)據(jù)源文件、車站名表文件和環(huán)境庫TMIS表文件結(jié)構(gòu)展開圖
機車與動車因行走徑路的不一致,局管內(nèi)和管外覆蓋的車站和線路也不完全相同,需要用到的TMIS車站編碼和工務線路名有差別。對機務部門來說IC卡臨時數(shù)據(jù)的編制并沒有作機車和動車之分,車載數(shù)據(jù)編譯環(huán)境庫只有一個。統(tǒng)一的環(huán)境庫需要將機車動車數(shù)據(jù)中包含的TMIS車站名和工務線路名組合疊加起來,查詢工具可做到分別截取機車動車各自環(huán)境庫信息,通過疊加的方式來實現(xiàn)。
4.1 編程工具的選用
Delphi是基于Object Pascal語言的面象對象的開發(fā)工具,使用其集成開發(fā)環(huán)境可以快速地建立應用程序進行數(shù)據(jù)庫開發(fā),它本身提供了很多個可供使用的基礎控件,對于非編程專業(yè)的人員來說,不需要太專業(yè)的軟件基礎,編制個小軟件工具實現(xiàn)日常工作中的需要完全能滿足。加上要執(zhí)行查詢操作的LKJ數(shù)據(jù)源文件數(shù)據(jù)表就是 DELPHI自帶的Paradox數(shù)據(jù)庫,本文選用經(jīng)典的Delphi 7軟件進行編制。根據(jù)實際需求設計“LKJ數(shù)據(jù)TMIS車站號及線路號輔助查詢工具”,軟件設計框架見圖2。
圖2 LKJ數(shù)據(jù)TMIS車站號及線路號輔助查詢工具
程序工具采用控件介紹:
(1)標簽控件(TLabel)。該控件用于在窗體上顯示文字,為查詢工具起名和為其他控件加上標注說明文字,以便讓使用者了解那些控件的用途。
(2)Memo控件(Tmemo)。該控件用于顯示載入的數(shù)據(jù)表文件全名(不顯示路徑),在方便在程序中調(diào)用所需數(shù)據(jù)表時使用。
(3)位圖按鈕控件(TBitBtn)。該控件用于載入文件、進行查詢操作等,鼠標單擊按鈕時觸發(fā)OnClick事件處理,通常把要執(zhí)行的程序代碼放在這個事件處理中。
(4)下拉列表框(TComBox)。該控件可以通過下拉列表的形式顯示出所有可能的數(shù)據(jù)供用戶選擇,本文使用兩個TComBox控件用于單獨查詢某個各鐵路局(公司)數(shù)據(jù)的起止范圍。
(4)OpenDialog控件。該控件是使用Execute方法,起打開對話框作用,用戶單擊“打開”或OK按鈕,該方法返回值為true。本文使用此控件實現(xiàn)目標數(shù)據(jù)表文件的打開,并顯示與Memo控件之中。
(5)TADOQuery組件。該控件用來以SQL語句形式動態(tài)地訪問一個或多個表的數(shù)據(jù),本文用于訪問本地數(shù)據(jù)庫,加上相關SQL查詢實現(xiàn)根據(jù)需要篩選的記錄。
(6)TDBGrid組件。以表格形式最終顯示出經(jīng)過篩選過濾后所需要的數(shù)據(jù)內(nèi)容。
(7)TDataSource組件。它是接通DataSet(數(shù)據(jù)集)與數(shù)據(jù)感應控件的橋梁,隔離了數(shù)據(jù)源,使得顯示成為了一個可獨立的模塊。
4.2 查詢工具軟件功能的實踐操作
4.2.1 查詢TMIS車站號相關數(shù)據(jù)
(1)載入最新版動車數(shù)據(jù)源,動車車站名文件,編譯庫TMIS站名表和線路表文件。
(2)點擊“查詢?nèi)縏MIS站號”按鈕,表格中生成數(shù)據(jù)源中全部車站名及對應TMIS站名,表中以“TMIS車站號”列為準按從小到大排列,最后一列輔以環(huán)境庫TMIS站名表字典顯示,見圖3。
圖3 數(shù)據(jù)源全部TMIS信息查詢結(jié)果
(3)導出EXCEl表格存檔,利用EXCEl過濾等功能幫助分析查看,見圖4。
圖4 EXCEL表格篩選結(jié)果
通過EXCEl表格的篩選功能,篩選出“庫TMIS站名”列中“省略、空格、0”對應的記錄結(jié)果。以標注的紅色方框為例,可以看出目前庫環(huán)境16號數(shù)據(jù)交路下行963號車站“海安XF_三”車站信息中TMIS車站號填入為0;1號數(shù)據(jù)交路上行有車站號為“0”的車站,對應車站信息TMIS站號為“204612”,數(shù)據(jù)編譯環(huán)境庫中無對應TMIS車站名;22號數(shù)據(jù)交路上行324號車站“城陽青榮場”車站信息中對應TMIS車站號為216202,數(shù)據(jù)編譯環(huán)境庫中缺少對應TMIS車站號。
4.2.2 查詢保存線路號信息
做個測試,在株洲LKJ數(shù)據(jù)編制軟件中人為刪除線路號環(huán)境庫中線路號“20632”至“2636”幾個工務線路號,使用本文查詢工具進行查詢,見圖5。
圖5 編譯庫環(huán)境線路線編號刪除前后比較
重新載入以上四個數(shù)據(jù)文件(T_Tmis文件為人為刪除線路線編號后生成),點擊“查詢?nèi)烤€路線編號”按鈕開關,查詢結(jié)構(gòu)見圖6。
圖6 篩選數(shù)據(jù)源中工務線路號結(jié)果
導出EXEL表格存檔,查詢結(jié)果按照“工務線路名”這列以“空白”篩選,見圖7。
圖7 EXCEl篩選處理顯示結(jié)果
從篩選結(jié)果看,人為刪除的“2632”-“2636”線路號在“工務線路名”列中顯示為空,表明數(shù)據(jù)中有此線路數(shù)據(jù),對應環(huán)境庫中缺少相應線路名。分析特殊顯示為“-”開頭的工務線路號,因數(shù)據(jù)源中字段GHXS(車站信息)和字段KHXS(里程突變)限制最大長度為15位,即-32768至+32768這個范圍,而規(guī)范中規(guī)定線路線編號可使用的范圍為1-65535(16位),當線路號大小超過32768時按負數(shù)顯示。例如TMIS號為-30536,轉(zhuǎn)換方法為216-30536=35000,查詢線路線編號環(huán)境庫35000對應廣鐵集團的“平南場聯(lián)”線路名,數(shù)據(jù)源中對應3號數(shù)據(jù)交路下行“881-平湖南Ⅰ東”至“882-平湖南Ⅱ場”線路數(shù)據(jù)。
4.2.3 核對TMIS信息和線路線編號信息的準確性
通過導出的EXCEL表格可以很直觀的比較各數(shù)據(jù)交路上下行車站名中同一TMIS車站編號在TMIS環(huán)境庫中對應的TMIS車站名,兩個車站名不一樣或者沒有關聯(lián),則環(huán)境庫必然存在問題,見圖8。
圖8 數(shù)據(jù)源車站名及TMIS庫車站名
4.2.4 根據(jù)查詢工具導出的動車、機車TMIS和線路名進行庫環(huán)境整合
以上查詢例子是用動車數(shù)據(jù)源和動車站名文件進行查詢,同理載入機車全版基礎數(shù)據(jù)源文件(機車分上海版和非上海版兩個版本數(shù)據(jù))和車站名文件進行同樣的操作,導出機車TMIS和線路名EXCEl表格查詢結(jié)果。依據(jù)株洲LKJ數(shù)據(jù)編制軟件提供導入導出TMIS車站號和線路線編號功能,按其固定的TXT文件格式進行拼合整理,整合完成后利用編制軟件的導入功能完成統(tǒng)一版的機車動車編譯庫環(huán)境。
編輯庫環(huán)境的日常維護工作主要在于局管外的數(shù)據(jù)源的增刪修改操作,局管內(nèi)屬于常態(tài)管理,不存在疑難點。本文的查詢工具附加一個數(shù)據(jù)源(文件)范圍選擇功能,按照數(shù)據(jù)源中各鐵路局(公司)數(shù)據(jù)注釋行起止點單獨查詢出該鐵路局(公司)管內(nèi)的全部TMIS及線路現(xiàn)編號信息,查詢方式篩選方式相同,見圖9。鏈接粘貼完該鐵路局(公司)交接LKJ數(shù)據(jù)源后,通過前后的兩版數(shù)據(jù)的局間TMIS和線路號變化比較,有效彌補部分鐵路局(公司)修改說明描述不全的漏洞,維護編輯庫環(huán)境的完整性。
圖9 選擇性局間數(shù)據(jù)查詢查詢
本文查詢TMIS車站號及線路號輔助查詢工具的開發(fā),配合思維公司開發(fā)的“TMIS編號及線路編號比較”工具使用,對當前LKJ數(shù)據(jù)編制過程中TMIS車站號及工務線路線編號的管理工作起到很好輔助作用,工作效率得到提高。
[1]飛思科技產(chǎn)品研發(fā)中心.《Delphi7數(shù)據(jù)庫應用開發(fā)》.北京.電子工業(yè)出版社.2003.
[2]《列車運行監(jiān)控裝置(LKJ)數(shù)據(jù)文件編制規(guī)范》.北京.中國鐵道出版社. 2015.
責任編輯:許耀元 竇國棟
來稿日期:2017-01-19