数据分析0. 数据准备动校正NMO后的数据1.叠加数据验证3. 反NMO得到CMP道集数据道头数据修改道头字段根据道头的字段值提取道数据Demo:根据道头字tracl,提取所有tracl[1,10]Demo:根据道头字cdp,提取所有cdp=208将两个su合并成一个1. 排序(如果需要)2. 合并修改某个CDP的值(归零)修改一段数据sutapersuramp添加噪音suaddnoise获取SU数据,增益计算一元运算SUOP二元运算SUOP2显示数据道头字段获取道地震道数据获取某一道道数据获取偶数道数据获取奇数道数据时窗数据(垂向)
数据分析
0. 数据准备
动校正NMO后的数据
将t时刻的数据归零
sunmo < outdata_cmp.su invert=1 \ cdp=225,230,235,240,245,250 \ tnmo=0.0572337,0.166932,0.329094,0.577107,0.901431,1.23529,1.47854,1.65024,1.73132,1.94118,2.14149,2.23211,2.40382 \ vnmo=5081.4,5290.7,5500,5825.58,6848.84,7453.49,7802.33,8523.26,9011.63,9872.09,11011.6,11314,11430.2 \ tnmo=0.0143084,0.166932,0.27186,0.395866,0.572337,0.806041,1.04452,1.1876,1.52623,1.74563,1.93641,1.99841,2.19396,2.32273,2.35612,2.46582,2.54213,2.58983 \ vnmo=4965.12,5220.93,5476.74,5662.79,5872.09,6267.44,6802.33,7151.16,7569.77,7848.84,8406.98,8523.26,8988.37,9476.74,9965.12,10686,11104.7,11383.7 \ tnmo=0.0524642,0.205087,0.419714,0.682035,0.825119,0.987281,1.20191,1.3593,1.53577,1.62162,1.9221,2.18442,2.28935,2.48013,2.58506 \ vnmo=5244.19,5406.98,5639.53,6220.93,6476.74,6895.35,7500,7941.86,8616.28,8872.09,9313.95,9895.35,10779.1,11244.2,11453.5 \ tnmo=0.0810811,0.286169,0.424483,0.615262,0.944356,1.2496,1.60254,1.90779,2.13196,2.37997 \ vnmo=5476.74,5546.51,5825.58,6383.72,6918.6,8011.63,8802.33,9686.05,10383.7,11360.5 \ tnmo=0.0429253,0.248013,0.434022,0.629571,0.834658,1.11129,1.2973,1.54531,1.71701,1.94118,2.1558,2.41812,2.68998,2.86169,2.98569 \ vnmo=5174.42,5523.26,5988.37,6523.26,7081.4,7662.79,7988.37,8406.98,8686.05,9058.14,9523.26,10220.9,10616.3,10848.8,11407 \ tnmo=0.0572337,0.314785,0.505564,0.696343,0.939587,1.19237,1.34499,1.67886,1.97933,2.24165,2.56121,2.79014,2.90461 \ vnmo=5220.93,5662.79,6081.4,6779.07,7151.16,7476.74,7918.6,8872.09,9360.46,9848.84,10825.6,11104.7,11383.7 > outdata.su
suwind < outdata.su key=cdp min=231 max=240 | suxwigb
我这里用一个动校正NMO后的数据
data-tm-flt-dec-bal-cdp-nmo.su
进行模拟- 将t时刻的数据归零
suzero itmin=845 itmax=880 < data-tm-flt-dec-bal-cdp-nmo.su > outdata.su
- 上述数据显示,CMP范围为231~240
suwind < outdata.su key=cdp min=231 max=240 | suxwigb
1.叠加数据验证
- 获取t、cmp
- 处理过的动校正
outdata.su
数据,模拟归零的数据
# 动校正后的叠加数 sustack < outdata.su > outdata_stack.su
suxwigb < outdata_stack.su
3. 反NMO得到CMP道集数据
需要cmp、t、v对数据
sunmo < outdata.su invert=1 \ cdp=225,230,235,240,245,250 \ tnmo=0.0572337,0.166932,0.329094,0.577107,0.901431,1.23529,1.47854,1.65024,1.73132,1.94118,2.14149,2.23211,2.40382 \ vnmo=5081.4,5290.7,5500,5825.58,6848.84,7453.49,7802.33,8523.26,9011.63,9872.09,11011.6,11314,11430.2 \ tnmo=0.0143084,0.166932,0.27186,0.395866,0.572337,0.806041,1.04452,1.1876,1.52623,1.74563,1.93641,1.99841,2.19396,2.32273,2.35612,2.46582,2.54213,2.58983 \ vnmo=4965.12,5220.93,5476.74,5662.79,5872.09,6267.44,6802.33,7151.16,7569.77,7848.84,8406.98,8523.26,8988.37,9476.74,9965.12,10686,11104.7,11383.7 \ tnmo=0.0524642,0.205087,0.419714,0.682035,0.825119,0.987281,1.20191,1.3593,1.53577,1.62162,1.9221,2.18442,2.28935,2.48013,2.58506 \ vnmo=5244.19,5406.98,5639.53,6220.93,6476.74,6895.35,7500,7941.86,8616.28,8872.09,9313.95,9895.35,10779.1,11244.2,11453.5 \ tnmo=0.0810811,0.286169,0.424483,0.615262,0.944356,1.2496,1.60254,1.90779,2.13196,2.37997 \ vnmo=5476.74,5546.51,5825.58,6383.72,6918.6,8011.63,8802.33,9686.05,10383.7,11360.5 \ tnmo=0.0429253,0.248013,0.434022,0.629571,0.834658,1.11129,1.2973,1.54531,1.71701,1.94118,2.1558,2.41812,2.68998,2.86169,2.98569 \ vnmo=5174.42,5523.26,5988.37,6523.26,7081.4,7662.79,7988.37,8406.98,8686.05,9058.14,9523.26,10220.9,10616.3,10848.8,11407 \ tnmo=0.0572337,0.314785,0.505564,0.696343,0.939587,1.19237,1.34499,1.67886,1.97933,2.24165,2.56121,2.79014,2.90461 \ vnmo=5220.93,5662.79,6081.4,6779.07,7151.16,7476.74,7918.6,8872.09,9360.46,9848.84,10825.6,11104.7,11383.7 > outdata_cmp.su
sunmo < outdata.su invert=1 vnmo=velocity.txt > outdata_cmp.su
suwind < outdata_cmp.su key=cdp min=231 max=240 | suxwigb suximage < outdata_cmp.su legend=1 d2=tr.d2 d1=tr.d1 title="outdata_cmp" cmap=rgb1 &
道头数据
sugethw < data.su key=keyword1,keyword2,... | more # 例如 sugethw < data.su key=tracl,tracr,offset,dt,ns | more sugethw < data.su key=tracl,tracr,offset,dt,ns,fldr,tracf,ep,cdp,cdpt # 查看道号为100的道的头信息 sugethw < data.su key=tracl min=100 max=100
读出道头字段信息,存入txt文件
sugethw < data-tm-flt-dec-bal-cdp-nmo.su key=tracl,tracr,offset,dt,ns,fldr,tracf,ep,cdp,cdpt > hdrfile.txt
修改道头字段
- a:第一个参数值
- b:增长的值
- c:一组的的值
- d:迹线编号偏移
- j:组中元素的数量
sushw < data-tm-flt-dec-bal-cdp-nmo.su key=tracr a=10 c=-1 j=5 > data.new.su
说明:操作之前
tracl
与tracr
所有值一样- 将第一个值设置为10
- 五个同一组的递减1
sugethw < data.new.su key=tracl,tracr,offset,dt,ns,fldr,tracf,ep,cdp,cdpt
sushw < data-tm-flt-dec-bal-cdp-nmo.su key=cdp a=208 b=1 > cmp_100_data.su
suxwigb < cmp_100_data.su
根据道头的字段值提取道数据
Demo:根据道头字tracl,提取所有tracl[1,10]
suwind < data-tm-flt-dec-bal-cdp-nmo.su key=tracr min=1 max=10 >tracr1_10.su
suxwigb < tracr1_10.su
Demo:根据道头字cdp,提取所有cdp=208
suwind < data-tm-flt-dec-bal-cdp-nmo.su key=cdp min=208 max=208 >cmp_208_data.su
suxwigb < cmp_208_data.su
将两个su合并成一个
1. 排序(如果需要)
- 使用
susort
命令对两个文件进行排序,以确保它们具有相同的道号顺序:
susort <cmp_208_data.su >sorted_file1.su tracr
查看
sugethw < cmp_208_data.su key=tracl,tracr,offset,dt,ns,fldr,tracf,ep,cdp,cdpt sugethw < sorted_file1.su key=tracl,tracr,offset,dt,ns,fldr,tracf,ep,cdp,cdpt
2. 合并
- 我这里的
cmp_208_data.su
和cmp_209_data.su
文件都是排好序的,直接合并
# 合并 cat cmp_208_data.su cmp_209_data.su > cmp_210_data.su # 查看道头字 sugethw < cmp_210_data.su key=tracl,tracr,offset,dt,ns,fldr,tracf,ep,cdp,cdpt
suxwigb < cmp_210_data.su
显示道数据
修改某个CDP的值(归零)
提出每个CDP号的数据,将该值清零
suzero itmin=845 itmax=880 < cmp_208_data.su > cmp_208_data1.su
suxwigb < cmp_208_t_800.su
合并到原来的数据
cat cmp_208_data1.su cmp_210_data.su > cmp_210_data1.su
修改一段数据
sutaper
将数据面板的边缘轨迹逐渐缩小到零。
许多地震处理算法会显示数据集锐利边缘产生的虚假伪影。逐渐减小数据集边缘的幅度是抑制这些幅度的最简单方法之一文物。 为此,我们使用“sutaper”来锥化数据集的边缘(例如,线性在数据集的每一端逐渐减少 5 条迹线)。
sutaper < cmp_210_data.su > sutaper_210_data.su ntap=1
提示错误:sutaper: ntr neither set nor getparred
suramp
/src/su/main/tapering
将迹线的起点和/或终点线性逐渐变细至零。
“suramp”以平滑迹线的开头和/或结尾(例如,从 0 到 tmin=0.05 秒斜坡上升,从 tmax=1.15 秒斜坡下降到迹线末尾
suramp <cmp_210_data.su tmin=.05 tmax=1.15 >sutaper_210_data.su
suramp <cmp_210_data.su tmax=1.15 nt=10 >sutaper_210_data.su
suxwigb < sutaper_210_data.su
添加噪音suaddnoise
/src/su/main/noise
- add noise to traces
suplane | suaddnoise sn=0 > data_noise.su suxwigb < data_noise.su
- 不设置sn
suplane | suaddnoise > data_noise.su suxwigb < data_noise.su
- 设置sn=2
suplane | suaddnoise sn=2 > data_noise.su suxwigb < data_noise.su
suplane | suaddnoise | suxwigb title="noise added" &
测试默认数据
suplane | suaddnoise sn=2 | suxwigb title="noise added" &
测试自定义数据
suwind < cmp_210_data.su | suaddnoise sn=2 | suxwigb title="noise added" &
获取SU数据,增益计算
src/su/main/amplitudes
- sugain :获取 SU 数据,应用各种类型的增益来显示迹线
" Optional parameters: ", " panel=0 =1 gain whole data set (vs. trace by trace) ", " tpow=0.0 multiply data by t^tpow ", " epow=0.0 multiply data by exp(epow*t) ", " etpow=1.0 multiply data by exp(epow*t^etpow) ", " gpow=1.0 take signed gpowth power of scaled data ", " agc=0 flag; 1 = do automatic gain control ", " gagc=0 flag; 1 = ... with gaussian taper ", " wagc=0.5 agc window in seconds (use if agc=1 or gagc=1) ", " trap=none zero any value whose magnitude exceeds trapval ", " clip=none clip any value whose magnitude exceeds clipval ", " pclip=none clip any value greater than clipval ", " nclip=none clip any value less than clipval ", " qclip=1.0 clip by quantile on absolute values on trace ", " qbal=0 flag; 1 = balance traces by qclip and scale ", " pbal=0 flag; 1 = bal traces by dividing by rms value ", " mbal=0 flag; 1 = bal traces by subtracting the mean ", " maxbal=0 flag; 1 = balance traces by subtracting the max ", " scale=1.0 multiply data by overall scale factor ", " norm=0.0 divide data by overall scale factor ", " bias=0.0 bias data by adding an overall bias value ", " jon=0 flag; 1 means tpow=2, gpow=.5, qclip=.95 ", " verbose=0 verbose = 1 echoes info ", " mark=0 apply gain only to traces with tr.mark=0 ", " =1 apply gain only to traces with tr.mark!=0 ", " vred=0 reducing velocity of data to use with tpow ", " ", " tmpdir= if non-empty, use the value as a directory path ", " prefix for storing temporary files; else if the ", " the CWP_TMPDIR environment variable is set use ", " its value for the path; else use tmpfile() ",
suxwigb < cmp_210_data.su title="Ungained Data" & sugain < cmp_210_data.su scale=5.0 | suxwigb title="Scaled data" & # sugain < cmp_210_data.su agc=1 wagc=.2 | suxwigb title="AGC=1 WAGC=.1 sec & sugain < cmp_210_data.su pbal=1 | suxwigb title="traces balanced by rms" & sugain < cmp_210_data.su qbal=1 | suxwigb title="traces balanced by quantile" & sugain < cmp_210_data.su mbal=1 | suxwigb title="traces balanced by mean" & sugain < cmp_210_data.su tpow=2 | suxwigb title="t squared factor applied" & sugain < cmp_210_data.su tpow=.5 | suxwigb title="square root t factor applied" &
一元运算SUOP
src/su/main/operations
- 对 segys 进行一元算术运算
" Optional parameter: ", " op=abs operation flag ", " abs : absolute value ", " avg : remove average value ", " ssqrt : signed square root ", " sqr : square ", " ssqr : signed square ", " sgn : signum function ", " exp : exponentiate ", " sexp : signed exponentiate ", " slog : signed natural log ", " slog2 : signed log base 2 ", " slog10: signed common log ", " cos : cosine ", " sin : sine ", " tan : tangent ", " cosh : hyperbolic cosine ", " sinh : hyperbolic sine ", " tanh : hyperbolic tangent ", " cnorm : norm complex samples by modulus ", " norm : divide trace by Max. Value ", " db : 20 * slog10 (data) ", " neg : negate value ", " posonly : pass only positive values ", " negonly : pass only negative values ", " sum : running sum trace integration ", " diff : running diff trace differentiation", " refl : (v[i+1] - v[i])/(v[i+1] + v[i]) ", " mod2pi : modulo 2 pi ", " inv : inverse ", " rmsamp : rms amplitude ", " s2v : sonic to velocity (ft/s) conversion ", " s2vm : sonic to velocity (m/s) conversion ", " d2m : density (g/cc) to metric (kg/m^3) conversion ", " drv2 : 2nd order vertical derivative ", " drv4 : 4th order vertical derivative ", " integ : top-down integration ", " spike : local extrema to spikes ", " saf : spike and fill to next spike ", " freq : local dominant freqeuncy ", " lnza : preserve least non-zero amps ", " --------- window operations ----------- ", " mean : arithmetic mean ", " despike : despiking based on median filter", " std : standard deviation ", " var : variance ", " nw=21 number of time samples in window ",
suop < cmp_210_data.su op=abs | suxwigb title="absolute value" & suop < cmp_210_data.su op=ssqrt | suxwigb title="signed square root" & suop < cmp_210_data.su op=sqr | suxwigb title="signed square" &
suop < cmp_210_data.su op=posonly | suxwigb title="posonly " & suop < cmp_210_data.su op=negonly | suxwigb title="negonly " &
二元运算SUOP2
src/su/main/operations
- 对两个数据集进行二元运算
difference, sum, product, quotient difference of a panel and a single trace, sum of a panel and a single trace, product of a panel and a single trace, quotient of a panel and a single trace.
suop2 cmp_210_data.su cmp_210_data.su op=sum suop2 cmp_210_data_signed.su cmp_210_data.su op=diff | suxwigb title="difference" &
显示数据
suxwigb < output98.su title="Test of suvlength" &
道头字段
suplane < output98.su | sugethw key=tracl,tracr,offset,dt,ns | more
suplane | suwind key=tracl min=5 max=10 | sugethw key=tracl | more
获取道地震道数据
获取某一道道数据
suplane | suwind key=tracl accept=8 max=0 > output98.su
获取偶数道数据
suplane | suwind key=tracl j=2 > output98.su
获取奇数道数据
suplane | suwind key=tracl j=2 s=1 > output98.su
时窗数据(垂向)
suplane | suwind tmin=0.1 tmax=0.14 > output98.su
suplane | suwind itmin=1 itmax=10 > output98.su
suplane | suwind nt=10 > output98.su
Options for vertical windowing (time gating):
- tmin = 0.0 min time to pass
- tmax = (from header) max time to pass
- itmin = 0 min time sample to pass
- itmax = (from header) max time sample to pass
- nt = itmax-itmin+1 number of time samples to pass