Given an adv
object created by the oce
package, this function
creates a NetCDF file that can later by read by ncdf2adv()
to approximately
reproduce the original contents.
adv2ncdf(x, varTable = NULL, ncfile = NULL, force_v4 = TRUE, debug = 0)
an oce object of class adv
, as created by e.g. oce::read.adv()
.
character value indicating the variable-naming
scheme to be used, which is passed to read.varTable()
to set
up variable names, units, etc.
character value naming the output file. Use NULL
for a file name to be created automatically (e.g. ctd.nc
for
a CTD object).
logical value which controls the NetCDF file version during the nc_create step. The default here is TRUE, whereas the ncdf4-package defaults to FALSE (ensuring that the NetCDF file is compatible with NetCDF v3). Some features, including large data sizes, may require v4.
integer, 0 (the default) for quiet action apart from messages and warnings, or any larger value to see more output that describes the processing steps.
Note that adv2ncdf()
defaults varTable
to "adv"
.
The entire contents of the metadata slot are saved in the global attribute named
"metadata"
, in a JSON format. The JSON material is developed with
metadata2json()
, which yields a value that can be decoded with
json2metadata()
.
Other things related to adv data:
ncdf2adv()
library(ocencdf)
# Example with an adv file from oce package
data(adv, package = "oce")
summary(adv)
#> ADV Summary
#> -----------
#>
#> * Instrument: vector, serial number ``(serial number redacted)``
#> * Filename: `(file name redacted)`
#> * Location: 47.87943 N , -69.72533 E
#> * Time: 2008-07-01 00:00:00 to 2008-07-01 00:00:59 (480 samples, mean increment 0.1250001 s)
#> * Data Overview
#>
#> Min. Mean Max. Dim. NAs
#> v [m/s] -0.080871 0.00069514 0.057789 480x3 0
#> a NA NA NA 480x3 0
#> q NA NA NA 480x3 0
#> time 2008-07-01 00:00:00 2008-07-01 00:00:30 2008-07-01 00:00:59 480 0
#> pressure [dbar] 16.85 16.866 16.879 480 0
#> timeBurst NA NA NA 480 480
#> recordsBurst NA NA NA 480 480
#> voltageSlow 9.7 9.71 9.8 60 0
#> timeSlow 1214870401 1214870430 1214870460 60 0
#> headingSlow [°] -23.39 -23.39 -23.39 60 0
#> pitchSlow [°] 0.4 0.5 0.6 60 0
#> rollSlow [°] -6.2 -6.145 -6.1 60 0
#> temperatureSlow [°C] 6.47 6.4997 6.51 60 0
#>
#> * Processing Log
#>
#> - 2015-12-23 17:53:39 UTC: `read.oce(file = "/data/archive/sleiwex/2008/moorings/m05/adv/nortek_1943/raw/adv_nortek_1943.vec", from = as.POSIXct("2008-06-25 00:00:00", tz = "UTC"), to = as.POSIXct("2008-07-06 00:00:00", tz = "UTC"), latitude = 47.87943, longitude = -69.72533)`
#> - 2015-12-23 17:53:54 UTC: `retime(x = m05VectorBeam, a = 0.58, b = 6.3892e-07, t0 = as.POSIXct("2008-07-01 00:00:00", tz = "UTC"))`
#> - 2015-12-23 17:53:55 UTC: `subset(x, subset=as.POSIXct("2008-06-25 13:00:00", tz = "UTC") <= time & time <= as.POSIXct("2008-07-03 00:50:00", tz = "UTC"))`
#> - 2015-12-23 17:53:55 UTC: `oceEdit(x = m05VectorBeam, item = "transformationMatrix", value = rbind(c(11033, -5803, -5238), c(347, -9622, 9338), c(-1418, -1476, -1333))/4096, reason = "Nortek email 2011-02-14", person = "DEK")`
#> - 2015-12-23 17:53:55 UTC: `use aquadoppHR heading; despike own pitch and roll`
#> - 2015-12-23 17:54:11 UTC: `beamToXyzAdv(x = x)`
#> - 2015-12-23 17:54:34 UTC: `xyzToEnu(x, declination=-18.099, horizontalCase=TRUE, sensorOrientiation=upward, debug=0)`
plot(adv)
# Transfer to NetCDF and back to see if results make sense
# Use a temporary nc file to let package pass CRAN checks.
ncfile <- tempfile(pattern = "adv", fileext = ".nc")
oce2ncdf(adv, ncfile = ncfile)
ADV <- ncdf2adv(ncfile)
summary(ADV)
#> ADV Summary
#> -----------
#>
#> * Instrument: vector, serial number ``(serial number redacted)``
#> * Filename: `(file name redacted)`
#> * Location: 47.87943 N , -69.72533 E
#> * Time: 2008-07-01 00:00:00 to 2008-07-01 00:00:59 (480 samples, mean increment 0.1250001 s)
#> * Data Overview
#>
#> Min. Mean Max. Dim. NAs
#> v [m/s] -0.080871 0.00069514 0.057789 480x3 0
#> a NA NA NA 480x3 0
#> q NA NA NA 480x3 0
#> time 2008-07-01 00:00:00 2008-07-01 00:00:30 2008-07-01 00:00:59 480 0
#> pressure [dbar] 16.85 16.866 16.879 480 0
#> timeBurst NA NA NA 480 480
#> recordsBurst NA NA NA 480 480
#> voltageSlow 9.7 9.71 9.8 60 0
#> timeSlow 1214870401 1214870430 1214870460 60 0
#> headingSlow [°] -23.39 -23.39 -23.39 60 0
#> pitchSlow [°] 0.4 0.5 0.6 60 0
#> rollSlow [°] -6.2 -6.145 -6.1 60 0
#> temperatureSlow [°C] 6.47 6.4997 6.51 60 0
#>
#> * Processing Log
#>
#> - 2024-02-22 00:13:50 UTC: `Create oce object`
plot(ADV)
file.remove(ncfile)
#> [1] TRUE