RGPR: a free and open-source software package to process and visualise ground-penetrating radar (GPR) data
RGPR is a free and open-source software package to read, export, analyse, process and visualise ground-penetrating radar (GPR) data. RGPR is written in R, a high-level programming language for statistical computing and graphics that is freely available under the GNU General Public License and runs on Linux, Windows and MacOS.
-
supported binary formats:
- Sensors & Software file format (.DT1, .HD)
- MALA file format (.rd3, .rad)
- SEG-Y file format (.sgy) from RadSys Zond GPR device
Do you miss your preferred file format? Send me the file format description with a test file and I will adapt the RGPR-package to support this file format.
-
RGPR only support reflection data such as surface-based GPR data (no support for cross-borehole GPR data)
-
the documentation is still incomplete (but check the tutorials, http://emanuelhuber.github.io/RGPR)
This is an ongoing project. If you have any questions, don't hesitate to contact me:
Thank you!
Check the companion website for more info, tutorials, etc.
http://emanuelhuber.github.io/RGPR
if(!require("devtools")) install.packages("devtools")
devtools::install_github("emanuelhuber/RGPR")
library(RGPR)
frenkeLine00 # data from the package
plot(frenkeLine00)
readGPR()
, formats: Sensors & Software (.d11, .hd), MALA (.rd3, .rad), SEG-Y for RadSys Zond GPR device (.sgy), R (rds)writeGPR()
: format DT1 (Sensors&Software), rds (R-format), ASCII, 'xyz'exportPDF()
: high quality pdf graphicexportDelineations()
exportFID()
: ASCII-fileexportCoord()
: SpatialLines, SpatialPoints or ASCII-fileexportProc()
: ASCII-file
plot()
:type = "raster"
type = "wiggles"
lines()
plot3D()
- Trace position reversal:
reverse()
- Vertical trace shift:
traceShift()
- Georeference coordinates (based on center and rotation angle):
georef()
- Interpolate trace position (x, y, z) from known positions:
interpPos()
- Estimate shift between two parallel profiles:
shiftEst()
- Trace amplitude:
ampl()
, plot trace amplitude:plotAmpl()
- Average trace:
traceAverage()
- Spectrum (f-x and f-k):
spec(x, type = c("f-x", "f-k"))
- Structure tensor:
strTensor()
, plot structure tensor:plotTensor()
- Trace interpolation at regularly spaced positions:
regInterpPos()
- Upsampling (time and position):
upsample()
- Relative position on the radargramm:
relPos()
- DC-shift correction:
dcshift()
- Low-frequency ('wow') component removal:
dewow()
(type = "MAD", "Gaussian") - First-break picking:
firstBreak()
(method = "coppens", "threshold", "MER") - Shift the traces vertically such that they start at time zero:
time0Cor()
- Constant offset time correction:
timeCorOffset()
- Linear, power, exponential, ang agc gain:
gain()
(type = "power", "exp", "agc")
- Clip the GPR signal values:
clip()
- Gamma correction of the GPR signal values:
gammaCorrection()
- Trace scaling:
traceScaling()
- Trace filters (1D):
filter1D()
: type = "median", "hampel", "Gaussian" - Radargramm filters (2D):
filter2D()
: type = "median3x3", "adimpro" - Trace frequency filter (1D):
fFilter()
: freqency filter, type = 'low','high','bandpass' - Frequency-wavenumber filter (2D):
fkFilter()
- Trace (1D) and radargramm (2D) convolution:
conv1D()
andconv2D()
- Deconvolution:
deconv()
(type = "spiking", "wavelet", "min-phase", "mixed-phase") - Phase rotation
rotatePhase()
- Common-mid point analysis (CMP):
CMPAnalysis()
(method = "semblance", "winsemblance", "wincoherence") - Normal Move-Out correction (NMO):
NMOCor()
- Topography correction and topographic Kirchhoff migration:
migration()
(type = "static", "kirchhoff")
delineate()
rmDelineations()<-
delineations()
addDelineation()
plotDelineations3D()
plotDelineations()
identifyDelineation()
- Apply many processing steps:
papply()
- Operators:
+
,-
,*
,/
,^
- Mathematical functions:
max()
,min()
,mean()
,median()
,summary()
,range()
,abs()
,sign()
,sqrt()
,ceiling()
, ... - Matrix functions:
length()
,nrow()
,ncol()
,dim()
- Coercion:
as.matrix()
,as.numeric()
,as.double()
,as.list()
,as.SpatialLines()
,as.SpatialPoints()
depthunit()
&depthunit()<-
description()
&description()<-
ann()
&ann()<-
coord()
&coord()<-
crs()
&crs()<-
fid()
&fid()<-
filepath()
&filepath()<-
pos()
&pos()<-
posunit()
&posunit()<-
proc<-()
&processing
name()
&name()<-
values()
&values()<-
vel()
&vel()<-
gethd()
svDate()
&svDate()<-
library(RGPR)
mtext <- showMethods(class="GPR", printTo =FALSE )
i <- grepl('Function', mtext) & grepl('package RGPR', mtext)
fvec <- gsub( "Function(\\:\\s|\\s\\\")(.+)(\\s\\(|\\\")(.+$)", "\\2", mtext[i] )
fvec
library(RGPR)
mtext <- showMethods(class="GPRsurvey", printTo =FALSE )
i <- grepl('Function', mtext) & grepl('package RGPR', mtext)
gvec <- gsub( "Function(\\:\\s|\\s\\\")(.+)(\\s\\(|\\\")(.+$)", "\\2", mtext[i] )
gvec
?RGPR
Thanks to:
- @jmerc13