Geometry Calculate

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 14

2 D HIGH RESOLUTION MARINE SEISMIC DATA PROCESSING BY USING SEISMIC UNIX: PART- 3: GEOMETRY

SETTING
MONDAY, MAY 19, 2014  HENRY NAINGGOLAN  3 COMMENTS

DESCRIPTION:
Geometry setting is an updating trace identity, consists of shot coordinate, group
(receiver) coordinate,  source-receiver offset, and also setting common depth point
(CDP). The objective of geometry setting is to obtain valid trace header values from
acqusition geometry, especially the information belonging to the same subsurface depth
(CDP) for improving S/N ratio.

Geometry setting requires acquisition parameters and navigation data.  Either recorded
navigation in an external file such as UKOOA P1/90 format (*.p190) or registered in the
trace header is used to set geometry. Trace headers must already have the correct
geometry values inserted. It is very important to define the source and receiver
coordinate location. Acquisition parameters are also needed to calculate appropriate
values for common depth point (CDP).

In this stage, we specify source coordinates from UKOOA P1/90 navigation file. Then
group (receiver) coordinates will be computed as the function of source coordinates,
offsets, streamer azimuth, and/or feathering angle (if occurred). CDP bin number will
also be defined as function of number of shot, number of receiver, shot interval, and
receiver interval.

Finally we can get corrected trace header values for geometry assignment. As the data
QC, we need to view the range of new trace header values, create print out of initial
stack, plot source (shot point)-receiver-cmp coordinate locations, stacking chart and fold
coverage.

Author : Henry Mulana Nainggolan


Date    : May 18th, 2014
BASIC THEORY:
The most common geometry pattern and usually desired for 2D marine seismic
acqusition is off-end spread. Sets of receiver groups (the spread) with 48, 96 or more
hydrophones are “regularly” laid out behind source (shot point). All hydrophones are
mounted in what is called streamer. More details, should be read on Gadallah and
Fisher (2009), “Exploration Geophysics”.

Figure-1.Description of 2-D marine seismic acqusition using off-end spread pattern.

A 2-D marine geometry assignment was assigned by using navigation derived P1/90
files, including “regular” offset and CDP binning calculations. Normally for offshore 2-D
survey, P1/90 navigation file stores navigation database, containing Centre of Source
(S) or Receiver Group (G), or other defined location in H0800. More details, can be
done on http://www.gdal.org/ogr/drv_segukooa.html.

Figure-2.Example of P1/90 header record & navigation record of 2-D offshore survey
(credit: U.K.O.O.A. Exploration Committee)
Record identification is stored in column 1, that is ‘S’, and position is set in H0800, that
is Centre of Air Gun Array. Point number is stored in column 20-25. Map grid easting is
located in column 47-55, while map grid northing is in column 56-64. The coordinate
projection system is detailed in H1800-H2509. The other mandatory data is water depth,
which is located in column 65-70, with vertical datum is set in H1700.

Once we finish extracting the approriate geometry databases from P1/90 file, containing
point number (FFID), source location (sx,sy), and water depth. We need to compute
regular offset for all group channels as function of near offset (distance between source
and first group channel), group channel interval (distance between group channel), and
group channel number.

Figure-3.Description of source-receiver offset

The coordinate of the group channel (gx,gy) can be obtained from above formula, but it
is not that simple. To remedy this, we try to vectorize the offsets (dx n and dyn). 
Ideally in marine 2-D, the streamer is straight, counter the vessel direction, and follows
the vessel path along survey line. Therefore, the streamer azimuth will be equal to
1800 + vessel azimuth. However, sea currents may impose the streamer will be deviated
from the survey line. It is possibly occurred, but can be tolerated if the feathering angle
is not more than 100.
 
Then, we need to calculate exactly the streamer azimuth with feathering angle as a
correction factor, this value will change to be equal 180 0 + vessel azimuth ± feathering
angle. If streamer is deviated clockwise of survey line thus feathering angle (α f) will be
positive (+αf), and vice versa, negative (-αf) counter clockwise of survey line.

 Figure-4.Streamer direction and channel position.


Below is an example of group locations (gx,gy) computation for 2089 shots with 96
channels (200544 traces).Becareful that ns is set from 1 to total number of shots.
This is may different with FFID. Each number is replicated for every channel
number.

Table-1.Source locations (sx,sy), offsets, and group channel locations (gx,gy)

After obtaining source locations (sx,sy), offset, and group channel locations (gx,gy), the
final steps of geometry setting is to set cdp bin number and fold coverage. 

Figure-5.(a) CDP bins chart, (b) geometry configuration, (c) fold graph, (d) CMP & CDP
diagram.
The following table is an example of cdp bin number computation for 2089 shots with 96
channels (200544 traces). 
Table-2.CDP bin number

Simply, fold coverage describes how many different shots and receivers (channel) have
the same cdp bin number. This is a method to require the continuous subsurface
coverage. Normally, a total number of active channels per spread provides half (1/2)
spread of subsurface coverage. Therefore:

This means that each full fold CDP has a total 48 traces (folds) from 48 different shots
with 48 different receivers. Full fold CDPs have approximately 6.93 of S/N, while low
fold CDPs have S/N less than 6.93.

INPUT & OUTPUT DATA:


INDATA    :
* data in SU format  (e.g., data_edit.su )
* UKOOA P1/90 navigation file
 
OUTDATA    :
* data in SU format (e.g., data_edit_geomset.su)
* geometry header in binary format (e.g., geomheader.bin)
* geometry header in ASCII format (e.g., geomheader.txt)
* fold coverage (e.g., foldcoverage.txt)

COMMANDS & PARAMETERS:


The geometry steps are:
* Put data (e.g., data_edit.su) & P1/90 navigation file into a project directory.
* Open the source code 03.geomset.sh by using text editor in Red Hat Linux or Ubuntu.
* Set DATADIR for project directory (line-7), in where the seismic datasets are located.
* Define INDATA, OUTDATA, and HDR (line-10 & 12).
* Run a command in terminal: sh 03.geomset.
* The terminal will have two choices: 1. Continue to process the geometry setting and 2.
Don't process the geometry setting. Type 1 to process geometry setting.
* The process will checks the data and displays the number of shots, number of
receivers per shot, and number of traces in terminal.
* Then, insert shot interval in m.
* Insert receiver (group) interval in m.
* Insert near offset in m.
* Insert vessel azimuth in degree.
* Insert feathering angle in degree (not more than 10 or less than -10, positive (+) sign if
streamer deviated clockwise of survey line,and vice versa).
* The process will load source coordinate locations from P1/90 navigation file.
* Then, regular offset, group (channel) coordinate locations, cmp coordinate locations
will be computed.
* Finally, the cdp bin numbers and fold coverages will be calculated.

The mandatory shell scripts and SU commands with required parameters in


source code 03.geomset.sh are as follow. 
* Load ffid, sx and sy database from P1/90 navigation file.

mv *.190 p190.190
gawk '{
FIELDWIDTHS="1 12 3 1 1 1 6 10 11 9 9 6 3 6 1"
while(getline<"p190.190"){
if($1=="S" || $1=="A" || $1=="Z"){
ep=$7
ffid[ep]=$7
sx[ep]=$10
sy[ep]=$11
wd[ep]=$12
print ffid[ep],sx[ep],sy[ep]}}}' p190.190 > nav.txt
  The uses of above shell script are as follow:- Loading and renaming a P1/90 file.
- Setting fieldwidths for 15 items. 
- Identifying the record ID (column-1) in file p190.190 whether the “S” or “A” or “Z” is
available. (S=Centre of Source, A=Antenna Position, Z= Other, defined in H0800).
- If one of them is available, thus FFID, sx, sy, and water depth will be defined as 7th
item, 10th item, 11st item, and 12nd item which are associated with fieldwidths 6, 9, 9,
and 6.
- These databases will finally be exported into an ASCII file (e.g., nav.txt).  

* Replicate FFID, sx and sy for total number of traces, then sort the data normally based
on FFID (ascending order). Combine them with vessel azimuth.
trace=`seq 1 1 $ntr`
>avessel.txt
for i in $trace
do
echo $vessel >>avessel.txt
done

>source.txt
while [ $rmin -le $rmax ]
do
awk '{printf"%.d\t %.1f\t %.1f\n",$1,$2,$3}' < nav.txt >>source.txt
rmin=`expr $rmin + 1`
done
sort -k 1n < source.txt > shotlocs.txt
paste shotlocs.txt avessel.txt > shot.txt
 
* The following command is used to compute streamer azimuth for number of traces per
shot.
streamer=`bc -l <<END
    180 + $vessel + $feather
END`
rmin=1
>astreamer.txt
while [ $rmin -le $rmax ]
do
echo $streamer >>astreamer.txt
rmin=`expr $rmin + 1`
done
* Calculate regular offsets for number of traces per shot, combine these regular offsets
with streamer azimuths, and compute the perpendicular offsets or vector components
dx and dy. Combine them again, and replicate for total number of traces (the sequence
seems like Table-1).

# Compute regular offsets


minoff=$near
maxoff=`bc -l <<END     
    $near + $dr * ( $rmax - 1 )
END`
seq $minoff $dr $maxoff > offreg.txt

# Compute perpendicular offsets


paste offreg.txt astreamer.txt > offreg_astreamer.txt
awk '{printf"%.4f\n",$1*cos($2/57.2958)}'< offreg_astreamer.txt > dxn.txt
awk '{printf"%.4f\n",$1*sin($2/57.2958)}'< offreg_astreamer.txt > dyn.txt

seq 1 1 $rmax > chan.txt


paste chan.txt astreamer.txt offreg.txt dxn.txt dyn.txt > offset.txt
>group.txt
while [ $smin -le $smax ]
do
awk '{printf"%d\t %.1f\t %.1f\t %.4f\t %.4f\n",$1,$2,$3,$4,$5}' < offset.txt >>group.txt
smin=`expr $smin + 1`
done
 
* Combine shot.txt (ffid, sx, sy, vessel azimuth) with group.txt (channel number,
streamer azimuth, offset, dx, dy) and calculate the group channel locations (gx=sx-dx;
dy=sy-dy). Then, set cmp coordinate locations cmpx and cmpy as (sx+gx)/2 and
(sy+gy)/2, respectively.
# Setup group locations
echo "Setup group locations..."
paste shot.txt group.txt > geom.txt
awk '{printf"%.1f\t %.1f\n",($2-$8),($3-$9)}'< geom.txt > reclocs.txt

paste geom.txt reclocs.txt > geomheader.txt


mv geomheader.txt geom.txt

# Setup cmp locations


echo "Setup cmp locations..."
awk '{printf"%.1f\t %.1f\n",($2+$10)/2,($3+$11)/2}'< geom.txt > cmplocs.txt
* The following script is used to set cdp bin number based on theory.
a=`bc -l <<END     
    ( $ds / $dr ) * 2
END`
b=`bc -l <<END   
    $a - 1
END`

>cdp.txt
for i in `seq 1 $smax`
do
fcdp=`echo "$a * $i - $b" | bc -l`
   for j in `seq $rmax -1 1`
   do
   echo "$fcdp + $j - 1" | bc -l | awk '{printf"%.1d\n",$1}' >>cdp.txt
   done
done
* Extract sx, sy, gx, gy, offset, and cdp from combined file geomheader.txt into
header.txt, make duplicate in binary format, then set up trace headers with those
databases by using SU command “sushw”. It is also necessary to set up scalar
coordinate, scalar elevation, and coordinate unit with value 1 into trace headers.
awk '{printf"%.1f\t %.1f\t %.1f\t %.1f\t %.1f\t %d\n",$2,$3,$10,$11,$7,$12}' < geomheader.txt > header.txt
a2b < header.txt n1=6 > $HDR
sushw < $INDATA infile=$HDR key=sx,sy,gx,gy,offset,cdp | sushw key=scalco,scalel,counit a=1,1,1 >
$OUTDATA

Below are additional shell scripts and SU commands with required parameters in
source code 03.geomset.sh. 
* Extract shot locations (sx,sy), group locations (gx,gy), and cmp locations (cmpx,cmpy)
into binary files, combine them, then plot and export into post-script image format.
awk '{printf"%2.1f\t %2.1f\n",$2,$3}' < geom.txt | a2b > shotlocs.bin
awk '{printf"%2.1f\t %2.1f\n",$10,$11}' < geom.txt | a2b > reclocs.bin
awk '{printf"%2.1f\t %2.1f\n",$1,$2}' < cmplocs.txt | a2b > cmplocs.bin
cat shotlocs.bin reclocs.bin cmplocs.bin |
psgraph n=$ntr,$ntr,$ntr linecolor=red,blue,green linewidth=0,0,0\
labelsize=12 titlesize=12 grid1=solid grid2=solid gridcolor=gray \
marksize=10,5,1 mark=open square,open circle,open circle \
gridwidth=0 wbox=14 hbox=6 \
label1=mEasting label2=mNorthing title=Shot-Receiver-CMP Location > 03.Geometry-
Shot_Receiver_CMP_Locs.eps
* Create a chart of cdps vs offsets by using SU command “suchart”, then export into
post-script image format.
suchart < $OUTDATA key1=cdp key2=offset > plotdata outpar=par
psgraph < plotdata par=par linewidth=0 mark=0 marksize=1 labelsize=12 titlesize=12 linecolor=blue \
wbox=14 hbox=6 > 03.Geometry-Bin_Chart.eps title="CMP Bin Chart of $dcdp m Midpoint" &
* Sort the OUTDATA into cdp with offset and count how many folds or traces within
each cdp into foldcoverage.txt by using SU command “sukeycount”. Create a chart of
cdps vs nhs by using SU command “suchart”, then export into post-script image format.
susort < $OUTDATA cdp offset | sukeycount key=cdp > foldcoverage.txt
susort < $OUTDATA +cdp|sustack|suchart key1=cdp key2=nhs > plotdata2 outpar=par2
psgraph < plotdata2 par=par2 linewidth=0.5 mark=0 marksize=1 labelsize=12 titlesize=12 linecolor=red \
x2beg=0 x2end=70 wbox=14 hbox=6 > 03.Geometry-Fold_Coverage.eps title="Fold Coverage of $dcdp
m Midpoint" &
 Sort the OUTDATA into cdp with offset, apply normal move out correction with initial
velocity, stack then plot and export into post-script image format. This is used to create
initial stacked data as QC of geometry setting.
susort < $OUTDATA cdp offset | sunmo vnmo=1600 | sustack | suximage perc=95 label1="Time (s)"
label2="CDP No." \
windowtitle="QC Stack - After Geometry Setting" title="QC Stack - After Geometry Setting" &
susort < $OUTDATA cdp offset | sunmo vnmo=1600 | sustack | supsimage perc=95 label1="Time (s)"
label2="CDP No." \
title="Geometry Setting-QC Stack" wbox=10 hbox=15 threecolor=1 wrgb=1.0,0,0 grgb=1.0,1.0,1.0
brgb=0,0,1.0 verbose=0 > 03.Geometry-QC_Stack.eps

PRINT OUT:

 Figure-6.Shots (red lines), Groups (blue lines), and CMPs (green lines) coordinate
locations.
Figure-7.CMP bin charts (stacking charts) .

Figure-8.Fold coverage graphs.

Figure-9.QC Stack-After Geometry Setting. 

The following is range of trace header values from output SU data format (OUTDATA).

200544 traces:
tracl        297 205016 (297 - 205016)
tracr    297 205016 (297 - 205016)
fldr         101 2189 (101 - 2189)
tracf        1 96 (1 - 96)
ep           101 2189 (101 - 2189)
cdp          1 4272 (96 - 4177)
cdpt         3 98 (3 - 98)
trid         1
nhs          1
offset       33 1220 (33 - 1220)
selev        -9990000
sdepth       30000
scalel       1
scalco       1
sx           xxx386 xxx281 (xxx281 - xxx386)
sy           xxx6987 xxx9081 (xxx6987 - xxx9081)
gx           xxx414 xxx313 (xxx309 - xxx418)
gy           xxx6334 xxx9063 (xxx6969 - xxx8429)
counit       1
ns           3201
dt           1000
gain         3
afilf        400
afils        370
lcf          5
hcf          400
lcs          12
hcs          370
year         2013
Source coordinates (sx & sy), group coordinates (gx & gy), coordinate scale (scalco), elevation scale
(scalel), coordinate unit (counit), and cdp have been updated into trace headers. In the next stage, we
need to update the source & receiver water depth, datum elevation, and also delay correction (Part4:
Header Static & Delay Correction, *will be continued soon*). 

You might also like