sectionSmooth {oce} | R Documentation |
Smooth a Section
Description
Smooth a section, in any of several ways, working either in the vertical direction or in both the vertical and lateral directions.
Usage
sectionSmooth(
section,
method = "spline",
x,
xg,
yg,
xgl,
ygl,
xr,
yr,
df,
gamma = 0.5,
iterations = 2,
trim = 0,
pregrid = FALSE,
debug = getOption("oceDebug"),
...
)
Arguments
section |
A |
method |
A string or a function that specifies the method to use; see “Details”. |
x |
Optional numerical vector, of the same length as the number of stations in |
xg , xgl |
ignored in the |
yg , ygl |
similar to |
xr , yr |
influence ranges in x (along-section distance) and y (pressure),
passed to |
df |
Degree-of-freedom parameter, passed to |
gamma , iterations , trim , pregrid |
Values passed to
|
debug |
A flag that turns on debugging. Set to 1 to get a moderate amount of debugging information, or to 2 to get more. |
... |
Optional extra arguments, passed to either
|
Details
This function produces smoothed fields that might be useful in
simplifying graphical elements created with plot,section-method()
.
As with any smoothing method, a careful analyst will compare the results
against the raw data, e.g. using plot,section-method()
.
In addition the problem of falsely widening narrow features such as
fronts, there is also the potential to get unphysical results with
spars sampling near topographic features such as bottom slopes and ridges.
The method
argument selects between three possible methods.
For
method="spline"
, i.e. the default, the section is smoothed laterally, usingsmooth.spline()
on individual pressure levels. (If the pressure levels do not match up,sectionGrid()
should be used first to create asection
object that can be used here.) Thedf
argument sets the degree of freedom of the spline, with larger values indicating less smoothing.For
method="barnes"
, smoothing is done across both horizontal and vertical coordinates, usinginterpBarnes()
. The output station locations are computed by linear interpolation of input locations, usingapprox()
on the original longitudes and longitudes of stations, with the independent variable being the distance along the track, computed withgeodDist()
. The values ofxg
,yg
,xgl
andygl
control the smoothing.For
method="kriging"
, smoothing is done across both horizontal and vertical coordinates, usingautoKrige()
from the automap package (along with support from the sp package to format the data). Note that the format of the value returned byautoKrige()
has changed over the years, andmethod="kriging"
can only handle two particular formats, one of which is the result from version 1.1.9 of automap.If
method
is a function, then that function is applied to the (distance, pressure) data for each variable at a grid defined byxg
,xgl
,yg
andygl
. The function must be of the formfunction(x,y,z,xg,xr,yg,yr)
, and must return a matrix of the gridded result, with first index indicating the "grid" station number and second index indicating "grid" pressure. Thex
value that is supplied to this function is set as the distance along the section, as computed withgeodDist()
, and repeated for each of the points at each station. The corresponding pressures are provided iny
, and the value to be gridded is inz
, which may betemperature
on one call to the function,salinity
on another call, etc. The other quantities have the meanings as described below.
Value
A section object of that has been smoothed in some way.
Every data field that is in even a single station of the input object
is inserted into every station in the returned value, and therefore
the units represent all the units in any of the stations, as do the
flag names. However, the flags are all set to NA
values.
Sample of Usage
# I have seen problems with kriging as the automap package has # evolved, so please be aware that the following may fail. if (requireNamespace("automap", quietly=TRUE) && requireNamespace("sf", quietly=TRUE)) { gsKriging <- sectionSmooth(gs, "kriging", xr=50, yr=200) plot(gsKriging, which="temperature") mtext("sectionSmooth(..., method=\"kriging\")", line=0.5) }
Author(s)
Dan Kelley
See Also
Other things related to section data:
[[,section-method
,
[[<-,section-method
,
as.section()
,
handleFlags,section-method
,
initializeFlagScheme,section-method
,
plot,section-method
,
read.section()
,
section-class
,
sectionAddStation()
,
sectionGrid()
,
sectionSort()
,
section
,
subset,section-method
,
summary,section-method
Examples
# Unsmoothed (Gulf Stream)
library(oce)
data(section)
gs <- subset(section, 115 <= stationId & stationId <= 125)
par(mfrow = c(2, 2))
plot(gs, which = "temperature")
mtext("Original data, without smoothing", line = 0.5)
# Spline
gsg <- sectionGrid(gs, p = seq(0, 5000, 100))
gsSpline <- sectionSmooth(gsg, "spline")
plot(gsSpline, which = "temperature")
mtext("sectionSmooth(..., method=\"spline\")", line = 0.5)
# Barnes
gsBarnes <- sectionSmooth(gs, "barnes", xr = 50, yr = 200)
plot(gsBarnes, which = "temperature")
mtext("sectionSmooth(..., method=\"barnes\")", line = 0.5)