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