Nothing
## ----echo=FALSE---------------------------------------------------------------
knitr::opts_chunk$set(collapse = TRUE, comment = "#>")
## -----------------------------------------------------------------------------
library(oce)
load(system.file("extdata", "drifter.rda", package = "oce"))
str(db)
## -----------------------------------------------------------------------------
o <- new("oce")
## -----------------------------------------------------------------------------
summary(o)
## -----------------------------------------------------------------------------
o <- oceSetData(o, "time", db$t)
o <- oceSetData(o, "longitude", db$lon)
o <- oceSetData(o, "latitude", db$lat)
o <- oceSetMetadata(o, "ID", 4201703)
## -----------------------------------------------------------------------------
summary(o)
## -----------------------------------------------------------------------------
str(o[["latitude"]])
## ----fig.cap="**Figure 1.** Demonstration of base-level plot().", fig.width=4, fig.height=4, dpi=72, dev.args=list(pointsize=10)----
plot(o, pch = 20, cex = 0.5)
## -----------------------------------------------------------------------------
drifter <- setClass(Class = "drifter", contains = "oce")
## -----------------------------------------------------------------------------
d <- new("drifter")
## -----------------------------------------------------------------------------
setMethod(
f = "initialize",
signature = "drifter",
definition = function(.Object, time, longitude, latitude, ID = "unknown") {
if (missing(time)) {
stop("In new(drifter) : must provide 'time'", call. = FALSE)
}
if (missing(longitude)) {
stop("In new(drifter) : must provide 'longitude'", call. = FALSE)
}
if (missing(latitude)) {
stop("In new(drifter) : must provide 'latitude'", call. = FALSE)
}
.Object@data$time <- time
.Object@data$longitude <- longitude
.Object@data$latitude <- latitude
.Object@metadata$ID <- ID
.Object@processingLog$time <- presentTime()
.Object@processingLog$value <- "create 'drifter' object"
return(.Object)
}
)
## -----------------------------------------------------------------------------
d <- new("drifter", time = db$t, longitude = db$lon, latitude = db$lat, ID = 4201703)
## -----------------------------------------------------------------------------
setMethod(
f = "plot",
signature = signature("drifter"),
definition = function(x, which = 1, ...) {
lonlab <- expression("Longitude [" * degree * "E]")
latlab <- expression("Latitude [" * degree * "N]")
if (which == 1) {
oce.plot.ts(x[["time"]], x[["longitude"]],
ylab = lonlab, ...
)
} else if (which == 2) {
oce.plot.ts(x[["time"]], x[["latitude"]],
ylab = latlab, ...
)
} else if (which == 3) {
asp <- 1 / cos(mean(range(x[["latitude"]]) * pi / 180))
plot(x[["longitude"]], x[["latitude"]],
asp = asp, xlab = lonlab, ylab = latlab, ...
)
} else {
stop("In plot,drifter-method : try which=1, 2 or 3", call. = FALSE)
}
}
)
## ----fig.cap="**Figure 2.** Demonstration of specialized plot()."-------------
par(mar = c(3.3, 3.3, 1, 1), mgp = c(2, 0.7, 0))
layout(matrix(c(1, 3, 2, 3), nrow = 2, byrow = TRUE))
plot(d, which = 1, drawTimeRange = FALSE)
plot(d, which = 2, drawTimeRange = FALSE)
plot(d, which = 3)
## -----------------------------------------------------------------------------
setMethod(
f = "summary",
signature = "drifter",
definition = function(object, ...) {
cat("CTD Summary\n-----------\n\n")
cat("* ID: ", object[["ID"]], "\n", sep = "")
invisible(callNextMethod())
}
)
## -----------------------------------------------------------------------------
summary(d)
## -----------------------------------------------------------------------------
setMethod(
f = "[[",
signature(x = "drifter", i = "ANY", j = "ANY"),
definition = function(x, i, j, ...) {
if (i == "velocity") {
D <- function(x) {
dx <- diff(x)
c(dx[1], dx)
}
lat <- x[["latitude"]]
lon <- x[["longitude"]]
dt <- D(as.numeric(x[["time"]])) # seconds
scalex <- 111.12e3 # m per degree latitude
scaley <- scalex * cos(lat * pi / 180)
u <- scalex * D(lon) / dt
v <- scaley * D(lat) / dt
list(u = u, v = v)
} else {
callNextMethod()
}
}
)
## ----fig.cap="**Figure 3.** Velocities inferred from drifter motion.", fig.width=5, fig.height=3, dpi=72, dev.args=list(pointsize=10)----
uv <- d[["velocity"]]
par(mfrow = c(2, 1))
oce.plot.ts(d[["time"]], uv$u, ylab = "Eastward velo. [m/s]", grid = TRUE)
oce.plot.ts(d[["time"]], uv$v, ylab = "Northward vel. [m/s]", grid = TRUE)
## ----fig.cap="**Figure 4.** Autocorrelation analysis of drifter velocities, showing also the M2 period.", fig.width=5, fig.height=3, dpi=72, dev.args=list(pointsize=10)----
data(tidedata)
M2period <- 1 / with(tidedata$const, freq[[which(name == "M2")]])
uv <- d[["velocity"]]
par(mfrow = c(2, 1), mar = c(3, 3, 1, 1), mgp = c(2, 0.7, 0))
acf(uv$u, main = "", ylab = "u ACF")
abline(v = M2period, col = 2)
acf(uv$v, main = "", ylab = "v ACF")
abline(v = M2period, col = 2)
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.