巢小俊 上海鐵路局計劃統計處(同濟大學)
2012年9月28日,長三角首條采用公交化運營的市域鐵路—金山鐵路(上海市稱軌交22號線)開通,金山鐵路全長56 km,圖定每天開行旅客列車36對,采用一站直達和站站停兩種模式運行,列車運行最高時速160 km。列車全線運行時間最短32 min。金山鐵路的建成和開通運營,在沿線城區構建了一條方便快捷的運輸通道,在完善上海市交通網絡、推動地方經濟發展和進一步促進城鄉一體化等方面發揮了重要的作用。金山鐵路是原鐵道部和上海市共同出資建設,按鐵路控股合資公司方式運營的。按照《鐵路旅客運輸統計規則》相關規定,需要對該線路的運輸情況進行統計。
金山鐵路采用的是鐵路售票系統售票和上海市公共交通卡刷卡進站兩種運作方式。鐵路售票系統的車票信息,因為沿用原有的統計數據接口,產生的原始數據能滿足鐵路旅客運輸統計的要求。而上海市公共交通卡刷卡方式,因其沒有直接滿足鐵路旅客運輸統計要求的數據接口,需要對數據進行一定的處理以達到鐵路旅客運輸統計的需要。
根據《鐵路旅客運輸統計規則》統計項目和統計指標相關規定,需對發站、到站、旅客列車車次、旅客列車席別、旅客列車擔當企業等項目進行統計。
上海市公共交通卡系統只能按以下數據結構提供信息:
①交易事件碼;②交通卡號;③設備節點號;④流水號;⑤刷卡日期;⑥刷卡時間;⑦卡原金額;⑧本次刷卡金額
其中,交易事件碼為2位16進制碼,是在交通卡相關設備上產生交易的事件的代碼,比如進站,出站扣款等。
設備節點號為8位的字符串,第1、2位為線路碼,第3、4位為車站碼,第5、6位為設備類型,第7、8位為設備碼(為16進制)。根據設備節點號前4位,可以確定交易產生的車站,例如在金山鐵路代表金山衛站的代碼前四位為2229。前四位2221的代表上海南站。5、6位設備類型表示該設備承擔的作用,為16進制碼,比如1A代表進站閘機,15代表出站閘機等。
顯然,對照《鐵路旅客運輸統計規則》,上海市公共交通卡系統并不能直接提供發到站、車次、席別等鐵路旅客運輸統計需要的信息。
僅從數據結構來看,經過簡單處理還是應該能得到相關數據的,但現實中數據遠比理想狀態下復雜。
理想狀態下,所有旅客均正常進出站,閘機依次留下每位旅客的進出站信息,交通卡系統提供的信息應為一進一出成對出現,而且按時間先后可以按先進后出配對分組。這種情況下,通過設備節點可以確定刷卡車站,通過相應的交易事件碼,可以確定是進站還是出站信息;通過交通卡號,以及刷卡日期、刷卡時間,將同一交通卡按刷卡的時間順序排序后,就可以生成相應的發到信息對;通過信息對進出閘機的時間(HHMMSS格式),只要建立詳細的車次字典,通過匹配車次在發到站停靠的時間,按一定的規則就可以匹配到相關的車次,車次的擔當也可以確定;而席別,因為該線路采用單一席別售票方式也可以解決。
然而,現實情況是交通卡數據每日進站數與出站數就有不小的差距,而同一交通卡,由于旅客主觀逃票、旅客進出閘機間隔太小、閘機設備偶發故障等原因,有時只有進站信息沒有出站信息,有時只有出站信息而沒有進站信息,還有些數據對的進出時間差遠遠大于正常列車的運行時間。進一步匹配后還發現有發到站相同的記錄。這些問題的解決,對數據處理提出了很大的挑戰。
如何解決以上問題,確保數據實現鐵路旅客運輸統計的要求。經過調查、討論,提出以下設想:
在線路中心建立進出站統計報表用于每日進出站閘機刷卡的總量控制,結構如表1所示。

表1 每日進出站閘機刷卡總量控制表
其中設備/車站ID對應的是設備節點號第7、8位設備碼。
總量控制具體流程如下:
(1)讀取數據文件全信息加載到原始數據表。
(2)讀取進出站統計報表全信息加載到控制文件數據表。
(3)按日匯總原始數據表中設備節點號第 5,6位為 15(進站)和 1A(出站)的記錄,并與控制表文件中交通卡進站和出站數量核對,數據發生不一致時報錯提示。
(4)按照流水號進行連號,每個車站的每個設備每月產生的數據順序號都應該是連續的,且每月首日重置。因此,從每月2日起即可與上一日數據進行連號檢查,以避免數據缺失。
(1)按乘車日期從“原始數據表”中讀取每張交通卡的交易記錄,按進(出)閘機的時分逐一匹配,并將匹配結果存放于“原始匹配表”中。一天內同一交通卡數據一進一出成對,且按時間先后必須為先進后出的,對于這類數據,認定為成功匹配的記錄 設置相應狀態碼字段例如:“00”(代碼為臨時表達,實際處理時另定義,下同);
對有進無出或者只出不進等未能配對的非正常情況數據,設置相應的狀態碼。例如:
有發站沒有到站的記錄,狀態碼字段置為“11”;有到站沒有發站的記錄,狀態碼字段置為“22”;
(2)對于能匹配成對,但發站和到站相同的記錄,狀態碼字段置為“33”;
(3)通過了解,有進無出或者只出不進等未能配對的非正常情況數據,在下一次進站的時候都需要到BOM窗口進行進、出站更新操作。為此在月末需要對按日匹配狀態碼為“11”和“22”的數據在全月范圍內的BOM窗口數據進行再次匹配;
①有發站沒有到站的記錄(狀態碼為“11”),如匹配成功,則狀態碼更新為“44”,更新相關的到站信息;
②同時與之對應的有到無發站記錄(狀態碼為“22”),如匹配成功,狀態碼更新為“55”,更新相關的發站信息;
③接著檢查狀態碼為“55”的記錄發到站是否一致,如一致則修改狀態碼為“66”;
(4)異常數據的處理:
通過以上步驟的處理,仍有部分數據由于交通卡未再次在金山線各站再次使用,沒有匹配到相關的“進出站更新”數據,因此必須做異常處理:
①對于有發站沒有到站的記錄(狀態碼為“11”)的按照該發站最遠的到站匹配;
②對于有到站沒有發站的記錄(狀態碼為“22”)的按照到站和票價匹配滿足到站和票價的最遠發站匹配;
(5)根據《鐵路金山線上海市公共交通使用規則》的相關規定,對于發到站相同的記錄(狀態碼為“33”和“66”的),如果進出站時間間隔小于15 min,可以認定為未發生實際運輸,則狀態碼為“33”的更新為“88”,狀態碼為“66”的更新為“99”。進出站間隔大于15 min但在1 h內的數據以該站3元最遠往返一次生成數據,超過1 h的,按最遠距離數據往返一次生成數據,狀態碼設定為“77”。
(1)建立按日詳細車次停靠字典。
(2)根據對旅客出行習慣的分析,旅客在出發時在車站滯留時間相對旅客到達時在車站滯留的時間更具不規律性,因此對于數據的處理,在有到站時間情況下,以出閘機時分為準,選取列車停靠到站的時間在旅客出閘機時分之前,且離出閘機時分最近的車次進行匹配。
(3)對于有發無到的數據匹配,則以進閘時分為準,列車停靠出發站的時間在旅客進閘機時分之后,且離進閘機時分最近的車次進行匹配。
將車次匹配完畢的有效數據(根據上述處理過程,狀態碼為“00”、“11”、“22”、“55”、“77”的為有效數據)傳輸到最終結果表中,在月末匯總至用于報表生產的數據接口。
根據以上設想,用相當天數的數據進行試驗,對得到的最終結果進行了相關分析,分時段運輸量的變化曲線與金山線運行各車次的實際運輸峰谷波動的規律基本吻合。根據試驗情況,按以上設計思想優化,組織軟件人員細化流程,建立相關字典(如金山線站名字典、按日車次停靠字典、票價字典等),編制軟件并投入正式生產,還建立了一系列數據控制表以確保數據在鐵路旅客運輸統計各工序間流轉時的質量。通過對該軟件在投入運行后半年時間的數據跟蹤分析,分時段運輸量的變化曲線基本呈穩定狀態,因此,可以認為該設計思想是成功的。