read.odf {oce} | R Documentation |
ODF (Ocean Data Format) is a
format developed at the Bedford Institute of Oceanography and also used
at other Canadian Department of Fisheries and Oceans (DFO) facilities
(see [1] and [2]).
It can hold various types of time-series data, which includes a variety
of instrument types. Thus, read.odf
is used by read.ctd.odf
for CTD data, etc. As of mid-2018,
read.odf
is still in development, with features being added as a
project with DFO makes available more files.
read.odf(file, columns = NULL, header = NULL, debug = getOption("oceDebug"))
file |
the file containing the data. |
columns |
An optional |
header |
An indication of whether, or how, to store the entire
ODF file header in the |
debug |
an integer specifying whether debugging information is
to be printed during the processing. This is a general parameter that
is used by many |
Note that some elements of the metadata are particular to ODF objects,
e.g. depthMin
, depthMax
and sounding
, which
are inferred from ODF items named MIN_DEPTH
, MAX_DEPTH
and SOUNDING
, respectively. In addition, the more common metadata
item waterDepth
, which is used in ctd
objects to refer to
the total water depth, is set to sounding
if that is finite,
or to maxDepth
otherwise.
The function ODFNames2oceNames
is used to translate
data names from the ODF file to standard oce
names, and
handles conversion for a few non-standard units. The documentation
of ODFNames2oceNames
should be consulted for more
details.
An object of class oce
. It is up to a calling function to determine what to do with this object.
Some metadata items may be specific to certain instruments, and
certain research groups. It can be important for analysts to be aware of
the conventions used in datasets that are under study.
For example, as of June 2018, adp
objects created at the Bedford Institute of Oceanography may
have a metadata item named depthOffBottom
(called
DEPTH_OFF_BOTTOM
in ODF files), which is not typically
present in ctd
files. This item illustrates the renaming
convention, from the CAMEL_CASE used in ODF files to the snakeCase
used in oce. Bearing this conversion in mind, users should not
find it difficult to understand the meaning of items that read.odf
stores within the metadata
slot. Users should bear in mind
that the intirety of the ODF header is saved as list by
calling the function with header="list"
, after which
e.g. str(rval[["header"]])
or View(rval[["header"]])
can be used to isolate any information of interest (but bear in mind
that suffices are used to disambiguate sibling items of identical
name in the ODF header).
ODF files do not store information on the temperature or salinity scale, and read.odf
assumes these to be ITS-90 and PSS-78, respectively. These scales may be incorrect for old
data files. Note that the temperature scale can be converted from old scales
using T90fromT68
and T90fromT48
, although the change will be in
a fraction of a millidegree, which probably exceeds reasonable confidence in old data.
[1] Anthony W. Isenor and David Kellow, 2011. ODF Format Specification Version 2.0. (This is a .doc file downloaded from a now-forgotten URL by Dan Kelley, in June 2011.)
[2] The St Lawrence Global Observatory website has information on ODF format at https://slgo.ca/app-sgdo/en/docs_reference/documents.html (link checked 2018-06-06) and this is perhaps the best resource to learn more.
ODF2oce
will be an alternative to this, once (or perhaps if) a ODF
package is released by the Canadian Department of Fisheries and Oceans.
Other things related to odf
data: ODF2oce
,
ODFListFromHeader
,
ODFNames2oceNames
,
[[,odf-method
,
[[<-,odf-method
, odf-class
,
plot,odf-method
,
read.ctd.odf
,
subset,odf-method
,
summary,odf-method
library(oce) # 1. Read a CTD cast made on the Scotian Shelf. Note that the file's metadata # states that conductivity is in S/m, but it is really conductivity ratio, # so we must alter the unit before converting to a CTD object. Note that # read.odf() on this data file produces a warning suggesting that the user # repair the unit, using the method outlined here. odf <- read.odf(system.file("extdata", "CTD_BCD2014666_008_1_DN.ODF.gz", package="oce")) ctd <- as.ctd(odf) ## so we can e.g. extract potential temperature ctd[["conductivityUnit"]] <- list(unit=expression(), scale="") # # 2. Make a CTD, and plot (with span to show NS) plot(ctd, span=500) # # 3. Highlight bad data on TS diagram. (Note that the eos # is specified, because we will extract practical-salinity and # UNESCO-defined potential temperatures for the added points.) plotTS(ctd, type="o", eos="unesco") # use a line to show loops bad <- ctd[["QCFlag"]]!=0 points(ctd[['salinity']][bad],ctd[['theta']][bad],col='red',pch=20)