Back to SIOSEIS Examples.          Go to the list of seismic processes.          Go to SIOSEIS introduction.

```SEG-Y Rev 1 specifies four coordinate units (short word 45, bytes 89-90):
1 = length (meters or feet)
2 = seconds of arc
3 = decimal degrees
4 = degrees, minutes, seconds (DDDMMSS.ss)

Rev 0 only allowed 1 and 2 because 32 bit integers were preferred (the only
floating point allowed was IBM).  Thus, latitude and longitude were expressed
in seconds of arc.

SIOSEIS process header may be used to convert arcseconds to decimal degrees.

Byte        16BIT 32BIT 64BIT pointer    DESCRIPTION OF USE
WORD  WORD  WORD   name
INDEX INDEX INDEX
----- ----- ----- -------

71-72     36                           Scalar to be applied to coordinates
in bytes 73-88.
If positive use as a multiplier.
If negative, use as a divisor.
73-76             19    19  lsxcoptr   longitude in seconds of arc.
Source X coordinate.
See short word 36 (bytes 31-32) - scalar
77-80             20    20  lsycoptr   latitude in seconds of arc.
Source Y coordinate.
See short word 36 (bytes 31-32) - scalar
81-84             21    21  lrxcoptr   Receiver longitude or X coordinate
85-88             22    22  lrycoptr   Receiver latitude or Y coordinate
89-90     45                           Coordinate units; 1 = length (meters or feet)
2 = seconds of arc, 3 = decimal degrees,
4 = degrees, minutes, seconds (DDDMMSS.ss)
The easiest method - convert to decimal and set coordinate units
sioseis << eof
diskin
ntodo 1 ipath 0012_2011_155_1053_100212_CHP4.0_RAW_021.sgy end
end
r19 = l19 / 3600.    ! convert to decimal degrees
r20 = l20 / 3600.
i45 = 3    ! set coordinate units to decimal degrees
end
end
diskoa
opath data end
end
end
eof

Overwriting the coordinates and settng the coordinate units
correctly makes the output file compliant with the SEG-Y standard.

Harder way - determine units scalar, convert coordinates, apply scalar, reset scalar
If the SEG-Y scalar is not honored by the next program, the scalar must be removed.
Use prout parameter indices to print the scalar and units.  e.g.
SIOSEIS ver 2011.2.15 (16 June 2011)  (C) Regents of U.C.
procs diskin prout end
diskin
ntodo 1
ipath 0012_2011_155_1053_100212_CHP4.0_RAW_021.sgy end
end
prout
fno 0 lno 9999999 ftr 0 ltr 999
indices l3 i36 i45 end
end
end
****    0 ERRORS IN THIS JOB   ****
6545.0         -1000.0          2.0000

Scalar -1000 means the arcseconds were multiplied by 1000. before being written
as 32 bit integers in the trace header.  The scalar probably will never change.

Then, convert arcseconds to decimal degress, then divided by the (negated) scalara
sioseis << eof
diskin
ntodo 1 ipath 0012_2011_155_1053_100212_CHP4.0_RAW_021.sgy end
end
r60 = l19 / 3600.    ! convert to decimal degrees
r59 = i36 * -1
r19 = r60 / r59
r60 = l20 / 3600.
r20 = r60 / r59
i36 = 0    !  set scalar to not used
i45 = 3    ! set coordinate units to decimal degrees
end
end
diskoa
opath data end
end
end
eof

Checking the results with lsd
the original file in arcseconds
lsd 0012_2011_155_1053_100212_CHP4.0_RAW_021.sgy 1 1 1
SHOT   TR       RP    TR ID  RANGE DELAY NSAMPS    SI   YR DAY HR MIN SEC
6545     1       0     0  1      0  3433   1333    49 2011 155 10  53  45
shot        6545  tr           1  src           0  rp           0  tr           0  id      1  eog    -1376256
fold      1  range           0  relev   0.0000000      selev   0.0000000      sdep   0.0000000      wdep   2601.5500
time switch or shot time millisecond       2
source long         -126          37   7.3546720     (   455827.34     arcsecs)
source lat.           46          58   58.644539     (   169138.64     arcsecs)
Sweep frequency at start (Hz).   2772
Sweep frequency at end (Hz).   5772
Sweep length:      1

the new file with units scaled the same as the original fileThe new file without a SEG-Y units scalar
SIOSEIS ver 2011.2.15 (16 June 2011)  (C) Regents of U.C.
diskin
ntodo 1 ipath 0012_2011_155_1053_100212_CHP4.0_RAW_021.sgy end
end
r60 = l19 / 3600.    ! convert to decimal degrees
r59 = i36 * -1
r19 = r60 / r59
r60 = l20 / 3600.
r20 = r60 / r59
i36 = 0    !  set scalar to not used
i45 = 3    ! set coordinate units to decimal degrees
end
end
diskoa
opath data end
end
end
****    0 ERRORS IN THIS JOB   ****
55>!lsd
lsd data 1 1 1
SHOT   TR       RP    TR ID  RANGE DELAY NSAMPS    SI   YR DAY HR MIN SEC
6545     1       0     0  1      0  3433   1333    49 2011 155 10  53  45
shot        6545  tr           1  src           0  rp           0  tr           0  id      1  eog    -1376256
fold      1  range           0  relev   0.0000000      selev   0.0000000      sdep   0.0000000      wdep   2601.5500
time switch or shot time millisecond       2
Source and receiver xy coordinates:  -126.61871       46.982956       0.0000000       0.0000000
source long.         -126          37   7.3546720     (   455827.34     arcsecs)
source lat.           46          58   58.644539     (   169138.64     arcsecs)
Sweep frequency at start (Hz). -11254
Sweep frequency at end (Hz). -29674
Sweep length:    256

The last step requires lsd updated 21 June 2011
```