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. From sioseis documentation (segy.header) 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 procs diskin header diskoa end diskin ntodo 1 ipath 0012_2011_155_1053_100212_CHP4.0_RAW_021.sgy end end header 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 procs diskin header diskoa end diskin ntodo 1 ipath 0012_2011_155_1053_100212_CHP4.0_RAW_021.sgy end end header 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 eofChecking 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: 1the new file with units scaled the same as the original file
The new file without a SEG-Y units scalar SIOSEIS ver 2011.2.15 (16 June 2011) (C) Regents of U.C. procs diskin header diskoa end diskin ntodo 1 ipath 0012_2011_155_1053_100212_CHP4.0_RAW_021.sgy end end header 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