Fortran Coder

标题: 地震勘探SEG-Y格式文件Fortran90读写代码,献给物探初学者! [打印本页]

作者: yunhong125    时间: 2017-9-22 13:56
标题: 地震勘探SEG-Y格式文件Fortran90读写代码,献给物探初学者!
本帖最后由 yunhong125 于 2017-9-22 13:57 编辑

SEG-Y文件是学物探地震勘探中经常打交道的数据格式,Fortran90以前的标准,要求每次读取文件长度要一致,使得在读取标准SGY文件时非常麻烦,Fortran90标准提出了使用 stream 方式读写文件,这使得读写SGY文件更加方便快捷。附件是本人初步尝试写的一个读写SEG-Y文件的模块,支持IBM格式SGY、IEEE格式SGY及无卷头的PC格式SGY文件,均给出了一个测试文件,还有很大的修改空间。现拿出来与大家分享,希望对初学物探的童学们有所帮助。大家可以在此版本基础上进一步按自己的思路修改!
!C+-----------------------------------------------------------------------+
!C| Module        : SGY文件读写模块(简版)                                       |
!C| Last modified : 09-22-2017                                                          |
!C| 主要功能:    1、支持IBM格式、IEEE格式、无卷头PC格式             |
!C|                      2、自动判断文件格式                                                |
!C|                      3、自动读取采样长度、采样率及道数                        |
!C+-----------------------------------------------------------------------+
!C| 联系方式:QQ:308993124                                                          |
!C+-----------------------------------------------------------------------+

1.jpg (31.7 KB, 下载次数: 271)

SGYReadModule

SGYReadModule

2.jpg (60.24 KB, 下载次数: 279)

主程序

主程序

3.jpg (201.97 KB, 下载次数: 286)

测试数据波形

测试数据波形

SGY文件读写代码.zip

795.44 KB, 下载次数: 67

SGY文件读写代码及测试数据


作者: fcode    时间: 2017-9-22 18:17
楼主可以学习一下结构体,用结构体读取卷头道头,就非常非常容易了。
此外,查询文件大小,不需要用 DFLib 的扩展函数。标准的 Inquire( File = name , size = n ) 就可以了

作者: yunhong125    时间: 2017-9-22 22:41
fcode 发表于 2017-9-22 18:17
楼主可以学习一下结构体,用结构体读取卷头道头,就非常非常容易了。
此外,查询文件大小,不需要用 DFLib  ...

谢谢指点,下来慢慢完善!
我查了一下INQUIRE函数,似乎没有Size属性,不能查询文件大小。请指点!
INQUIRE(UNIT=number, FILE=filename, IOSTAT=stat, ERR=label, EXIST=exist, OPENED=opened, NUMBER=number, NAMED=named, ACCESS=access, SEQUENTIAL=sequential, DIRECT=direct, FORM=form, FORMATTED=formatted, UNFORMATTED=unformatted, RECL=recl)
作者: yunhong125    时间: 2017-9-22 22:54
yunhong125 发表于 2017-9-22 22:41
谢谢指点,下来慢慢完善!
我查了一下INQUIRE函数,似乎没有Size属性,不能查询文件大小。请指点!
INQUI ...

试了一下可以,INQUIRE(FILE=filename,SIZE=file_size),非常方便!




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2