A PI inquired about floating-point precision in offset trace header (trace header byte range 37-40). This is not strictly possible, as segy trace headers are explicitly defined to be integer. This places a hard cap on max precision on offset (source-receiver distance) at 1 m. This is probably fine for most purposes, but may be insufficient for certain near-surface and very low velocity environments
However, there is probably value in finding ways to increase the precision of location values in segys generated from ph5s. The best place to do this is probably in the coordinates portion of the trace header:
Coordinates of the source and receiver (group) for each trace in a segy are defined in byte range 69--90 (see attached image).
Locations are defined by 4-byte integers combined with a 2-btye integer scalar to get floating-point numbers for locations. The units of the coordinates re defined by bytes 89-90, and standardized coordinates can be defined in length, seconds of arc, decimal degrees, or Degrees Minutes Seconds.
Currently the coordinates are filled as decimal degrees, with a scaling factor of -10000. This gets locations to 4 decimal places of degrees, or ~10m.
Filling this value with degrees minutes seconds per the standard definition defined in the segy standard can get two decimal places in seconds, or ~0.3m. This is a significant improvement in coordinate precision. The way to fill these values in the headers is also well defined and standardized by the segy manual.
The use of 'length' is poorly defined, but in theory this could be UTM coordinates, and UTM zone can be defined can be defined in the header location stanza in the segy, and units of m can be defined in the file header at bytes 3255-3256. If the code is modified to UTM coordinates, care will need to be taken in using consistent UTM zones, which can present a challenge in my experience.
I'm not sure what the best way to proceed is, but it seems like increasing the precision of these fields may be useful. The offset field is limited in capabilities, but sufficiently increasing the precision of the coordinate fields in the trace headers would allow the end-user to calculate more precise offset values from information included in the trace headers.
A PI inquired about floating-point precision in offset trace header (trace header byte range 37-40). This is not strictly possible, as segy trace headers are explicitly defined to be integer. This places a hard cap on max precision on offset (source-receiver distance) at 1 m. This is probably fine for most purposes, but may be insufficient for certain near-surface and very low velocity environments
However, there is probably value in finding ways to increase the precision of location values in segys generated from ph5s. The best place to do this is probably in the coordinates portion of the trace header:
Coordinates of the source and receiver (group) for each trace in a segy are defined in byte range 69--90 (see attached image).
Locations are defined by 4-byte integers combined with a 2-btye integer scalar to get floating-point numbers for locations. The units of the coordinates re defined by bytes 89-90, and standardized coordinates can be defined in length, seconds of arc, decimal degrees, or Degrees Minutes Seconds.
I'm not sure what the best way to proceed is, but it seems like increasing the precision of these fields may be useful. The offset field is limited in capabilities, but sufficiently increasing the precision of the coordinate fields in the trace headers would allow the end-user to calculate more precise offset values from information included in the trace headers.