李 琦,蔡海勇,林 楷
(中國鐵路南昌局集團公司 南平車務段,南平 353000)
隨著鐵路運輸?shù)母咚侔l(fā)展,鐵路車務站段面臨日益復雜的安全形勢,迫切需要統(tǒng)一調度資源應對突發(fā)情況并進行高效的應急處置。為此,全路各車務站段紛紛設立了安全生產指揮中心,統(tǒng)一協(xié)調調度各種資源進行應急快速反應。在安全生產指揮中心進行應急處置時,信息的及時性和準確性往往起到十分關鍵的作用。目前安全生產指揮中心的短板是缺少一個統(tǒng)一的信息平臺能夠便捷快速地獲得所需的應急調度信息。車務站段的資料信息都分散在各個孤立的信息系統(tǒng)中,當發(fā)生突發(fā)事件時獲取信息十分不方便,嚴重影響了應急反應速度和效率。
近年來,基于面向服務架構(SOA,Service-Oriented Architecture)技術來集成信息,解決信息孤島問題,已成為信息集成技術的重要發(fā)展趨勢[1]。國內外基于SOA的應用已經有大量成功案例。但是SOA架構是一套完整體系,要實現(xiàn)SOA,需要對現(xiàn)有信息系統(tǒng)進行改造。對于鐵路車務站段這種小型單位,在資金成本受限的情況下較難完成基于SOA架構的信息集成應用。本文根據(jù)鐵路站段實際情況,提出了適合鐵路車務站段使用的信息集成方法,并著重研究了信息集成的2項關鍵技術,即Web Service技術和Python網頁爬取技術。
安全生產指揮輔助系統(tǒng)旨在整合管內各信息系統(tǒng)的數(shù)據(jù),為應急調度指揮提供統(tǒng)一的信息服務,加強應急處置能力。系統(tǒng)實現(xiàn)如下功能。
(1)地圖式導航展示:車務站段的各管內單位按照其地理位置陳列在導航地圖上,進行綜合信息展示,操作上可以實現(xiàn)所見即所得。
(2)信息資源整合:通過應急指揮輔助系統(tǒng)可以訪問分布在不同信息系統(tǒng)中的各種共享信息,并按照業(yè)務需求進行整合。
(3)應急快速處置:系統(tǒng)提供應急處置流程的分類檢索和查詢。
(4)決策支持:在資源信息整合的基礎上,通過數(shù)據(jù)挖掘等技術,對信息進行綜合、分析可視化,自動地對應急指揮人員需要注意的安全問題進行提示。
車務站段安全生產指揮輔助系統(tǒng)采用基于DWZ富客戶端(jQuery RIA framework)的Web架構。DWZ富客戶端框架是國產開源輕量級的UI開發(fā)架構,具有快速開發(fā)、RIA思路和輕量級的特點。后臺系統(tǒng)采用MVC,即模型-視圖-控制器三層架構,實現(xiàn)業(yè)務邏輯、數(shù)據(jù)、界面顯示分離[2],在頁面改變、個性化定制界面及用戶交互的同時,不需要重新編寫業(yè)務邏輯。
該系統(tǒng)依托鐵路數(shù)據(jù)網,采集人事信息系統(tǒng)、安全風險管理系統(tǒng)、辦公OA系統(tǒng)、施工管理系統(tǒng)、視頻監(jiān)控系統(tǒng)和車站管理系統(tǒng)的相關數(shù)據(jù),向安全生產指揮中心人員提供統(tǒng)一的信息匯集平臺,如圖1所示。
系統(tǒng)功能主要包括安全生產指揮模塊、應急處置模塊、規(guī)章文電庫模塊、短信平臺、通訊錄和工具箱模塊,如圖2所示。
圖2 系統(tǒng)組成及功能
安全生產指揮模塊是集成信息的核心功能模塊。模塊提供一張車務段所屬機構的模擬地理信息系統(tǒng)(GIS,Geographic Information System)分布圖和一張地圖導航圖。
模擬GIS分布圖如圖3所示。其中每個車站都是可操作的節(jié)點,點擊節(jié)點可以顯示功能菜單,功能包括車站對應的安全天、車站人員信息、通訊錄、站場平面圖、車站站細、車站管細、作業(yè)分析、施工信息、安全檢查問題庫、現(xiàn)場視頻監(jiān)控等內容,充分發(fā)揮GIS地圖所見即所得的特性,方便工作人員進行快捷操作。該GIS分布圖還實現(xiàn)了信息的綜合展示,例如查看某車站現(xiàn)場作業(yè)監(jiān)控視頻時,如果發(fā)現(xiàn)違章,可以立即查看作業(yè)人員的詳細人事檔案以及最近違章記錄等信息。
圖3 車務段所屬機構的模擬GIS分布圖
導航圖提供今日施工、今日天窗和重點關注等功能。今日施工和今日天窗功能動態(tài)展示今日有施工和天窗的車站。在GIS地圖上會將今日有施工和天窗作業(yè)的車站標紅提示,并顯示詳細信息。重點關注功能是在地圖上顯示后臺服務程序根據(jù)設定條件篩選出的本月需要重點關注的車站和人員,條件可以是車務段安全科發(fā)布的重點安全提示等信息。
應急處理模塊將車務段的各種應急處置方案和應急流程圖進行整理和匯總并提供檢索和目錄分類查詢功能。當出現(xiàn)應急情況時可以便捷獲取應急處置資料進行處置[3]。
規(guī)章文電庫模塊主要包括車務段的各種規(guī)章資料,同樣提供檢索和目錄查詢功能,由于規(guī)章文電庫經常更新,為方便各科室進行更新,系統(tǒng)采用FTP上傳,WEB瀏覽方式更新規(guī)章文電庫。
短信平臺是調度指揮人員發(fā)送短信對外聯(lián)系的操作平臺。受限于鐵路數(shù)據(jù)網專網專用的特點,短信目前是對外聯(lián)系的便捷通道。
通訊錄主要采集人事管理系統(tǒng)中的人員通訊信息,并提供給調度指揮人員供其進行便捷查詢。
工具箱模塊主要提供一些常用的系統(tǒng)鏈接和工具軟件供調度指揮人員使用。
車務段模擬GIS地圖采用可縮放矢量圖形(SVG,Scalable Vector Graphics)繪圖技術。SVG基于可擴展標記語言(XML,Extensible Markup Language),是一種用于描述二維矢量圖形的圖形格式[4]。SVG具有尺寸小、可壓縮性強、可伸縮以及開放性等優(yōu)點,且在任何分辨率下都可高質量地被打印。SVG編程主要有以下2個難點。
3.1.1 SVG地圖分辨率自適應
客戶端顯示器的分辨率大小存在較大差異,從低的1024×768到1920×1024甚至更高, SVG地圖需能同時適應這些不同的分辨率。需要以下步驟來解決該問題。
(1)添加preserveAspectRatio=“xMinYMin meet”屬性,指定SVG圖形從屏幕的最左上角開始顯示,并且保持等比縮放。
(2)利用SVG的viewBox屬性。viewBox是SVG的虛坐標體系。根節(jié)點SVG元素添加viewBox屬性后,在SVG下的各圖形元素的大小和位置都依據(jù)viewBox限定的坐標,而不是頁面的實際坐標。本系統(tǒng)設定viewBox=“0 0 800 3000”,即將SVG頁面分成800×3000個小格。
(3)設置好viewBox屬性后,再用Js函數(shù)動態(tài)設定svg元素的高和寬,從而進行分辨率的自動適應和調整[5]。
3.1.2 地圖節(jié)點動態(tài)定制
前期SVG地圖上的節(jié)點坐標是保存在配置文件中的,但這種方法無法滿足地圖上節(jié)點需要動態(tài)調整的需求。目前系統(tǒng)采用將節(jié)點信息保存在數(shù)據(jù)庫中的方法。Web頁面通過讀取數(shù)據(jù)庫中機構信息表,動態(tài)繪制節(jié)點。同時,在系統(tǒng)中另外增加一個定制調整地圖的頁面。用鼠標拖拽節(jié)點到指定位置,即可保存節(jié)點坐標到數(shù)據(jù)庫中,從而完成節(jié)點位置的動態(tài)調整。
車務段的人事信息系統(tǒng),辦公OA系統(tǒng)和文件系統(tǒng)等都是獨立運行。其開發(fā)廠商和開發(fā)時間都不同,僅提供基于HTML的Web訪問方式。例如施工信息是辦公OA系統(tǒng)中的一個子模塊,每天由科室人員負責錄入。為便于利用辦公OA等信息系統(tǒng)的數(shù)據(jù),避免重復勞動,在安全生產指揮輔助系統(tǒng)中設置了一個后臺服務程序,根據(jù)對接系統(tǒng)的不同,分兩種情況進行處理。
3.2.1 自研信息系統(tǒng)處理方式
對于信息系統(tǒng)是自研系統(tǒng)的情況,專門開發(fā)基于Web Service的服務接口,后臺程序通過調用服務接口來獲取信息。Web Service是非常成熟的技術,有大量的應用案例。它是一個平臺獨立的、低耦合的、自包含的、基于可編程的Web的應用程序[6],可使用開放的XML標準來描述、發(fā)布、發(fā)現(xiàn)、協(xié)調,為企業(yè)業(yè)務流程的集成提供了一個通用機制[7]。本系統(tǒng)針對車站管理系統(tǒng)、辦公OA系統(tǒng)都開發(fā)了相應的Web Service接口。
3.2.2 專業(yè)廠商開發(fā)的信息系統(tǒng)處理方式
對于專業(yè)廠商開發(fā)的系統(tǒng),且系統(tǒng)未提供Web Service服務接口的情況,后臺程序通過基于Python技術的網頁爬取方法,每日定時讀取信息,將信息轉入安全生產指揮輔助系統(tǒng)中,較好地解決了信息共享的問題。之所以使用Python進行開發(fā),是由于Python不僅具有簡單速度快、免費開源的特點,更重要的是它具有豐富的庫,可以高效地處理各種工作。網頁爬取有很多免費的庫可以使用[8]。本系統(tǒng)的后臺程序使用了Requests庫、BeautifulSoup庫和Re庫進行網頁爬取和分析。后臺程序需要獲取安全管理信息系統(tǒng)中每日安全信息,而安全管理信息系統(tǒng)是用ASP.Net開發(fā)的系統(tǒng),動態(tài)頁面較多,這就需要通過使用Charles網頁抓包工具,分析出Web頁面的請求參數(shù),然后利用Python的Requests庫模擬瀏覽器進行操作,提取出Web返回信息,再利用BeautifulSoup庫對提取的信息進行結構化解析。解析數(shù)據(jù)采用以下兩種方式。
(1)對于結構清晰的數(shù)據(jù),經過BeautifulSoup庫解析即可直接得到結果。
(2)如果數(shù)據(jù)結構復雜,單靠BeautifulSoup庫無法獲取需要的結果,則需要使用Re庫進行聯(lián)合解析[9],Re庫是正則表達式庫,在Python中通過Re庫,可以直接調用來實現(xiàn)正則匹配。正則表達式模式被編譯成一系列的字節(jié)碼,然后由C編寫的匹配引擎執(zhí)行[10]。例如安全管理信息系統(tǒng)中有一段信息是采用樹形結構進行展示的,系統(tǒng)為了找到以id為Treeview_DWDMt開頭,以1位到3位數(shù)字結尾的節(jié)點,使用了如下的語句進行查找:
系統(tǒng)經過一個月的試用,取得了令人滿意的效果,受到生產指揮人員的好評,目前已正式投入生產運行,有效加強了車務站段的快速應急處置能力。但是系統(tǒng)也存在一些不足,如信息采集與信息展示的耦合性還太強,而信息采集部分在不同應用場景具有較強定制性,為了便于推廣需要降低信息采集與信息展示的耦合性,另外頁面需進一步加強操作便利性等,是今后系統(tǒng)要改善的方向。