06 Analyse your data & Hyperbolas
Interpret sample data,setting GPS, hyperbola
Why is the fit of the hyperbola important?
If you set the hyperbola in your image, you will be able to “read” or calculate the the actual depth (Z-axis) information. The raw data give you those information in nanoseconds that the signal needs to travel through the materials and back. Depending on the material, the signals strength varies and the time that it needs to be received again. With the accurate calibration of the hyperbola, you will be able to locate and extract the exact coordinates of an object. The result the velocity of this will also give an estimate on the materials lying underneath that where investigated by the radar survey.
depth = speed (ns) * time/ 2
depth= speed( VRMS) * time on Y axis /2
Why do we do this now at this step?
The setting of the hyperbola makes the most sense when done after the filtering of the data. Filtering will make more hyperbolas and therefore objects visible. Otherwise we might miss an object, do not have something to calibrate the depth with or cannot estimate the material under ground.
Why do I need to plot the data with the hyperbola?
When working and doing a project with ground radar data the hyperbola setting is one of the most important settings to share. It is customary to also plot one or multiple per data set. The hyperbola plot acts like proof of the successfully applied methods and explained how you came to this material, velocity and depth.
Hyperbola fitting
Select the vertex point of the hyperbola with the locator tool:
xy <- locator(type = "l")
xy$x, xy$y
#plot the hyperbola based on your selected points
hyp <- hyperbolaFit(xy)
hyp
# what is inside the hyperbola?
the hyperbola vertex: c(hyp$x0, hyp$t0)
the estimated root-mean-square velocity: hyp$vrms
the estimated depth of the hyperbola vertex (computed using the root-mean-square velocity): hyp$z0
the input points for the fitting: hyp$xand hyp$y
the output of the regression fit (see R function lm()): hyp$reg
Plotting the hyperbola
plot(x)
points(xy, pch = 20, col = "blue")
hyperbolaPlot(hyp, x = seq(5, 50, by = 0.01), col = "red", lwd = 2)
hyperbola over the entire plot
plot(x)
points(xy, pch = 20, col = "blue")
hyperbolaPlot(hyp, col = "red", lwd = 2)
Add annotations and extract velocity information
plot(x)
points(xy, pch = 20, col = "blue")
hyperbolaPlot(hyp, col = "red", lwd = 2, xlim = c(10, 40), ann = TRUE)
Plot an hyperbola defined by its vertex position and the root-mean-square velocity
hyp2 <- list(x0 = hyp$x0, t0 = hyp$t0, vrms = hyp$vrms)
Plot the hyperbola
plot(x)
points(hyp$x0, hyp$t0, pch = 20, col = "red", cex = 1.3)
hyperbolaPlot(hyp2, col = "blue", lwd = 2, ann = TRUE)
Simulate hyperbola function
#re-using the data from the hyperbolaFit function
xv <- seq(5, 45, by = 0.1)
y <- hyperbolaSim(xv, hyp)
plot(x)
points(hyp$x0, hyp$t0, pch = 20, col = "blue")
lines(xv, y)
Vertex position and the root-mean-square velocity
hyp2 <- list(x0 = hyp$x0, t0 = hyp$t0, vrms = hyp$vrms)
xv <- seq(5, 45, by = 0.1)
y <- hyperbolaSim(xv, hyp2)
plot(x)
lines(xv, y)
points(hyp$x0, hyp$t0, pch = 20, col = "blue")