高分求助!怎么样读取segy——地震资料格式文件

wangchao707 2006-05-11 10:09:43
编写一个c程序,需要从segy文件中读取出某个特定的值,放到文本文件中,下面是地震资料格式说明,求助!
4.1 SEG-Y 记录格式(标准)
(1)卷头: 3600字节
(a) ASCII 区域: 3200字节(40条记录 x 80 字节/每条记录)。
(b) 二进制数区域: 400字节(3201~3600)。
3213~3214 字节—每个记录的数据道数(每炮道数或总道数)。
3217~3218 字节—采样间隔(μs)。
3221~3222 字节—样点数/每道(道长)。
3225~3226 字节—数据样值格式码1-浮点;
3255~3256 字节—计量系统:1-米, 2-英尺。
3261~3262¬¬* 字节—文件中的道数(总道数)。
3269~3270* 字节—数据域(性质):0-时域,1-振幅,2-相位谱
“ * “ 号字为非标准定义。
(2)道记录块:
(a) 道头字区: 含: 60个字/4字节整或120个字/2字节整,共240个字节,按二进制格式存放。
•SEG—Y格式道头说明:
字号(4字节) 字号(2字节) 字节号 内 容 说 明
1 1—2 1—4 一条测线中的道顺序号,如果一条测线有若干卷磁带,顺序号连续递增。
2 3—4 5—8 在本卷磁带中的道顺序号。每卷磁带的道顺序号从l开始。
3 5—6 9—12 * 原始的野外记录号(炮号)。
4 7—8 13—16 在原始野外记录中的道号。
5 9—10 17—20 测线内炮点桩号(在同一个地面点有多于一个记录时使用)。
6 11—12 21—24 CMP号(或CDP号)。(弯线=共反射面元号)
7 13—14 25—28 在CMP道集中的道号(在每个CMP道集中道号从1开始)。
8—1 15 29—30* 道识别码:
l=地震数据; 4=爆炸信号; 7=计时信号;
2=死道; 5=井口道;8=水断信号;
3=无效道(空道);6=扫描道;9…N=选择使用(N=32767)
8—2 16 31—32 构成该道的垂直叠加道数(1是一道;2是两道相加;…)
9—l 17 33—34 构成该道的水平叠加道数(1是一道; 2是两道叠加;…)
9—2 18 35—36 数据类型:1=生产; 2=试验
10 19—20 37—40 从炮点到接收点的距离(如果排列与激发前进方向相反取负值) (分米) 。
11 21—22 41—44 接收点的地面高程。高于海平面的高程为正,低于海平面为负(cm)。
12 23—24 45—48 炮点的地面高程(cm)。
13 25—26 49—52 炮井深度(正数,cm)。
14 27—28 53—56 接收点基准面高程(cm)。
15 29—30 57—60 炮点基准面高程(cm)。
16 31—32 61—64 炮点的水深(cm)。
17 33—34 65—68 接收点的水深(cm)。
l8—l 35 69—70 对41一68字节中的所有高程和深度应用此因子给出真值。比例因子=l,土10,土100,土1000或者 土10000。如果为正,乘以因子;如果为负,则除以因子。(此约定中= -100)
18—2 36 71—72 对73—88字节中的所有坐标应用此因子给出真值。比例因子=1,土10,土[00,土1000或者土10000。如果为正,乘以因子;如果为负,则除以因子。(此约定中= -10)
19 37—38 73—76 炮点坐标—X(分米)。(如果坐标单位是弧度•秒,
20 39—40 77—80 炮点坐标—Y(分米)。X值代表径度,Y值代表
21 41—42 81—84 接收点坐标—X(分米)。纬度;正值代表格林威
22 43—44 85—88 接收点坐标—Y(分米)。治子午线东或者赤道北的秒数。负值则为西或者南的秒数)
23—1 45 89—90 坐标单位; 1=长度(米或者英尺);2=弧度•秒
23—2 46 91—92 接收点下风化层速度(低速带速度,M/S)。
24—1 47 93—94 接收点下次风化层速度(降速带速度,M/S)。
24—2 48 95—96 震源处的井口时间(ms)。
25—1 49 97—98 接收点处的井口时间(ms)。
25—2 50 99—100 炮点的野外一次静校正值(ms)。
26—1 51 101—102 接收点的野外一次静校正值(ms)。
26—2 52 103—104 总野外一次静校正量(若未用静校时为零,ms)。
27—1 53 105—106 延迟时间—A,以ms表示。240字节的道标识的结束和时间信号之间的时间。如果时间信号出现在道头结束之前为正。如果时间信号出现在道头结束之后为负。时间信号就是起始脉冲,它记录在辅助道上或者由记录系统指定。
27—2 54 107—108 时间延迟—B,以ms表示。为时间信号和起爆之间的延迟时间。可正可负。
28—1 55 109—110 延迟记录时间,以ms表示。震源的起爆时间和开始记录数据样点之间的时间(深水时,数据记录不从时间零开始)。
28—2 56 111—112 起始切除时间(ms)。
29—1 57 113—114 结束切除时间(ms)。
29—2 58 115—116* 本道的采样点数。
80—1 59 117—118* 本道的采样间隔,以us表示。
30—2 60 119—120 野外仪器的增益类型:
l=固定增益; 2=二进制增益;
3=浮点增益; 4…N=选择使用
31—1 61 121—122 仪器增益常数。
31—2 62 123—124 仪器起始增益(db)(固定增益)。
32—1 63 125—126 相关码: 1=没有相关; 2=相关
32—2 64 127—128 起始扫描频率。
33—1 65 129—130 结束扫描频率。
33—2 66 131—132 扫描长度,以ms表示。
34—1 67 133—134 扫描类型:1=线性;2=抛物线;3=指数;
4=其他
34—2 68 135—136 扫描道起始斜坡长度,以ms表示。
35—1 69 137—138 扫描道终了斜坡长度,以ms表示。
35—2 70 139—140 斜坡类型:1=线性;2=COS²;3=其他
36—1 71 141—142 滤假频的频率(如果使用)
36—2 72 143—144 滤假频的陡度
37—1 73 145—146 陷波频率(如果使用)
37—2 74 147—148 陷波陡度
38—1 75 149—150 低截频率(如果使用)
38—2 76 151—152 高截频率(如果使用)
39—1 77 153—154 低截频率陡度
39—2 78 155—156 高截频率陡度
40—1 79 157—158 数据记录的年
40—2 80 159—160 日
41—1 81 161—162 小时(24小时制)
41—2 82 163—164 分
42—1 83 165—166 秒
42—2 84 167—168 时间代码:1=当地时间;2=格林威治时间;
3=其他。
43—1 85 169—170 道加权因子(最小有效位定义为2**(—N),N=0,1,2,…,32767)
43—2 86 171—172 覆盖开关位置1处的检波器串(道)号。
44—1 87 173—174 在原始野外记录中第一道的检波器串号。
44—2 88 175—176 在原始野外记录中最后一道的检波器串号。
45—1 89 177—178 缺口大小(覆盖滚动的总道数);改为:
(=1,单边激发;=2,中间激发。)
45—2 90 179—180 在测线的开始或者结束处的覆盖斜坡位置:
1=在后面(下行); 2=在前面(上行);
改为:=0,无坐标;=1,有高程;=2,有坐标和高程。
——————下述字号为自定义内容——————
46 91—92 181—184 弯线或直测线中每个共反射点的X坐标(分米)。
47 93—94 185—188 弯线或直测线中每个共反射点的Y坐标(分米)。
48 95—96 189—192 弯线中每个共反射面元中点的X坐标(分米)。
49 97—98 193—196 弯线中每个共反射面元中点的Y坐标(分米)。
50 99—100 197—200 弯线中输出剖面段的X坐标(分米)。
51 101—102 201—204 弯线中输出剖面段的Y坐标(分米)。
52—1 103 205—206 测线内接收点桩号。
52—2 104 207—208 站点间距或道间距(分米)。
53—1 105 209—210 道数/每炮。
53—2 106 211—212 炮点下低速带速度(M/S)。
54—1 107 213—214 炮点下降速带速度(M/S)。
54—2 108 215—216 CMP(CDP)点或共面元中点间距(分米)。
55—1 109 217—218 测线内有效站点总数。
55—2 110 219—220 剖面内CMP(CDP)点或共面元点总数。
56—1 111 221—222 炮点剩余静校正量(ms)。
56—2 112 223—224 接收点剩余静校正量(ms)。
57—1 113 225—226 总剩余静校正量(ms)。
57—2 114 227—228 炮点下低速带厚度(分米)。
58—1 115 229—230 接收点下低速带厚度(分米)。
58—2 116 231—232 弯线中该道列号。
59—1 117 233—234 弯线中该道行号。
59—2 118 235—236 弯线中输出剖面段的段号。
60 119—120 237—240 测线内的总道数。
...全文
1389 8 打赏 收藏 举报
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
wangchao707 2006-05-13
class CSegY
{

public:
enum segyFileType{IEEE,IBM,PC} m_segyFileType;//枚举segy文件类型
enum segyDateType{FLOAT32=1,FIXED32,FIXED16,FIXED32_W_GAIN}m_segyDataType;//枚举segy数据类型
CSegY();
CSegY( const CString &open_segyFileName,const CString &save_segyFileName, segyFileType segyFileType);
virtual ~CSegY();
};

在这个类的定义中,程序中原文件的定义如上所示。但在VC中,编译不通过,重要是CSegY( const CString &open_segyFileName,const CString &save_segyFileName, segyFileType segyFileType);这行出错,不清楚是怎么回事?
错误信息:unexpected token(s) preceding ';'
unexpected 'class CSegY ('


  • 打赏
  • 举报
回复
lk_517 2006-05-12
lz求源码?

格式说明都有了,你想问的是?
  • 打赏
  • 举报
回复
chenhu_doc 2006-05-12
lz 要加油 !!
  • 打赏
  • 举报
回复
boxban 2006-05-12
http://www.cwp.mines.edu/cwpcodes/ 上有你想要的东西
“The CWP/SU (Seismic Unix) package is an instant seismic processing and research environment developed here at the Center for Wave Phenomena, Colorado School of Mines. The package is distributed free, with full source code. ”

下载、解压源代码后,在src/su 目录下包括关于SEG-Y 头格式定义、文件读写的例程
  • 打赏
  • 举报
回复
逸学堂 2006-05-12
C语言最擅长的就是解析这种文件,解决这种问题。
  • 打赏
  • 举报
回复
jixingzhong 2006-05-12
楼主文件结构已经知道了,
那么根据这个格式来解析解析就是了 ....

这个解析甚至可以直接参考 IP 包的解析来做啊 ...
  • 打赏
  • 举报
回复
goodluckyxl 2006-05-12
操作格式都写的这么清楚了
你还有什么问题呢
  • 打赏
  • 举报
回复
chenhu_doc 2006-05-11
lz 怎么不先不自己的想法先提出来??
  • 打赏
  • 举报
回复
发帖
C语言

6.7w+

社区成员

C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
帖子事件
创建了帖子
2006-05-11 10:09
社区公告
暂无公告