王建鋒,王梅生,孫 哲,雷云山,郭明杰,程高明
(東方地球物理勘探有限責任公司采集技術(shù)支持部 河北 涿州 072751)
?
·經(jīng)驗交流·
磁盤SEG-D地震數(shù)據(jù)格式解編方法
王建鋒,王梅生,孫哲,雷云山,郭明杰,程高明
(東方地球物理勘探有限責任公司采集技術(shù)支持部河北涿州072751)
針對磁盤存儲SEG-D Rev 3.0數(shù)據(jù)難以識別與讀取的問題,根據(jù)格式標準,詳細分析了它的數(shù)據(jù)結(jié)構(gòu),介紹了幾種主要數(shù)據(jù)格式的轉(zhuǎn)換方法,并給出了解編方法。基于VC++語言,編寫了查看磁盤SEG-D數(shù)據(jù)文件頭與道頭的軟件,證明了本方法是有效的,對SEG-D Rev 3.0地震數(shù)據(jù)的應用是有積極作用的。
SEG-D格式;數(shù)據(jù)格式轉(zhuǎn)換;解編
為了滿足物探采集技術(shù)發(fā)展的需求,地震數(shù)據(jù)采集系統(tǒng)基本上都支持磁盤存儲的SEG-D Rev 3.0數(shù)據(jù)格式。但由于新數(shù)據(jù)格式與傳統(tǒng)格式存在很大差異,經(jīng)常導致在現(xiàn)場質(zhì)量監(jiān)控及后續(xù)的資料處理過程中數(shù)據(jù)無法解編,給野外工作帶來了困難。本文詳細分析了SEG-D Rev 3.0的數(shù)據(jù)結(jié)構(gòu)[1],給出了具體的解編方法,解決了此類數(shù)據(jù)的解編問題。
1.1SEG-D Rev 3.0的特點
SEG協(xié)會在1975年公布了第一個SEG-D格式的標準文件后,又分別在1994年、1996年和2009年發(fā)布了3個更新的SEG-D格式標準[2]:SEG-D Rev 1、SEG-D Rev 2和SEG-D Rev 3.0。目前一些主流儀器廠商已經(jīng)開始采用SEG-D Rev 3.0數(shù)據(jù)格式,其主要特點如下:
1)為了滿足采集技術(shù)發(fā)展的需求,與Rev 2相比,Rev 3.0支持更廣范圍的記錄長度、道數(shù)、采樣間隔等信息。此外,道的起始時間可以支持負值。
2)可選頭塊(擴展頭段、外部頭段及尾段數(shù)據(jù)塊)的大小都得到擴展,擴展頭段或外部頭段的最大字節(jié)數(shù)為512 MB,尾段數(shù)據(jù)塊最大可達128 G。
3)為支持擴展的記錄長度、采樣間隔等信息,掃描類型頭段中每個通道組的字節(jié)數(shù)從32 B擴展到了96 B。每個通道組中的道數(shù)擴展到16 777 215。
4)道頭的最大字節(jié)數(shù)為8 180。
5)地震道采樣點數(shù)據(jù)支持64 bit IEEE格式,記錄在第一通用頭塊第3~4字節(jié)的格式碼為8080,表示64 bit IEEE反多路編排格式。
總之,Rev 3.0與以前版本相比變化很大:為了存放更多信息,很多關(guān)鍵參數(shù)的存放位置、字節(jié)數(shù)及格式都發(fā)生了改變,文件頭段與道數(shù)據(jù)的大小都得到了極大的擴展。
1.2磁盤SEG-D文件結(jié)構(gòu)
磁盤存儲的SEG-D數(shù)據(jù)一般有兩種記錄形式,即單炮單文件與多炮單文件。我們可以采用遍歷文件號的方法判斷文件為哪種記錄形式。本文主要介紹單炮單文件數(shù)據(jù),每個單炮數(shù)據(jù)的結(jié)構(gòu)都如圖1所示,由三部分組成:
1)文件頭段
記錄在地震數(shù)據(jù)的最前面。它包括地震數(shù)據(jù)的輔助信息、采集參數(shù)、采集所用的觀測系統(tǒng)等信息。文件頭段包括至少三個通用頭段,零或多個掃描類型頭段以及可選的擴展頭段和外部頭段。其大小都是32 B的整數(shù)倍,其中掃描類型頭段每個通道組的字節(jié)數(shù)都為96。一個掃描類型頭段由若干通道組和采樣時偏組成,每個掃描類型頭段內(nèi)的采樣時偏字節(jié)數(shù)必須為32 B的整倍數(shù)?,F(xiàn)在的地震儀器一般都具有獨立的A/D轉(zhuǎn)換器,取消了多路開關(guān),各道的信號采樣是在同一時刻進行的,因此各道的采樣時偏一般均為零[3,4]。
2)地震道數(shù)據(jù)段
地震道數(shù)據(jù)是按道序排列的反多路解編格式的采樣數(shù)據(jù),在每道數(shù)據(jù)前面記錄了道頭(20 B)和可選的擴展道頭(每塊32 B)。
3)尾段數(shù)據(jù)塊
尾段數(shù)據(jù)塊為可選部分,排在地震數(shù)據(jù)的后面,記錄了一些在記錄前不能用的數(shù)據(jù)追蹤信息,如輔助系統(tǒng)及航行方面的數(shù)據(jù),數(shù)據(jù)QC信息等[5]。數(shù)據(jù)尾段數(shù)一般為零。
圖1 磁盤單炮SEG-D文件結(jié)構(gòu)
解編數(shù)據(jù)時應首先判斷數(shù)據(jù)的SEG-D版本號是否為SEG-D Rev 3.0,該值以無符號二進制數(shù)格式記錄在第二通用頭段的第11字節(jié)。然后需弄清楚文件頭與地震道的詳細結(jié)構(gòu),準確的計算出它們的字節(jié)數(shù),確保磁盤數(shù)據(jù)尋址正確。
2.1分析文件頭段
1)確定額外的通用頭段個數(shù)
該值以無符號二進制數(shù)格式記錄在第一通用頭段第12字節(jié)的高四位,若該位置為十六進制數(shù)F,則以無符號二進制數(shù)格式記錄在第二通用頭段的第23~24字節(jié),以A表示。
2)確定掃描類型頭段個數(shù)和每個掃描類型內(nèi)的通道組數(shù)及采樣時偏頭段數(shù)
掃描類型數(shù)以BCD碼方式記錄在第一通用頭段的第28字,以B表示。
通道組數(shù)以BCD碼方式記錄在第一通用頭段的第29字節(jié),若大于99,該字節(jié)為十六進制數(shù)FF,則以無符號二進制數(shù)格式記錄在第二通用頭段的第4~5字節(jié),以C表示;
采樣時偏數(shù)以BCD碼格式記錄在第一通用頭段的第30字節(jié), 若大于99,該字節(jié)為十六進制數(shù)FF,則以無符號二進制數(shù)格式記錄在第二通用頭段的第9~10字節(jié),以D表示。該值一般為0,表示沒有記錄采樣時偏。
3)確定擴展頭段個數(shù)
該值以BCD碼格式記錄在第一通用頭段的第31字節(jié),若大于99,該字節(jié)內(nèi)容為十六進制數(shù)FF, 則以無符號二進制數(shù)格式記錄在第二通用頭段的第6~8字節(jié),以E表示。
4)確定外部頭段個數(shù)
該值以BCD碼格式記錄在第一個通用頭段的第32字節(jié),若大于99,該字節(jié)內(nèi)容為十六進制數(shù)FF, 則以無符號二進制數(shù)格式記錄在第二通用頭段的第28-30字節(jié)上,以F表示。
5)確定尾段個數(shù)
該值以無符號二進制數(shù)格式記錄在第二通用頭段的第13~16字節(jié),以G表示,一般為零。
文件頭段的大小等于各組成部分字節(jié)總數(shù)之和:(1+A+(C×3+D)×B +E+F)×32。
2.2分析道數(shù)據(jù)
文件頭段之后,緊接著就是地震道數(shù)據(jù)。道頭在地震道數(shù)據(jù)的最前面,字節(jié)數(shù)為20,后面為若干擴展道頭與道采樣點數(shù)據(jù)。
1)確定擴展道頭數(shù)
該值以無符號二進制數(shù)格式記錄在道頭的第10字節(jié),以H表示,其中每個擴展道頭的大小都是32 B。
2)確定地震道采樣點數(shù)及每個采樣點的字節(jié)數(shù)
采樣點數(shù)以無符號二進制數(shù)格式記錄在第一擴展道頭的25~28字節(jié),若該文件沒有擴展道頭,則以無符號二進制數(shù)格式記錄在各自通道組的13~16字節(jié),以I表示。
每個采樣點的字節(jié)數(shù)與數(shù)據(jù)的格式碼有關(guān),格式碼以BCD碼方式記錄在第一通用頭段的3~4字節(jié),如8015、8022、8024、8036、8038、8042、8044、8048、8058,8080等,格式碼表明地震道采樣點編碼的數(shù)值類型[6]。目前8058 最為常用,表示32位IEEE 反多路格式。以J表示每個采樣點的字節(jié)數(shù)。
每個地震道數(shù)據(jù)的總字節(jié)數(shù)為:20+H×32+I×J。
綜上所述,若數(shù)據(jù)為固定道長,道數(shù)為N,則文件大小為: 文件頭大小+單道字節(jié)數(shù)×N +G。
2.3重要參數(shù)
1)文件號:以BCD碼格式記錄在第一個通用頭段的第1~2字節(jié),若文件號大于9 999,這兩個字節(jié)為十六進制數(shù)FFFF,則以無符號二進制數(shù)格式記錄在第二通用頭段的1~3字節(jié)。
2)采樣間隔:以無符號二進制格式記錄在第一通用頭塊的第23字節(jié),單位1/16 ms。得到數(shù)值后需除以16才是采樣間隔。若該字節(jié)為十六進制數(shù)FF,則以無符號二進制數(shù)格式記錄在第三通用頭段的25~27字節(jié),單位為μs。此外,通道組的24~26字節(jié)也以無符號二進制數(shù)格式記錄了采樣間隔。
3)記錄長度:以BCD碼格式記錄在第一個通用頭段的第26字節(jié)低四位和第27字節(jié)處。若該位置為十六進制數(shù)FFF,則以無符號二進制格式記錄在第三通用頭段的17~20字節(jié),單位為μs。另外通道組中記錄了采樣間隔、采樣點數(shù)及開始與結(jié)束時間,可計算得到記錄長度。
4)道數(shù):每個掃描類型頭段中任意一個通道組的21~23字節(jié)處以無符號二進制數(shù)格式記錄了本組的地震道數(shù),把所有通道組的道數(shù)加起來即為總道數(shù)。
5)反換算因子MP:將記錄的無量綱采樣點值轉(zhuǎn)換成地震儀輸入信號的瞬時采樣毫伏值,該值以32位IEEE格式記錄在各自通道組的第17~20字節(jié)處。表示為: 輸入信號的毫伏值=采樣點值×MP。如果解編數(shù)據(jù)時需做真振幅恢復,可對地震道采樣點數(shù)據(jù)應用此因子。
在介紹數(shù)據(jù)格式之前,我們需簡單了解計算機中的字節(jié)序。對于多字節(jié)的數(shù)值,如果先見到的是低位的字節(jié)值,則系統(tǒng)是Little Endian(小端)的,否則就是Big Endian(大端)的,通常PC機是Little Endian的,而工作站是Big Endian的。
下面介紹的格式轉(zhuǎn)換都是針對道序SEG-D數(shù)據(jù),它們是使用Big Endian字節(jié)記錄的。我們的機器是一般是Little Endian的,所以需要交換字節(jié)后才能讓機器正確識別。
SEG-D文件中儲存的數(shù)據(jù)格式主要有以下幾種: BCD碼、有/無符號的4~64位二進制、IEEE 32 bit單精度浮點和IEEE 64 bit雙精度浮點。格式轉(zhuǎn)換的方法有很多,如共同體、移位操作、交換字節(jié)等,可靈活選擇。下文中unsigned char *in表示輸入字符。
3.1BCD碼
該編碼是利用4個位元來儲存一個十進制數(shù),即:使用0~9這十個數(shù)值的二進制碼來表示。SEG-D一般有4 bit、8 bit、12 bit及16 bit幾種情況,以12位BCD(第1字節(jié)低四位加第2字節(jié))轉(zhuǎn)換為例,可用如下方法實現(xiàn):
int value = int(0x0F&in[0])*100+int(in[1]?4)*10+int(0x0F&in[1])。
3.2有/無符號的4~64位二進制
對于有符號的16 bit、32 bit、64 bit二進制數(shù)據(jù)可用指針的方式來進行格式轉(zhuǎn)換,如short、int、long long等。無符號采用與之相對應的類型,以無符號16 bit為例,in已用Sweep(in,2)函數(shù)交換完字節(jié)順序:int value = *(unsigned short*)in。
對無符號12 bit或24 bit的二進制數(shù)據(jù)可采用移位操作進行格式轉(zhuǎn)換。以無符號24 bit二進制的轉(zhuǎn)換為例:int value = (in[0]?16)|(in[1]?8)|in[2]。
或者應用下面交換字節(jié)方式:
intvalue = 0;
unsigned char *temp = (unsigned char*)&value。
temp[0]=in[2];temp[1]=in[1];temp[2]=in[0]。
3.332/64位IEEE浮點格式
32 bit單精度浮點數(shù)據(jù):用float類型進行格式轉(zhuǎn)換。64 bit雙精度浮點數(shù)據(jù):用double類型進行格式轉(zhuǎn)換。以32 bit單精度浮點數(shù)據(jù)為例,in已用Sweep(in,4)函數(shù)交換完字節(jié)順序:float value = *((float*)in)。
為了驗證方法的正確性,我們利用VC++與QT編寫了查看SEG-D文件頭與道頭的軟件。它可自動判斷不同的SEG-D版本、不同儀器的磁盤SEG-D數(shù)據(jù),方便地查看通用頭塊數(shù)、掃描頭段數(shù)、擴展頭段數(shù)等文件頭結(jié)構(gòu)信息,也可查看文件號、道數(shù)、道長、采樣間隔等基本信息。通過跳轉(zhuǎn)可瀏覽文件任意一道的道頭信息,如文件號、道號、接收線/點號、坐標等,如圖2所示,該數(shù)據(jù)為最新的SEG-D Rev 3.0數(shù)據(jù),文件號為90 035。
圖2 SEG-D道頭信息
針對不同儀器SEG-D文件的靈活性,通過修改軟件界面上某字段的位置、類型及字節(jié)數(shù),可以查看指定字段的信息。
SEG-D Rev 3.0是地震采集技術(shù)發(fā)展的結(jié)果,新數(shù)據(jù)格式與以前數(shù)據(jù)格式的差別很大,而且格式中的一些標準也具有一定的靈活性,這都給實際應用帶來了一定的困難。但只要弄清楚了數(shù)據(jù)的結(jié)構(gòu)特點,掌握了解編方法,也就可以將它們正確地解編出來。
[1] SEG協(xié)會標準.SEGD Rev3,SEG Field Tape Standards,May,2011:7-125.
[2] SEG協(xié)會標準.SEGD Rev2,SEG Field Tape Standards,December,1996:2-55.
[3] 晉為真.SEG-D格式磁帶解編簡介[J].物探裝備,2003,13(4):274-277.
[4] 郭毅,陳浩林.GeoRes儀器磁盤SEG-D文件的分析及道頭查看軟件[J].物探設備,2008,18(4):254-257.
[5] 蘇惠,安錦文.SEG-D數(shù)據(jù)格式解析[J].石油儀器,2005,19(5):42-44.
[6] 中國石油天然氣總公司.SEG-D地震磁帶記錄格式:SY/T6391-1999[S].北京:石油工業(yè)出版社,2000:7-15.
Demultiplex Method of Disk SEG-D Seismic Data Format
WANG Jianfeng, WANG Meisheng, SUN Zhe, LEI Yunshan, GUO Mingjie, CHENG Gaoming
(AcquisitionTechniqueSupportDepartment,BGP,Zhuozhou,Hebei072751,China)
With the view of the difficulty to identify and read the SEG-D Rev 3.0 data of disk storage, according to its format standard,the data file structure is analyzed in detail, the methods of several data format conversions are introduced, and the demultiplex method is given. Based on VC++ language, the software looking for file header and trace header in SEG-D file is compiled. And the method is proved to be effective and has a positive effect for the application of SEG-D Rev 3.0 data.
SEG-D format;data format conversion;demultiplex
王建鋒,男,1982年生,工程師,2008年畢業(yè)于中國石油大學(北京),現(xiàn)從事地震數(shù)據(jù)轉(zhuǎn)儲與采集資料質(zhì)量控制。E-mail:59204768@qq.com
TP274
A
2096-0077(2016)04-0094-04
2015-10-23編輯:韓德林)