<!DOCTYPE html>
<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Interpolate 1D Data with UNESCO or Reiniger-Ross Algorithm — oceApprox • oce</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.4.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.4.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Interpolate 1D Data with UNESCO or Reiniger-Ross Algorithm — oceApprox"><meta name="description" content="Interpolate one-dimensional data using schemes that permit curvature but
tends minimize extrema that are not well-indicated by the data."><meta property="og:description" content="Interpolate one-dimensional data using schemes that permit curvature but
tends minimize extrema that are not well-indicated by the data."></head><body>
    <a href="#main" class="visually-hidden-focusable">Skip to contents</a>


    <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="light" aria-label="Site navigation"><div class="container">

    <a class="navbar-brand me-2" href="../index.html">oce</a>

    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">1.8-4</small>


    <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
      <span class="navbar-toggler-icon"></span>
    </button>

    <div id="navbar" class="collapse navbar-collapse ms-3">
      <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li>
<li class="nav-item dropdown">
  <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button>
  <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/A_oce.html">1. Introduction to Oce</a></li>
    <li><a class="dropdown-item" href="../articles/B_ctd.html">2. Analysis of CTD data</a></li>
    <li><a class="dropdown-item" href="../articles/C_adp.html">3. Analysis of acoustic-Doppler data</a></li>
    <li><a class="dropdown-item" href="../articles/D_map_projections.html">4. Using map projections</a></li>
    <li><a class="dropdown-item" href="../articles/E_flags.html">5. Dealing with data-quality flags</a></li>
    <li><a class="dropdown-item" href="../articles/F_subclassing.html">6. Subclassing oce objects</a></li>
    <li><a class="dropdown-item" href="../articles/G_altering_defaults.html">7. Altering oce Defaults</a></li>
    <li><a class="dropdown-item" href="../articles/H_tides.html">8. Tidal Analysis</a></li>
  </ul></li>
<li class="nav-item"><a class="nav-link" href="../news/index.html">Changelog</a></li>
      </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search">
 <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li>
<li class="nav-item"><a class="external-link nav-link" href="https://github.com/dankelley/oce/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li>
      </ul></div>


  </div>
</nav><div class="container template-reference-topic">
<div class="row">
  <main id="main" class="col-md-9"><div class="page-header">

      <h1>Interpolate 1D Data with UNESCO or Reiniger-Ross Algorithm</h1>
      <small class="dont-index">Source: <a href="https://github.com/dankelley/oce/blob/HEAD/R/oce.R" class="external-link"><code>R/oce.R</code></a></small>
      <div class="d-none name"><code>oceApprox.Rd</code></div>
    </div>

    <div class="ref-description section level2">
    <p>Interpolate one-dimensional data using schemes that permit curvature but
tends minimize extrema that are not well-indicated by the data.</p>
    </div>

    <div class="section level2">
    <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2>
    <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="fu">oceApprox</span><span class="op">(</span><span class="va">x</span>, <span class="va">y</span>, <span class="va">xout</span>, method <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"rr"</span>, <span class="st">"unesco"</span><span class="op">)</span><span class="op">)</span></span></code></pre></div>
    </div>

    <div class="section level2">
    <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2>


<dl><dt id="arg-x">x<a class="anchor" aria-label="anchor" href="#arg-x"></a></dt>
<dd><p>the independent variable (z or p, usually).</p></dd>


<dt id="arg-y">y<a class="anchor" aria-label="anchor" href="#arg-y"></a></dt>
<dd><p>the dependent variable.</p></dd>


<dt id="arg-xout">xout<a class="anchor" aria-label="anchor" href="#arg-xout"></a></dt>
<dd><p>the values of the independent variable at which interpolation is
to be done.</p></dd>


<dt id="arg-method">method<a class="anchor" aria-label="anchor" href="#arg-method"></a></dt>
<dd><p>method to use.  See “Details”.</p></dd>

</dl></div>
    <div class="section level2">
    <h2 id="value">Value<a class="anchor" aria-label="anchor" href="#value"></a></h2>
    <p>A vector of interpolated values, corresponding to the <code>xout</code>
values and equal in number.</p>
    </div>
    <div class="section level2">
    <h2 id="details">Details<a class="anchor" aria-label="anchor" href="#details"></a></h2>
    <p>Setting <code>method="rr"</code> yields the weighted-parabola algorithm of
Reiniger and Ross (1968).  For procedure is as follows.  First, the
interpolant for any <code>xout</code> value that is outside the range of <code>x</code>
is set to NA.  Next, linear interpolation is used for any <code>xout</code> value
that has only one smaller neighboring <code>x</code> value, or one larger
neighboring value.  For all other values of <code>xout</code>, the 4 neighboring
points <code>x</code> are sought, two smaller and two larger.  Then two parabolas
are determined, one from the two smaller points plus the nearest larger
point, and the other from the nearest smaller point and the two larger
points.  A weighted sum of these two parabolas provides the interpolated
value.  Note that, in the notation of Reiniger and Ross (1968), this
algorithm uses <code>m</code>=2 and <code>n</code>=1.  (A future version of this routine
might provide the ability to modify these values.)</p>
<p>Setting <code>method="unesco"</code> yields the method that is used by the U.S.
National Oceanographic Data Center. It is described in pages 48-50 of
reference 2; reference 3 presumably contains the same information but it is
not as easily accessible.  The method works as follows.</p><ul><li><p>If there are data above 5m depth, then the surface value is taken to
equal to the shallowest recorded value.</p></li>
<li><p>Distance bounds are put on the four neighboring points, and the
Reiniger-Ross method is used for interpolated points with sufficiently four
close neighbors.  The bounds are described in table 15 of reference 2 only
for so-called standard depths; in the present instance they are transformed
to the following rules.  Inner neighbors must be within 5m for data above
10m, 50m above 250m 100m above 900m, 200m above 2000m, or within 1000m
otherwise.  Outer neighbors must be within 200m above 500m, 400m above
1300m, or 1000m otherwise.  If two or more points meet these criteria,
Lagrangian interpolation is used.  If not, <code>NA</code> is used as the
interpolant.</p></li>
</ul><p>After these rules are applied, the interpolated value is compared with the
values immediately above and below it, and if it is outside the range,
simple linear interpolation is used.</p>
    </div>
    <div class="section level2">
    <h2 id="references">References<a class="anchor" aria-label="anchor" href="#references"></a></h2>

<ol><li><p>R.F. Reiniger and C.K. Ross, 1968.  A method of interpolation with
application to oceanographic data.  <em>Deep Sea Research</em>, <strong>15</strong>,
185-193.</p></li>
<li><p>Daphne R. Johnson, Tim P. Boyer, Hernan E. Garcia, Ricardo A.
Locarnini, Olga K. Baranova, and Melissa M. Zweng, 2011. World Ocean
Database 2009 Documentation.  NODC Internal report 20.  Ocean Climate
Laboratory, National Oceanographic Data Center.  Silver Spring, Maryland.</p></li>
<li><p>UNESCO, 1991. Processing of oceanographic station data, 138 pp.,
Imprimerie des Presses Universitaires de France, United Nations Educational,
Scientific and Cultural Organization, France.</p></li>
</ol></div>
    <div class="section level2">
    <h2 id="author">Author<a class="anchor" aria-label="anchor" href="#author"></a></h2>
    <p>Dan Kelley</p>
    </div>

    <div class="section level2">
    <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2>
    <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span><span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">library</a></span><span class="op">(</span><span class="va"><a href="https://dankelley.github.io/oce/">oce</a></span><span class="op">)</span></span></span>
<span class="r-in"><span><span class="kw">if</span> <span class="op">(</span><span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">require</a></span><span class="op">(</span><span class="va"><a href="https://dankelley.github.io/ocedata/">ocedata</a></span><span class="op">)</span><span class="op">)</span> <span class="op">{</span></span></span>
<span class="r-in"><span>    <span class="fu"><a href="https://rdrr.io/r/utils/data.html" class="external-link">data</a></span><span class="op">(</span><span class="va">RRprofile</span><span class="op">)</span></span></span>
<span class="r-in"><span>    <span class="va">zz</span> <span class="op">&lt;-</span> <span class="fu"><a href="https://rdrr.io/r/base/seq.html" class="external-link">seq</a></span><span class="op">(</span><span class="fl">0</span>, <span class="fl">2000</span>, <span class="fl">2</span><span class="op">)</span></span></span>
<span class="r-in"><span>    <span class="fu"><a href="https://rdrr.io/r/graphics/plot.default.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">RRprofile</span><span class="op">$</span><span class="va">temperature</span>, <span class="va">RRprofile</span><span class="op">$</span><span class="va">depth</span>, ylim <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">500</span>, <span class="fl">0</span><span class="op">)</span>, xlim <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">2</span>, <span class="fl">11</span><span class="op">)</span><span class="op">)</span></span></span>
<span class="r-in"><span>    <span class="co"># Contrast two methods</span></span></span>
<span class="r-in"><span>    <span class="va">a1</span> <span class="op">&lt;-</span> <span class="fu">oce.approx</span><span class="op">(</span><span class="va">RRprofile</span><span class="op">$</span><span class="va">depth</span>, <span class="va">RRprofile</span><span class="op">$</span><span class="va">temperature</span>, <span class="va">zz</span>, <span class="st">"rr"</span><span class="op">)</span></span></span>
<span class="r-in"><span>    <span class="va">a2</span> <span class="op">&lt;-</span> <span class="fu">oce.approx</span><span class="op">(</span><span class="va">RRprofile</span><span class="op">$</span><span class="va">depth</span>, <span class="va">RRprofile</span><span class="op">$</span><span class="va">temperature</span>, <span class="va">zz</span>, <span class="st">"unesco"</span><span class="op">)</span></span></span>
<span class="r-in"><span>    <span class="fu"><a href="https://rdrr.io/r/graphics/lines.html" class="external-link">lines</a></span><span class="op">(</span><span class="va">a1</span>, <span class="va">zz</span><span class="op">)</span></span></span>
<span class="r-in"><span>    <span class="fu"><a href="https://rdrr.io/r/graphics/lines.html" class="external-link">lines</a></span><span class="op">(</span><span class="va">a2</span>, <span class="va">zz</span>, col <span class="op">=</span> <span class="st">"red"</span><span class="op">)</span></span></span>
<span class="r-in"><span>    <span class="fu"><a href="https://rdrr.io/r/graphics/legend.html" class="external-link">legend</a></span><span class="op">(</span><span class="st">"bottomright"</span>, lwd <span class="op">=</span> <span class="fl">1</span>, col <span class="op">=</span> <span class="fl">1</span><span class="op">:</span><span class="fl">2</span>, legend <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"rr"</span>, <span class="st">"unesco"</span><span class="op">)</span>, cex <span class="op">=</span> <span class="fl">3</span> <span class="op">/</span> <span class="fl">4</span><span class="op">)</span></span></span>
<span class="r-in"><span><span class="op">}</span></span></span>
<span class="r-msg co"><span class="r-pr">#&gt;</span> Loading required package: ocedata</span>
<span class="r-plt img"><img src="oceApprox-1.png" alt="" width="700" height="700"></span>
</code></pre></div>
    </div>
  </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2>
    </nav></aside></div>


    <footer><div class="pkgdown-footer-left">
  <p>Developed by Dan Kelley, Clark Richards.</p>
</div>

<div class="pkgdown-footer-right">
  <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.0.9000.</p>
</div>

    </footer></div>





  </body></html>

