單剛義 韓立國 張麗華
摘 要 地震數(shù)據(jù)是地震采集系統(tǒng)把接收到的地震波在介質(zhì)中傳播過程中的信息記錄下來的一種數(shù)據(jù)形式。本文通過C語言編程實現(xiàn)了兩種不同數(shù)據(jù)格式的轉(zhuǎn)換,在實驗教學(xué)環(huán)節(jié)幫助學(xué)生加深對地震數(shù)據(jù)的理解,提高學(xué)生編程的能力,并有助于學(xué)生提高開發(fā)研究地震數(shù)據(jù)處理技術(shù)。
關(guān)鍵詞 地震數(shù)據(jù) 地震采集系統(tǒng) c語言 實驗教學(xué)
中圖分類號:TP312 文獻標(biāo)識碼:A DOI:10.16400/j.cnki.kjdks.2018.01.020
Realization of Development Experiment of Seismic Data Interface
Based on C Language
SHAN Gangyi[1][2], HAN Liguo[1], ZHANG Lihua[1]
([1] School of Geodesy Science and Technology, Jilin University, Changchun, Jilin 130026;
[2] Modern Geophysical Data Processing Center, Jilin University, Changchun, Jilin 130026)
Abstract Seismic data is a form of data recorded by the seismic acquisition system in the process of receiving the seismic waves propagating in the medium. This article through the c language programming to achieve two different data format conversion in the experimental teaching session to help students deepen the understanding of seismic data and improve students ability to program, and help students to improve the research and development of seismic data processing technology.
Keywords seismic data; earthquake acquisition system; C Language; experimental teaching
0 引言
地震數(shù)據(jù)是地震勘探過程中把采集到的信號保存下來的一種數(shù)據(jù)形式。[1]國際上通用的地震數(shù)據(jù)格式是SEG-Y格式,[2-4]是SEG學(xué)會制定的標(biāo)準(zhǔn)SEG-Y地震數(shù)據(jù)記錄格式,不是按照SEG學(xué)會制定的格式記錄的SEG-Y地震數(shù)據(jù)稱為非標(biāo)準(zhǔn)SEG-Y地震數(shù)據(jù)格式。從各自軟件平臺開發(fā)環(huán)節(jié)開始,不同的地震數(shù)據(jù)處理平臺擁有各自的內(nèi)部地震數(shù)據(jù)格式。本文從ProMAX軟件平臺內(nèi)部地震數(shù)據(jù)與CGG軟件平臺內(nèi)部數(shù)據(jù)格式的轉(zhuǎn)換出發(fā),[5]設(shè)計開發(fā)了基于C語言[6]的地震數(shù)據(jù)接口開發(fā)實驗,通過本實驗的編寫實現(xiàn)可以幫助學(xué)生更好地理解地震數(shù)據(jù)結(jié)構(gòu)。[7-10]
1 實驗編譯環(huán)境
本實驗在linux5.6_64位操作系統(tǒng)下進行。[11-15]先登錄學(xué)生賬戶,在c shell環(huán)境變量文件.cshrc中增加下列變量:
setenv PROMAX_HOME/ProMAX
set path=($path $PROMAX_HOME/sys/bin $PROMAX_HOME/port/bin)
alias gmake'/usr/bin/make -I$PROMAX_HOME/port/include/make'
alias Makeexec'$PROMAX_HOME/port/bin/Makeexec-I$PROMAX_HOME/port/include/make'
2 實驗步驟
實驗環(huán)境搭建好后,重新登錄學(xué)生賬戶按下列實驗步驟進行程序編譯:
(1)運行Makeadvance命令創(chuàng)建學(xué)生開發(fā)實驗?zāi)夸浗Y(jié)構(gòu)
(2)以本文開發(fā)實驗?zāi)夸浗Y(jié)構(gòu)為例,運行下列命令:cd /home/promax/soft/promax5000/ProMAX/port/src/exe
實驗?zāi)夸涋D(zhuǎn)到上面所列目錄下。
(3)本實驗包括C語言主程序(CSTinput.c)、主程序菜單(CSTinput.menu)、CGG內(nèi)部數(shù)據(jù)說明頭文件(CSTinput.h、CSTData.h)等內(nèi)容,主程序內(nèi)容包括如下:
#ifndef RCS_C_H_
#define RCS_C_H_
#include"sccsinc/silent_running.h"
static const char*rcsid=" ProMAX $Id: SEPinput.c,v 20031.5 2001/06/25 07:40:06 build Exp $ $Revision:20031.5 $ $Date: 2001/06/25 07:40:06 $";
#include"sccsinc/normal_running.h"
#endif/*RCS_C_H_*/
#include
#include
#include
#include
#include"cglobal.h"
#include"cpromax.h"
#include"cSocketTool.h"
#include"CSTinput.h"
#include"CSTData.h"
int iCompareFun(const void*a,const void*b)
{
return*((int*)a)-*((int*)b);
}
main(int ac,char**av)
{
int i,j,nth;
char primaryKey[32],secondaryKey[32];
int*iProHead,*iProHeadX,*iCggHead;
int*iProHeadtmp;
float*tracetmp,*rProHeadtmp;
……
}
把該程序拷到實驗步驟2中所列實驗?zāi)夸浵隆?/p>
(4)運行下列命令:gmake language=C,執(zhí)行完以后,程序編譯執(zhí)行成功后當(dāng)前終端會返回下列信息:(見圖1)
表示編譯執(zhí)行成功生成可執(zhí)行文件CSTinput.exe文件,就可以把該文件拷到目錄/ProMAX/linux64/exe下集成到ProMAX軟件平臺上去。
(5)開發(fā)實驗主程序菜單(CSTinput.menu)分別拷到/ProMAX/port/menu/promax和/ProMAX/port/menu/promax2d兩個目錄下,這樣在ProMAX軟件平臺就可以運行開發(fā)實驗了。
3 實驗效果分析
在ProMAX軟件平臺運行CSTinput讀取CGG內(nèi)部地震數(shù)據(jù)格式并與傳統(tǒng)讀取地震數(shù)據(jù)方式顯示對比(圖2、圖3):
圖2、圖3地震數(shù)據(jù)顯示,兩種地震數(shù)據(jù)顯示保持一致,進一步驗證該開發(fā)實驗的準(zhǔn)確性。
*通訊作者:張麗華
基金項目:國家863計劃課題: 金屬礦多波地震資料處理解釋新技術(shù)、新方法(2006AA062108)資助
參考文獻
[1] 何樵登,熊維綱.應(yīng)用地球物理教程-地震勘探[M].地質(zhì)出版社,1991:82-89.
[2] 王增波,李雁鴻,趙劍等.SEGY-Y地震數(shù)據(jù)格式解析及轉(zhuǎn)換方法[J].物探裝備,2012.22(3):177-182.
[3] 劉繼承,姚亮.基于VC++的SEGY數(shù)據(jù)格式地震剖面圖繪制[J].計算機應(yīng)用,2012.31(3):24-28.
[4] SEG web site:http://www.seg.org/下載SEG Y標(biāo)準(zhǔn)rev 0、rev 1.
[5] ProMAX5000隨機幫助文檔:ProMAX Developers Programming Guide.
[6] 譚浩強.C程序設(shè)計[M].清華大學(xué)出版社,1991.
[7] 羅福龍.地震數(shù)據(jù)存儲技術(shù)綜述[J].石油儀器,2006.20(3):1-6.
[8] 馬承杰.地震數(shù)據(jù)訪問技術(shù)研究[J].石油工業(yè)計算機應(yīng)用,2005.23(4):5-8.
[9] 楊紅霞,趙改善.21世紀(jì)的地震數(shù)據(jù)處理系統(tǒng)[J].石油物探,2001.40(4):
125-140.
[10] Charles C Mosher等.可擴展的地震數(shù)據(jù)并行處理[J].石油物探譯叢,1997
(4):12-17.
[11] 邢如意.Linux系統(tǒng)下計算機C語言的編程技巧分析[J].電腦知識與技術(shù),
2014.10(36):8674-8675.
[12] 李俊玲.淺談Linux操作系統(tǒng)下的C程序開發(fā)[J].中國科技財富,2012.5(5):314.
[13] 王曉明.計算機C語言編輯程序探討[J].長春教育學(xué)院學(xué)報,2014.30(5):
145-146.
[14] 余勍,王捷.淺談C語言編程技巧在C語言學(xué)習(xí)中的應(yīng)用[J].信息通信,
2013.7(7):108.
[15] 張錦濤.Linux系統(tǒng)下的語言編程技巧探析[J].電腦編程技巧與維護,2012.20
(019):10-11.