Sub-bottom profilers (SBP) "shoot" according to a time based rate rather than a uniform distance based rate. Furthermore, the ping rate may vary when the target (water bottom) depth varies. Some data processing algorithms such as migration, require the data to be equally spaced. Seismic data are T-X data Time-Distance, where T is the two-way travel time and X is distance from some origin. Reflection seismologist plot data so that positive T is the vertical axis with time zero at the top of the plot in a vertical direction. A time based ping rate also leads to non-uniform spatial sampling when the ship speed varies. This example explains some techniques that I have tried to display SBP data with uniform spatial sampling. The example will conclude with an example with FK migration, which also requires uniform spatial sampling. Normal plot with uniform trace spacing by ping rate. The distance between pings (dbpts produced by geom parameter lprint 512) is: at 0100z: shot= 5973 dbpts= 10.1515025 dangle= 57.9564838 shot= 5974 dbpts= 6.75044032 dangle= 56.962798 shot= 5975 dbpts= 6.72645055 dangle= 56.1465037 at 0200z: shot= 7567 dbpts= 1.59143656 dangle= 146.641759 shot= 7568 dbpts= 1.112336 dangle= 143.66612 shot= 7569 dbpts= 1.13571118 dangle= 140.964489 at 0300z: shot= 9235 dbpts= 7.13398217 dangle= 96.6953839 shot= 9236 dbpts= 7.10242506 dangle= 95.965716 shot= 9237 dbpts= 7.10329813 dangle= 95.9700171 at 0400z: shot= 11044 dbpts= 1.03377684 dangle= 140.343057 shot= 11045 dbpts= 1.08036152 dangle= 142.475739 shot= 11046 dbpts= 1.04234059 dangle= 145.092582 Note that the apparent course is considerably different when dbpts (distance between points) is different. My first approach was to use the SIOSEIS refraction plotting parameter HSCALE - "plot by range". Process GEOM parameter TYPE 17 uses the first trace as the spatial origin and calculates the "along track" distance, which is inserted into the SEG-Y "range" location (long integer word 10). PLOT parameter HSCALE plots every trace so that the plot distance is HSCALE * RANGE inches from the first trace. Plot ignores traces that have a range equal to or less than the last plotted one (i.e. ranges must increase or the trace is not plotted). NIBS 2859 means that the plot file is composed of 300 dots per inch. HSCALE 1800 then means that the distance bewteen plot traces in 6 (1800 / 300). The plot of only 30 minutes with hscale 1800. The blank spaces are whenever there' more than 6m between traces. A plot with HSCALE 3600 or trace spacing of 12m is significantly better. Notice that the annotation at the top is the range every 100 traces and the annotation is the GMT associated with the tagged (annotated) trace. The same plot but with annotation at 5 minute intervals. Process PROUT option info 1 of file env-2006_227_0100z-0400z.sgy showed: env-2006_227_0100z-0400z. Begins: day227 01:00:00, lat: 77 8 22.679 long: 177 51 16.337 env-2006_227_0100z-0400z. Ends: day227 04:00:59, lat: 76 49 36.801 long: 178 5 51.288 data times: 1.466 to 2.133 secs. converting to decimal minutes and using program distance: 73>distance Enter the latitude of the first point (deg, min) 77 8.37798333 Enter the longitude of the first point (deg, min) 177 51.27228333 Enter the latitude of the second point (deg, min) 76 49.61335 Enter the longitude of the second point (deg, min) 178 5.8548 The distance between the two points is 35432.8884 meters. The distance between the two points is 19.1322289 nautical miles. Using lsd I found there are 5099 traces. Therefore the average distance between pings is 6.948m. HSCALE 2100 would have been a better choice (dbrps 7 * 300 dots per inch). Rather than just throw out the excess data (pings that are very close to one another), we could stack or sum them. GEOM TYPE 17 not only computes the distance each trace is from the first trace, it assigns a "bin number" or RP where the bin width is DBRPS. For example, with DBRPS 7, traces with ranges 0-6 are assigned the first RP number, ranges 7-13 the next, 14-20 the next, etc. The plot of the data with a 7m stacking bin size doesn't show much differences from the previous plot because dead traces were not created when there were no traces in the 3m bin. Successive traces were plotted adjacent to each other regardless of the range from the origin. e.g. lsd data 1 10 SHOT TR RP TR ID RANGE DELAY NSAMPS SI YR DAY HR MIN SEC 5990 1 22 1 1 151 1866 5333 50 2006 227 1 0 44 5991 1 23 1 1 159 1866 5333 50 2006 227 1 0 46 5992 1 24 1 1 169 1866 5333 50 2006 227 1 0 48 5993 1 25 1 1 177 1866 5333 50 2006 227 1 0 51 5994 1 26 1 1 184 1866 5333 50 2006 227 1 0 53 . 7568 1 1612 1 1 11276 1733 5333 50 2006 227 2 0 7 7573 1 1613 1 1 11282 1733 5333 50 2006 227 2 0 18 7578 1 1614 1 1 11290 1733 5333 50 2006 227 2 0 29 7582 1 1615 1 1 11298 1733 5333 50 2006 227 2 0 38 7585 1 1616 1 1 11305 1733 5333 50 2006 227 2 0 44 7588 1 1617 1 1 11311 1733 5333 50 2006 227 2 0 51 7592 1 1618 1 1 11320 1733 5333 50 2006 227 2 0 59 Notice the shot numbering.Migration of Sub-Bottom Profiler Data
Yilmaz states spatial aliasing occurs as: FrequencyThreshold = v / (4 * deltaX * sin(theta)) where theta is the structural dip. Thus for 45 degrees: deltaX of 1m aliases at 530Hz 2m 265 3m 176 4m 132 5m 106 6m 88 7m 75 For 15 degrees: deltaX of 1m aliases at 1442Hz 2m 721 3m 480 4m 360 5m 288 6m 240 7m 206Hz Using the above example with a 7m stack and 2x500 filter, followed by decimation by 4 and an fk migration, the plot isn't too bad!Healy 2006 Knudsen migration examples.
Example 1 covers day 229, 0500z to 0700z. Based on previous work (see SBP plotting and migration) step 1 is to create a smaller file of just the two hours of data we're interested in. The script assumes the data are already in envelope form and combines several steps of the previous work. The data are filtered and decimated in the output file and a plot is generated as well. The prout info 1 parameter displayed: env-2006_229_0500z-0700z. Begins: day229 05:00:01, lat: 77 41 13.544 long: 176 35 36.182 env-2006_229_0500z-0700z. Ends: day229 07:00:59, lat: 77 45 42.490 long: 176 32 37.709 data times: 1.066 to 1.467 secs. Using program distance, this data segment is 8423.65818 meters. lsd shows the file has 4734 shots, thus the average distance between pings is 1.8 m The jumps in the above plot are caused by changes in the SEGY deep water delay, which are produced on the Knudsen when the SBP "phase" is changed. DISKIN parameter SET 1.1 1.45 will eliminate these changes and make a constant data window for FK processing. Using fkmigr deltax 1.8 and plotting every trace, produced an over migrated plot. fkmigr delta 1.8 with plot hscale 900 yielded this plot. fkmigr delta 1.8 with plot hscale 1800 yielded this plot. Using a 3m bin/stack, fkmigr deltax 3, and plot hscale 1800 results in a great plot. I don't understand the light shaded "cone" areas. (Is it due to the point sources being "out of plane" or off to the side of the ship's track rather than directly under the ship.?) Example 1
Example 2 covers day 222, 1220z to 1330z, covering 5700m with 7594 pings (deltax = .75m). The high ping rate is because Knudsen pings faster in shallow water. The ping to ping distance calculation may be quite poor because the ping rate is so much higher than the GPS update rate. The plot with just hscale 1800 is not quite as good as the plot with a 3m stack and hscale 1800. The plot with 3m stack bin and fkmigr deltax 3 is interesting. Example 2