Fortran Coder

查看: 253|回复: 3

[原创] 地震勘探SEG-Y格式文件Fortran90读写代码,献给物探初学者!

[复制链接]

6

帖子

1

主题

0

精华

入门

F 币
40 元
贡献
21 点
发表于 2017-9-22 13:56:17 | 显示全部楼层 |阅读模式
本帖最后由 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+-----------------------------------------------------------------------+

SGYReadModule

SGYReadModule

主程序

主程序

测试数据波形

测试数据波形

SGY文件读写代码.zip

795.44 KB, 下载次数: 17

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

评分

参与人数 1F 币 +3 贡献 +4 收起 理由
fcode + 3 + 4 赞一个!

查看全部评分

回复

使用道具 举报

1148

帖子

12

主题

5

精华

论坛跑堂

Fcode跑堂

F 币
1128 元
贡献
892 点

新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

发表于 2017-9-22 18:17:49 | 显示全部楼层
楼主可以学习一下结构体,用结构体读取卷头道头,就非常非常容易了。
此外,查询文件大小,不需要用 DFLib 的扩展函数。标准的 Inquire( File = name , size = n ) 就可以了

6

帖子

1

主题

0

精华

入门

F 币
40 元
贡献
21 点
 楼主| 发表于 2017-9-22 22:41:50 | 显示全部楼层
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)

6

帖子

1

主题

0

精华

入门

F 币
40 元
贡献
21 点
 楼主| 发表于 2017-9-22 22:54:45 | 显示全部楼层
yunhong125 发表于 2017-9-22 22:41
谢谢指点,下来慢慢完善!
我查了一下INQUIRE函数,似乎没有Size属性,不能查询文件大小。请指点!
INQUI ...

试了一下可以,INQUIRE(FILE=filename,SIZE=file_size),非常方便!
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

QQ|捐赠本站|Archiver|关于我们 About Us|QQ群|Fcode

GMT+8, 2017-12-18 15:02

Powered by Discuz! X3.2

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表