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")