Reads some meteorological file formats used by the Environment Canada (see reference 1). Since the agency does not publish the data formats, this function had to be based on some sample files, and it is likely to fail if Environment Canada changes their file format. For example, a change was required in October 2019, to accommodate changes to the file format noticed at that time (see the notes on the type argument).

  type = NULL,
  skip = NULL,
  tz = getOption("oceTz"),
  debug = getOption("oceDebug")



a character string naming a file that holds met data.


if NULL, which is the default, then an attempt is made to infer the type from the file contents. If this fails, it will be necessary for the user to provide a value for the type argument. The permitted choices are: (a) "csv" or "csv1" for an old CSV format no longer provided as of October 2019, (b) "csv2" for a CSV format noticed on the Environment Canada website in October 2019 (but note that the paired metadata file is ignored), and (c) "xml2" for an XML format that was noticed on the Environment Canada website in October 2019.


number of lines of header that occur before the actual data. This is ignored unless type is "csv" or "csv1", in which case a non-NULL value of skip is taken as the number of lines preceding the columnar data ... and this is only needed if read.met() cannot find a line starting with "Date/Time".


timezone assumed for time data


a flag that turns on debugging. Set to 1 to get a moderate amount of debugging information, or to 2 to get more.


A met object.


  1. Environment Canada website for Historical Climate Data

See also


# The old csv format (no longer supplied by Environment Canada as of Oct 2019) csv1 <- read.met(system.file("extdata", "test_met_vsn1.csv", package="oce")) # The new "csv2" format (provided by Environment Canada as of Oct 2019) csv2 <- read.met(system.file("extdata", "test_met_vsn2.csv", package="oce")) # "xml2" format if (requireNamespace("XML", quietly=TRUE)) xml2 <- read.met(system.file("extdata", "test_met_xml2.xml", package="oce")) if (FALSE) { library(oce) # Recreate data(met) and plot u(t) and v(t) metFile <- download.met(id=6358, year=2003, month=9, destdir=".") met <- read.met(metFile) met <- oceSetData(met, "time", met[["time"]]+4*3600, note="add 4h to local time to get UTC time") plot(met) }