1、引

地震勘探是利用地下介质弹性和密度的差异,通过观测和分析大地对人工激发地震波的响应,推断地下岩层的性质和形态的地球物理勘探方法,是钻探前勘测石油与天然气资源的重要手段,在煤田和工程地质勘查、区域地质研究和地壳研究等方面也得到了广泛应用。

近几十年来,随着电子计算机的广泛应用,地震勘探的数据采集和装备得到了极大的改进,数据处理技术和解释方法也得到迅速的发展。野外采集的地震数据通常都需要经过繁琐的室内资料处理才能用于地质解释。

现代采集的地震数据都是以二进制文件的形式存放的,这些文件的处理及显示等工作都可以由一些商业化的软件来完成。但作为一个从事地震资料处理工作的技术人员或学习爱好者,有时会有些想法或者灵感,而这些所谓的大型软件并不能允许你去做某些试验来验证你的想法或实现你的灵感,这时候你就不得不自己动手去兑现自己的想法或灵感了。

那么,问题来了,首先,如何读取地震数据?

2、地震数据文件

地震数据是以各种格式存放的。常见的地震数据格式有SEG-D、SEG-Y、SED-2格式等,而同样的格式,还有微机版、工作站版。简单的说,工作站版和微机版数据格式的区别就​是数据读写的方式不同(地震数据处理一般在工作站上进行,而微机平台是我们试验自己想法的私人空间)。野外采集的数据格式一般是工作站版的,当然我们可以通过一些小工具将工作站版的数据转换成微机版的,但是当试验需要频繁地更换数据进行验证时,一个一个地手动转换数据格式就显得有些繁琐(LOW)笨拙。

第一次接触“读取地震数据文件”这个问题是做本科毕业设计的时候,那时候真是2YOUNG2SIMPLE,所以也是选择了忍一时风平浪静,并没有去死(攻)磕(克)这个“难题”,只是借用了个小工具(SEGY文件分析)把工作站版的数据转换成微机版,然后继续前进,顺(糊)利(弄)地完成了本科毕业(学位)论文。

3、标准“.SEG-Y”文件​

SEG-Y格式的地震数据文件,属于典型的流式文件,它的信息和数据都是按字节顺序一个个地存放的,每个字节都有其特定的含义。(既然有规律那就好办了)

这种格式的文件,由文件头部的3600字节(3200字节文本文件头+400字节二进制文件头)以及地震道(240字节道头+地震数据体)组成。

文件头前部的3200字节共分为40行,每行80个字符,但这些字符不是ASCII码,是一种称为EBCDIC的编码(这个我也不知道是什么鬼)。通常这部分可以直接跳过,暂时没发现对数据处理有什么影响。​

接下来是400字节的二进制文件头部分,这里有重要的文件信息,比如地震记录的采样率、采样点数、数据类型等等,这些记录信息决定了地震数据体的各种信息,包含有长整型数和短整型数,必须严格“对号入座”才能完整地得到它们所代表的含义。

而400字节二进制文件头后面就是最最重要的地震道记录了,每个地震道由240字节道头和地震数据(长度由采样点数和数据类型决定)组成。​

更多关于SEG-Y数据格式的资料可以百度“SEGY”或者上http://www.seg.org/(Society of

Exploration Geophysicist,勘探地球物理学家学会)去搜罗。

4、读取工作站版​“.SEG-Y”文件

工作站版(包括IEEE型和IBM型)的存储格式是高字节在前、低字节在后,即BigEndian,微机版则是低字节在前、高字节在后,即LittleEndian。工作站版的16位(短)、32位(长)整型转换成微机版只需交换高、低位。

(感觉我说半天也不如直接送上代码!仅供参考!!!)

以下是把16位整型的工作站版数据(BigEndian)转换成微机版(LittleEndian)的C语言函数:

short int

i16BE2LE(short int bed)

{

union

info

{

short

int si;

char

ch[2];

};

union

info td;

char

cod;

td.si=bed;

cod=td.ch[0];

td.ch[0]=td.ch[1];

td.ch[1]=cod;

return

td.si;

}

以下是把32位整型的工作站版数据(BigEndian)转换成微机版(LittleEndian)的C语言函数:

long int i32BE2LE(long int

bed)

{

union

info

{

long

int li;

char

ch[4];

};

union

info td;

char

cod1,cod2;

td.li=bed;

cod1=td.ch[0];

cod2=td.ch[1];

td.ch[0]=td.ch[3];

td.ch[1]=td.ch[2];

td.ch[2]=cod2;

td.ch[3]=cod1;

return

td.li;

}

以下是把32位IEEE浮点型(据说IBM版的更麻烦,我也还没来得及驾驭)的工作站版数据(BigEndian)转换成微机版(LittleEndian)的C语言函数:

float f32BE2LE(float

bed)

{

union

info

{

float

f;

char

ch[4];

};

union

info td;

char

cod1,cod2;

td.f=bed;

cod1=td.ch[0];

cod2=td.ch[1];

td.ch[0]=td.ch[3];

td.ch[1]=td.ch[2];

td.ch[2]=cod2;

td.ch[3]=cod1;

return

td.f;

}

And,16位整型、32位整型和32位IEEE浮点型的微机版数据转换成工作站版的步骤还是交换高、低字节。在C语言里面,我们可以这么干:

#define i16LE2BE i16BE2LE

#define i32LE2BE

i32BE2LE

#define f32LE2BE

f32BE2LE

没错,其实就是强迫症犯了,无法阻止自己把程序写规范点。这里的函数名完全可以用ABCDEF代替,你开心就行~~

6、总 结

当初遇到这个问题的时候多么希望有人能够给我指点迷津,然而并没有!幸好后来随着自己知识的积累,做东西的需要,偶然之间就把问题解决了。PERFECT。

鉴于最近有好几个师弟过来问我读取SEG-Y文件的问题,心血来潮就把自己曾经的困惑和解决方法给整理了一下,希望对需要的人有所帮助或启发。(但估计我还是没有把自己想说的东西表达明白了)

如果你遇到了跟我同样的问题,可以给我留言,我会尽我所能帮助你,就像当初希望有人能够帮助我指明方向一样。

GOODBYE & GOODLUCK

matlab的seg是什么,地震数据文件读取——以SEG-Y格式为例相关推荐

  1. sklearn 读取csv_气象数据再分析数据的读取方式(GRIB格式为例)

    在对全球环境进行研究中,我们总会遇到欧洲中期预报中(European Centre for Medium-Range Weather Forecasts)等发布的气象再分析数据,例如,我在ESA官网上 ...

  2. python中大数据文件读取

    python中大数据文件读取 python中经常会遇到读取大文件的场景.文件较小时,我通常采用下面方法,readlines(),该方法会一次性读取文件的所有行,并将其放入list中,最后存入内存中.可 ...

  3. 杭电Matlab与仿真-MATLAB基本语法(二)-数据文件的读/写操作

    数据文件的读/写操作 实验目的 实验内容与要求 实验程序与结果 实验目的 学会matlab数据输入与输出基本操作: 熟悉matlab各种文件的输入输出方法,了解常用的图片及音频文件的输入输出: 掌握用 ...

  4. Matlab | 基于复赛谱提取地震数据的地震子波

    function w = ExtractWavelet(data, M) % 功能:基于复赛谱提取输入地震数据data的地震子波w % 输入: % x - 地震信号,Nt×Nz % M - 提取地震子 ...

  5. SPSS数据文件读取

    简单地说,数据分析就是数据进行分析,从专业上说,数据分析就是依据分析目的,用适当的统计分析及工具,对收集来的数据进行处理与分析,提取有价值的信息,发挥数据作用,为企业的营销.战略的制定提供帮助和支持. ...

  6. segy地震数据的读取python_Python-segy格式地震资料segyio读写包说明(二),pythonsegy,数据,学习,笔记...

    python segy格式地震数据读写包segyio学习笔记(二) 最近大致搞明白了segyio读取叠后和叠前segy数据的方法,以及内部存储结构,以两段代码为例: 叠后数据读取.这是一个从给定时窗内 ...

  7. .dat数据文件怎么打开_SPSS统计分析,之一 SPSS数据文件读取

    简单地说,数据分析就是数据进行分析,从专业上说,数据分析就是依据分析目的,用适当的统计分析及工具,对收集来的数据进行处理与分析,提取有价值的信息,发挥数据作用,为企业的营销.战略的制定提供帮助和支持. ...

  8. scala读取mysql文件_9. Scala操作外部数据 文件读取,xml,Excel,MySQL

    文件读取 读取本地文件,读取csv文件,读取网络文件 package com.yy.scala import scala.io.Source /** * 文件读取 */ object FileApp ...

  9. matlab对常见特殊数据文件读取:edf、cnf、bdf、tdms、e

    /公众号:好玩的Matlab 小编是个从事脑电.肌电.心电方面的,在处理数据时候遇到edf文件格式的处理,经过查询资料终于找到了数据处理方法. 网址:European Data Format (EDF ...

最新文章

  1. GraphicsMagick 1.3.25 Linux安装部署
  2. 项目托管至GitHub上
  3. usb传输标准和接口标准
  4. 内容 AI:建立统一的跨媒体多模态内容理解内核
  5. sap 供应商表_财务人员学习SAP的路线图
  6. c位边上还有什么位_c位是什么意思?C位说法的由来是什么?c位旁边二个位置叫什么?...
  7. 黄聪:用于 Web 应用程序项目部署的 Web.config 转换语法
  8. Effective C++ -----条款42:了解typename的双重意义
  9. 超精华的unity2d同屏显示9千人,看完还怕学不会?
  10. Openwrt:创建编译IPK软件包
  11. 网络安全-Web端安全协议
  12. 高通wlan驱动之tgt_mgmt_txrx_rx_frame_handler函数
  13. 【最优化】序列(逐步)二次规划法(SQP)
  14. ERROR ITMS-90022 ERROR ITMS-90096
  15. 手机号登录和微信登录
  16. 笔记本计算机声音小,笔记本麦克风声音小的简单解决办法【图文教程】
  17. 计算机慢的解决方法,电脑很卡反应很慢该如何处理【解决方法】
  18. 学号 20172326 《程序设计与数据结构》第八周学习总结
  19. CAD制图怎么绘制对称的图形?
  20. 广告位出售单页HTML源码

热门文章

  1. python发送qq邮件_python使用SMTP发送qq或sina邮件
  2. 安卓课设<<云游APP>>
  3. kettle国内镜像下载
  4. ESXi on ARM中安装Raspios-buster-arm64
  5. TA-Lib介绍以及使用
  6. 基于51单片机的科学计算器
  7. 用opencv训练LBP特征分类器生成xml文件
  8. 安卓软件改名器_【安卓】视频下载器 下载视频必备的软件,只要能播放,就能下载。再附带8个视频网站...
  9. No.010 <软考>(保姆级自学教程)【总章】《2023年信息系统项目管理师(高项)备考大全》
  10. 初学python100例-案例22 输出三角形图案 青少年python编程 少儿编程案例讲解