Преобразование сейсмических файлов Seismic Unix в формат SPS-PC.
Программа переобазовывает cуммотрассы формата SU (Colorado Mines Scool) в формат SPS-PC. Одновременно создается сетка GRD в формате GS Binary. Имя файла GRD совпадает с именем выходного файла в формате SPS-PC.
Файлы Seismic Unix (SU) используются в публичной обрабатывающей системе CWP SU.
Этот формат похож на формат SEG-Y, но не содержит 3200 и 400 байтных заголовков.
Размер заголовка трассы SU равен 240 байтам
Данные для программы:
File SU – Сейсмический файл формата SU. Чаще всего это файл скоростей в глубинном масштабе после программы томографии.
File SPS-PC – Результирующий сейсмический файл формата SPS-PC. С аналогичным именем, но с расширением GRD будет также создан файл-сетка в формате GS Binary.
Restory Elevations from Passport – Если нажать эту кнопку и открыть паспорт профиля, то предполагается, что обработка в томографии проводилась от рельефа. Будет произведена реконструкция трасс к линии приведения. В указанном паспорте должен содержаться раздел ALOP с альтитудами криволинейной Datum (обычно это сглаженные значения рельефа). Отменить процедуру реконструкции можно кнопкой No. Добавленные вследствие сдвига трасс значения будут заполнены константой With Value.
Размер заголовка трассы SU равен 240 байтам и имеет структуру:
typedef struct
{
// This structure was
taken from the Seismic Un*x package
int
tracl; // trace sequence
number within line
int
tracr; // trace sequence
number within reel
int
fldr; // field record
number
int
tracf; // trace number within
field record
int
ep; //
energy source point number
int
cdp; // CDP
ensemble number
int
cdpt; // trace number
within CDP ensemble
short trid; /* trace identification code:
1 = seismic data
2 = dead
3 = dummy
4 = time break
5 = uphole
6 = sweep
7 = timing
8 = water break
9---, N = optional use (N = 32,767)
Following are CWP id flags:
9 = autocorrelation
10 = Fourier transformed - no packing
xr[0],xi[0], ..., xr[N-1],xi[N-1]
11 = Fourier transformed - unpacked Nyquist
xr[0],xi[0],...,xr[N/2],xi[N/2]
12 = Fourier transformed - packed Nyquist
even N:
xr[0],xr[N/2],xr[1],xi[1], ...,
xr[N/2 -1],xi[N/2 -1]
(note the exceptional second entry)
odd N:
xr[0],xr[(N-1)/2],xr[1],xi[1], ...,
xr[(N-1)/2 -1],xi[(N-1)/2 -1],xi[(N-1)/2]
(note the exceptional second &
last entries)
13 = Complex signal in the time domain
xr[0],xi[0], ..., xr[N-1],xi[N-1]
14 =
Fourier transformed - amplitude/phase
a[0],p[0], ..., a[N-1],p[N-1]
15 = Complex time signal - amplitude/phase
a[0],p[0], ..., a[N-1],p[N-1]
16 = Real part of complex trace from 0 to Nyquist
17 = Imag part of complex trace
from 0 to Nyquist
18 = Amplitude of complex trace from 0 to Nyquist
19 = Phase of complex trace from 0 to Nyquist
21 = Wavenumber time domain (k-t)
22 = Wavenumber frequency
(k-omega)
23 = Envelope of the complex time trace
24 = Phase of the complex time trace
25 = Frequency of the complex time trace
30 = Depth-Range (z-x) traces
101 = Seismic data packed to bytes (by supack1)
102 = Seismic data packed to 2 bytes (by supack2) */
short nvs; // number of vertically summed
traces
short nhs; // number of horizontally
summed traces
short duse; // data use: 1 = production ; 2 =
test
int
offset; /* distance from source point to receiver
group (negative if opposite to
direction
in which the line was shot) */
int
gelev; /* receiver group
elevation from sea level
(above sea level is positive) */
int
selev; /* source elevation
from sea level
(above sea level is positive) */
int
sdepth; // source depth (positive)
int
gdel; // datum
elevation at receiver group
int
sdel; // datum
elevation at source
int
swdep; // water depth at
source
int
gwdep; // water depth at
receiver group
short scalel; /* scale factor for previous 7 entries
with value plus or minus 10 to the
power 0, 1, 2, 3, or 4 (if
positive,
multiply, if negative divide) */
short scalco; /* scale factor for next 4 entries
with value plus or minus 10 to the
power 0, 1, 2, 3, or 4 (if
positive,
multiply, if negative divide) */
int
sx; // X
source coordinate
int
sy; // Y
source coordinate
int
gx; // X
group coordinate
int
gy; // Y
group coordinate
short counit; /* coordinate units code:
for previous four entries
1 = length (meters or feet)
2 = seconds of arc (in this case, the
X values are longitude and the Y values
are latitude, a positive value
designates
the number of seconds east of
Greenwich
or north of the equator */
short wevel; // weathering velocity
short swevel; // subweathering
velocity
short sut; // uphole
time at source
short
gut; // uphole time at
receiver group
short sstat; // source static correction
short gstat; // group static correction
short tstat; // total static applied
short laga; /* lag time A, time in ms between
end of 240-
byte trace identification header
and time
break, positive if time break
occurs after
end of header, time break is
defined as
the initiation pulse which maybe
recorded
on an auxiliary trace or as
otherwise
specified by the recording system
*/
short lagb; /* lag time B, time in ms between
the time break
and the initiation time of the
energy source,
may be positive or negative */
short delrt; /* delay recording time, time in ms
between
initiation time of energy source
and time
when recording of data samples
begins
(for deep water work if recording
does not
start at zero time) */
short muts; // mute time--start
short
mute; // mute time--end
unsigned short ns; //
number of samples in this trace
unsigned short dt; // sample interval; in micro-seconds
short gain; /* gain
type of field instruments code:
1 = fixed
2 = binary
3 = floating point
4 ---- N = optional use */
short igc; // instrument gain constant
short igi; // instrument early or initial
gain
short corr; // correlated: 1 = no ; 2 = yes
short sfs; // sweep frequency at start
short sfe; // sweep frequency at end
short slen; // sweep length in ms
short styp; /* sweep type code:
1 = linear
2 = cos-squared
3 = other */
short stas; // sweep trace length at start in
ms
short stae; // sweep trace length at end in ms
short tatyp; // taper type: 1=linear, 2=cos^2,
3=other
short afilf; // alias filter frequency if used
short afils; // alias filter slope
short nofilf; // notch filter frequency if used
short nofils; // notch filter slope
short
lcf; // low cut frequency if used
short hcf; // high cut frequncy if used
short lcs; // low cut slope
short hcs; // high cut slope
short year;
// year data recorded
short day; // day of year
short
hour; // hour of day (24 hour clock)
short minute; //
minute of hour
short
sec; // second of minute
short timbas; /* time basis code:
1 = local
2 = GMT
3 = other */
short trwf; /* trace weighting factor, defined
as 1/2^N
volts for the least sigificant bit */
short grnors; /* geophone group number of roll switch
position one */
short grnofr; /* geophone group number of trace one within
original field record */
short grnlof; /* geophone group number of last trace within
original field record */
short
gaps; // gap size (total number of groups dropped)
short otrav; /* overtravel
taper code:
1 = down (or behind)
2 = up (or ahead) */
// local assignments
float
d1; // sample spacing for non-seismic data
float
f1; // first sample location for non-seismic data
float d2;
// sample spacing between traces
float
f2; // first trace location
float ungpow; /* negative of power used for dynamic
range compression */
float unscale; // reciprocal of scaling factor to normalize range
int
ntr; // number of
traces
short
mark; // mark selected traces
short unass[15]; /* unassigned--NOTE: last entry causes
a break in the word
alignment, if we REALLY
want to maintain 240
bytes, the following
entry should be an odd
number of short/UINT2
OR do the insertion above the "mark"
keyword
entry */
} TraceHeader;