Geometry setting on 240 ch. streamer data

University of Bergen (UoB)
Dept. of Earth Science
Allé gt. 41, N-5007 Bergen, Norway
Tel: (+47) 5558 3600
Fax: (+47) 5558 3660
http://www2.geo.uib.no
3 Feb 2006 (OM)


Content


Introduction

These two systems works together during seismic data acqusition:

Recording system Survey computer
  • Western-Geco (WG) TriAcq, Sun SS1000, Solaris
  • Recording to DLT-IV tape, as WG "Tape Image Format" (TIF)
  • Recording format: SEG-D Rev. 2

 Geometry setting on seismic field data is called "an often unpleasant task" in this Seismic Unix manual. There is some truth to this, unfortunately ...

What complicates matters are these possible error conditions:
  • Navigation system:
    • Missing shotpoints (SP). 
    • Duplicate SP.
    • Log file recording of SP parameters stops, but systems works normally in other respects. Missing SP positions must be interpolated.
  • Recording system:
    • Missing shotpoints
In the following all procedures are explaned. In all sections we use Line 25/SVALEX-2005 as example.

The data- and processing flow is shown below.



Fig. 1. Geometry setting SEG-Y data: Processing flow.


1. Establish link between seismic recording number and shotpoint number

Prior to the survey, a shotpoint geometry is set when line start- and endpoints, and shot interval, is specified. When actually shooting the line, the survey computer will continuously read ship's position from GPS, and compare it to pre-determined shotpoint positions. When certain criteria are met, the survey computer issues a shot command that activates seismic source and recording system.

The ship is steered manually. Thus the position of actual shotpoints will deviate from those set by pre-determined geometry. It's the real shotpoint positions that will be used in subsequent geometry setting procedure. A map showing real shotpoint positions can look like this.


Fig. 1. Map of real shotpoint locations (click to enlarge).

One piece of information is crucial. The relation between seismic dataset and shotpoint number must be established - otherwise the locations of the seismic traces are unknown. The problem is that shotpoint number is not recorded in the seismic datafiles. This information is only available in logfile that the TriAcq recording system generates. The seismic datasets contains a file counter that increments for each recording. A missing shotpoint goes unnoticed, as fas as the seismic recording is concerned.

The TriAcq log file that ties file counter and shotpoint number can lok like this (link to file):
03:12:13 WN EVGEN    Norstar drifting 0.401977
03:12:32 IN RCCONTR  Stream 1: Shot 113, File 113 recorded on /dev/rmt/1n
03:12:54 IN RCCONTR  Stream 1: Shot 114, File 114 recorded on /dev/rmt/1n
03:12:57 WS EVGEN    Wrong checksum, discarded norstar block
03:13:08 IN STRIN    No event to shot at seisbase time 1104200694
03:13:19 WN EVGEN    Norstar drifting 0.489014
03:13:19 IV EVGEN    Missed some shotnumber(s) between 114 and 116
03:13:30 WS STRCONTR Shot# 116: 1 Status Word parity errors
03:13:38 IN RCCONTR  Stream 1: Shot 116, File 115 recorded on /dev/rmt/1n
03:13:40 WN EVGEN    Norstar drifting -0.754992
03:13:52 WS STRCONTR Shot# 117: 1 Status Word parity errors
03:14:00 IN RCCONTR  Stream 1: Shot 117, File 116 recorded on /dev/rmt/1n
03:14:21 IN RCCONTR  Stream 1: Shot 118, File 117 recorded on /dev/rmt/1n
The important sections in yellow. Notice that shotpoint 115 is missing.
 
We extract shot/file pairs using the script extract_fldr_ep.py. The script is invoked by typing e.g.
./extract_fldr_ep.py Line25-0_27aug2005_0249
where Line25-0_27aug2005_0249 is the name of the TriAcq logfile.

Two files will now be generated by adding extensions to the input file:
  1. Line25-0_27aug2005_0249.fldr_ep
  2. Line25-0_27aug2005_0249.report
The first contains a list of file/shotpoint pairs. E.g., from the listing above, these pairs are extracted:
113 113
114 114
115 116
116 117
117 118
118 119
The file is given extension .fldr_ep. 'fldr' and 'ep' refers to SEG-Y trace headers. 'fldr' (field record number) here means file number, and 'ep' (energy point) means shotpoint number.

The second file reports all errors:
# Extracting File No (assigned by Triack recording) and Shotpoint No (assigned by Survey Computer), from: Line25-0_27aug2005_0249
# Checking for duplicate and missing shots and files
FN=53: First FileNo (Assigned by TriAcq when writing SEG-D data to tape)
SP=53: First shotpoint (from Survey Computer)
SP=116: Missing shot
SP=342: Missing shot
SP=441: Missing shot
SP=484: Missing shot
SP=518: Missing shot
SP=638: Missing shot
SP=727: Last shotpoint (from Survey Computer)
FN=721: Last FileNumber (Assigned by TriAcq when writing SEG-D data to tape)
The report will specify the SP where faults were detected. So, at SP=116, it was found that we had a missing shotpoint (115). This is the most common error. The following procedures will take care of this error.

Let's move on to the next stage.


2. Extract SEG-D shot files from tape

Seismic data are stored on DLT-IV tapes while shooting.


DLT tape drive

DLT-IV tape cartridge


Extract all shots on tape to SEG-D files (one file for each shot) using the script read-DLT-tape.sh.
Most likely this has already be done during the survey.

First make directory where SEG-D files will be placed. Copy script to this directory. Invoke it by typing:
./read_DLT-tape.sh 53 721
The parameters are first and last file numbers, respectively. We refer to example in section 1 above.

Check that you've got a long list of files. 


Fig. 2. Extracting SEG-D files from DLT-tape; one file for each shot.

 Using mc (Midnight Commander) , it's easy to veryfy that datafile53.dat is the first file, and that datafile721.dat is the last one:


Fig. 3. Verifying that datafile721 was the last file extracted.

In addition to missing shotpoints we can also encounter (much more rarely) a situation with missing files. In that case files with highest number(s) will have zero size. (This will be treated in a leter version of this document).


3. Convert SEG-D files to SU (Seismic Unix) file

Next stage is to assemble all individual SEG-D shot files into one Seismic Unix file. The Seismic Unix file format is derived from SEG-Y - the difference is explained here.

First examine Line25/SVALEX-2005 log sheet to determine the exact beginning/end shotpoints. Click to enlarge:


Fig. 4. Examine logsheet to determine first/last shotpoint number (click to enlarge).

We see that SP=53 is SOL (Start of Line), and SP=726 is EOL (End of Line). In section one, however, we found that last SP was 727. This means that one excess shot was recorded. And here's what important: SP=726, the EOL shotpoint, corresponds to File or recording number 720.  This is the effect of missing shotpoints.

Convert SEG-D files to SU file using the script segd2su.sh. First create a directory that will hold the Seismic Unix file. It's a good idea to first ensure that you have enough space on the disk; type df -h in terminal window. The Line-25 SU file will consume about 3.8 GByte.

Copy script to this directory. Open script in editor and change relevant parameters:
path=/srv/www/htdocs/SVALEX-2005/data/
line=line25        # set directory where data files are stored
first=53           # set first file number
last=720           # set last file number
tape=./svalex-2005-$line-$first-$last.su
ns=6144            # set number of samples per trace
dt=2000            # set sample inverval (microseconds)
ntrpr=240          # set number of traces per record
Invoke the script by typing
./segd2su
For Line25/SVALEX-2005 tt will take about 5 minutes to complete the script on a 2.8 MHz P4 (type cat /proc/cpuinfo to see MIPS rating of your machine).

The last lines will tell the total number of traces and shots converted:
segdread:  160320 traces from tape
segdread: 668 shots (160320 traces) from tape
segdread: tape closed successfully
Done!
olem@linux:/DATA/SVALEX-2005/Line25>     
We now have a large Seismic Unix File:
olem@linux:/DATA/SVALEX-2005/Line25> ls -l svalex-2005-line25-53-720.su
-rw-r--r--  1 olem users 3978501120 2006-02-01 14:01 svalex-2005-line25-53-720.su
The Seismic Unix SURANGE command will show which traceheaders are in use, and their min/max range.
olem@linux:/DATA/SVALEX-2005/Line25> surange < svalex-2005-line25-53-720.su
160320 traces:
 fldr=(53,720)  tracf=(1,240)  trid=1 ns=6144 dt=2000
 year=2005 day=239 hour=(2,6)  minute=(0,59)  sec=(0,59)
This is what we expect. 'fldr' from 53 to 720, 'tracf' from 1 to 240.


4. Extract trace header parameters from SU (Seismic Unix) file

We now need to extract 'fldr' and 'tracf' traceheaders from the SU file. This information, together with the file/shotpoint pairs we extracted from the TriAcq log file in section 1, will later be used to select proper lines in the geometry file.

Extract 'fldr' and 'tracf' and store in file line25-fldr-tracf.dat by typing:
sugethw < svalex-2005-line25-53-720.su key=fldr,tracf output=geom > line25-fldr-tracf.dat
The output file will hold two columns of values, like this, showing the seven first lines:
53 1
53 2
53 3
53 4
53 5
53 6
53 7
Next, look for:
  • Duplicate or missing fldr
  • Duplicate or missing tracf
by using the script check_fldr_tracf.py (assuming you have copied the script to the SU file directory):
olem@linux:/DATA/SVALEX-2005/Line25> ./check_fldr_tracf.py line25-fldr-tracf.dat
****************************************************************************************************
Checking fldr and tracf extracted from SU file trace headers.
Looking for duplicate and missing fldr and tracf.
Program will halt if errors are detected. You must sort out problems before you continue.
****************************************************************************************************
fldr=53: First fldr found
fldr=720: Last fldr found
No of traces: 160320
Everything OK so far!


5. Replace 'fldr' by 'ep'

Next stage is to replace 'fldr' we got in section 4, by 'ep' - or shotpoint - we found in section 1. The goal is to tie each shot to a specific shotpoint. Use the script replace-fldr-by-ep.py:

./replace-fldr-by-ep.py Line25-0_27aug2005_0249.fldr_ep line25-fldr-tracf.dat > line25-tracl-fldr-tracf.dat

In more detail, the two input files are like this:

INPUT FILES

 Pairs of FLDR, EP
Extracted from TriAcq log file
Line25-0_27aug2005_0249.fldr_ep
FLDR, TRACF
 From Seismic Unix file
line25-fldr-tracf.dat
53 53
54 54
55 55
56 56
57 57
58 58
59 59
60 60
..
53 1
53 2
53 3
53 4
53 5
53 6
53 7
53 8
53 9
53 10
..

For each fldr in the file to the left, collect all tracf in file to the right, where the two fldr are identical.
Replace fldr by ep. Finally, add tracl (counting traces) and write to file. The output file will be:

OUTPUT FILE

 TRACL, FLDR, TRACF
 line25-tracl-fldr-tracf.dat
1 53 1
2 53 2
3 53 3
4 53 4
5 53 5
6 53 6
7 53 7
8 53 8
9 53 9
10 53 10
..
..
14878 114 238
14879 114 239
14880 114 240
14881 116 1
14882 116 2
14883 116 3

The lower part of the output file listing shows how missing SP=115 makes itself felt.

In the next stage we make a geometry file based on all real shotpoints - independent of any missing recordings. In the final stage we modify this geometry file to take missing shotpoints into account.


6. Nominal geometry

This section is based on work by Dr. Bent Ole Ruud.

Make nominal geometry based on shotpoint file. First remove any excess shotpoints in the start and end of line (ref. section 1). Then extract shot point data (sp, sx, sy) from navigation data, assuming positions are in UTM format (the search pattern /^0/ will select lines that start with zero - here is a description of awk seach pattern):

awk '/^0/ {print $1, $4, $5}' line25-navdata-fixed.dat > line25-spsxsy.dat

Make a new file containing nominal geometry, with these parameters:
      shot number, channel number, sx, sy, gx, gy, cdp, offset
   by running the program 'geometry' which computes receiver positions, and CMP numbers (download Fortran source code, or binary Linux version). Note that cubic spline functions are in separate source file; zspl3 and spl3, from Cheney and Kincaid: Numerical Mathematics and Computing, 2nd ed.
   Example of running the interactive program 'geometry', with user entries in yellow:

olem@linux:/DATA/SVALEX-2005/Line25> ./geometry 
 Name of file with UTM coordinates of shot points:
line25-spsxsy.dat
 First shot is  53
 Last shot is  726
 Distance between antenna and source (m):
70
 Distance between source and first hydrophone group (m):
125
 Distance between hydrophone groups (m):
12.5
 Number of hydrophone groups:
240
 Distance between CMPs (m):
 (Typically half the distance between hydrophone groups)
6.25
 CMP number below first shot point:
1000
 Name of output file:
line25-nominal-geometry.dat

Output file will look like this:

   53   1  478987 8679463  478870 8679421   979  125
   53   2  478987 8679463  478858 8679417   978  137
   53   3  478987 8679463  478846 8679412   977  150
   53   4  478987 8679463  478834 8679408   976  162
   ..
  114 238  481852 8680511  478953 8679450  1230 3087
  114 239  481852 8680511  478941 8679446  1229 3100
  114 240  481852 8680511  478929 8679442  1228 3112
  115   1  481900 8680525  481781 8680487  1475  125
  115   2  481900 8680525  481769 8680483  1474  137
  115   3  481900 8680525  481757 8680478  1473  150
  ..
  115 238  481900 8680525  479000 8679467  1238 3087
  115 239  481900 8680525  478988 8679463  1237 3099
  115 240  481900 8680525  478976 8679459  1236 3112
  116   1  481947 8680540  481828 8680503  1483  125
  116   2  481947 8680540  481816 8680499  1482  137
  116   3  481947 8680540  481804 8680495  1481  150

7. Real geometry

Nominal geometry file will have entries for all possible shotpoints. We have to remove entries that are associated with missing shotpoints. The script merge.py will accomplish this task. Invoke the script by typing:

./merge.py line25-tracl-fldr-tracf.dat line25-nominal-geometry.dat > line25-real-geometry.dat

Output (still line 25) looks like this - TRACL, FLDR (=EP), SX, SY, GX, GY, CDP, OFFSET:

1 53 1 478987 8679463 478870 8679421 979 125
2 53 2 478987 8679463 478858 8679417 978 137
3 53 3 478987 8679463 478846 8679412 977 150
4 53 4 478987 8679463 478834 8679408 976 162
..
14878 114 238 481852 8680511 478953 8679450 1230 3087
14879 114 239 481852 8680511 478941 8679446 1229 3100
14880 114 240 481852 8680511 478929 8679442 1228 3112
14881 116 1 481947 8680540 481828 8680503 1483 125
14882 116 2 481947 8680540 481816 8680499 1482 137
14883 116 3 481947 8680540 481804 8680495 1481 150

Notice how missing SP=115 manifests itself.


8. Convert to SEG-Y

First convert real geometry to binary format:

a2b n1=9 < line25-real-geometry.dat > line25-real-geometry.bin

Now paste real geometry into Seismic Unix file:

sushw key=tracl,fldr,tracf,sx,sy,gx,gy,cdp,offset infile=line25-real-geometry.bin < svalex-2005-line25-53-720.su > tmp.su

Now prepare the EBCDIC header file - here is the version we will use for line 25. The parameters that varies are in yellow.

C 1 CLIENT  SVALEX-2005 LEG1     COMPANY  IFG/UIB              CREW NO
C 2 LINE 25         AREA ISFJORDEN              MAP ID
C 3 REEL NO           DAY-START OF REEL     YEAR 2005 OBSERVER
C 4 INSTRUMENT: MFG GECO       MODEL TRIACQ     SERIAL NO
C 5 DATA TRACES/RECORD 240    AUXILIARY TRACES/RECORD         CDP FOLD
C 6 SAMPLE INTERNAL 2 MS    SAMPLES/TRACE 6144  BITS/IN      BYTES/SAMPLE 2.5
C 7 RECORDING FORMAT SEGD-2 FORMAT THIS REEL SEG-Y  MEASUREMENT SYSTEM
C 8 SAMPLE CODE: FLOATING PT     FIXED PT     FIXED PT-GAIN     CORRELATED
C 9 GAIN  TYPE: FIXED     BINARY     FLOATING POINT     OTHER
C10 FILTERS: ALIAS     HZ  NOTCH     HZ  BAND    -     HZ  SLOPE    -    DB/OCT
C11 SOURCE: TYPE            NUMBER/POINT        POINT INTERVAL
C12     PATTERN:                           LENGTH        WIDTH
C13 SWEEP: START     HZ  END     HZ  LENGTH      MS  CHANNEL NO     TYPE
C14 TAPER: START LENGTH       MS  END LENGTH       MS  TYPE
C15 SPREAD: OFFSET        MAX DISTANCE        GROUP INTERVAL
C16 GEOPHONES: PER GROUP     SPACING     FREQUENCY     MFG          MODEL
C17     PATTERN:                           LENGTH        WIDTH
C18 TRACES SORTED BY: RECORD     CDP     OTHER
C19 AMPLITUDE RECOVEY: NONE      SPHERICAL DIV       AGC    OTHER
C20 MAP PROJECTION: UTM (WGS84)        ZONE ID 33X    COORDINATE UNITS M
C21 PROCESSING:
C22 PROCESSING:
C23
C24
C25
C26
C27
C28
C29
C30
C31
C32
C33
C34
C35
C36
C37
C38
C39
C40 END EBCDIC

Export to SEG-Y by typing:

segyhdrs ns=6144 dt=2000 ntrpr=240 bfile=binary hfile=/dev/null
/bin/cp ascii.header header
segywrite tape=SVALEX-2005-line25.segy verbose=1 vblock=240 endian=0 conv=1 < tmp.su

Before copying this SEG-Y file to DVD or other media, it's useful to generate MD5 checksum so that receiver can veryfy that file integrity is intact. Use this command:

md5sum SVALEX-2005-line25.segy > SVALEX-2005-line25.segy.md5

To verify, write:

md5sum -c SVALEX-2005-line25.segy.md5

NOTE:

  • endian=0 assumes you are on a little-endian machine. (What's this?)
  • conv=1 will convert from "native" floating point format (that means IEEE-format on modern computers), to IBM style floats.
    This is related to a parameter in the SEG-Y Binary Reel Header (Byte #25, 26): "Data sample format code"; '1' means 32-bit IBM floating point.
    SEG-Y Rev1 has introduced code '5', which means 32-bit IEEE floating point.