CSF地震觀測報告是常見數(shù)據(jù)格式之一,地震臺網(wǎng)中心發(fā)布觀測報告的標準格式。如圖所示,文件由標題、數(shù)據(jù)體兩大部分構(gòu)成。
標題部分,定義了字段名稱,由HBO、HEO、HMB、HPB四行組成,相應(yīng)行的內(nèi)容記錄了數(shù)據(jù)的字段名稱,字段名之間以空格分隔。
數(shù)據(jù)體部分,定義了數(shù)據(jù)具體內(nèi)容,以固定寬度記錄觀測值。其中DBO與HBO、DEO與HEO、DMB與HMB、DPB與HPB相對應(yīng),DBO、DEO、DMB有一行數(shù)據(jù),DPB可以有多行數(shù)據(jù),行數(shù)不定。

從數(shù)據(jù)表達的內(nèi)容來看,CSF混合了單行與多行數(shù)據(jù),數(shù)據(jù)提取工作比較麻煩,同時文件方式存儲,也不利于數(shù)據(jù)查詢與應(yīng)用。如何使用DatistEQ來解析CSF文件呢?
1、解析CSF節(jié)點
DatistEQ節(jié)點,提供CSF文件讀取功能,將按行疊加的觀測數(shù)據(jù),以列方式存儲。它把DBO、DEO、DMB數(shù)據(jù)和DPB組合成記錄,構(gòu)成一張二維數(shù)據(jù)表。

2、數(shù)據(jù)結(jié)構(gòu)化
解析CSF節(jié)點完成了數(shù)據(jù)格式的按行轉(zhuǎn)換功能,我們可使用列劈分節(jié)點將行的內(nèi)容結(jié)構(gòu)化出來。采用列劈分節(jié)點的固定列寬分隔數(shù)據(jù)讀取方式,標記出數(shù)據(jù)項讀取的位置,將以行存儲的數(shù)據(jù),轉(zhuǎn)換成以列方式存儲。


3、修改字段名稱
列過濾節(jié)點,提供了數(shù)據(jù)模型映射工具,可快速建立成數(shù)據(jù)字段之間的對應(yīng)關(guān)系。當然也可以一個個地去修改字段名稱,只是工作量有點大。

數(shù)據(jù)解析流程示例

流程中,由掃描目錄獲取文件,解析CSF節(jié)點轉(zhuǎn)換數(shù)據(jù)存儲方式,劈分節(jié)點結(jié)構(gòu)化數(shù)據(jù),最終由列過濾節(jié)點重定義字段名稱及數(shù)據(jù)類型。
另外,解析CSF節(jié)點支持兩種數(shù)據(jù)源,一是BLOB文件體數(shù)據(jù),二是文件的路徑。兩種方式給我們以無限發(fā)揮空間,可以用它來解析本地磁盤上的文件,也可以用于解析獲取網(wǎng)絡(luò)上的數(shù)據(jù)體。