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.
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 (dxn 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 1800 + 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.
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.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
- 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
>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
180 + $vessel + $feather
>astreamer.txt
while [ $rmin -le $rmax ]
do
echo $streamer >>astreamer.txt
rmin=`expr $rmin + 1`
done
# 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
minoff=$near
maxoff=`bc -l <<END
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
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
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.
END`
b=`bc -l
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
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
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
* 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.
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
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" &
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" &
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" &
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" &
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
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
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*).
SOURCE CODE:
Bellow is complete shell script of 03.geomset.sh.
#!/bin/sh
# filename: 03.geomset.sh
# GEOMETRY SETTING OF 2D MARINE
SEISMIC
# Created by geophenry124
# Set directory
DATADIR=/media/Data/data/marine
# Define input-output data
INDATA=$DATADIR/data_edit.su
OUTDATA=$DATADIR/data_edit_geom.su
HDR=$DATADIR/geomheader.bin
# PROCESS 3: GEOMETRY SETTING
echo "PROCESS 3: GEOMETRY
SETTING"
echo ""
printf "Job started
`todays_date` at `time_now` \n"
echo ""
echo "Please select: Continue to
process or don't process the geometry setting"
option=
echo "Choose option:"
echo "1. Continue to process the
geometry setting"
echo "2. Don't process the
geometry setting"
echo "*press Enter to
exit*"
echo -n "Insert the option (1 or
2):"
read option
case $option in
"1") echo "Your option
is: Continue to process the geometry setting"
echo ""
#===============================================================================
# Get header info
#echo "Range of header values
for $INDATA:"
#surange < $INDATA
echo ""
echo "Get total number of
sampling time..."
nt=`sugethw < $INDATA key=ns | sed
1q | sed 's/ns=//' | awk '{print $1}'`
echo "Total number of sampling
time = $nt sampling"
echo ""
# Checking first and last shot number
echo "Checking first and last
shot number..."
minep=`sugethw < $INDATA
output=geom key=ep | sort -n | head -1 | awk '{print $1}'`
echo "First shot number =
$minep"
maxep=`sugethw < $INDATA
output=geom key=ep | sort -n | tail -1 | awk '{print $1}'`
echo "Last shot number =
$maxep"
nshot=`bc -l <<END
$maxep - $minep + 1
END`
echo "Number of shot =
$nshot"
echo ""
# Checking near and far trace
echo "Checking near and far
trace..."
mintracf=`sugethw < $INDATA
output=geom \
key=tracf | sort -n | head -1 | awk '{print $1}'`
key=tracf | sort -n | head -1 | awk '{print $1}'`
echo "Near trace =
$mintracf"
maxtracf=`sugethw < $INDATA
output=geom \
key=tracf | sort -n | tail -1 | awk '{print $1}'`
key=tracf | sort -n | tail -1 | awk '{print $1}'`
echo "Far trace =
$maxtracf"
nrec=`bc -l <<END
$maxtracf - $mintracf + 1
END`
echo "Number of receiver =
$nrec"
echo ""
# Compute total number of trace
echo "Get total number of
trace..."
ntr=`bc -l <<END
$nshot * $nrec
END`
echo "Total number of trace =
$ntr traces"
echo ""
# Setup geometry parameters
echo "Insert Geomtery
Parameters"
echo ""
smin=1
smax=$nshot
ds=
echo "Please insert shot interval
in m"
echo -n "Insert shot interval in
m:"
read ds
echo ""
echo "Shot interval is $ds
m"
echo ""
rmin=1
rmax=$nrec
dr=
echo "Please insert receiver
(group) interval in m"
echo -n "Insert receiver (group)
interval in m:"
read dr
echo ""
echo "Receiver (group) interval
is $dr m"
echo ""
near=
echo "Please insert near offset
in m"
echo -n "Insert near offset in
m:"
read near
echo ""
echo "Near offset is $near
m"
echo ""
vessel=
echo "Please insert vessel
azimuth in degree"
echo -n "Insert vessel azimuth
in degree:"
read vessel
echo ""
echo "Vessel azimuth is $vessel
degrees"
echo ""
feather=
echo "Please 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"
echo -n "Insert feathering angle
in degree:"
read feather
echo ""
echo "Feathering angle is
$feather degree(s)"
echo ""
#===============================================================================
# STEP 1: SETUP GEOMETRY
echo "STEP 1: SETUP
GEOMETRY"
echo ""
# Load p190 navigation file
echo "Load p190 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
mv *.190 nav.190
# Setup shot azimuth & locations
echo "Setup shot azimuth &
locations..."
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
# Setup streamer azimuth
echo "Compute streamer
azimuth..."
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
# Compute regular offsets
echo "Compute reqular
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
# 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
# Plot shot,group,and CMP locations
echo "Plot shot,group,and CMP
locations..."
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
title=Shot-Receiver-CMP Location > 03.Geometry-Shot_Receiver_CMP_Locs.eps
# Housekeeping
rm nav.txt avessel.txt source.txt
shotlocs.txt shot.txt chan.txt astreamer.txt offreg.txt
rm dxn.txt dyn.txt offset.txt group.txt
reclocs.txt cmplocs.txt offreg_astreamer.txt
echo "Finish..."
#===============================================================================
echo ""
# STEP 2: CDP BINNING
echo "STEP 2: CDP BINNING"
echo ""
# Compute CDP bin number
echo "Compute CDP bin number,
please wait..."
dcdp=`bc -l <<END
$dr / 2
END`
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
# Setup geometry into header
echo "Setup geometry into
header..."
paste geom.txt cdp.txt >
geomheader.txt
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
key=scalco,scalel,counit a=1,1,1 > $OUTDATA
# Plot CMP bin chart
echo "Plot cmp bin
chart..."
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" &
titlesize=12 linecolor=blue wbox=14 hbox=6 > 03.Geometry-Bin_Chart.eps \
title="CMP Bin Chart of $dcdp m Midpoint" &
# Extract and plot the fold coverage
echo "Extract and plot the fold
coverage..."
susort < $OUTDATA cdp offset |
sukeycount key=cdp > foldcoverage.txt
susort < $OUTDATA
+cdp|sustack|suchart key1=cdp \
key2=nhs > plotdata2 outpar=par2
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" &
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" &
# Display QC stack after setting
geometry
echo "Display QC stack after
setting geometry..."
susort < $OUTDATA cdp offset |
sunmo vnmo=1600 | sustack | suximage \
perc=95 label1="Time (s)" label2="CDP No." \
perc=95 label1="Time (s)" label2="CDP No." \
windowtitle="QC Stack - After
Geometry Setting" \
title="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." \
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
wrgb=1.0,0,0 grgb=1.0,1.0,1.0 brgb=0,0,1.0 verbose=0 > 03.Geometry-QC_Stack.eps
# View a new range of header values
echo "Range of header values for
$OUTDATA :"
surange < $OUTDATA
echo ""
rm geom.txt cdp.txt header.txt par
par2 plotdata plotdata2
;;
"2") echo "Your option
is: Don't process the geometry setting"
OUTDATA=$INDATA
;;
*) exit 1 ;;
esac
echo ""
printf "Job finished
`todays_date` at `time_now` \n"
echo "Finish..."
#===============================================================================
echo ""
echo "NEXT PROCESS: HEADER
STATIC AND DELAY CORRECTION"
exit
4 comments:
Agan Jibrut yang terhormat,
Bang Jibrut, tolong angkat telponnya dong mas dari kami yaa hehehe
Urgent! :)]
DTC
Gan,
Ente sibuk ga besok gan? Besok kita kopi darat di kantor ente ya gan. Ada hal penting yang perlu di bicarain ya gan.
Regards,
aganwati dtc
This below site is for Geophysics solution, please check it
https://gpsurya.blogspot.com/
Thanks and I have a swell offer: How Much House Renovation Cost Philippines house renovation courses
Use these emoticons on your comment. :)) :)] ;)) ;;) :D ;) :p :(( :) :( :X =(( :-o :-/ :-* :| 8-} ~x( :-t b-( :-L x( =))
Post a Comment