基于C语言的地震数据接口开发实验的实现
2018-06-21单刚义韩立国张丽华
单刚义 韩立国 张丽华
摘 要 地震数据是地震采集系统把接收到的地震波在介质中传播过程中的信息记录下来的一种数据形式。本文通过C语言编程实现了两种不同数据格式的转换,在实验教学环节帮助学生加深对地震数据的理解,提高学生编程的能力,并有助于学生提高开发研究地震数据处理技术。
关键词 地震数据 地震采集系统 c语言 实验教学
中图分类号:TP312 文献标识码: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 引言
地震数据是地震勘探过程中把采集到的信号保存下来的一种数据形式。[1]国际上通用的地震数据格式是SEG-Y格式,[2-4]是SEG学会制定的标准SEG-Y地震数据记录格式,不是按照SEG学会制定的格式记录的SEG-Y地震数据称为非标准SEG-Y地震数据格式。从各自软件平台开发环节开始,不同的地震数据处理平台拥有各自的内部地震数据格式。本文从ProMAX软件平台内部地震数据与CGG软件平台内部数据格式的转换出发,[5]设计开发了基于C语言[6]的地震数据接口开发实验,通过本实验的编写实现可以帮助学生更好地理解地震数据结构。[7-10]
1 实验编译环境
本实验在linux5.6_64位操作系统下进行。[11-15]先登录学生账户,在c shell环境变量文件.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 實验步骤
实验环境搭建好后,重新登录学生账户按下列实验步骤进行程序编译:
(1)运行Makeadvance命令创建学生开发实验目录结构
(2)以本文开发实验目录结构为例,运行下列命令:cd /home/promax/soft/promax5000/ProMAX/port/src/exe
实验目录转到上面所列目录下。
(3)本实验包括C语言主程序(CSTinput.c)、主程序菜单(CSTinput.menu)、CGG内部数据说明头文件(CSTinput.h、CSTData.h)等内容,主程序内容包括如下:
#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中所列实验目录下。
(4)运行下列命令:gmake language=C,执行完以后,程序编译执行成功后当前终端会返回下列信息:(见图1)
表示编译执行成功生成可执行文件CSTinput.exe文件,就可以把该文件拷到目录/ProMAX/linux64/exe下集成到ProMAX软件平台上去。
(5)开发实验主程序菜单(CSTinput.menu)分别拷到/ProMAX/port/menu/promax和/ProMAX/port/menu/promax2d两个目录下,这样在ProMAX软件平台就可以运行开发实验了。
3 实验效果分析
在ProMAX软件平台运行CSTinput读取CGG内部地震数据格式并与传统读取地震数据方式显示对比(图2、图3):
图2、图3地震数据显示,两种地震数据显示保持一致,进一步验证该开发实验的准确性。
*通讯作者:张丽华
基金项目:国家863计划课题: 金属矿多波地震资料处理解释新技术、新方法(2006AA062108)资助
参考文献
[1] 何樵登,熊维纲.应用地球物理教程-地震勘探[M].地质出版社,1991:82-89.
[2] 王增波,李雁鸿,赵剑等.SEGY-Y地震数据格式解析及转换方法[J].物探装备,2012.22(3):177-182.
[3] 刘继承,姚亮.基于VC++的SEGY数据格式地震剖面图绘制[J].计算机应用,2012.31(3):24-28.
[4] SEG web site:http://www.seg.org/下载SEG Y标准rev 0、rev 1.
[5] ProMAX5000随机帮助文档:ProMAX Developers Programming Guide.
[6] 谭浩强.C程序设计[M].清华大学出版社,1991.
[7] 罗福龙.地震数据存储技术综述[J].石油仪器,2006.20(3):1-6.
[8] 馬承杰.地震数据访问技术研究[J].石油工业计算机应用,2005.23(4):5-8.
[9] 杨红霞,赵改善.21世纪的地震数据处理系统[J].石油物探,2001.40(4):
125-140.
[10] Charles C Mosher等.可扩展的地震数据并行处理[J].石油物探译丛,1997
(4):12-17.
[11] 邢如意.Linux系统下计算机C语言的编程技巧分析[J].电脑知识与技术,
2014.10(36):8674-8675.
[12] 李俊玲.浅谈Linux操作系统下的C程序开发[J].中国科技财富,2012.5(5):314.
[13] 王晓明.计算机C语言编辑程序探讨[J].长春教育学院学报,2014.30(5):
145-146.
[14] 余勍,王捷.浅谈C语言编程技巧在C语言学习中的应用[J].信息通信,
2013.7(7):108.
[15] 张锦涛.Linux系统下的语言编程技巧探析[J].电脑编程技巧与维护,2012.20
(019):10-11.