aboutsummaryrefslogtreecommitdiff
path: root/operations/transformations
diff options
context:
space:
mode:
authorPROJ deploybot <proj.bot@proj.bot>2022-03-22 20:00:06 +0000
committerPROJ deploybot <proj.bot@proj.bot>2022-03-22 20:00:06 +0000
commita3f43744feec86272fe532124679d3a013ef9a8c (patch)
tree27e4198db6011e3097eb7bcfe7197684aba7583a /operations/transformations
downloadPROJ-gh-pages.tar.gz
PROJ-gh-pages.zip
update with results of commit https://github.com/OSGeo/PROJ/commit/53c07a8bd211b7aee4bc07a9c6726005504b7181gh-pages
Diffstat (limited to 'operations/transformations')
-rw-r--r--operations/transformations/affine.html303
-rw-r--r--operations/transformations/defmodel.html220
-rw-r--r--operations/transformations/deformation.html396
-rw-r--r--operations/transformations/geogoffset.html230
-rw-r--r--operations/transformations/helmert.html603
-rw-r--r--operations/transformations/hgridshift.html292
-rw-r--r--operations/transformations/horner.html369
-rw-r--r--operations/transformations/index.html169
-rw-r--r--operations/transformations/molobadekas.html320
-rw-r--r--operations/transformations/molodensky.html275
-rw-r--r--operations/transformations/tinshift.html378
-rw-r--r--operations/transformations/vgridshift.html310
-rw-r--r--operations/transformations/xyzgridshift.html256
13 files changed, 4121 insertions, 0 deletions
diff --git a/operations/transformations/affine.html b/operations/transformations/affine.html
new file mode 100644
index 00000000..4cea651b
--- /dev/null
+++ b/operations/transformations/affine.html
@@ -0,0 +1,303 @@
+<!DOCTYPE html>
+<html class="writer-html5" lang="en" >
+<head>
+ <meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
+
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <title>Affine transformation &mdash; PROJ 9.0.0 documentation</title>
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
+ <link rel="shortcut icon" href="../../_static/favicon.png"/>
+ <link rel="canonical" href="https://proj.orgoperations/transformations/affine.html"/>
+ <!--[if lt IE 9]>
+ <script src="../../_static/js/html5shiv.min.js"></script>
+ <![endif]-->
+
+ <script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
+ <script src="../../_static/jquery.js"></script>
+ <script src="../../_static/underscore.js"></script>
+ <script src="../../_static/doctools.js"></script>
+ <script async="async" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
+ <script src="../../_static/js/theme.js"></script>
+ <link rel="author" title="About these documents" href="../../about.html" />
+ <link rel="index" title="Index" href="../../genindex.html" />
+ <link rel="search" title="Search" href="../../search.html" />
+ <link rel="next" title="Multi-component time-based deformation model" href="defmodel.html" />
+ <link rel="prev" title="Transformations" href="index.html" />
+</head>
+
+<body class="wy-body-for-nav">
+ <div class="wy-grid-for-nav">
+ <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+ <div class="wy-side-scroll">
+ <div class="wy-side-nav-search" style="background: #353130" >
+ <a href="../../index.html">
+ <img src="../../_static/logo.png" class="logo" alt="Logo"/>
+ </a>
+ <div class="version">
+ 9.0.0
+ </div>
+<div role="search">
+ <form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
+ <input type="text" name="q" placeholder="Search docs" />
+ <input type="hidden" name="check_keywords" value="yes" />
+ <input type="hidden" name="area" value="default" />
+ </form>
+</div>
+ </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
+ <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../../about.html">About</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../news.html">News</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../download.html">Download</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../install.html">Installation</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../usage/index.html">Using PROJ</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../apps/index.html">Applications</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="../index.html">Coordinate operations</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="../projections/index.html">Projections</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../conversions/index.html">Conversions</a></li>
+<li class="toctree-l2 current"><a class="reference internal" href="index.html">Transformations</a><ul class="current">
+<li class="toctree-l3 current"><a class="current reference internal" href="#">Affine transformation</a><ul>
+<li class="toctree-l4"><a class="reference internal" href="#parameters">Parameters</a></li>
+</ul>
+</li>
+<li class="toctree-l3"><a class="reference internal" href="defmodel.html">Multi-component time-based deformation model</a></li>
+<li class="toctree-l3"><a class="reference internal" href="deformation.html">Kinematic datum shifting utilizing a deformation model</a></li>
+<li class="toctree-l3"><a class="reference internal" href="geogoffset.html">Geographic offsets</a></li>
+<li class="toctree-l3"><a class="reference internal" href="helmert.html">Helmert transform</a></li>
+<li class="toctree-l3"><a class="reference internal" href="horner.html">Horner polynomial evaluation</a></li>
+<li class="toctree-l3"><a class="reference internal" href="molodensky.html">Molodensky transform</a></li>
+<li class="toctree-l3"><a class="reference internal" href="molobadekas.html">Molodensky-Badekas transform</a></li>
+<li class="toctree-l3"><a class="reference internal" href="hgridshift.html">Horizontal grid shift</a></li>
+<li class="toctree-l3"><a class="reference internal" href="tinshift.html">Triangulated Irregular Network based transformation</a></li>
+<li class="toctree-l3"><a class="reference internal" href="vgridshift.html">Vertical grid shift</a></li>
+<li class="toctree-l3"><a class="reference internal" href="xyzgridshift.html">Geocentric grid shift</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="../pipeline.html">The pipeline operator</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../operations_computation.html">Computation of coordinate operations between two CRS</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../../resource_files.html">Resource files</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../geodesic.html">Geodesic calculations</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../specifications/index.html">Specifications</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../community/index.html">Community</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq.html">FAQ</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../glossary.html">Glossary</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../zreferences.html">References</a></li>
+</ul>
+
+ </div>
+ </div>
+ </nav>
+
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" style="background: #353130" >
+ <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+ <a href="../../index.html">PROJ</a>
+ </nav>
+
+ <div class="wy-nav-content">
+ <div class="rst-content">
+ <div role="navigation" aria-label="Page navigation">
+ <ul class="wy-breadcrumbs">
+ <li><a href="../../index.html" class="icon icon-home"></a> &raquo;</li>
+ <li><a href="../index.html">Coordinate operations</a> &raquo;</li>
+ <li><a href="index.html">Transformations</a> &raquo;</li>
+ <li>Affine transformation</li>
+ <li class="wy-breadcrumbs-aside">
+ <a href="https://github.com/OSGeo/PROJ/edit/8.2/docs/source/operations/transformations/affine.rst" class="fa fa-github"> Edit on GitHub</a>
+ </li>
+ </ul><div class="rst-breadcrumbs-buttons" role="navigation" aria-label="Sequential page navigation">
+ <a href="index.html" class="btn btn-neutral float-left" title="Transformations" accesskey="p"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
+ <a href="defmodel.html" class="btn btn-neutral float-right" title="Multi-component time-based deformation model" accesskey="n">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
+ </div>
+ <hr/>
+</div>
+ <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+ <div itemprop="articleBody">
+
+ <section id="affine-transformation">
+<span id="affine"></span><h1>Affine transformation<a class="headerlink" href="#affine-transformation" title="Permalink to this headline">¶</a></h1>
+<div class="versionadded">
+<p><span class="versionmodified added">New in version 6.0.0.</span></p>
+</div>
+<p>The affine transformation applies translation and scaling/rotation terms on the
+x,y,z coordinates, and translation and scaling on the temporal coordinate.</p>
+<table class="docutils align-default">
+<colgroup>
+<col style="width: 27%" />
+<col style="width: 73%" />
+</colgroup>
+<tbody>
+<tr class="row-odd"><td><p><strong>Alias</strong></p></td>
+<td><p>affine</p></td>
+</tr>
+<tr class="row-even"><td><p><strong>Domain</strong></p></td>
+<td><p>4D</p></td>
+</tr>
+<tr class="row-odd"><td><p><strong>Input type</strong></p></td>
+<td><p>XYZT</p></td>
+</tr>
+<tr class="row-even"><td><p><strong>output type</strong></p></td>
+<td><p>XYZT</p></td>
+</tr>
+</tbody>
+</table>
+<p>By default, the parameters are set for an identity transforms. The transformation
+is reversible unless the determinant of the sji matrix is 0, or <cite>tscale</cite> is 0</p>
+<section id="parameters">
+<h2>Parameters<a class="headerlink" href="#parameters" title="Permalink to this headline">¶</a></h2>
+<section id="optional">
+<h3>Optional<a class="headerlink" href="#optional" title="Permalink to this headline">¶</a></h3>
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-xoff">
+<span class="sig-name descname"><span class="pre">+xoff</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;value&gt;</span></span><a class="headerlink" href="#cmdoption-arg-xoff" title="Permalink to this definition">¶</a></dt>
+<dd><p>Offset in X. Default value: 0</p>
+</dd></dl>
+
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-yoff">
+<span class="sig-name descname"><span class="pre">+yoff</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;value&gt;</span></span><a class="headerlink" href="#cmdoption-arg-yoff" title="Permalink to this definition">¶</a></dt>
+<dd><p>Offset in Y. Default value: 0</p>
+</dd></dl>
+
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-zoff">
+<span class="sig-name descname"><span class="pre">+zoff</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;value&gt;</span></span><a class="headerlink" href="#cmdoption-arg-zoff" title="Permalink to this definition">¶</a></dt>
+<dd><p>Offset in Z. Default value: 0</p>
+</dd></dl>
+
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-toff">
+<span class="sig-name descname"><span class="pre">+toff</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;value&gt;</span></span><a class="headerlink" href="#cmdoption-arg-toff" title="Permalink to this definition">¶</a></dt>
+<dd><p>Offset in T. Default value: 0</p>
+</dd></dl>
+
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-s11">
+<span class="sig-name descname"><span class="pre">+s11</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;value&gt;</span></span><a class="headerlink" href="#cmdoption-arg-s11" title="Permalink to this definition">¶</a></dt>
+<dd><p>Rotation/scaling term. Default value: 1</p>
+</dd></dl>
+
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-s12">
+<span class="sig-name descname"><span class="pre">+s12</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;value&gt;</span></span><a class="headerlink" href="#cmdoption-arg-s12" title="Permalink to this definition">¶</a></dt>
+<dd><p>Rotation/scaling term. Default value: 0</p>
+</dd></dl>
+
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-s13">
+<span class="sig-name descname"><span class="pre">+s13</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;value&gt;</span></span><a class="headerlink" href="#cmdoption-arg-s13" title="Permalink to this definition">¶</a></dt>
+<dd><p>Rotation/scaling term. Default value: 0</p>
+</dd></dl>
+
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-s21">
+<span class="sig-name descname"><span class="pre">+s21</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;value&gt;</span></span><a class="headerlink" href="#cmdoption-arg-s21" title="Permalink to this definition">¶</a></dt>
+<dd><p>Rotation/scaling term. Default value: 0</p>
+</dd></dl>
+
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-s22">
+<span class="sig-name descname"><span class="pre">+s22</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;value&gt;</span></span><a class="headerlink" href="#cmdoption-arg-s22" title="Permalink to this definition">¶</a></dt>
+<dd><p>Rotation/scaling term. Default value: 1</p>
+</dd></dl>
+
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-s23">
+<span class="sig-name descname"><span class="pre">+s23</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;value&gt;</span></span><a class="headerlink" href="#cmdoption-arg-s23" title="Permalink to this definition">¶</a></dt>
+<dd><p>Rotation/scaling term. Default value: 0</p>
+</dd></dl>
+
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-s31">
+<span class="sig-name descname"><span class="pre">+s31</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;value&gt;</span></span><a class="headerlink" href="#cmdoption-arg-s31" title="Permalink to this definition">¶</a></dt>
+<dd><p>Rotation/scaling term. Default value: 0</p>
+</dd></dl>
+
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-s32">
+<span class="sig-name descname"><span class="pre">+s32</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;value&gt;</span></span><a class="headerlink" href="#cmdoption-arg-s32" title="Permalink to this definition">¶</a></dt>
+<dd><p>Rotation/scaling term. Default value: 0</p>
+</dd></dl>
+
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-s33">
+<span class="sig-name descname"><span class="pre">+s33</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;value&gt;</span></span><a class="headerlink" href="#cmdoption-arg-s33" title="Permalink to this definition">¶</a></dt>
+<dd><p>Rotation/scaling term. Default value: 1</p>
+</dd></dl>
+
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-tscale">
+<span class="sig-name descname"><span class="pre">+tscale</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;value&gt;</span></span><a class="headerlink" href="#cmdoption-arg-tscale" title="Permalink to this definition">¶</a></dt>
+<dd><p>Time scaling term. Default value: 1</p>
+</dd></dl>
+
+<section id="mathematical-description">
+<h4>Mathematical description<a class="headerlink" href="#mathematical-description" title="Permalink to this headline">¶</a></h4>
+<div class="math notranslate nohighlight" id="equation-formula">
+<span class="eqno">(1)<a class="headerlink" href="#equation-formula" title="Permalink to this equation">¶</a></span>\[\begin{split}\begin{align}
+ \begin{bmatrix}
+ X \\
+ Y \\
+ Z \\
+ T \\
+ \end{bmatrix}^{dest} =
+ \begin{bmatrix}
+ xoff \\
+ yoff \\
+ zoff \\
+ toff \\
+ \end{bmatrix} +
+ \begin{bmatrix}
+ s11 &amp; s12 &amp; s13 &amp; 0 \\
+ s21 &amp; s22 &amp; s23 &amp; 0 \\
+ s31 &amp; s32 &amp; s33 &amp; 0 \\
+ 0 &amp; 0 &amp; 0 &amp; tscale \\
+ \end{bmatrix}
+ \begin{bmatrix}
+ X \\
+ Y \\
+ Z \\
+ T \\
+ \end{bmatrix}^{source}
+\end{align}\end{split}\]</div>
+</section>
+</section>
+</section>
+</section>
+
+
+ </div>
+ </div>
+ <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
+ <a href="index.html" class="btn btn-neutral float-left" title="Transformations" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
+ <a href="defmodel.html" class="btn btn-neutral float-right" title="Multi-component time-based deformation model" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
+ </div>
+
+ <hr/>
+
+ <div role="contentinfo">
+ <p>&#169; Copyright 1983-2022.
+ <span class="lastupdated">Last updated on 22 Mar 2022.
+ </span></p>
+ </div>
+
+ Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
+ <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
+ provided by <a href="https://readthedocs.org">Read the Docs</a>.
+
+
+</footer>
+ </div>
+ </div>
+ </section>
+ </div>
+ <script>
+ jQuery(function () {
+ SphinxRtdTheme.Navigation.enable(true);
+ });
+ </script>
+
+</body>
+</html> \ No newline at end of file
diff --git a/operations/transformations/defmodel.html b/operations/transformations/defmodel.html
new file mode 100644
index 00000000..2535660a
--- /dev/null
+++ b/operations/transformations/defmodel.html
@@ -0,0 +1,220 @@
+<!DOCTYPE html>
+<html class="writer-html5" lang="en" >
+<head>
+ <meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
+
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <title>Multi-component time-based deformation model &mdash; PROJ 9.0.0 documentation</title>
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
+ <link rel="shortcut icon" href="../../_static/favicon.png"/>
+ <link rel="canonical" href="https://proj.orgoperations/transformations/defmodel.html"/>
+ <!--[if lt IE 9]>
+ <script src="../../_static/js/html5shiv.min.js"></script>
+ <![endif]-->
+
+ <script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
+ <script src="../../_static/jquery.js"></script>
+ <script src="../../_static/underscore.js"></script>
+ <script src="../../_static/doctools.js"></script>
+ <script src="../../_static/js/theme.js"></script>
+ <link rel="author" title="About these documents" href="../../about.html" />
+ <link rel="index" title="Index" href="../../genindex.html" />
+ <link rel="search" title="Search" href="../../search.html" />
+ <link rel="next" title="Kinematic datum shifting utilizing a deformation model" href="deformation.html" />
+ <link rel="prev" title="Affine transformation" href="affine.html" />
+</head>
+
+<body class="wy-body-for-nav">
+ <div class="wy-grid-for-nav">
+ <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+ <div class="wy-side-scroll">
+ <div class="wy-side-nav-search" style="background: #353130" >
+ <a href="../../index.html">
+ <img src="../../_static/logo.png" class="logo" alt="Logo"/>
+ </a>
+ <div class="version">
+ 9.0.0
+ </div>
+<div role="search">
+ <form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
+ <input type="text" name="q" placeholder="Search docs" />
+ <input type="hidden" name="check_keywords" value="yes" />
+ <input type="hidden" name="area" value="default" />
+ </form>
+</div>
+ </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
+ <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../../about.html">About</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../news.html">News</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../download.html">Download</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../install.html">Installation</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../usage/index.html">Using PROJ</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../apps/index.html">Applications</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="../index.html">Coordinate operations</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="../projections/index.html">Projections</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../conversions/index.html">Conversions</a></li>
+<li class="toctree-l2 current"><a class="reference internal" href="index.html">Transformations</a><ul class="current">
+<li class="toctree-l3"><a class="reference internal" href="affine.html">Affine transformation</a></li>
+<li class="toctree-l3 current"><a class="current reference internal" href="#">Multi-component time-based deformation model</a><ul>
+<li class="toctree-l4"><a class="reference internal" href="#parameters">Parameters</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#example">Example</a></li>
+</ul>
+</li>
+<li class="toctree-l3"><a class="reference internal" href="deformation.html">Kinematic datum shifting utilizing a deformation model</a></li>
+<li class="toctree-l3"><a class="reference internal" href="geogoffset.html">Geographic offsets</a></li>
+<li class="toctree-l3"><a class="reference internal" href="helmert.html">Helmert transform</a></li>
+<li class="toctree-l3"><a class="reference internal" href="horner.html">Horner polynomial evaluation</a></li>
+<li class="toctree-l3"><a class="reference internal" href="molodensky.html">Molodensky transform</a></li>
+<li class="toctree-l3"><a class="reference internal" href="molobadekas.html">Molodensky-Badekas transform</a></li>
+<li class="toctree-l3"><a class="reference internal" href="hgridshift.html">Horizontal grid shift</a></li>
+<li class="toctree-l3"><a class="reference internal" href="tinshift.html">Triangulated Irregular Network based transformation</a></li>
+<li class="toctree-l3"><a class="reference internal" href="vgridshift.html">Vertical grid shift</a></li>
+<li class="toctree-l3"><a class="reference internal" href="xyzgridshift.html">Geocentric grid shift</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="../pipeline.html">The pipeline operator</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../operations_computation.html">Computation of coordinate operations between two CRS</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../../resource_files.html">Resource files</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../geodesic.html">Geodesic calculations</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../specifications/index.html">Specifications</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../community/index.html">Community</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq.html">FAQ</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../glossary.html">Glossary</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../zreferences.html">References</a></li>
+</ul>
+
+ </div>
+ </div>
+ </nav>
+
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" style="background: #353130" >
+ <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+ <a href="../../index.html">PROJ</a>
+ </nav>
+
+ <div class="wy-nav-content">
+ <div class="rst-content">
+ <div role="navigation" aria-label="Page navigation">
+ <ul class="wy-breadcrumbs">
+ <li><a href="../../index.html" class="icon icon-home"></a> &raquo;</li>
+ <li><a href="../index.html">Coordinate operations</a> &raquo;</li>
+ <li><a href="index.html">Transformations</a> &raquo;</li>
+ <li>Multi-component time-based deformation model</li>
+ <li class="wy-breadcrumbs-aside">
+ <a href="https://github.com/OSGeo/PROJ/edit/8.2/docs/source/operations/transformations/defmodel.rst" class="fa fa-github"> Edit on GitHub</a>
+ </li>
+ </ul><div class="rst-breadcrumbs-buttons" role="navigation" aria-label="Sequential page navigation">
+ <a href="affine.html" class="btn btn-neutral float-left" title="Affine transformation" accesskey="p"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
+ <a href="deformation.html" class="btn btn-neutral float-right" title="Kinematic datum shifting utilizing a deformation model" accesskey="n">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
+ </div>
+ <hr/>
+</div>
+ <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+ <div itemprop="articleBody">
+
+ <section id="multi-component-time-based-deformation-model">
+<span id="defmodel"></span><h1>Multi-component time-based deformation model<a class="headerlink" href="#multi-component-time-based-deformation-model" title="Permalink to this headline">¶</a></h1>
+<div class="versionadded">
+<p><span class="versionmodified added">New in version 7.1.0.</span></p>
+</div>
+<table class="docutils align-default">
+<colgroup>
+<col style="width: 24%" />
+<col style="width: 76%" />
+</colgroup>
+<tbody>
+<tr class="row-odd"><td><p><strong>Alias</strong></p></td>
+<td><p>defmodel</p></td>
+</tr>
+<tr class="row-even"><td><p><strong>Input type</strong></p></td>
+<td><p>Geodetic or projected coordinates (horizontal), meters (vertical),
+decimalyear (temporal)</p></td>
+</tr>
+<tr class="row-odd"><td><p><strong>Output type</strong></p></td>
+<td><p>Geodetic or projected coordinates (horizontal), meters (vertical),
+decimalyear (temporal)</p></td>
+</tr>
+<tr class="row-even"><td><p><strong>Domain</strong></p></td>
+<td><p>4D</p></td>
+</tr>
+<tr class="row-odd"><td><p><strong>Available forms</strong></p></td>
+<td><p>Forward and inverse</p></td>
+</tr>
+</tbody>
+</table>
+<p>The defmodel transformation can be used to represent most deformation models
+currently in use, in particular for areas subject to complex deformation, including
+large scale secular crustal deformation near plate boundaries and vertical deformation
+due to Glacial Isostatic Adjustment (GIA). These can often be represented by a constant
+velocity model. Additionally, many areas suffer episodic deformation events such as
+earthquakes and aseismic slow slip event.</p>
+<p>The transformation relies on a “master” JSON file, describing general metadata on
+the deformation model, its spatial and temporal extent, and listing spatial
+components whose values are stored in <a class="reference internal" href="../../specifications/geodetictiffgrids.html#geodetictiffgrids"><span class="std std-ref">Geodetic TIFF grids (GTG)</span></a>.
+The valuation of each component is modulated by a time function (constant, step,
+reverse step, velocity, piecewise, exponential).</p>
+<p>All details on the content of this JSON file are given in the <a class="reference external" href="https://github.com/linz/deformation-model-format/blob/master/doc/JsonGeotiffDeformationModelFormat_20200501.pdf">Proposal for encoding
+of a Deformation Model</a></p>
+<p>If input coordinates are given in the geographic domain (resp. projected domain),
+the output will also be in the geographic domain (resp. projected domain).
+The domain should be the corresponding to the source_crs metadata of the model.</p>
+<p>This transformation is a generalization of the <a class="reference internal" href="deformation.html#deformation"><span class="std std-ref">Kinematic datum shifting utilizing a deformation model</span></a> transformation.</p>
+<section id="parameters">
+<h2>Parameters<a class="headerlink" href="#parameters" title="Permalink to this headline">¶</a></h2>
+<section id="required">
+<h3>Required<a class="headerlink" href="#required" title="Permalink to this headline">¶</a></h3>
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-model">
+<span class="sig-name descname"><span class="pre">+model</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;filename&gt;</span></span><a class="headerlink" href="#cmdoption-arg-model" title="Permalink to this definition">¶</a></dt>
+<dd><p>Filename to the JSON master file for the deformation model.</p>
+</dd></dl>
+
+</section>
+</section>
+<section id="example">
+<h2>Example<a class="headerlink" href="#example" title="Permalink to this headline">¶</a></h2>
+<p>Transforming a point with the LINZ NZGD2000 deformation model:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>echo 166.7133850980 -44.5105886020 293.3700 2007.689 | cct +proj=defmodel +model=nzgd2000-20180701.json
+</pre></div>
+</div>
+</section>
+</section>
+
+
+ </div>
+ </div>
+ <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
+ <a href="affine.html" class="btn btn-neutral float-left" title="Affine transformation" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
+ <a href="deformation.html" class="btn btn-neutral float-right" title="Kinematic datum shifting utilizing a deformation model" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
+ </div>
+
+ <hr/>
+
+ <div role="contentinfo">
+ <p>&#169; Copyright 1983-2022.
+ <span class="lastupdated">Last updated on 22 Mar 2022.
+ </span></p>
+ </div>
+
+ Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
+ <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
+ provided by <a href="https://readthedocs.org">Read the Docs</a>.
+
+
+</footer>
+ </div>
+ </div>
+ </section>
+ </div>
+ <script>
+ jQuery(function () {
+ SphinxRtdTheme.Navigation.enable(true);
+ });
+ </script>
+
+</body>
+</html> \ No newline at end of file
diff --git a/operations/transformations/deformation.html b/operations/transformations/deformation.html
new file mode 100644
index 00000000..8ff31917
--- /dev/null
+++ b/operations/transformations/deformation.html
@@ -0,0 +1,396 @@
+<!DOCTYPE html>
+<html class="writer-html5" lang="en" >
+<head>
+ <meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
+
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <title>Kinematic datum shifting utilizing a deformation model &mdash; PROJ 9.0.0 documentation</title>
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
+ <link rel="shortcut icon" href="../../_static/favicon.png"/>
+ <link rel="canonical" href="https://proj.orgoperations/transformations/deformation.html"/>
+ <!--[if lt IE 9]>
+ <script src="../../_static/js/html5shiv.min.js"></script>
+ <![endif]-->
+
+ <script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
+ <script src="../../_static/jquery.js"></script>
+ <script src="../../_static/underscore.js"></script>
+ <script src="../../_static/doctools.js"></script>
+ <script async="async" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
+ <script src="../../_static/js/theme.js"></script>
+ <link rel="author" title="About these documents" href="../../about.html" />
+ <link rel="index" title="Index" href="../../genindex.html" />
+ <link rel="search" title="Search" href="../../search.html" />
+ <link rel="next" title="Geographic offsets" href="geogoffset.html" />
+ <link rel="prev" title="Multi-component time-based deformation model" href="defmodel.html" />
+</head>
+
+<body class="wy-body-for-nav">
+ <div class="wy-grid-for-nav">
+ <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+ <div class="wy-side-scroll">
+ <div class="wy-side-nav-search" style="background: #353130" >
+ <a href="../../index.html">
+ <img src="../../_static/logo.png" class="logo" alt="Logo"/>
+ </a>
+ <div class="version">
+ 9.0.0
+ </div>
+<div role="search">
+ <form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
+ <input type="text" name="q" placeholder="Search docs" />
+ <input type="hidden" name="check_keywords" value="yes" />
+ <input type="hidden" name="area" value="default" />
+ </form>
+</div>
+ </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
+ <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../../about.html">About</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../news.html">News</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../download.html">Download</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../install.html">Installation</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../usage/index.html">Using PROJ</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../apps/index.html">Applications</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="../index.html">Coordinate operations</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="../projections/index.html">Projections</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../conversions/index.html">Conversions</a></li>
+<li class="toctree-l2 current"><a class="reference internal" href="index.html">Transformations</a><ul class="current">
+<li class="toctree-l3"><a class="reference internal" href="affine.html">Affine transformation</a></li>
+<li class="toctree-l3"><a class="reference internal" href="defmodel.html">Multi-component time-based deformation model</a></li>
+<li class="toctree-l3 current"><a class="current reference internal" href="#">Kinematic datum shifting utilizing a deformation model</a><ul>
+<li class="toctree-l4"><a class="reference internal" href="#example">Example</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#parameters">Parameters</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#mathematical-description">Mathematical description</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#see-also">See also</a></li>
+</ul>
+</li>
+<li class="toctree-l3"><a class="reference internal" href="geogoffset.html">Geographic offsets</a></li>
+<li class="toctree-l3"><a class="reference internal" href="helmert.html">Helmert transform</a></li>
+<li class="toctree-l3"><a class="reference internal" href="horner.html">Horner polynomial evaluation</a></li>
+<li class="toctree-l3"><a class="reference internal" href="molodensky.html">Molodensky transform</a></li>
+<li class="toctree-l3"><a class="reference internal" href="molobadekas.html">Molodensky-Badekas transform</a></li>
+<li class="toctree-l3"><a class="reference internal" href="hgridshift.html">Horizontal grid shift</a></li>
+<li class="toctree-l3"><a class="reference internal" href="tinshift.html">Triangulated Irregular Network based transformation</a></li>
+<li class="toctree-l3"><a class="reference internal" href="vgridshift.html">Vertical grid shift</a></li>
+<li class="toctree-l3"><a class="reference internal" href="xyzgridshift.html">Geocentric grid shift</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="../pipeline.html">The pipeline operator</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../operations_computation.html">Computation of coordinate operations between two CRS</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../../resource_files.html">Resource files</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../geodesic.html">Geodesic calculations</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../specifications/index.html">Specifications</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../community/index.html">Community</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq.html">FAQ</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../glossary.html">Glossary</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../zreferences.html">References</a></li>
+</ul>
+
+ </div>
+ </div>
+ </nav>
+
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" style="background: #353130" >
+ <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+ <a href="../../index.html">PROJ</a>
+ </nav>
+
+ <div class="wy-nav-content">
+ <div class="rst-content">
+ <div role="navigation" aria-label="Page navigation">
+ <ul class="wy-breadcrumbs">
+ <li><a href="../../index.html" class="icon icon-home"></a> &raquo;</li>
+ <li><a href="../index.html">Coordinate operations</a> &raquo;</li>
+ <li><a href="index.html">Transformations</a> &raquo;</li>
+ <li>Kinematic datum shifting utilizing a deformation model</li>
+ <li class="wy-breadcrumbs-aside">
+ <a href="https://github.com/OSGeo/PROJ/edit/8.2/docs/source/operations/transformations/deformation.rst" class="fa fa-github"> Edit on GitHub</a>
+ </li>
+ </ul><div class="rst-breadcrumbs-buttons" role="navigation" aria-label="Sequential page navigation">
+ <a href="defmodel.html" class="btn btn-neutral float-left" title="Multi-component time-based deformation model" accesskey="p"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
+ <a href="geogoffset.html" class="btn btn-neutral float-right" title="Geographic offsets" accesskey="n">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
+ </div>
+ <hr/>
+</div>
+ <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+ <div itemprop="articleBody">
+
+ <section id="kinematic-datum-shifting-utilizing-a-deformation-model">
+<span id="deformation"></span><h1>Kinematic datum shifting utilizing a deformation model<a class="headerlink" href="#kinematic-datum-shifting-utilizing-a-deformation-model" title="Permalink to this headline">¶</a></h1>
+<div class="versionadded">
+<p><span class="versionmodified added">New in version 5.0.0.</span></p>
+</div>
+<p>Perform datum shifts means of a deformation/velocity model.</p>
+<table class="docutils align-default">
+<colgroup>
+<col style="width: 20%" />
+<col style="width: 80%" />
+</colgroup>
+<tbody>
+<tr class="row-odd"><td><p><strong>Alias</strong></p></td>
+<td><p>deformation</p></td>
+</tr>
+<tr class="row-even"><td><p><strong>Input type</strong></p></td>
+<td><p>Cartesian coordinates (spatial), decimalyears (temporal).</p></td>
+</tr>
+<tr class="row-odd"><td><p><strong>Output type</strong></p></td>
+<td><p>Cartesian coordinates (spatial), decimalyears (temporal).</p></td>
+</tr>
+<tr class="row-even"><td><p><strong>Domain</strong></p></td>
+<td><p>4D</p></td>
+</tr>
+<tr class="row-odd"><td><p><strong>Input type</strong></p></td>
+<td><p>Geodetic coordinates</p></td>
+</tr>
+<tr class="row-even"><td><p><strong>Output type</strong></p></td>
+<td><p>Geodetic coordinates</p></td>
+</tr>
+</tbody>
+</table>
+<p>The deformation operation is used to adjust coordinates for intraplate deformations.
+Usually the transformation parameters for regional plate-fixed reference frames such as
+the ETRS89 does not take intraplate deformation into account. It is assumed that
+tectonic plate of the region is rigid. Often times this is true, but near the plate
+boundary and in areas with post-glacial uplift the assumption breaks. Intraplate
+deformations can be modelled and then applied to the coordinates so that
+they represent the physical world better. In PROJ this is done with the deformation
+operation.</p>
+<p>The horizontal grid is stored in CTable2 format and the vertical grid is stored in the
+GTX format. Both grids are expected to contain grid-values in units of
+mm/year. GDAL both reads and writes both file formats. Using GDAL for
+construction of new grids is recommended.</p>
+<p>Starting with PROJ 7.0, use of a GeoTIFF format is recommended to store both
+the horizontal and vertical velocities.</p>
+<p>More complex deformations can be done with the <a class="reference internal" href="defmodel.html#defmodel"><span class="std std-ref">Multi-component time-based deformation model</span></a> transformation.</p>
+<section id="example">
+<h2>Example<a class="headerlink" href="#example" title="Permalink to this headline">¶</a></h2>
+<p>In <span id="id1">[<a class="reference internal" href="../../zreferences.html#id14" title="Häkli, P., Lidberg, M., Jivall, L., Nørbech, T., Tangen, O., Weber, M., Pihlak, P., Aleksejenko, I., and Paršeliunas, E. The NKG2008 GPS campaign – final transformation results and a new common Nordic reference frame. Journal of Geodetic Science, 6(1):1–33, 2016. doi:10.1515/jogs-2016-0001.">Hakli2016</a>]</span> coordinate transformation including a deformation model is described.
+The paper describes how coordinates from the global ITRFxx frames are transformed to the
+local Nordic realisations of ETRS89. Scandinavia is an area with significant post-glacial
+rebound. The deformations from the post-glacial uplift is not accounted for in the
+official ETRS89 transformations so in order to get accurate transformations in the Nordic
+countries it is necessary to apply the deformation model. The transformation from ITRF2008
+to the Danish realisation of ETRS89 is in PROJ described as:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>proj = pipeline ellps = GRS80
+ # ITRF2008@t_obs -&gt; ITRF2000@t_obs
+step init = ITRF2008:ITRF2000
+ # ITRF2000@t_obs -&gt; ETRF2000@t_obs
+step proj=helmert t_epoch = 2000.0 convention=position_vector
+ x = 0.054 rx = 0.000891 drx = 8.1e-05
+ y = 0.051 ry = 0.00539 dry = 0.00049
+ z = -0.048 rz = -0.008712 drz = -0.000792
+ # ETRF2000@t_obs -&gt; NKG_ETRF00@2000.0
+step proj = deformation t_epoch = 2000.0
+ grids = ./eur_nkg_nkgrf03vel_realigned.tif
+ inv
+ # NKG_ETRF@2000.0 -&gt; ETRF92@2000.0
+step proj=helmert convention=position_vector s = -0.009420e
+ x = 0.03863 rx = 0.00617753
+ y = 0.147 ry = 5.064e-05
+ z = 0.02776 rz = 4.729e-05
+ # ETRF92@2000.0 -&gt; ETRF92@1994.704
+step proj = deformation dt = -5.296
+ grids = ./eur_nkg_nkgrf03vel_realigned.tif
+</pre></div>
+</div>
+<p>From this we can see that the transformation from ITRF2008 to the Danish realisation of
+ETRS89 is a combination of Helmert transformations and adjustments with a deformation
+model. The first use of the deformation operation is:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>proj = deformation t_epoch = 2000.0 grids = ./eur_nkg_nkgrf03vel_realigned.tif
+</pre></div>
+</div>
+<p>Here we set the central epoch of the transformation, 2000.0. The observation epoch
+is expected as part of the input coordinate tuple. The deformation model is
+described by two grids, specified with <a class="reference internal" href="#cmdoption-arg-xy_grids"><code class="xref std std-option docutils literal notranslate"><span class="pre">+xy_grids</span></code></a> and <a class="reference internal" href="#cmdoption-arg-z_grids"><code class="xref std std-option docutils literal notranslate"><span class="pre">+z_grids</span></code></a>.
+The first is the horizontal part of the model and the second is the vertical
+component.</p>
+</section>
+<section id="parameters">
+<h2>Parameters<a class="headerlink" href="#parameters" title="Permalink to this headline">¶</a></h2>
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-xy_grids">
+<span id="cmdoption-arg-xy-grids"></span><span class="sig-name descname"><span class="pre">+xy_grids</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;list&gt;</span></span><a class="headerlink" href="#cmdoption-arg-xy_grids" title="Permalink to this definition">¶</a></dt>
+<dd><p>Comma-separated list of grids to load. If a grid is prefixed by an <code class="docutils literal notranslate"><span class="pre">&#64;</span></code> the
+grid is considered optional and PROJ will the not complain if the grid is
+not available.</p>
+<p>Grids for the horizontal component of a deformation model is expected to be
+in CTable2 format.</p>
+<div class="admonition note">
+<p class="admonition-title">Note</p>
+<p><a class="reference internal" href="#cmdoption-arg-xy_grids"><code class="xref std std-option docutils literal notranslate"><span class="pre">+xy_grids</span></code></a> is mutually exclusive with <a class="reference internal" href="xyzgridshift.html#cmdoption-arg-grids"><code class="xref std std-option docutils literal notranslate"><span class="pre">+grids</span></code></a></p>
+</div>
+</dd></dl>
+
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-z_grids">
+<span id="cmdoption-arg-z-grids"></span><span class="sig-name descname"><span class="pre">+z_grids</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;list&gt;</span></span><a class="headerlink" href="#cmdoption-arg-z_grids" title="Permalink to this definition">¶</a></dt>
+<dd><p>Comma-separated list of grids to load. If a grid is prefixed by an <cite>&#64;</cite> the
+grid is considered optional and PROJ will the not complain if the grid is
+not available.</p>
+<p>Grids for the vertical component of a deformation model is expected to be
+in either GTX format.</p>
+<div class="admonition note">
+<p class="admonition-title">Note</p>
+<p><a class="reference internal" href="#cmdoption-arg-z_grids"><code class="xref std std-option docutils literal notranslate"><span class="pre">+z_grids</span></code></a> is mutually exclusive with <a class="reference internal" href="xyzgridshift.html#cmdoption-arg-grids"><code class="xref std std-option docutils literal notranslate"><span class="pre">+grids</span></code></a></p>
+</div>
+</dd></dl>
+
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-grids">
+<span class="sig-name descname"><span class="pre">+grids</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;list&gt;</span></span><a class="headerlink" href="#cmdoption-arg-grids" title="Permalink to this definition">¶</a></dt>
+<dd><div class="versionadded">
+<p><span class="versionmodified added">New in version 7.0.0.</span></p>
+</div>
+<p>Comma-separated list of grids to load. If a grid is prefixed by an <cite>&#64;</cite> the
+grid is considered optional and PROJ will the not complain if the grid is
+not available.</p>
+<p>Grids should be in GeoTIFF format with the first 3 components being
+respectively the easting, northing and up velocities in mm/year.
+Setting the Description and Unit Type GDAL band metadata items is strongly
+recommended, so that gdalinfo reports:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>Band 1 Block=... Type=Float32, ColorInterp=Gray
+ Description = east_velocity
+ Unit Type: mm/year
+Band 2 Block=... Type=Float32, ColorInterp=Undefined
+ Description = north_velocity
+ Unit Type: mm/year
+Band 3 Block=... Type=Float32, ColorInterp=Undefined
+ Description = up_velocity
+ Unit Type: mm/year
+</pre></div>
+</div>
+<div class="admonition note">
+<p class="admonition-title">Note</p>
+<p><a class="reference internal" href="xyzgridshift.html#cmdoption-arg-grids"><code class="xref std std-option docutils literal notranslate"><span class="pre">+grids</span></code></a> is mutually exclusive with <a class="reference internal" href="#cmdoption-arg-xy_grids"><code class="xref std std-option docutils literal notranslate"><span class="pre">+xy_grids</span></code></a>
+and <a class="reference internal" href="#cmdoption-arg-z_grids"><code class="xref std std-option docutils literal notranslate"><span class="pre">+z_grids</span></code></a></p>
+</div>
+</dd></dl>
+
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-t_epoch">
+<span id="cmdoption-arg-t-epoch"></span><span class="sig-name descname"><span class="pre">+t_epoch</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;value&gt;</span></span><a class="headerlink" href="#cmdoption-arg-t_epoch" title="Permalink to this definition">¶</a></dt>
+<dd><p>Central epoch of transformation given in decimalyears. Will be used in
+conjunction with the observation time from the input coordinate to
+determine <span class="math notranslate nohighlight">\(dt\)</span> as used in eq. <a class="reference internal" href="#equation-apply-velocity">(1)</a> below.</p>
+<div class="admonition note">
+<p class="admonition-title">Note</p>
+<p><a class="reference internal" href="vgridshift.html#cmdoption-arg-t_epoch"><code class="xref std std-option docutils literal notranslate"><span class="pre">+t_epoch</span></code></a> is mutually exclusive with <a class="reference internal" href="#cmdoption-arg-dt"><code class="xref std std-option docutils literal notranslate"><span class="pre">+dt</span></code></a></p>
+</div>
+</dd></dl>
+
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-dt">
+<span class="sig-name descname"><span class="pre">+dt</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;value&gt;</span></span><a class="headerlink" href="#cmdoption-arg-dt" title="Permalink to this definition">¶</a></dt>
+<dd><div class="versionadded">
+<p><span class="versionmodified added">New in version 6.0.0.</span></p>
+</div>
+<p><span class="math notranslate nohighlight">\(dt\)</span> as used in eq. <a class="reference internal" href="#equation-apply-velocity">(1)</a> below. Is useful when
+no observation time is available in the input coordinate or when
+a deformation for a specific timespan needs to be applied in a
+transformation. <span class="math notranslate nohighlight">\(dt\)</span> is given in units of decimalyears.</p>
+<div class="admonition note">
+<p class="admonition-title">Note</p>
+<p><a class="reference internal" href="#cmdoption-arg-dt"><code class="xref std std-option docutils literal notranslate"><span class="pre">+dt</span></code></a> is mutually exclusive with <a class="reference internal" href="vgridshift.html#cmdoption-arg-t_epoch"><code class="xref std std-option docutils literal notranslate"><span class="pre">+t_epoch</span></code></a></p>
+</div>
+</dd></dl>
+
+</section>
+<section id="mathematical-description">
+<h2>Mathematical description<a class="headerlink" href="#mathematical-description" title="Permalink to this headline">¶</a></h2>
+<p>Mathematically speaking, application of a deformation model is simple. The deformation model is
+represented as a grid of velocities in three dimensions. Coordinate corrections are
+applied in cartesian space. For a given coordinate, <span class="math notranslate nohighlight">\((X, Y, Z)\)</span>, velocities
+<span class="math notranslate nohighlight">\((V_X, V_Y, V_Z)\)</span> can be interpolated from the gridded model. The time span
+between <span class="math notranslate nohighlight">\(t_{obs}\)</span> and <span class="math notranslate nohighlight">\(t_c\)</span> determine the magnitude of the coordinate
+correction as seen in eq. <a class="reference internal" href="#equation-apply-velocity">(1)</a> below.</p>
+<div class="math notranslate nohighlight" id="equation-apply-velocity">
+<span class="eqno">(1)<a class="headerlink" href="#equation-apply-velocity" title="Permalink to this equation">¶</a></span>\[\begin{split}\begin{align}
+ \begin{pmatrix}
+ X \\
+ Y \\
+ Z \\
+ \end{pmatrix}_B =
+ \begin{pmatrix}
+ X \\
+ Y \\
+ Z \\
+ \end{pmatrix}_A +
+ (t_{obs} - t_c)
+ \begin{pmatrix}
+ V_X \\
+ V_Y \\
+ V_Z \\
+ \end{pmatrix}
+\end{align}\end{split}\]</div>
+<p>Corrections are done in cartesian space.</p>
+<p>Coordinates of the gridded model are in ENU (east, north, up) space because it
+would otherwise require an enormous 3 dimensional grid to handle the corrections
+in cartesian space. Keeping the correction in lat/long space reduces the
+complexity of the grid significantly. Consequently though, the input coordinates
+needs to be converted to lat/long space when searching for corrections in the
+grid. This is done with the <a class="reference internal" href="../conversions/cart.html#cart"><span class="std std-ref">cart</span></a> operation. The converted grid
+corrections can then be applied to the input coordinates in cartesian space. The
+conversion from ENU space to cartesian space is done in the following way:</p>
+<div class="math notranslate nohighlight" id="equation-enu2xyz">
+<span class="eqno">(2)<a class="headerlink" href="#equation-enu2xyz" title="Permalink to this equation">¶</a></span>\[\begin{split}\begin{align}
+ \begin{pmatrix}
+ X \\
+ Y \\
+ Z \\
+ \end{pmatrix} =
+ \begin{pmatrix}
+ -\sin\phi \cos\lambda N - \sin\lambda E + \cos\phi \cos\lambda U \\
+ -\sin\phi \sin\lambda N + \sin\lambda E + \cos\phi \sin\lambda U \\
+ \cos\phi N + \sin\phi U \\
+ \end{pmatrix}
+\end{align}\end{split}\]</div>
+<p>where <span class="math notranslate nohighlight">\(\phi\)</span> and <span class="math notranslate nohighlight">\(\lambda\)</span> are the latitude and longitude of the coordinate
+that is searched for in the grid. <span class="math notranslate nohighlight">\((E, N, U)\)</span> are the grid values in ENU-space and
+<span class="math notranslate nohighlight">\((X, Y, Z)\)</span> are the corrections converted to cartesian space.</p>
+</section>
+<section id="see-also">
+<h2>See also<a class="headerlink" href="#see-also" title="Permalink to this headline">¶</a></h2>
+<ol class="arabic simple">
+<li><p><a class="reference internal" href="../../usage/differences.html#differences-deformation"><span class="std std-ref">Behavioural changes from version 5 to 6</span></a></p></li>
+</ol>
+</section>
+</section>
+
+
+ </div>
+ </div>
+ <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
+ <a href="defmodel.html" class="btn btn-neutral float-left" title="Multi-component time-based deformation model" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
+ <a href="geogoffset.html" class="btn btn-neutral float-right" title="Geographic offsets" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
+ </div>
+
+ <hr/>
+
+ <div role="contentinfo">
+ <p>&#169; Copyright 1983-2022.
+ <span class="lastupdated">Last updated on 22 Mar 2022.
+ </span></p>
+ </div>
+
+ Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
+ <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
+ provided by <a href="https://readthedocs.org">Read the Docs</a>.
+
+
+</footer>
+ </div>
+ </div>
+ </section>
+ </div>
+ <script>
+ jQuery(function () {
+ SphinxRtdTheme.Navigation.enable(true);
+ });
+ </script>
+
+</body>
+</html> \ No newline at end of file
diff --git a/operations/transformations/geogoffset.html b/operations/transformations/geogoffset.html
new file mode 100644
index 00000000..0b1a035c
--- /dev/null
+++ b/operations/transformations/geogoffset.html
@@ -0,0 +1,230 @@
+<!DOCTYPE html>
+<html class="writer-html5" lang="en" >
+<head>
+ <meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
+
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <title>Geographic offsets &mdash; PROJ 9.0.0 documentation</title>
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
+ <link rel="shortcut icon" href="../../_static/favicon.png"/>
+ <link rel="canonical" href="https://proj.orgoperations/transformations/geogoffset.html"/>
+ <!--[if lt IE 9]>
+ <script src="../../_static/js/html5shiv.min.js"></script>
+ <![endif]-->
+
+ <script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
+ <script src="../../_static/jquery.js"></script>
+ <script src="../../_static/underscore.js"></script>
+ <script src="../../_static/doctools.js"></script>
+ <script src="../../_static/js/theme.js"></script>
+ <link rel="author" title="About these documents" href="../../about.html" />
+ <link rel="index" title="Index" href="../../genindex.html" />
+ <link rel="search" title="Search" href="../../search.html" />
+ <link rel="next" title="Helmert transform" href="helmert.html" />
+ <link rel="prev" title="Kinematic datum shifting utilizing a deformation model" href="deformation.html" />
+</head>
+
+<body class="wy-body-for-nav">
+ <div class="wy-grid-for-nav">
+ <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+ <div class="wy-side-scroll">
+ <div class="wy-side-nav-search" style="background: #353130" >
+ <a href="../../index.html">
+ <img src="../../_static/logo.png" class="logo" alt="Logo"/>
+ </a>
+ <div class="version">
+ 9.0.0
+ </div>
+<div role="search">
+ <form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
+ <input type="text" name="q" placeholder="Search docs" />
+ <input type="hidden" name="check_keywords" value="yes" />
+ <input type="hidden" name="area" value="default" />
+ </form>
+</div>
+ </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
+ <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../../about.html">About</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../news.html">News</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../download.html">Download</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../install.html">Installation</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../usage/index.html">Using PROJ</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../apps/index.html">Applications</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="../index.html">Coordinate operations</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="../projections/index.html">Projections</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../conversions/index.html">Conversions</a></li>
+<li class="toctree-l2 current"><a class="reference internal" href="index.html">Transformations</a><ul class="current">
+<li class="toctree-l3"><a class="reference internal" href="affine.html">Affine transformation</a></li>
+<li class="toctree-l3"><a class="reference internal" href="defmodel.html">Multi-component time-based deformation model</a></li>
+<li class="toctree-l3"><a class="reference internal" href="deformation.html">Kinematic datum shifting utilizing a deformation model</a></li>
+<li class="toctree-l3 current"><a class="current reference internal" href="#">Geographic offsets</a><ul>
+<li class="toctree-l4"><a class="reference internal" href="#examples">Examples</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#parameters">Parameters</a></li>
+</ul>
+</li>
+<li class="toctree-l3"><a class="reference internal" href="helmert.html">Helmert transform</a></li>
+<li class="toctree-l3"><a class="reference internal" href="horner.html">Horner polynomial evaluation</a></li>
+<li class="toctree-l3"><a class="reference internal" href="molodensky.html">Molodensky transform</a></li>
+<li class="toctree-l3"><a class="reference internal" href="molobadekas.html">Molodensky-Badekas transform</a></li>
+<li class="toctree-l3"><a class="reference internal" href="hgridshift.html">Horizontal grid shift</a></li>
+<li class="toctree-l3"><a class="reference internal" href="tinshift.html">Triangulated Irregular Network based transformation</a></li>
+<li class="toctree-l3"><a class="reference internal" href="vgridshift.html">Vertical grid shift</a></li>
+<li class="toctree-l3"><a class="reference internal" href="xyzgridshift.html">Geocentric grid shift</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="../pipeline.html">The pipeline operator</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../operations_computation.html">Computation of coordinate operations between two CRS</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../../resource_files.html">Resource files</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../geodesic.html">Geodesic calculations</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../specifications/index.html">Specifications</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../community/index.html">Community</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq.html">FAQ</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../glossary.html">Glossary</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../zreferences.html">References</a></li>
+</ul>
+
+ </div>
+ </div>
+ </nav>
+
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" style="background: #353130" >
+ <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+ <a href="../../index.html">PROJ</a>
+ </nav>
+
+ <div class="wy-nav-content">
+ <div class="rst-content">
+ <div role="navigation" aria-label="Page navigation">
+ <ul class="wy-breadcrumbs">
+ <li><a href="../../index.html" class="icon icon-home"></a> &raquo;</li>
+ <li><a href="../index.html">Coordinate operations</a> &raquo;</li>
+ <li><a href="index.html">Transformations</a> &raquo;</li>
+ <li>Geographic offsets</li>
+ <li class="wy-breadcrumbs-aside">
+ <a href="https://github.com/OSGeo/PROJ/edit/8.2/docs/source/operations/transformations/geogoffset.rst" class="fa fa-github"> Edit on GitHub</a>
+ </li>
+ </ul><div class="rst-breadcrumbs-buttons" role="navigation" aria-label="Sequential page navigation">
+ <a href="deformation.html" class="btn btn-neutral float-left" title="Kinematic datum shifting utilizing a deformation model" accesskey="p"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
+ <a href="helmert.html" class="btn btn-neutral float-right" title="Helmert transform" accesskey="n">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
+ </div>
+ <hr/>
+</div>
+ <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+ <div itemprop="articleBody">
+
+ <section id="geographic-offsets">
+<span id="geogoffset"></span><h1>Geographic offsets<a class="headerlink" href="#geographic-offsets" title="Permalink to this headline">¶</a></h1>
+<div class="versionadded">
+<p><span class="versionmodified added">New in version 6.0.0.</span></p>
+</div>
+<p>The Geographic offsets transformation adds an offset to the geographic longitude,
+latitude coordinates, and an offset to the ellipsoidal height.</p>
+<table class="docutils align-default">
+<colgroup>
+<col style="width: 27%" />
+<col style="width: 73%" />
+</colgroup>
+<tbody>
+<tr class="row-odd"><td><p><strong>Alias</strong></p></td>
+<td><p>geogoffset</p></td>
+</tr>
+<tr class="row-even"><td><p><strong>Domain</strong></p></td>
+<td><p>3D</p></td>
+</tr>
+<tr class="row-odd"><td><p><strong>Input type</strong></p></td>
+<td><p>Geodetic coordinates (horizontal), meters (vertical)</p></td>
+</tr>
+<tr class="row-even"><td><p><strong>output type</strong></p></td>
+<td><p>Geodetic coordinates (horizontal), meters (vertical)</p></td>
+</tr>
+</tbody>
+</table>
+<p>This method is normally only used when low accuracy is tolerated. It is documented
+as coordinate operation method code 9619 (for geographic 2D) and 9660 (for
+geographic 3D) in the EPSG dataset (<span id="id1">[<a class="reference internal" href="../../zreferences.html#id17" title="IOGP. Geomatics guidance note 7, part 2: coordinate conversions &amp; transformations including formulas. IOGP Publication 373-7-2, International Association For Oil And Gas Producers, 2018. URL: https://www.iogp.org/bookstore/product/coordinate-conversions-and-transformation-including-formulas/.">IOGP2018</a>]</span>)</p>
+<p>It can also be used to implement the method Geographic2D with Height Offsets
+(code 9618) by noting that the input vertical component is a gravity-related
+height and the output vertical component is the ellipsoid height (dh being
+the geoid undulation).</p>
+<p>It can also be used to implement the method Vertical offset (code 9616)</p>
+<p>The reverse transformation simply consists in subtracting the offsets.</p>
+<p>This method is a conveniency wrapper for the more general <a class="reference internal" href="affine.html#affine"><span class="std std-ref">Affine transformation</span></a>.</p>
+<section id="examples">
+<h2>Examples<a class="headerlink" href="#examples" title="Permalink to this headline">¶</a></h2>
+<p>Geographic offset from the old Greek geographic 2D CRS to the newer GGRS87 CRS:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>proj=geogoffset dlon=0.28 dlat=-5.86
+</pre></div>
+</div>
+<p>Conversion from Tokyo + JSLD69 height to WGS 84:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>proj=geogoffset dlon=-13.97 dlat=7.94 dh=26.9
+</pre></div>
+</div>
+<p>Conversion from Baltic 1977 height to Black Sea height:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>proj=geogoffset dh=0.4
+</pre></div>
+</div>
+</section>
+<section id="parameters">
+<h2>Parameters<a class="headerlink" href="#parameters" title="Permalink to this headline">¶</a></h2>
+<section id="optional">
+<h3>Optional<a class="headerlink" href="#optional" title="Permalink to this headline">¶</a></h3>
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-dlon">
+<span class="sig-name descname"><span class="pre">+dlon</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;value&gt;</span></span><a class="headerlink" href="#cmdoption-arg-dlon" title="Permalink to this definition">¶</a></dt>
+<dd><p>Offset in longitude, expressed in arc-second, to add.</p>
+</dd></dl>
+
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-dlat">
+<span class="sig-name descname"><span class="pre">+dlat</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;value&gt;</span></span><a class="headerlink" href="#cmdoption-arg-dlat" title="Permalink to this definition">¶</a></dt>
+<dd><p>Offset in latitude, expressed in arc-second, to add.</p>
+</dd></dl>
+
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-dh">
+<span class="sig-name descname"><span class="pre">+dh</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;value&gt;</span></span><a class="headerlink" href="#cmdoption-arg-dh" title="Permalink to this definition">¶</a></dt>
+<dd><p>Offset in height, expressed in meter, to add.</p>
+</dd></dl>
+
+</section>
+</section>
+</section>
+
+
+ </div>
+ </div>
+ <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
+ <a href="deformation.html" class="btn btn-neutral float-left" title="Kinematic datum shifting utilizing a deformation model" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
+ <a href="helmert.html" class="btn btn-neutral float-right" title="Helmert transform" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
+ </div>
+
+ <hr/>
+
+ <div role="contentinfo">
+ <p>&#169; Copyright 1983-2022.
+ <span class="lastupdated">Last updated on 22 Mar 2022.
+ </span></p>
+ </div>
+
+ Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
+ <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
+ provided by <a href="https://readthedocs.org">Read the Docs</a>.
+
+
+</footer>
+ </div>
+ </div>
+ </section>
+ </div>
+ <script>
+ jQuery(function () {
+ SphinxRtdTheme.Navigation.enable(true);
+ });
+ </script>
+
+</body>
+</html> \ No newline at end of file
diff --git a/operations/transformations/helmert.html b/operations/transformations/helmert.html
new file mode 100644
index 00000000..4f6c4414
--- /dev/null
+++ b/operations/transformations/helmert.html
@@ -0,0 +1,603 @@
+<!DOCTYPE html>
+<html class="writer-html5" lang="en" >
+<head>
+ <meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
+
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <title>Helmert transform &mdash; PROJ 9.0.0 documentation</title>
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
+ <link rel="shortcut icon" href="../../_static/favicon.png"/>
+ <link rel="canonical" href="https://proj.orgoperations/transformations/helmert.html"/>
+ <!--[if lt IE 9]>
+ <script src="../../_static/js/html5shiv.min.js"></script>
+ <![endif]-->
+
+ <script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
+ <script src="../../_static/jquery.js"></script>
+ <script src="../../_static/underscore.js"></script>
+ <script src="../../_static/doctools.js"></script>
+ <script async="async" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
+ <script src="../../_static/js/theme.js"></script>
+ <link rel="author" title="About these documents" href="../../about.html" />
+ <link rel="index" title="Index" href="../../genindex.html" />
+ <link rel="search" title="Search" href="../../search.html" />
+ <link rel="next" title="Horner polynomial evaluation" href="horner.html" />
+ <link rel="prev" title="Geographic offsets" href="geogoffset.html" />
+</head>
+
+<body class="wy-body-for-nav">
+ <div class="wy-grid-for-nav">
+ <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+ <div class="wy-side-scroll">
+ <div class="wy-side-nav-search" style="background: #353130" >
+ <a href="../../index.html">
+ <img src="../../_static/logo.png" class="logo" alt="Logo"/>
+ </a>
+ <div class="version">
+ 9.0.0
+ </div>
+<div role="search">
+ <form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
+ <input type="text" name="q" placeholder="Search docs" />
+ <input type="hidden" name="check_keywords" value="yes" />
+ <input type="hidden" name="area" value="default" />
+ </form>
+</div>
+ </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
+ <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../../about.html">About</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../news.html">News</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../download.html">Download</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../install.html">Installation</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../usage/index.html">Using PROJ</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../apps/index.html">Applications</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="../index.html">Coordinate operations</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="../projections/index.html">Projections</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../conversions/index.html">Conversions</a></li>
+<li class="toctree-l2 current"><a class="reference internal" href="index.html">Transformations</a><ul class="current">
+<li class="toctree-l3"><a class="reference internal" href="affine.html">Affine transformation</a></li>
+<li class="toctree-l3"><a class="reference internal" href="defmodel.html">Multi-component time-based deformation model</a></li>
+<li class="toctree-l3"><a class="reference internal" href="deformation.html">Kinematic datum shifting utilizing a deformation model</a></li>
+<li class="toctree-l3"><a class="reference internal" href="geogoffset.html">Geographic offsets</a></li>
+<li class="toctree-l3 current"><a class="current reference internal" href="#">Helmert transform</a><ul>
+<li class="toctree-l4"><a class="reference internal" href="#examples">Examples</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#parameters">Parameters</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#mathematical-description">Mathematical description</a></li>
+</ul>
+</li>
+<li class="toctree-l3"><a class="reference internal" href="horner.html">Horner polynomial evaluation</a></li>
+<li class="toctree-l3"><a class="reference internal" href="molodensky.html">Molodensky transform</a></li>
+<li class="toctree-l3"><a class="reference internal" href="molobadekas.html">Molodensky-Badekas transform</a></li>
+<li class="toctree-l3"><a class="reference internal" href="hgridshift.html">Horizontal grid shift</a></li>
+<li class="toctree-l3"><a class="reference internal" href="tinshift.html">Triangulated Irregular Network based transformation</a></li>
+<li class="toctree-l3"><a class="reference internal" href="vgridshift.html">Vertical grid shift</a></li>
+<li class="toctree-l3"><a class="reference internal" href="xyzgridshift.html">Geocentric grid shift</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="../pipeline.html">The pipeline operator</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../operations_computation.html">Computation of coordinate operations between two CRS</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../../resource_files.html">Resource files</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../geodesic.html">Geodesic calculations</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../specifications/index.html">Specifications</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../community/index.html">Community</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq.html">FAQ</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../glossary.html">Glossary</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../zreferences.html">References</a></li>
+</ul>
+
+ </div>
+ </div>
+ </nav>
+
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" style="background: #353130" >
+ <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+ <a href="../../index.html">PROJ</a>
+ </nav>
+
+ <div class="wy-nav-content">
+ <div class="rst-content">
+ <div role="navigation" aria-label="Page navigation">
+ <ul class="wy-breadcrumbs">
+ <li><a href="../../index.html" class="icon icon-home"></a> &raquo;</li>
+ <li><a href="../index.html">Coordinate operations</a> &raquo;</li>
+ <li><a href="index.html">Transformations</a> &raquo;</li>
+ <li>Helmert transform</li>
+ <li class="wy-breadcrumbs-aside">
+ <a href="https://github.com/OSGeo/PROJ/edit/8.2/docs/source/operations/transformations/helmert.rst" class="fa fa-github"> Edit on GitHub</a>
+ </li>
+ </ul><div class="rst-breadcrumbs-buttons" role="navigation" aria-label="Sequential page navigation">
+ <a href="geogoffset.html" class="btn btn-neutral float-left" title="Geographic offsets" accesskey="p"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
+ <a href="horner.html" class="btn btn-neutral float-right" title="Horner polynomial evaluation" accesskey="n">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
+ </div>
+ <hr/>
+</div>
+ <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+ <div itemprop="articleBody">
+
+ <section id="helmert-transform">
+<span id="helmert"></span><h1>Helmert transform<a class="headerlink" href="#helmert-transform" title="Permalink to this headline">¶</a></h1>
+<div class="versionadded">
+<p><span class="versionmodified added">New in version 5.0.0.</span></p>
+</div>
+<p>The Helmert transformation changes coordinates from one reference frame to
+another by means of 3-, 4-and 7-parameter shifts, or one of their 6-, 8- and
+14-parameter kinematic counterparts.</p>
+<table class="docutils align-default">
+<colgroup>
+<col style="width: 20%" />
+<col style="width: 80%" />
+</colgroup>
+<tbody>
+<tr class="row-odd"><td><p><strong>Alias</strong></p></td>
+<td><p>helmert</p></td>
+</tr>
+<tr class="row-even"><td><p><strong>Domain</strong></p></td>
+<td><p>2D, 3D and 4D</p></td>
+</tr>
+<tr class="row-odd"><td><p><strong>Input type</strong></p></td>
+<td><p>Cartesian coordinates (spatial), decimalyears (temporal).</p></td>
+</tr>
+<tr class="row-even"><td><p><strong>Output type</strong></p></td>
+<td><p>Cartesian coordinates (spatial), decimalyears (temporal).</p></td>
+</tr>
+<tr class="row-odd"><td><p><strong>Input type</strong></p></td>
+<td><p>Cartesian coordinates</p></td>
+</tr>
+<tr class="row-even"><td><p><strong>Output type</strong></p></td>
+<td><p>Cartesian coordinates</p></td>
+</tr>
+</tbody>
+</table>
+<p>The Helmert transform, in all its various incarnations, is used to perform reference
+frame shifts. The transformation operates in cartesian space. It can be used to transform
+planar coordinates from one datum to another, transform 3D cartesian
+coordinates from one static reference frame to another or it can be used to do fully
+kinematic transformations from global reference frames to local static frames.</p>
+<p>All of the parameters described in the table above are marked as optional. This is true
+as long as at least one parameter is defined in the setup of the transformation.
+The behavior of the transformation depends on which parameters are used in the setup.
+For instance, if a rate of change parameter is specified a kinematic version of the
+transformation is used.</p>
+<p>The kinematic transformations require an observation time of the coordinate, as well
+as a central epoch for the transformation. The latter is usually documented
+alongside the rest of the transformation parameters for a given transformation.
+The central epoch is controlled with the parameter <cite>t_epoch</cite>. The observation
+time is given as part of the coordinate when using PROJ’s 4D-functionality.</p>
+<section id="examples">
+<h2>Examples<a class="headerlink" href="#examples" title="Permalink to this headline">¶</a></h2>
+<p>Transforming coordinates from NAD72 to NAD83 using the 4 parameter 2D Helmert:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>proj=helmert convention=coordinate_frame x=-9597.3572 y=.6112 s=0.304794780637 theta=-1.244048
+</pre></div>
+</div>
+<p>Simplified transformations from ITRF2008/IGS08 to ETRS89 using 7 parameters:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>proj=helmert convention=coordinate_frame x=0.67678 y=0.65495 z=-0.52827
+ rx=-0.022742 ry=0.012667 rz=0.022704 s=-0.01070
+</pre></div>
+</div>
+<p>Transformation from <cite>ITRF2000</cite> to <cite>ITRF93</cite> using 15 parameters:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>proj=helmert convention=position_vector
+ x=0.0127 y=0.0065 z=-0.0209 s=0.00195
+ dx=-0.0029 dy=-0.0002 dz=-0.0006 ds=0.00001
+ rx=-0.00039 ry=0.00080 rz=-0.00114
+ drx=-0.00011 dry=-0.00019 drz=0.00007
+ t_epoch=1988.0
+</pre></div>
+</div>
+</section>
+<section id="parameters">
+<h2>Parameters<a class="headerlink" href="#parameters" title="Permalink to this headline">¶</a></h2>
+<div class="admonition note">
+<p class="admonition-title">Note</p>
+<p>All parameters are optional but at least one should be used, otherwise the
+operation will return the coordinates unchanged.</p>
+</div>
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-convention">
+<span class="sig-name descname"><span class="pre">+convention</span></span><span class="sig-prename descclassname"><span class="pre">=coordinate_frame/position_vector</span></span><a class="headerlink" href="#cmdoption-arg-convention" title="Permalink to this definition">¶</a></dt>
+<dd><div class="versionadded">
+<p><span class="versionmodified added">New in version 5.2.0.</span></p>
+</div>
+<p>Indicates the convention to express the rotational terms when a 3D-Helmert /
+7-parameter more transform is involved. As soon as a rotational parameter
+is specified (one of <code class="docutils literal notranslate"><span class="pre">rx</span></code>, <code class="docutils literal notranslate"><span class="pre">ry</span></code>, <code class="docutils literal notranslate"><span class="pre">rz</span></code>, <code class="docutils literal notranslate"><span class="pre">drx</span></code>, <code class="docutils literal notranslate"><span class="pre">dry</span></code>, <code class="docutils literal notranslate"><span class="pre">drz</span></code>),
+<code class="docutils literal notranslate"><span class="pre">convention</span></code> is required.</p>
+<p>The two conventions are equally popular and a frequent source of confusion.
+The coordinate frame convention is also described as an clockwise
+rotation of the coordinate frame. It corresponds to EPSG method code
+1032 (in the geocentric domain) or 9607 (in the geographic domain)
+The position vector convention is also described as an anticlockwise
+(counter-clockwise) rotation of the coordinate frame.
+It corresponds to as EPSG method code 1033 (in the geocentric domain) or
+9606 (in the geographic domain).</p>
+<p>This parameter is ignored when only a 3-parameter
+(translation terms only: <code class="docutils literal notranslate"><span class="pre">x</span></code>, <code class="docutils literal notranslate"><span class="pre">y</span></code>, <code class="docutils literal notranslate"><span class="pre">z</span></code>) , 4-parameter (3-parameter
+and <code class="docutils literal notranslate"><span class="pre">theta</span></code>) or 6-parameter (3-parameter and their derivative terms)
+is used.</p>
+<p>The result obtained with parameters specified in a given convention
+can be obtained in the other convention by negating the rotational parameters
+(<code class="docutils literal notranslate"><span class="pre">rx</span></code>, <code class="docutils literal notranslate"><span class="pre">ry</span></code>, <code class="docutils literal notranslate"><span class="pre">rz</span></code>, <code class="docutils literal notranslate"><span class="pre">drx</span></code>, <code class="docutils literal notranslate"><span class="pre">dry</span></code>, <code class="docutils literal notranslate"><span class="pre">drz</span></code>)</p>
+<div class="admonition note">
+<p class="admonition-title">Note</p>
+<p>This parameter obsoletes <code class="docutils literal notranslate"><span class="pre">transpose</span></code> which was present in
+PROJ 5.0 and 5.1, and is forbidden starting with PROJ 5.2</p>
+</div>
+</dd></dl>
+
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-x">
+<span class="sig-name descname"><span class="pre">+x</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;value&gt;</span></span><a class="headerlink" href="#cmdoption-arg-x" title="Permalink to this definition">¶</a></dt>
+<dd><p>Translation of the x-axis given in meters.</p>
+</dd></dl>
+
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-y">
+<span class="sig-name descname"><span class="pre">+y</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;value&gt;</span></span><a class="headerlink" href="#cmdoption-arg-y" title="Permalink to this definition">¶</a></dt>
+<dd><p>Translation of the y-axis given in meters.</p>
+</dd></dl>
+
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-z">
+<span class="sig-name descname"><span class="pre">+z</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;value&gt;</span></span><a class="headerlink" href="#cmdoption-arg-z" title="Permalink to this definition">¶</a></dt>
+<dd><p>Translation of the z-axis given in meters.</p>
+</dd></dl>
+
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-s">
+<span class="sig-name descname"><span class="pre">+s</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;value&gt;</span></span><a class="headerlink" href="#cmdoption-arg-s" title="Permalink to this definition">¶</a></dt>
+<dd><p>Scale factor given in ppm.</p>
+</dd></dl>
+
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-rx">
+<span class="sig-name descname"><span class="pre">+rx</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;value&gt;</span></span><a class="headerlink" href="#cmdoption-arg-rx" title="Permalink to this definition">¶</a></dt>
+<dd><p>X-axis rotation in the 3D Helmert given arc seconds.</p>
+</dd></dl>
+
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-ry">
+<span class="sig-name descname"><span class="pre">+ry</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;value&gt;</span></span><a class="headerlink" href="#cmdoption-arg-ry" title="Permalink to this definition">¶</a></dt>
+<dd><p>Y-axis rotation in the 3D Helmert given in arc seconds.</p>
+</dd></dl>
+
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-rz">
+<span class="sig-name descname"><span class="pre">+rz</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;value&gt;</span></span><a class="headerlink" href="#cmdoption-arg-rz" title="Permalink to this definition">¶</a></dt>
+<dd><p>Z-axis rotation in the 3D Helmert given in arc seconds.</p>
+</dd></dl>
+
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-theta">
+<span class="sig-name descname"><span class="pre">+theta</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;value&gt;</span></span><a class="headerlink" href="#cmdoption-arg-theta" title="Permalink to this definition">¶</a></dt>
+<dd><p>Rotation angle in the 2D Helmert given in arc seconds.</p>
+</dd></dl>
+
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-dx">
+<span class="sig-name descname"><span class="pre">+dx</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;value&gt;</span></span><a class="headerlink" href="#cmdoption-arg-dx" title="Permalink to this definition">¶</a></dt>
+<dd><p>Translation rate of the x-axis given in m/year.</p>
+</dd></dl>
+
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-dy">
+<span class="sig-name descname"><span class="pre">+dy</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;value&gt;</span></span><a class="headerlink" href="#cmdoption-arg-dy" title="Permalink to this definition">¶</a></dt>
+<dd><p>Translation rate of the y-axis given in m/year.</p>
+</dd></dl>
+
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-dz">
+<span class="sig-name descname"><span class="pre">+dz</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;value&gt;</span></span><a class="headerlink" href="#cmdoption-arg-dz" title="Permalink to this definition">¶</a></dt>
+<dd><p>Translation rate of the z-axis given in m/year.</p>
+</dd></dl>
+
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-ds">
+<span class="sig-name descname"><span class="pre">+ds</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;value&gt;</span></span><a class="headerlink" href="#cmdoption-arg-ds" title="Permalink to this definition">¶</a></dt>
+<dd><p>Scale rate factor given in ppm/year.</p>
+</dd></dl>
+
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-drx">
+<span class="sig-name descname"><span class="pre">+drx</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;value&gt;</span></span><a class="headerlink" href="#cmdoption-arg-drx" title="Permalink to this definition">¶</a></dt>
+<dd><p>Rotation rate of the x-axis given in arc seconds/year.</p>
+</dd></dl>
+
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-dry">
+<span class="sig-name descname"><span class="pre">+dry</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;value&gt;</span></span><a class="headerlink" href="#cmdoption-arg-dry" title="Permalink to this definition">¶</a></dt>
+<dd><p>Rotation rate of the y-axis given in arc seconds/year.</p>
+</dd></dl>
+
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-drz">
+<span class="sig-name descname"><span class="pre">+drz</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;value&gt;</span></span><a class="headerlink" href="#cmdoption-arg-drz" title="Permalink to this definition">¶</a></dt>
+<dd><p>Rotation rate of the y-axis given in arc seconds/year.</p>
+</dd></dl>
+
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-t_epoch">
+<span id="cmdoption-arg-t-epoch"></span><span class="sig-name descname"><span class="pre">+t_epoch</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;value&gt;</span></span><a class="headerlink" href="#cmdoption-arg-t_epoch" title="Permalink to this definition">¶</a></dt>
+<dd><p>Central epoch of transformation given in decimalyear. Only used
+spatiotemporal transformations.</p>
+</dd></dl>
+
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-exact">
+<span class="sig-name descname"><span class="pre">+exact</span></span><span class="sig-prename descclassname"></span><a class="headerlink" href="#cmdoption-arg-exact" title="Permalink to this definition">¶</a></dt>
+<dd><p>Use exact transformation equations.</p>
+<p>See <a class="reference internal" href="#equation-rot-exact">(5)</a></p>
+</dd></dl>
+
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-transpose">
+<span class="sig-name descname"><span class="pre">+transpose</span></span><span class="sig-prename descclassname"></span><a class="headerlink" href="#cmdoption-arg-transpose" title="Permalink to this definition">¶</a></dt>
+<dd><div class="deprecated">
+<p><span class="versionmodified deprecated">Deprecated since version 5.2.0: </span>(removed)</p>
+</div>
+<p>Transpose rotation matrix and follow the <strong>Position Vector</strong> rotation
+convention. If <a class="reference internal" href="#cmdoption-arg-transpose"><code class="xref std std-option docutils literal notranslate"><span class="pre">+transpose</span></code></a> is not added the <strong>Coordinate Frame</strong>
+rotation convention is used.</p>
+</dd></dl>
+
+</section>
+<section id="mathematical-description">
+<h2>Mathematical description<a class="headerlink" href="#mathematical-description" title="Permalink to this headline">¶</a></h2>
+<p>In the notation used below, <span class="math notranslate nohighlight">\(\hat{P}\)</span> is the rate of change of a given transformation
+parameter <span class="math notranslate nohighlight">\(P\)</span>. <span class="math notranslate nohighlight">\(\dot{P}\)</span> is the kinematically adjusted version of <span class="math notranslate nohighlight">\(P\)</span>,
+described by</p>
+<div class="math notranslate nohighlight" id="equation-propagation">
+<span class="eqno">(1)<a class="headerlink" href="#equation-propagation" title="Permalink to this equation">¶</a></span>\[\dot{P}= P + \hat{P}\left(t - t_{central}\right)\]</div>
+<p>where <span class="math notranslate nohighlight">\(t\)</span> is the observation time of the coordinate and <span class="math notranslate nohighlight">\(t_{central}\)</span> is
+the central epoch of the transformation. Equation <a class="reference internal" href="#equation-propagation">(1)</a> can be used to
+propagate all transformation parameters in time.</p>
+<p>Superscripts of vectors denote the reference frame the coordinates in the vector belong to.</p>
+<section id="d-helmert">
+<h3>2D Helmert<a class="headerlink" href="#d-helmert" title="Permalink to this headline">¶</a></h3>
+<p>The simplest version of the Helmert transform is the 2D case. In the 2-dimensional
+case only the horizontal coordinates are changed. The coordinates can be
+translated, rotated and scale. Translation is controlled with the <cite>x</cite> and <cite>y</cite>
+parameters. The rotation is determined by <cite>theta</cite> and the scale is controlled with
+the <cite>s</cite> parameters.</p>
+<div class="admonition note">
+<p class="admonition-title">Note</p>
+<p>The scaling parameter <cite>s</cite> is unitless for the 2D Helmert, as opposed to the
+3D version where the scaling parameter is given in units of ppm.</p>
+</div>
+<p>Mathematically the 2D Helmert is described as:</p>
+<div class="math notranslate nohighlight" id="equation-4param">
+<span class="eqno">(2)<a class="headerlink" href="#equation-4param" title="Permalink to this equation">¶</a></span>\[\begin{split}\begin{align}
+ \begin{bmatrix}
+ X \\
+ Y \\
+ \end{bmatrix}^B =
+ \begin{bmatrix}
+ T_x \\
+ T_y \\
+ \end{bmatrix} +
+ s
+ \begin{bmatrix}
+ \hphantom{-}\cos \theta &amp; \sin \theta \\
+ -\sin \theta &amp; \cos \theta \\
+ \end{bmatrix}
+ \begin{bmatrix}
+ X \\
+ Y \\
+ \end{bmatrix}^A
+\end{align}\end{split}\]</div>
+<p><a class="reference internal" href="#equation-4param">(2)</a> can be extended to a time-varying kinematic version by
+adjusting the parameters with <a class="reference internal" href="#equation-propagation">(1)</a> to <a class="reference internal" href="#equation-4param">(2)</a>, which yields
+the kinematic 2D Helmert transform:</p>
+<div class="math notranslate nohighlight" id="equation-8param">
+<span class="eqno">(3)<a class="headerlink" href="#equation-8param" title="Permalink to this equation">¶</a></span>\[\begin{split}\begin{align}
+ \begin{bmatrix}
+ X \\
+ Y \\
+ \end{bmatrix}^B =
+ \begin{bmatrix}
+ \dot{T_x} \\
+ \dot{T_y} \\
+ \end{bmatrix} +
+ s(t)
+ \begin{bmatrix}
+ \hphantom{-}\cos \dot{\theta} &amp; \sin \dot{\theta} \\
+ -\sin\ \dot{\theta} &amp; \cos \dot{\theta} \\
+ \end{bmatrix}
+ \begin{bmatrix}
+ X \\
+ Y \\
+ \end{bmatrix}^A
+\end{align}\end{split}\]</div>
+<p>All parameters in <a class="reference internal" href="#equation-8param">(3)</a> are determined by the use of <a class="reference internal" href="#equation-propagation">(1)</a>,
+which applies the rate of change to each individual parameter for a given
+timespan between <span class="math notranslate nohighlight">\(t\)</span> and <span class="math notranslate nohighlight">\(t_{central}\)</span>.</p>
+</section>
+<section id="id1">
+<h3>3D Helmert<a class="headerlink" href="#id1" title="Permalink to this headline">¶</a></h3>
+<p>The general form of the 3D Helmert is</p>
+<div class="math notranslate nohighlight" id="equation-general-helmert">
+<span class="eqno">(4)<a class="headerlink" href="#equation-general-helmert" title="Permalink to this equation">¶</a></span>\[\begin{align}
+ V^B = T + \left(1 + s \times 10^{-6}\right) \mathbf{R} V^A
+\end{align}\]</div>
+<p>Where <span class="math notranslate nohighlight">\(T\)</span> is a vector consisting of the three translation parameters, <span class="math notranslate nohighlight">\(s\)</span>
+is the scaling factor and <span class="math notranslate nohighlight">\(\mathbf{R}\)</span> is a rotation matrix. <span class="math notranslate nohighlight">\(V^A\)</span> and
+<span class="math notranslate nohighlight">\(V^B\)</span> are coordinate vectors, with <span class="math notranslate nohighlight">\(V^A\)</span> being the input coordinate and
+<span class="math notranslate nohighlight">\(V^B\)</span> is the output coordinate.</p>
+<p>In the <em>Position Vector</em> convention, we define <span class="math notranslate nohighlight">\(R_x = radians \left( rx \right)\)</span>,
+<span class="math notranslate nohighlight">\(R_z = radians \left( ry \right)\)</span> and <span class="math notranslate nohighlight">\(R_z = radians \left( rz \right)\)</span></p>
+<p>In the <em>Coordinate Frame</em> convention, <span class="math notranslate nohighlight">\(R_x = - radians \left( rx \right)\)</span>,
+<span class="math notranslate nohighlight">\(R_z = - radians \left( ry \right)\)</span> and <span class="math notranslate nohighlight">\(R_z = - radians \left( rz \right)\)</span></p>
+<p>The rotation matrix is composed of three rotation matrices, one for each axis.</p>
+<div class="math notranslate nohighlight">
+\[\begin{split}\begin{align}
+ \mathbf{R}_X &amp;= \begin{bmatrix} 1 &amp; 0 &amp; 0\\ 0 &amp; \cos R_x &amp; -\sin R_x \\ 0 &amp; \sin R_x &amp; \cos R_x \end{bmatrix}
+\end{align}\end{split}\]</div>
+<div class="math notranslate nohighlight">
+\[\begin{split}\begin{align}
+ \mathbf{R}_Y &amp;= \begin{bmatrix} \cos R_y &amp; 0 &amp; \sin R_y\\ 0 &amp; 1 &amp; 0\\ -\sin R_y &amp; 0 &amp; \cos R_y \end{bmatrix}
+\end{align}\end{split}\]</div>
+<div class="math notranslate nohighlight">
+\[\begin{split}\begin{align}
+ \mathbf{R}_Z &amp;= \begin{bmatrix} \cos R_z &amp; -\sin R_z &amp; 0\\ \sin R_z &amp; \cos R_z &amp; 0\\ 0 &amp; 0 &amp; 1 \end{bmatrix}
+\end{align}\end{split}\]</div>
+<p>The three rotation matrices can be combined in one:</p>
+<div class="math notranslate nohighlight">
+\[\begin{align}
+ \mathbf{R} = \mathbf{R_X} \mathbf{R_Y} \mathbf{R_Y}
+\end{align}\]</div>
+<p>For <span class="math notranslate nohighlight">\(\mathbf{R}\)</span>, this yields:</p>
+<div class="math notranslate nohighlight" id="equation-rot-exact">
+<span class="eqno">(5)<a class="headerlink" href="#equation-rot-exact" title="Permalink to this equation">¶</a></span>\[\begin{split}\begin{bmatrix}
+ \cos R_y \cos R_z &amp; -\cos R_x \sin R_z + &amp; \sin R_x \sin R_z + \\
+ &amp; \sin R_x \sin R_y \cos R_z &amp; \cos R_x \sin R_y \cos R_z \\
+ \cos R_y\sin R_z &amp; \cos R_x \cos R_z + &amp; - \sin R_x \cos R_z + \\
+ &amp; \sin R_x \sin R_y \sin R_z &amp; \cos R_x \sin R_y \sin R_z \\
+ -\sin R_y &amp; \sin R_x \cos R_y &amp; \cos R_x \cos R_y \\
+ \end{bmatrix}\end{split}\]</div>
+<p>Using the small angle approximation the rotation matrix can be simplified to</p>
+<div class="math notranslate nohighlight" id="equation-rot-approx">
+<span class="eqno">(6)<a class="headerlink" href="#equation-rot-approx" title="Permalink to this equation">¶</a></span>\[\begin{split}\begin{align} \mathbf{R} =
+ \begin{bmatrix}
+ 1 &amp; -R_z &amp; R_y \\
+ Rz &amp; 1 &amp; -R_x \\
+ -Ry &amp; R_x &amp; 1 \\
+ \end{bmatrix}
+\end{align}\end{split}\]</div>
+<p>Which allow us to express the most common version of the Helmert transform,
+using the approximated rotation matrix:</p>
+<div class="math notranslate nohighlight" id="equation-7param">
+<span class="eqno">(7)<a class="headerlink" href="#equation-7param" title="Permalink to this equation">¶</a></span>\[\begin{split}\begin{align}
+ \begin{bmatrix}
+ X \\
+ Y \\
+ Z \\
+ \end{bmatrix}^B =
+ \begin{bmatrix}
+ T_x \\
+ T_y \\
+ T_z \\
+ \end{bmatrix} +
+ \left(1 + s \times 10^{-6}\right)
+ \begin{bmatrix}
+ 1 &amp; -R_z &amp; R_y \\
+ Rz &amp; 1 &amp; -R_x \\
+ -Ry &amp; R_x &amp; 1 \\
+ \end{bmatrix}
+ \begin{bmatrix}
+ X \\
+ Y \\
+ Z \\
+ \end{bmatrix}^A
+\end{align}\end{split}\]</div>
+<p>If the rotation matrix is transposed, or the sign of the rotation terms negated,
+the rotational part of the transformation is effectively reversed.
+This is what happens when switching between the 2 conventions <code class="docutils literal notranslate"><span class="pre">position_vector</span></code>
+and <code class="docutils literal notranslate"><span class="pre">coordinate_frame</span></code></p>
+<p>Applying <a class="reference internal" href="#equation-propagation">(1)</a> we get the kinematic version of the approximated
+3D Helmert:</p>
+<div class="math notranslate nohighlight" id="equation-14param">
+<span class="eqno">(8)<a class="headerlink" href="#equation-14param" title="Permalink to this equation">¶</a></span>\[\begin{split}\begin{align}
+ \begin{bmatrix}
+ X \\
+ Y \\
+ Z \\
+ \end{bmatrix}^B =
+ \begin{bmatrix}
+ \dot{T_x} \\
+ \dot{T_y} \\
+ \dot{T_z} \\
+ \end{bmatrix} +
+ \left(1 + \dot{s} \times 10^{-6}\right)
+ \begin{bmatrix}
+ 1 &amp; -\dot{R_z} &amp; \dot{R_y} \\
+ \dot{R_z} &amp; 1 &amp; -\dot{R_x} \\
+ -\dot{R_y} &amp; \dot{R_x} &amp; 1 \\
+ \end{bmatrix}
+ \begin{bmatrix}
+ X \\
+ Y \\
+ Z \\
+ \end{bmatrix}^A
+\end{align}\end{split}\]</div>
+<p>The Helmert transformation can be applied without using the rotation parameters,
+in which case it becomes a simple translation of the origin of the coordinate
+system. When using the Helmert in this version equation <a class="reference internal" href="#equation-general-helmert">(4)</a>
+simplifies to:</p>
+<div class="math notranslate nohighlight" id="equation-3param">
+<span class="eqno">(9)<a class="headerlink" href="#equation-3param" title="Permalink to this equation">¶</a></span>\[\begin{split}\begin{align}
+ \begin{bmatrix}
+ X \\
+ Y \\
+ Z \\
+ \end{bmatrix}^B =
+ \begin{bmatrix}
+ T_x \\
+ T_y \\
+ T_z \\
+ \end{bmatrix} +
+ \begin{bmatrix}
+ X \\
+ Y \\
+ Z \\
+ \end{bmatrix}^A
+\end{align}\end{split}\]</div>
+<p>That after application of <a class="reference internal" href="#equation-propagation">(1)</a> has the following kinematic
+counterpart:</p>
+<div class="math notranslate nohighlight" id="equation-6param">
+<span class="eqno">(10)<a class="headerlink" href="#equation-6param" title="Permalink to this equation">¶</a></span>\[\begin{split}\begin{align}
+ \begin{bmatrix}
+ X \\
+ Y \\
+ Z \\
+ \end{bmatrix}^B =
+ \begin{bmatrix}
+ \dot{T_x} \\
+ \dot{T_y} \\
+ \dot{T_z} \\
+ \end{bmatrix} +
+ \begin{bmatrix}
+ X \\
+ Y \\
+ Z \\
+ \end{bmatrix}^A
+\end{align}\end{split}\]</div>
+</section>
+</section>
+</section>
+
+
+ </div>
+ </div>
+ <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
+ <a href="geogoffset.html" class="btn btn-neutral float-left" title="Geographic offsets" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
+ <a href="horner.html" class="btn btn-neutral float-right" title="Horner polynomial evaluation" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
+ </div>
+
+ <hr/>
+
+ <div role="contentinfo">
+ <p>&#169; Copyright 1983-2022.
+ <span class="lastupdated">Last updated on 22 Mar 2022.
+ </span></p>
+ </div>
+
+ Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
+ <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
+ provided by <a href="https://readthedocs.org">Read the Docs</a>.
+
+
+</footer>
+ </div>
+ </div>
+ </section>
+ </div>
+ <script>
+ jQuery(function () {
+ SphinxRtdTheme.Navigation.enable(true);
+ });
+ </script>
+
+</body>
+</html> \ No newline at end of file
diff --git a/operations/transformations/hgridshift.html b/operations/transformations/hgridshift.html
new file mode 100644
index 00000000..eff78a60
--- /dev/null
+++ b/operations/transformations/hgridshift.html
@@ -0,0 +1,292 @@
+<!DOCTYPE html>
+<html class="writer-html5" lang="en" >
+<head>
+ <meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
+
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <title>Horizontal grid shift &mdash; PROJ 9.0.0 documentation</title>
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
+ <link rel="shortcut icon" href="../../_static/favicon.png"/>
+ <link rel="canonical" href="https://proj.orgoperations/transformations/hgridshift.html"/>
+ <!--[if lt IE 9]>
+ <script src="../../_static/js/html5shiv.min.js"></script>
+ <![endif]-->
+
+ <script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
+ <script src="../../_static/jquery.js"></script>
+ <script src="../../_static/underscore.js"></script>
+ <script src="../../_static/doctools.js"></script>
+ <script src="../../_static/js/theme.js"></script>
+ <link rel="author" title="About these documents" href="../../about.html" />
+ <link rel="index" title="Index" href="../../genindex.html" />
+ <link rel="search" title="Search" href="../../search.html" />
+ <link rel="next" title="Triangulated Irregular Network based transformation" href="tinshift.html" />
+ <link rel="prev" title="Molodensky-Badekas transform" href="molobadekas.html" />
+</head>
+
+<body class="wy-body-for-nav">
+ <div class="wy-grid-for-nav">
+ <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+ <div class="wy-side-scroll">
+ <div class="wy-side-nav-search" style="background: #353130" >
+ <a href="../../index.html">
+ <img src="../../_static/logo.png" class="logo" alt="Logo"/>
+ </a>
+ <div class="version">
+ 9.0.0
+ </div>
+<div role="search">
+ <form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
+ <input type="text" name="q" placeholder="Search docs" />
+ <input type="hidden" name="check_keywords" value="yes" />
+ <input type="hidden" name="area" value="default" />
+ </form>
+</div>
+ </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
+ <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../../about.html">About</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../news.html">News</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../download.html">Download</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../install.html">Installation</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../usage/index.html">Using PROJ</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../apps/index.html">Applications</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="../index.html">Coordinate operations</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="../projections/index.html">Projections</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../conversions/index.html">Conversions</a></li>
+<li class="toctree-l2 current"><a class="reference internal" href="index.html">Transformations</a><ul class="current">
+<li class="toctree-l3"><a class="reference internal" href="affine.html">Affine transformation</a></li>
+<li class="toctree-l3"><a class="reference internal" href="defmodel.html">Multi-component time-based deformation model</a></li>
+<li class="toctree-l3"><a class="reference internal" href="deformation.html">Kinematic datum shifting utilizing a deformation model</a></li>
+<li class="toctree-l3"><a class="reference internal" href="geogoffset.html">Geographic offsets</a></li>
+<li class="toctree-l3"><a class="reference internal" href="helmert.html">Helmert transform</a></li>
+<li class="toctree-l3"><a class="reference internal" href="horner.html">Horner polynomial evaluation</a></li>
+<li class="toctree-l3"><a class="reference internal" href="molodensky.html">Molodensky transform</a></li>
+<li class="toctree-l3"><a class="reference internal" href="molobadekas.html">Molodensky-Badekas transform</a></li>
+<li class="toctree-l3 current"><a class="current reference internal" href="#">Horizontal grid shift</a><ul>
+<li class="toctree-l4"><a class="reference internal" href="#temporal-gridshifting">Temporal gridshifting</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#parameters">Parameters</a></li>
+</ul>
+</li>
+<li class="toctree-l3"><a class="reference internal" href="tinshift.html">Triangulated Irregular Network based transformation</a></li>
+<li class="toctree-l3"><a class="reference internal" href="vgridshift.html">Vertical grid shift</a></li>
+<li class="toctree-l3"><a class="reference internal" href="xyzgridshift.html">Geocentric grid shift</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="../pipeline.html">The pipeline operator</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../operations_computation.html">Computation of coordinate operations between two CRS</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../../resource_files.html">Resource files</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../geodesic.html">Geodesic calculations</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../specifications/index.html">Specifications</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../community/index.html">Community</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq.html">FAQ</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../glossary.html">Glossary</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../zreferences.html">References</a></li>
+</ul>
+
+ </div>
+ </div>
+ </nav>
+
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" style="background: #353130" >
+ <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+ <a href="../../index.html">PROJ</a>
+ </nav>
+
+ <div class="wy-nav-content">
+ <div class="rst-content">
+ <div role="navigation" aria-label="Page navigation">
+ <ul class="wy-breadcrumbs">
+ <li><a href="../../index.html" class="icon icon-home"></a> &raquo;</li>
+ <li><a href="../index.html">Coordinate operations</a> &raquo;</li>
+ <li><a href="index.html">Transformations</a> &raquo;</li>
+ <li>Horizontal grid shift</li>
+ <li class="wy-breadcrumbs-aside">
+ <a href="https://github.com/OSGeo/PROJ/edit/8.2/docs/source/operations/transformations/hgridshift.rst" class="fa fa-github"> Edit on GitHub</a>
+ </li>
+ </ul><div class="rst-breadcrumbs-buttons" role="navigation" aria-label="Sequential page navigation">
+ <a href="molobadekas.html" class="btn btn-neutral float-left" title="Molodensky-Badekas transform" accesskey="p"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
+ <a href="tinshift.html" class="btn btn-neutral float-right" title="Triangulated Irregular Network based transformation" accesskey="n">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
+ </div>
+ <hr/>
+</div>
+ <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+ <div itemprop="articleBody">
+
+ <section id="horizontal-grid-shift">
+<span id="hgridshift"></span><h1>Horizontal grid shift<a class="headerlink" href="#horizontal-grid-shift" title="Permalink to this headline">¶</a></h1>
+<div class="versionadded">
+<p><span class="versionmodified added">New in version 5.0.0.</span></p>
+</div>
+<p>Change of horizontal datum by grid shift.</p>
+<table class="docutils align-default">
+<colgroup>
+<col style="width: 20%" />
+<col style="width: 80%" />
+</colgroup>
+<tbody>
+<tr class="row-odd"><td><p><strong>Alias</strong></p></td>
+<td><p>hgridshift</p></td>
+</tr>
+<tr class="row-even"><td><p><strong>Domain</strong></p></td>
+<td><p>2D, 3D and 4D</p></td>
+</tr>
+<tr class="row-odd"><td><p><strong>Input type</strong></p></td>
+<td><p>Geodetic coordinates (horizontal), meters (vertical),
+decimalyear (temporal)</p></td>
+</tr>
+<tr class="row-even"><td><p><strong>Output type</strong></p></td>
+<td><p>Geodetic coordinates (horizontal), meters (vertical),
+decimalyear (temporal)</p></td>
+</tr>
+</tbody>
+</table>
+<p>The horizontal grid shift is done by offsetting the planar input coordinates by
+a specific amount determined by the loaded grids. The simplest use case of the
+horizontal grid shift is applying a single grid:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>+proj=hgridshift +grids=nzgr2kgrid0005.gsb
+</pre></div>
+</div>
+<p>More than one grid can be loaded at the same time, for instance in case the
+dataset needs to be transformed spans several countries. In this example grids
+of the continental US, Alaska and Canada is loaded at the same time:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>+proj=hgridshift +grids=@conus,@alaska,@ntv2_0.gsb,@ntv_can.dat
+</pre></div>
+</div>
+<p>The <code class="docutils literal notranslate"><span class="pre">&#64;</span></code> in the above example states that the grid is optional, in case the grid
+is not found in the PROJ search path. The list of grids is prioritized so that
+grids in the start of the list takes precedence over the grids in the back of the
+list.</p>
+<p>PROJ supports CTable2, NTv1 and NTv2 files for horizontal grid corrections. Details
+about all three formats can be found in the GDAL documentation and/or driver source
+code. GDAL reads and writes all three formats. Using GDAL for construction of
+new grids is recommended.</p>
+<section id="temporal-gridshifting">
+<h2>Temporal gridshifting<a class="headerlink" href="#temporal-gridshifting" title="Permalink to this headline">¶</a></h2>
+<div class="versionadded">
+<p><span class="versionmodified added">New in version 5.1.0.</span></p>
+</div>
+<p>By initializing the horizontal gridshift operation with a central epoch, it can be
+used as a step function applying the grid offsets only if a coordinate is
+transformed from an epoch before grids central epoch to an epoch after. This is
+handy in transformations where it is necessary to handle deformations caused by
+seismic activity.</p>
+<p>The central epoch of the grid is controlled with <a class="reference internal" href="vgridshift.html#cmdoption-arg-t_epoch"><code class="xref std std-option docutils literal notranslate"><span class="pre">+t_epoch</span></code></a> and the final
+epoch of the coordinate is set with <a class="reference internal" href="vgridshift.html#cmdoption-arg-t_final"><code class="xref std std-option docutils literal notranslate"><span class="pre">+t_final</span></code></a>. The observation epoch of
+the coordinate is part of the coordinate tuple.</p>
+<p>Suppose we want to model the deformation of the 2008 earthquake in Iceland in
+a transformation of data from 2005 to 2009:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>echo 63.992 -21.014 10.0 2005.0 | cct +proj=hgridshift +grids=iceland2008.gsb +t_epoch=2008.4071 +t_final=2009.0
+63.9920021 -21.0140013 10.0 2005.0
+</pre></div>
+</div>
+<div class="admonition note">
+<p class="admonition-title">Note</p>
+<p>The timestamp of the resulting coordinate is still 2005.0. The observation
+time is always kept unchanged as it would otherwise be impossible to do the
+inverse transformation.</p>
+</div>
+<p>Temporal gridshifting is especially powerful in transformation pipelines where
+several gridshifts can be chained together, effectively acting as a series of
+step functions that can be applied to a coordinate that is propagated through
+time. In the following example we establish a pipeline that allows transformation
+of coordinates from any given epoch up until the current date, applying only
+those gridshifts that have central epochs between the observation epoch and
+the final epoch:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>+proj=pipeline +t_final=now
++step +proj=hgridshift +grids=earthquake_1.gsb +t_epoch=2010.421
++step +proj=hgridshift +grids=earthquake_2.gsb +t_epoch=2013.853
++step +proj=hgridshift +grids=earthquake_3.gsb +t_epoch=2017.713
+</pre></div>
+</div>
+<div class="admonition note">
+<p class="admonition-title">Note</p>
+<p>The special epoch <em>now</em> is used when specifying the final epoch with
+<a class="reference internal" href="vgridshift.html#cmdoption-arg-t_final"><code class="xref std std-option docutils literal notranslate"><span class="pre">+t_final</span></code></a>. This results in coordinates being transformed to the
+current date. Additionally, <a class="reference internal" href="vgridshift.html#cmdoption-arg-t_final"><code class="xref std std-option docutils literal notranslate"><span class="pre">+t_final</span></code></a> is used as a
+<a class="reference internal" href="../pipeline.html#global-pipeline-parameter"><span class="std std-ref">global pipeline parameter</span></a>, which means
+that it is applied to all the steps in the pipeline.</p>
+</div>
+<p>In the above transformation, a coordinate with observation epoch 2009.32 would
+be subject to all three gridshift steps in the pipeline. A coordinate with
+observation epoch 2014.12 would only by offset by the last step in the pipeline.</p>
+</section>
+<section id="parameters">
+<h2>Parameters<a class="headerlink" href="#parameters" title="Permalink to this headline">¶</a></h2>
+<section id="required">
+<h3>Required<a class="headerlink" href="#required" title="Permalink to this headline">¶</a></h3>
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-grids">
+<span class="sig-name descname"><span class="pre">+grids</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;list&gt;</span></span><a class="headerlink" href="#cmdoption-arg-grids" title="Permalink to this definition">¶</a></dt>
+<dd><p>Comma-separated list of grids to load. If a grid is prefixed by an <cite>&#64;</cite> the
+grid is considered optional and PROJ will the not complain if the grid is
+not available.</p>
+<p>Grids are expected to be in CTable2, NTv1 or NTv2 format.</p>
+</dd></dl>
+
+</section>
+<section id="optional">
+<h3>Optional<a class="headerlink" href="#optional" title="Permalink to this headline">¶</a></h3>
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-t_epoch">
+<span id="cmdoption-arg-t-epoch"></span><span class="sig-name descname"><span class="pre">+t_epoch</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;time&gt;</span></span><a class="headerlink" href="#cmdoption-arg-t_epoch" title="Permalink to this definition">¶</a></dt>
+<dd><p>Central epoch of the transformation.</p>
+</dd></dl>
+
+<div class="versionadded">
+<p><span class="versionmodified added">New in version 5.1.0.</span></p>
+</div>
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-t_final">
+<span id="cmdoption-arg-t-final"></span><span class="sig-name descname"><span class="pre">+t_final</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;time&gt;</span></span><a class="headerlink" href="#cmdoption-arg-t_final" title="Permalink to this definition">¶</a></dt>
+<dd><p>Final epoch that the coordinate will be propagated to after transformation.
+The special epoch <em>now</em> can be used instead of writing a specific period in
+time. When <em>now</em> is used, it is replaced internally with the epoch of the
+transformation. This means that the resulting coordinate will be slightly
+different if carried out again at a later date.</p>
+</dd></dl>
+
+<div class="versionadded">
+<p><span class="versionmodified added">New in version 5.1.0.</span></p>
+</div>
+</section>
+</section>
+</section>
+
+
+ </div>
+ </div>
+ <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
+ <a href="molobadekas.html" class="btn btn-neutral float-left" title="Molodensky-Badekas transform" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
+ <a href="tinshift.html" class="btn btn-neutral float-right" title="Triangulated Irregular Network based transformation" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
+ </div>
+
+ <hr/>
+
+ <div role="contentinfo">
+ <p>&#169; Copyright 1983-2022.
+ <span class="lastupdated">Last updated on 22 Mar 2022.
+ </span></p>
+ </div>
+
+ Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
+ <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
+ provided by <a href="https://readthedocs.org">Read the Docs</a>.
+
+
+</footer>
+ </div>
+ </div>
+ </section>
+ </div>
+ <script>
+ jQuery(function () {
+ SphinxRtdTheme.Navigation.enable(true);
+ });
+ </script>
+
+</body>
+</html> \ No newline at end of file
diff --git a/operations/transformations/horner.html b/operations/transformations/horner.html
new file mode 100644
index 00000000..9a1d3fed
--- /dev/null
+++ b/operations/transformations/horner.html
@@ -0,0 +1,369 @@
+<!DOCTYPE html>
+<html class="writer-html5" lang="en" >
+<head>
+ <meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
+
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <title>Horner polynomial evaluation &mdash; PROJ 9.0.0 documentation</title>
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
+ <link rel="shortcut icon" href="../../_static/favicon.png"/>
+ <link rel="canonical" href="https://proj.orgoperations/transformations/horner.html"/>
+ <!--[if lt IE 9]>
+ <script src="../../_static/js/html5shiv.min.js"></script>
+ <![endif]-->
+
+ <script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
+ <script src="../../_static/jquery.js"></script>
+ <script src="../../_static/underscore.js"></script>
+ <script src="../../_static/doctools.js"></script>
+ <script async="async" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
+ <script src="../../_static/js/theme.js"></script>
+ <link rel="author" title="About these documents" href="../../about.html" />
+ <link rel="index" title="Index" href="../../genindex.html" />
+ <link rel="search" title="Search" href="../../search.html" />
+ <link rel="next" title="Molodensky transform" href="molodensky.html" />
+ <link rel="prev" title="Helmert transform" href="helmert.html" />
+</head>
+
+<body class="wy-body-for-nav">
+ <div class="wy-grid-for-nav">
+ <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+ <div class="wy-side-scroll">
+ <div class="wy-side-nav-search" style="background: #353130" >
+ <a href="../../index.html">
+ <img src="../../_static/logo.png" class="logo" alt="Logo"/>
+ </a>
+ <div class="version">
+ 9.0.0
+ </div>
+<div role="search">
+ <form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
+ <input type="text" name="q" placeholder="Search docs" />
+ <input type="hidden" name="check_keywords" value="yes" />
+ <input type="hidden" name="area" value="default" />
+ </form>
+</div>
+ </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
+ <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../../about.html">About</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../news.html">News</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../download.html">Download</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../install.html">Installation</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../usage/index.html">Using PROJ</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../apps/index.html">Applications</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="../index.html">Coordinate operations</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="../projections/index.html">Projections</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../conversions/index.html">Conversions</a></li>
+<li class="toctree-l2 current"><a class="reference internal" href="index.html">Transformations</a><ul class="current">
+<li class="toctree-l3"><a class="reference internal" href="affine.html">Affine transformation</a></li>
+<li class="toctree-l3"><a class="reference internal" href="defmodel.html">Multi-component time-based deformation model</a></li>
+<li class="toctree-l3"><a class="reference internal" href="deformation.html">Kinematic datum shifting utilizing a deformation model</a></li>
+<li class="toctree-l3"><a class="reference internal" href="geogoffset.html">Geographic offsets</a></li>
+<li class="toctree-l3"><a class="reference internal" href="helmert.html">Helmert transform</a></li>
+<li class="toctree-l3 current"><a class="current reference internal" href="#">Horner polynomial evaluation</a><ul>
+<li class="toctree-l4"><a class="reference internal" href="#examples">Examples</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#parameters">Parameters</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#further-reading">Further reading</a></li>
+</ul>
+</li>
+<li class="toctree-l3"><a class="reference internal" href="molodensky.html">Molodensky transform</a></li>
+<li class="toctree-l3"><a class="reference internal" href="molobadekas.html">Molodensky-Badekas transform</a></li>
+<li class="toctree-l3"><a class="reference internal" href="hgridshift.html">Horizontal grid shift</a></li>
+<li class="toctree-l3"><a class="reference internal" href="tinshift.html">Triangulated Irregular Network based transformation</a></li>
+<li class="toctree-l3"><a class="reference internal" href="vgridshift.html">Vertical grid shift</a></li>
+<li class="toctree-l3"><a class="reference internal" href="xyzgridshift.html">Geocentric grid shift</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="../pipeline.html">The pipeline operator</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../operations_computation.html">Computation of coordinate operations between two CRS</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../../resource_files.html">Resource files</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../geodesic.html">Geodesic calculations</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../specifications/index.html">Specifications</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../community/index.html">Community</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq.html">FAQ</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../glossary.html">Glossary</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../zreferences.html">References</a></li>
+</ul>
+
+ </div>
+ </div>
+ </nav>
+
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" style="background: #353130" >
+ <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+ <a href="../../index.html">PROJ</a>
+ </nav>
+
+ <div class="wy-nav-content">
+ <div class="rst-content">
+ <div role="navigation" aria-label="Page navigation">
+ <ul class="wy-breadcrumbs">
+ <li><a href="../../index.html" class="icon icon-home"></a> &raquo;</li>
+ <li><a href="../index.html">Coordinate operations</a> &raquo;</li>
+ <li><a href="index.html">Transformations</a> &raquo;</li>
+ <li>Horner polynomial evaluation</li>
+ <li class="wy-breadcrumbs-aside">
+ <a href="https://github.com/OSGeo/PROJ/edit/8.2/docs/source/operations/transformations/horner.rst" class="fa fa-github"> Edit on GitHub</a>
+ </li>
+ </ul><div class="rst-breadcrumbs-buttons" role="navigation" aria-label="Sequential page navigation">
+ <a href="helmert.html" class="btn btn-neutral float-left" title="Helmert transform" accesskey="p"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
+ <a href="molodensky.html" class="btn btn-neutral float-right" title="Molodensky transform" accesskey="n">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
+ </div>
+ <hr/>
+</div>
+ <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+ <div itemprop="articleBody">
+
+ <section id="horner-polynomial-evaluation">
+<span id="horner"></span><h1>Horner polynomial evaluation<a class="headerlink" href="#horner-polynomial-evaluation" title="Permalink to this headline">¶</a></h1>
+<div class="versionadded">
+<p><span class="versionmodified added">New in version 5.0.0.</span></p>
+</div>
+<table class="docutils align-default">
+<colgroup>
+<col style="width: 20%" />
+<col style="width: 80%" />
+</colgroup>
+<tbody>
+<tr class="row-odd"><td><p><strong>Alias</strong></p></td>
+<td><p>horner</p></td>
+</tr>
+<tr class="row-even"><td><p><strong>Domain</strong></p></td>
+<td><p>2D and 3D</p></td>
+</tr>
+<tr class="row-odd"><td><p><strong>Input type</strong></p></td>
+<td><p>Geodetic and projected coordinates</p></td>
+</tr>
+<tr class="row-even"><td><p><strong>Output type</strong></p></td>
+<td><p>Geodetic and projected coordinates</p></td>
+</tr>
+</tbody>
+</table>
+<p>The Horner polynomial evaluation scheme is used for transformations between reference
+frames where one or both are inhomogeneous or internally distorted. This will typically
+be reference frames created before the introduction of space geodetic techniques such
+as GPS.</p>
+<p>Horner polynomials, or Multiple Regression Equations as they are also known as, have
+their strength in being able to create complicated mappings between coordinate
+reference frames while still being lightweight in both computational cost and disk
+space used.</p>
+<p>PROJ implements two versions of the Horner evaluation scheme: Real and complex
+polynomial evaluation. Below both are briefly described. For more details consult
+<span id="id1">[<a class="reference internal" href="../../zreferences.html#id31" title="Ruffhead, A. C. Introduction to multiple regression equations in datum transformations and their reversibility. Survey Review, 50(358):82–90, 2016. doi:10.1080/00396265.2016.1244143.">Ruffhead2016</a>]</span> and <span id="id2">[<a class="reference internal" href="../../zreferences.html#id17" title="IOGP. Geomatics guidance note 7, part 2: coordinate conversions &amp; transformations including formulas. IOGP Publication 373-7-2, International Association For Oil And Gas Producers, 2018. URL: https://www.iogp.org/bookstore/product/coordinate-conversions-and-transformation-including-formulas/.">IOGP2018</a>]</span>.</p>
+<p>The polynomial evaluation in real number space is defined by the following equations:</p>
+<div class="math notranslate nohighlight" id="equation-real-poly">
+<span class="eqno">(1)<a class="headerlink" href="#equation-real-poly" title="Permalink to this equation">¶</a></span>\[ \begin{align}\begin{aligned}\Delta X = \sum_{i,j} u_{i,j} U^i V^j\\\Delta Y = \sum_{i,j} v_{i,j} U^i V^j\end{aligned}\end{align} \]</div>
+<p>where</p>
+<div class="math notranslate nohighlight" id="equation-uv">
+<span class="eqno">(2)<a class="headerlink" href="#equation-uv" title="Permalink to this equation">¶</a></span>\[ \begin{align}\begin{aligned}U = X_{in} - X_{origin}\\V = Y_{in} - Y_{origin}\end{aligned}\end{align} \]</div>
+<p>and <span class="math notranslate nohighlight">\(u_{i,j}\)</span> and <span class="math notranslate nohighlight">\(v_{i,j}\)</span> are coefficients that make up
+the polynomial.</p>
+<p>The final coordinates are determined as</p>
+<div class="math notranslate nohighlight" id="equation-xy-out">
+<span class="eqno">(3)<a class="headerlink" href="#equation-xy-out" title="Permalink to this equation">¶</a></span>\[ \begin{align}\begin{aligned}X_{out} = X_{in} + \Delta X\\Y_{out} = Y_{in} + \Delta Y\end{aligned}\end{align} \]</div>
+<p>The inverse transform is the same as the above but requires a different set of
+coefficients.</p>
+<p>Evaluation of the complex polynomials are defined by the following equations:</p>
+<div class="math notranslate nohighlight" id="equation-complex-poly">
+<span class="eqno">(4)<a class="headerlink" href="#equation-complex-poly" title="Permalink to this equation">¶</a></span>\[\Delta X + i \Delta Y = \sum_{j=1}^n (c_{2j-1} + i c_{2j}) (U + i V)^j\]</div>
+<p>Where <span class="math notranslate nohighlight">\(n\)</span> is the degree of the polynomial. <span class="math notranslate nohighlight">\(U\)</span> and <span class="math notranslate nohighlight">\(V\)</span> are
+defined as in <a class="reference internal" href="#equation-uv">(2)</a> and the resulting coordinates are again determined
+by <a class="reference internal" href="#equation-xy-out">(3)</a>.</p>
+<section id="examples">
+<h2>Examples<a class="headerlink" href="#examples" title="Permalink to this headline">¶</a></h2>
+<p>Mapping between Danish TC32 and ETRS89/UTM zone 32 using polynomials in real
+number space:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>+proj=horner
++ellps=intl
++range=500000
++fwd_origin=877605.269066,6125810.306769
++inv_origin=877605.760036,6125811.281773
++deg=4
++fwd_v=6.1258112678e+06,9.9999971567e-01,1.5372750011e-10,5.9300860915e-15,2.2609497633e-19,4.3188227445e-05,2.8225130416e-10,7.8740007114e-16,-1.7453997279e-19,1.6877465415e-10,-1.1234649773e-14,-1.7042333358e-18,-7.9303467953e-15,-5.2906832535e-19,3.9984284847e-19
++fwd_u=8.7760574982e+05,9.9999752475e-01,2.8817299305e-10,5.5641310680e-15,-1.5544700949e-18,-4.1357045890e-05,4.2106213519e-11,2.8525551629e-14,-1.9107771273e-18,3.3615590093e-10,2.4380247154e-14,-2.0241230315e-18,1.2429019719e-15,5.3886155968e-19,-1.0167505000e-18
++inv_v=6.1258103208e+06,1.0000002826e+00,-1.5372762184e-10,-5.9304261011e-15,-2.2612705361e-19,-4.3188331419e-05,-2.8225549995e-10,-7.8529116371e-16,1.7476576773e-19,-1.6875687989e-10,1.1236475299e-14,1.7042518057e-18,7.9300735257e-15,5.2881862699e-19,-3.9990736798e-19
++inv_u=8.7760527928e+05,1.0000024735e+00,-2.8817540032e-10,-5.5627059451e-15,1.5543637570e-18,4.1357152105e-05,-4.2114813612e-11,-2.8523713454e-14,1.9109017837e-18,-3.3616407783e-10,-2.4382678126e-14,2.0245020199e-18,-1.2441377565e-15,-5.3885232238e-19,1.0167203661e-18
+</pre></div>
+</div>
+<p>Mapping between Danish System Storebælt and ETRS89/UTM zone 32 using complex
+polynomials:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>+proj=horner
++ellps=intl
++range=500000
++fwd_origin=4.94690026817276e+05,6.13342113183056e+06
++inv_origin=6.19480258923588e+05,6.13258568148837e+06
++deg=3
++fwd_c=6.13258562111350e+06,6.19480105709997e+05,9.99378966275206e-01,-2.82153291753490e-02,-2.27089979140026e-10,-1.77019590701470e-09,1.08522286274070e-14,2.11430298751604e-15
++inv_c=6.13342118787027e+06,4.94690181709311e+05,9.99824464710368e-01,2.82279070814774e-02,7.66123542220864e-11,1.78425334628927e-09,-1.05584823306400e-14,-3.32554258683744e-15
+</pre></div>
+</div>
+</section>
+<section id="parameters">
+<h2>Parameters<a class="headerlink" href="#parameters" title="Permalink to this headline">¶</a></h2>
+<p>Setting up Horner polynomials requires many coefficients being explicitly
+written, even for polynomials of low degree. For this reason it is recommended
+to store the polynomial definitions in an <a class="reference internal" href="../../resource_files.html#init-files"><span class="std std-ref">init file</span></a> for
+easier writing and reuse.</p>
+<section id="required">
+<h3>Required<a class="headerlink" href="#required" title="Permalink to this headline">¶</a></h3>
+<p>Below is a list of required parameters that can be set for the Horner polynomial
+transformation. As stated above, the transformation takes to forms, either using
+real or complex polynomials. These are divided into separate sections below.
+Parameters from the two sections are mutually exclusive, that is parameters
+describing real and complex polynomials can’t be mixed.</p>
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-ellps">
+<span class="sig-name descname"><span class="pre">+ellps</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;value&gt;</span></span><a class="headerlink" href="#cmdoption-arg-ellps" title="Permalink to this definition">¶</a></dt>
+<dd><p>The name of a built-in ellipsoid definition.</p>
+<p>See <a class="reference internal" href="../../usage/ellipsoids.html#ellipsoids"><span class="std std-ref">Ellipsoids</span></a> for more information, or execute
+<a class="reference internal" href="../../apps/proj.html#cmdoption-proj-le"><code class="xref std std-option docutils literal notranslate"><span class="pre">proj</span> <span class="pre">-le</span></code></a> for a list of built-in ellipsoid names.</p>
+<p><em>Defaults to “GRS80”.</em></p>
+</dd></dl>
+
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-deg">
+<span class="sig-name descname"><span class="pre">+deg</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;value&gt;</span></span><a class="headerlink" href="#cmdoption-arg-deg" title="Permalink to this definition">¶</a></dt>
+<dd><p>Degree of polynomial</p>
+</dd></dl>
+
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-fwd_origin">
+<span id="cmdoption-arg-fwd-origin"></span><span class="sig-name descname"><span class="pre">+fwd_origin</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;northing,easting&gt;</span></span><a class="headerlink" href="#cmdoption-arg-fwd_origin" title="Permalink to this definition">¶</a></dt>
+<dd><p>Coordinate of origin for the forward mapping</p>
+</dd></dl>
+
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-inv_origin">
+<span id="cmdoption-arg-inv-origin"></span><span class="sig-name descname"><span class="pre">+inv_origin</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;northing,easting&gt;</span></span><a class="headerlink" href="#cmdoption-arg-inv_origin" title="Permalink to this definition">¶</a></dt>
+<dd><p>Coordinate of origin for the inverse mapping</p>
+</dd></dl>
+
+<section id="real-polynomials">
+<h4>Real polynomials<a class="headerlink" href="#real-polynomials" title="Permalink to this headline">¶</a></h4>
+<p>The following parameters has to be set if the transformation consists of
+polynomials in real space. Each parameter takes a comma-separated list of
+coefficients. The number of coefficients is governed by the degree, <span class="math notranslate nohighlight">\(d\)</span>,
+of the polynomial:</p>
+<div class="math notranslate nohighlight">
+\[N = \frac{(d + 1)(d + 2)}{2}\]</div>
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-fwd_u">
+<span id="cmdoption-arg-fwd-u"></span><span class="sig-name descname"><span class="pre">+fwd_u</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;u_11,u_12,...,u_ij,..,u_mn&gt;</span></span><a class="headerlink" href="#cmdoption-arg-fwd_u" title="Permalink to this definition">¶</a></dt>
+<dd><p>Coefficients for the forward transformation i.e. latitude to northing
+as described in <a class="reference internal" href="#equation-real-poly">(1)</a>.</p>
+</dd></dl>
+
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-fwd_v">
+<span id="cmdoption-arg-fwd-v"></span><span class="sig-name descname"><span class="pre">+fwd_v</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;v_11,v_12,...,v_ij,..,v_mn&gt;</span></span><a class="headerlink" href="#cmdoption-arg-fwd_v" title="Permalink to this definition">¶</a></dt>
+<dd><p>Coefficients for the forward transformation i.e. longitude to easting
+as described in <a class="reference internal" href="#equation-real-poly">(1)</a>.</p>
+</dd></dl>
+
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-inv_u">
+<span id="cmdoption-arg-inv-u"></span><span class="sig-name descname"><span class="pre">+inv_u</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;u_11,u_12,...,u_ij,..,u_mn&gt;</span></span><a class="headerlink" href="#cmdoption-arg-inv_u" title="Permalink to this definition">¶</a></dt>
+<dd><p>Coefficients for the inverse transformation i.e. latitude to northing
+as described in <a class="reference internal" href="#equation-real-poly">(1)</a>.</p>
+</dd></dl>
+
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-inv_v">
+<span id="cmdoption-arg-inv-v"></span><span class="sig-name descname"><span class="pre">+inv_v</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;v_11,v_12,...,v_ij,..,v_mn&gt;</span></span><a class="headerlink" href="#cmdoption-arg-inv_v" title="Permalink to this definition">¶</a></dt>
+<dd><p>Coefficients for the inverse transformation i.e. longitude to easting
+as described in <a class="reference internal" href="#equation-real-poly">(1)</a>.</p>
+</dd></dl>
+
+</section>
+<section id="complex-polynomials">
+<h4>Complex polynomials<a class="headerlink" href="#complex-polynomials" title="Permalink to this headline">¶</a></h4>
+<p>The following parameters has to be set if the transformation consists of
+polynomials in complex space. Each parameter takes a comma-separated list of
+coefficients. The number of coefficients is governed by the degree, <span class="math notranslate nohighlight">\(d\)</span>,
+of the polynomial:</p>
+<div class="math notranslate nohighlight">
+\[N = 2d + 2\]</div>
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-fwd_c">
+<span id="cmdoption-arg-fwd-c"></span><span class="sig-name descname"><span class="pre">+fwd_c</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;c_1,c_2,...,c_N&gt;</span></span><a class="headerlink" href="#cmdoption-arg-fwd_c" title="Permalink to this definition">¶</a></dt>
+<dd><p>Coefficients for the complex forward transformation
+as described in <a class="reference internal" href="#equation-complex-poly">(4)</a>.</p>
+</dd></dl>
+
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-inv_c">
+<span id="cmdoption-arg-inv-c"></span><span class="sig-name descname"><span class="pre">+inv_c</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;c_1,c_2,...,c_N&gt;</span></span><a class="headerlink" href="#cmdoption-arg-inv_c" title="Permalink to this definition">¶</a></dt>
+<dd><p>Coefficients for the complex inverse transformation
+as described in <a class="reference internal" href="#equation-complex-poly">(4)</a>.</p>
+</dd></dl>
+
+</section>
+</section>
+<section id="optional">
+<h3>Optional<a class="headerlink" href="#optional" title="Permalink to this headline">¶</a></h3>
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-range">
+<span class="sig-name descname"><span class="pre">+range</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;value&gt;</span></span><a class="headerlink" href="#cmdoption-arg-range" title="Permalink to this definition">¶</a></dt>
+<dd><p>Radius of the region of validity.</p>
+</dd></dl>
+
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-uneg">
+<span class="sig-name descname"><span class="pre">+uneg</span></span><span class="sig-prename descclassname"></span><a class="headerlink" href="#cmdoption-arg-uneg" title="Permalink to this definition">¶</a></dt>
+<dd><p>Express latitude as southing. Only applies for complex polynomials.</p>
+</dd></dl>
+
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-vneg">
+<span class="sig-name descname"><span class="pre">+vneg</span></span><span class="sig-prename descclassname"></span><a class="headerlink" href="#cmdoption-arg-vneg" title="Permalink to this definition">¶</a></dt>
+<dd><p>Express longitude as westing. Only applies for complex polynomials.</p>
+</dd></dl>
+
+</section>
+</section>
+<section id="further-reading">
+<h2>Further reading<a class="headerlink" href="#further-reading" title="Permalink to this headline">¶</a></h2>
+<ol class="arabic simple">
+<li><p><a class="reference external" href="https://en.wikipedia.org/wiki/Horner%27s_method">Wikipedia</a></p></li>
+</ol>
+</section>
+</section>
+
+
+ </div>
+ </div>
+ <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
+ <a href="helmert.html" class="btn btn-neutral float-left" title="Helmert transform" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
+ <a href="molodensky.html" class="btn btn-neutral float-right" title="Molodensky transform" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
+ </div>
+
+ <hr/>
+
+ <div role="contentinfo">
+ <p>&#169; Copyright 1983-2022.
+ <span class="lastupdated">Last updated on 22 Mar 2022.
+ </span></p>
+ </div>
+
+ Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
+ <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
+ provided by <a href="https://readthedocs.org">Read the Docs</a>.
+
+
+</footer>
+ </div>
+ </div>
+ </section>
+ </div>
+ <script>
+ jQuery(function () {
+ SphinxRtdTheme.Navigation.enable(true);
+ });
+ </script>
+
+</body>
+</html> \ No newline at end of file
diff --git a/operations/transformations/index.html b/operations/transformations/index.html
new file mode 100644
index 00000000..eef33028
--- /dev/null
+++ b/operations/transformations/index.html
@@ -0,0 +1,169 @@
+<!DOCTYPE html>
+<html class="writer-html5" lang="en" >
+<head>
+ <meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
+
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <title>Transformations &mdash; PROJ 9.0.0 documentation</title>
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
+ <link rel="shortcut icon" href="../../_static/favicon.png"/>
+ <link rel="canonical" href="https://proj.orgoperations/transformations/index.html"/>
+ <!--[if lt IE 9]>
+ <script src="../../_static/js/html5shiv.min.js"></script>
+ <![endif]-->
+
+ <script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
+ <script src="../../_static/jquery.js"></script>
+ <script src="../../_static/underscore.js"></script>
+ <script src="../../_static/doctools.js"></script>
+ <script src="../../_static/js/theme.js"></script>
+ <link rel="author" title="About these documents" href="../../about.html" />
+ <link rel="index" title="Index" href="../../genindex.html" />
+ <link rel="search" title="Search" href="../../search.html" />
+ <link rel="next" title="Affine transformation" href="affine.html" />
+ <link rel="prev" title="Unit conversion" href="../conversions/unitconvert.html" />
+</head>
+
+<body class="wy-body-for-nav">
+ <div class="wy-grid-for-nav">
+ <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+ <div class="wy-side-scroll">
+ <div class="wy-side-nav-search" style="background: #353130" >
+ <a href="../../index.html">
+ <img src="../../_static/logo.png" class="logo" alt="Logo"/>
+ </a>
+ <div class="version">
+ 9.0.0
+ </div>
+<div role="search">
+ <form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
+ <input type="text" name="q" placeholder="Search docs" />
+ <input type="hidden" name="check_keywords" value="yes" />
+ <input type="hidden" name="area" value="default" />
+ </form>
+</div>
+ </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
+ <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../../about.html">About</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../news.html">News</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../download.html">Download</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../install.html">Installation</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../usage/index.html">Using PROJ</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../apps/index.html">Applications</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="../index.html">Coordinate operations</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="../projections/index.html">Projections</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../conversions/index.html">Conversions</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Transformations</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="affine.html">Affine transformation</a></li>
+<li class="toctree-l3"><a class="reference internal" href="defmodel.html">Multi-component time-based deformation model</a></li>
+<li class="toctree-l3"><a class="reference internal" href="deformation.html">Kinematic datum shifting utilizing a deformation model</a></li>
+<li class="toctree-l3"><a class="reference internal" href="geogoffset.html">Geographic offsets</a></li>
+<li class="toctree-l3"><a class="reference internal" href="helmert.html">Helmert transform</a></li>
+<li class="toctree-l3"><a class="reference internal" href="horner.html">Horner polynomial evaluation</a></li>
+<li class="toctree-l3"><a class="reference internal" href="molodensky.html">Molodensky transform</a></li>
+<li class="toctree-l3"><a class="reference internal" href="molobadekas.html">Molodensky-Badekas transform</a></li>
+<li class="toctree-l3"><a class="reference internal" href="hgridshift.html">Horizontal grid shift</a></li>
+<li class="toctree-l3"><a class="reference internal" href="tinshift.html">Triangulated Irregular Network based transformation</a></li>
+<li class="toctree-l3"><a class="reference internal" href="vgridshift.html">Vertical grid shift</a></li>
+<li class="toctree-l3"><a class="reference internal" href="xyzgridshift.html">Geocentric grid shift</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="../pipeline.html">The pipeline operator</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../operations_computation.html">Computation of coordinate operations between two CRS</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../../resource_files.html">Resource files</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../geodesic.html">Geodesic calculations</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../specifications/index.html">Specifications</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../community/index.html">Community</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq.html">FAQ</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../glossary.html">Glossary</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../zreferences.html">References</a></li>
+</ul>
+
+ </div>
+ </div>
+ </nav>
+
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" style="background: #353130" >
+ <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+ <a href="../../index.html">PROJ</a>
+ </nav>
+
+ <div class="wy-nav-content">
+ <div class="rst-content">
+ <div role="navigation" aria-label="Page navigation">
+ <ul class="wy-breadcrumbs">
+ <li><a href="../../index.html" class="icon icon-home"></a> &raquo;</li>
+ <li><a href="../index.html">Coordinate operations</a> &raquo;</li>
+ <li>Transformations</li>
+ <li class="wy-breadcrumbs-aside">
+ <a href="https://github.com/OSGeo/PROJ/edit/8.2/docs/source/operations/transformations/index.rst" class="fa fa-github"> Edit on GitHub</a>
+ </li>
+ </ul><div class="rst-breadcrumbs-buttons" role="navigation" aria-label="Sequential page navigation">
+ <a href="../conversions/unitconvert.html" class="btn btn-neutral float-left" title="Unit conversion" accesskey="p"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
+ <a href="affine.html" class="btn btn-neutral float-right" title="Affine transformation" accesskey="n">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
+ </div>
+ <hr/>
+</div>
+ <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+ <div itemprop="articleBody">
+
+ <section id="transformations">
+<span id="transformation-list"></span><h1>Transformations<a class="headerlink" href="#transformations" title="Permalink to this headline">¶</a></h1>
+<p>Transformations coordinate operation in which the two coordinate reference
+systems are based on different datums.</p>
+<div class="toctree-wrapper compound">
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="affine.html">Affine transformation</a></li>
+<li class="toctree-l1"><a class="reference internal" href="defmodel.html">Multi-component time-based deformation model</a></li>
+<li class="toctree-l1"><a class="reference internal" href="deformation.html">Kinematic datum shifting utilizing a deformation model</a></li>
+<li class="toctree-l1"><a class="reference internal" href="geogoffset.html">Geographic offsets</a></li>
+<li class="toctree-l1"><a class="reference internal" href="helmert.html">Helmert transform</a></li>
+<li class="toctree-l1"><a class="reference internal" href="horner.html">Horner polynomial evaluation</a></li>
+<li class="toctree-l1"><a class="reference internal" href="molodensky.html">Molodensky transform</a></li>
+<li class="toctree-l1"><a class="reference internal" href="molobadekas.html">Molodensky-Badekas transform</a></li>
+<li class="toctree-l1"><a class="reference internal" href="hgridshift.html">Horizontal grid shift</a></li>
+<li class="toctree-l1"><a class="reference internal" href="tinshift.html">Triangulated Irregular Network based transformation</a></li>
+<li class="toctree-l1"><a class="reference internal" href="vgridshift.html">Vertical grid shift</a></li>
+<li class="toctree-l1"><a class="reference internal" href="xyzgridshift.html">Geocentric grid shift</a></li>
+</ul>
+</div>
+</section>
+
+
+ </div>
+ </div>
+ <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
+ <a href="../conversions/unitconvert.html" class="btn btn-neutral float-left" title="Unit conversion" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
+ <a href="affine.html" class="btn btn-neutral float-right" title="Affine transformation" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
+ </div>
+
+ <hr/>
+
+ <div role="contentinfo">
+ <p>&#169; Copyright 1983-2022.
+ <span class="lastupdated">Last updated on 22 Mar 2022.
+ </span></p>
+ </div>
+
+ Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
+ <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
+ provided by <a href="https://readthedocs.org">Read the Docs</a>.
+
+
+</footer>
+ </div>
+ </div>
+ </section>
+ </div>
+ <script>
+ jQuery(function () {
+ SphinxRtdTheme.Navigation.enable(true);
+ });
+ </script>
+
+</body>
+</html> \ No newline at end of file
diff --git a/operations/transformations/molobadekas.html b/operations/transformations/molobadekas.html
new file mode 100644
index 00000000..65709718
--- /dev/null
+++ b/operations/transformations/molobadekas.html
@@ -0,0 +1,320 @@
+<!DOCTYPE html>
+<html class="writer-html5" lang="en" >
+<head>
+ <meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
+
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <title>Molodensky-Badekas transform &mdash; PROJ 9.0.0 documentation</title>
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
+ <link rel="shortcut icon" href="../../_static/favicon.png"/>
+ <link rel="canonical" href="https://proj.orgoperations/transformations/molobadekas.html"/>
+ <!--[if lt IE 9]>
+ <script src="../../_static/js/html5shiv.min.js"></script>
+ <![endif]-->
+
+ <script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
+ <script src="../../_static/jquery.js"></script>
+ <script src="../../_static/underscore.js"></script>
+ <script src="../../_static/doctools.js"></script>
+ <script async="async" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
+ <script src="../../_static/js/theme.js"></script>
+ <link rel="author" title="About these documents" href="../../about.html" />
+ <link rel="index" title="Index" href="../../genindex.html" />
+ <link rel="search" title="Search" href="../../search.html" />
+ <link rel="next" title="Horizontal grid shift" href="hgridshift.html" />
+ <link rel="prev" title="Molodensky transform" href="molodensky.html" />
+</head>
+
+<body class="wy-body-for-nav">
+ <div class="wy-grid-for-nav">
+ <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+ <div class="wy-side-scroll">
+ <div class="wy-side-nav-search" style="background: #353130" >
+ <a href="../../index.html">
+ <img src="../../_static/logo.png" class="logo" alt="Logo"/>
+ </a>
+ <div class="version">
+ 9.0.0
+ </div>
+<div role="search">
+ <form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
+ <input type="text" name="q" placeholder="Search docs" />
+ <input type="hidden" name="check_keywords" value="yes" />
+ <input type="hidden" name="area" value="default" />
+ </form>
+</div>
+ </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
+ <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../../about.html">About</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../news.html">News</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../download.html">Download</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../install.html">Installation</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../usage/index.html">Using PROJ</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../apps/index.html">Applications</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="../index.html">Coordinate operations</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="../projections/index.html">Projections</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../conversions/index.html">Conversions</a></li>
+<li class="toctree-l2 current"><a class="reference internal" href="index.html">Transformations</a><ul class="current">
+<li class="toctree-l3"><a class="reference internal" href="affine.html">Affine transformation</a></li>
+<li class="toctree-l3"><a class="reference internal" href="defmodel.html">Multi-component time-based deformation model</a></li>
+<li class="toctree-l3"><a class="reference internal" href="deformation.html">Kinematic datum shifting utilizing a deformation model</a></li>
+<li class="toctree-l3"><a class="reference internal" href="geogoffset.html">Geographic offsets</a></li>
+<li class="toctree-l3"><a class="reference internal" href="helmert.html">Helmert transform</a></li>
+<li class="toctree-l3"><a class="reference internal" href="horner.html">Horner polynomial evaluation</a></li>
+<li class="toctree-l3"><a class="reference internal" href="molodensky.html">Molodensky transform</a></li>
+<li class="toctree-l3 current"><a class="current reference internal" href="#">Molodensky-Badekas transform</a><ul>
+<li class="toctree-l4"><a class="reference internal" href="#example">Example</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#parameters">Parameters</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#mathematical-description">Mathematical description</a></li>
+</ul>
+</li>
+<li class="toctree-l3"><a class="reference internal" href="hgridshift.html">Horizontal grid shift</a></li>
+<li class="toctree-l3"><a class="reference internal" href="tinshift.html">Triangulated Irregular Network based transformation</a></li>
+<li class="toctree-l3"><a class="reference internal" href="vgridshift.html">Vertical grid shift</a></li>
+<li class="toctree-l3"><a class="reference internal" href="xyzgridshift.html">Geocentric grid shift</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="../pipeline.html">The pipeline operator</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../operations_computation.html">Computation of coordinate operations between two CRS</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../../resource_files.html">Resource files</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../geodesic.html">Geodesic calculations</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../specifications/index.html">Specifications</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../community/index.html">Community</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq.html">FAQ</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../glossary.html">Glossary</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../zreferences.html">References</a></li>
+</ul>
+
+ </div>
+ </div>
+ </nav>
+
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" style="background: #353130" >
+ <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+ <a href="../../index.html">PROJ</a>
+ </nav>
+
+ <div class="wy-nav-content">
+ <div class="rst-content">
+ <div role="navigation" aria-label="Page navigation">
+ <ul class="wy-breadcrumbs">
+ <li><a href="../../index.html" class="icon icon-home"></a> &raquo;</li>
+ <li><a href="../index.html">Coordinate operations</a> &raquo;</li>
+ <li><a href="index.html">Transformations</a> &raquo;</li>
+ <li>Molodensky-Badekas transform</li>
+ <li class="wy-breadcrumbs-aside">
+ <a href="https://github.com/OSGeo/PROJ/edit/8.2/docs/source/operations/transformations/molobadekas.rst" class="fa fa-github"> Edit on GitHub</a>
+ </li>
+ </ul><div class="rst-breadcrumbs-buttons" role="navigation" aria-label="Sequential page navigation">
+ <a href="molodensky.html" class="btn btn-neutral float-left" title="Molodensky transform" accesskey="p"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
+ <a href="hgridshift.html" class="btn btn-neutral float-right" title="Horizontal grid shift" accesskey="n">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
+ </div>
+ <hr/>
+</div>
+ <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+ <div itemprop="articleBody">
+
+ <section id="molodensky-badekas-transform">
+<span id="molobadekas"></span><h1>Molodensky-Badekas transform<a class="headerlink" href="#molodensky-badekas-transform" title="Permalink to this headline">¶</a></h1>
+<div class="versionadded">
+<p><span class="versionmodified added">New in version 6.0.0.</span></p>
+</div>
+<p>The Molodensky-Badekas transformation changes coordinates from one reference frame to
+another by means of a 10-parameter shift.</p>
+<div class="admonition note">
+<p class="admonition-title">Note</p>
+<p>It should not be confused with the <a class="reference internal" href="molodensky.html#molodensky"><span class="std std-ref">Molodensky transform</span></a> transform which
+operates directly in the geodetic coordinates. Molodensky-Badekas can rather
+be seen as a variation of <a class="reference internal" href="helmert.html#helmert"><span class="std std-ref">Helmert transform</span></a></p>
+</div>
+<table class="docutils align-default">
+<colgroup>
+<col style="width: 20%" />
+<col style="width: 80%" />
+</colgroup>
+<tbody>
+<tr class="row-odd"><td><p><strong>Alias</strong></p></td>
+<td><p>molobadekas</p></td>
+</tr>
+<tr class="row-even"><td><p><strong>Domain</strong></p></td>
+<td><p>3D</p></td>
+</tr>
+<tr class="row-odd"><td><p><strong>Input type</strong></p></td>
+<td><p>Cartesian coordinates</p></td>
+</tr>
+<tr class="row-even"><td><p><strong>Output type</strong></p></td>
+<td><p>Cartesian coordinates</p></td>
+</tr>
+</tbody>
+</table>
+<p>The Molodensky-Badekas transformation is a variation of the <a class="reference internal" href="helmert.html#helmert"><span class="std std-ref">Helmert transform</span></a> where
+the rotational terms are not directly applied to the ECEF coordinates, but on
+cartesian coordinates relative to a reference point (usually close to Earth surface,
+and to the area of use of the transformation). When <code class="docutils literal notranslate"><span class="pre">px</span></code> = <code class="docutils literal notranslate"><span class="pre">py</span></code> = <code class="docutils literal notranslate"><span class="pre">pz</span></code> = 0,
+this is equivalent to a 7-parameter Helmert transformation.</p>
+<section id="example">
+<h2>Example<a class="headerlink" href="#example" title="Permalink to this headline">¶</a></h2>
+<p>Transforming coordinates from La Canoa to REGVEN:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>proj=molobadekas convention=coordinate_frame
+ x=-270.933 y=115.599 z=-360.226 rx=-5.266 ry=-1.238 rz=2.381
+ s=-5.109 px=2464351.59 py=-5783466.61 pz=974809.81
+</pre></div>
+</div>
+</section>
+<section id="parameters">
+<h2>Parameters<a class="headerlink" href="#parameters" title="Permalink to this headline">¶</a></h2>
+<div class="admonition note">
+<p class="admonition-title">Note</p>
+<p>All parameters (except convention) are optional but at least one should be
+used, otherwise the operation will return the coordinates unchanged.</p>
+</div>
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-convention">
+<span class="sig-name descname"><span class="pre">+convention</span></span><span class="sig-prename descclassname"><span class="pre">=coordinate_frame/position_vector</span></span><a class="headerlink" href="#cmdoption-arg-convention" title="Permalink to this definition">¶</a></dt>
+<dd><p>Indicates the convention to express the rotational terms when a 3D-Helmert /
+7-parameter more transform is involved.</p>
+<p>The two conventions are equally popular and a frequent source of confusion.
+The coordinate frame convention is also described as an clockwise
+rotation of the coordinate frame. It corresponds to EPSG method code
+1034 (in the geocentric domain) or 9636 (in the geographic domain)
+The position vector convention is also described as an anticlockwise
+(counter-clockwise) rotation of the coordinate frame.
+It corresponds to as EPSG method code 1061 (in the geocentric domain) or
+1063 (in the geographic domain).</p>
+<p>The result obtained with parameters specified in a given convention
+can be obtained in the other convention by negating the rotational parameters
+(<code class="docutils literal notranslate"><span class="pre">rx</span></code>, <code class="docutils literal notranslate"><span class="pre">ry</span></code>, <code class="docutils literal notranslate"><span class="pre">rz</span></code>)</p>
+</dd></dl>
+
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-x">
+<span class="sig-name descname"><span class="pre">+x</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;value&gt;</span></span><a class="headerlink" href="#cmdoption-arg-x" title="Permalink to this definition">¶</a></dt>
+<dd><p>Translation of the x-axis given in meters.</p>
+</dd></dl>
+
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-y">
+<span class="sig-name descname"><span class="pre">+y</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;value&gt;</span></span><a class="headerlink" href="#cmdoption-arg-y" title="Permalink to this definition">¶</a></dt>
+<dd><p>Translation of the y-axis given in meters.</p>
+</dd></dl>
+
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-z">
+<span class="sig-name descname"><span class="pre">+z</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;value&gt;</span></span><a class="headerlink" href="#cmdoption-arg-z" title="Permalink to this definition">¶</a></dt>
+<dd><p>Translation of the z-axis given in meters.</p>
+</dd></dl>
+
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-s">
+<span class="sig-name descname"><span class="pre">+s</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;value&gt;</span></span><a class="headerlink" href="#cmdoption-arg-s" title="Permalink to this definition">¶</a></dt>
+<dd><p>Scale factor given in ppm.</p>
+</dd></dl>
+
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-rx">
+<span class="sig-name descname"><span class="pre">+rx</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;value&gt;</span></span><a class="headerlink" href="#cmdoption-arg-rx" title="Permalink to this definition">¶</a></dt>
+<dd><p>X-axis rotation given arc seconds.</p>
+</dd></dl>
+
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-ry">
+<span class="sig-name descname"><span class="pre">+ry</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;value&gt;</span></span><a class="headerlink" href="#cmdoption-arg-ry" title="Permalink to this definition">¶</a></dt>
+<dd><p>Y-axis rotation given in arc seconds.</p>
+</dd></dl>
+
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-rz">
+<span class="sig-name descname"><span class="pre">+rz</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;value&gt;</span></span><a class="headerlink" href="#cmdoption-arg-rz" title="Permalink to this definition">¶</a></dt>
+<dd><p>Z-axis rotation given in arc seconds.</p>
+</dd></dl>
+
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-px">
+<span class="sig-name descname"><span class="pre">+px</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;value&gt;</span></span><a class="headerlink" href="#cmdoption-arg-px" title="Permalink to this definition">¶</a></dt>
+<dd><p>Coordinate along the x-axis of the reference point given in meters.</p>
+</dd></dl>
+
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-py">
+<span class="sig-name descname"><span class="pre">+py</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;value&gt;</span></span><a class="headerlink" href="#cmdoption-arg-py" title="Permalink to this definition">¶</a></dt>
+<dd><p>Coordinate along the y-axis of the reference point given in meters.</p>
+</dd></dl>
+
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-pz">
+<span class="sig-name descname"><span class="pre">+pz</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;value&gt;</span></span><a class="headerlink" href="#cmdoption-arg-pz" title="Permalink to this definition">¶</a></dt>
+<dd><p>Coordinate along the z-axis of the reference point given in meters.</p>
+</dd></dl>
+
+</section>
+<section id="mathematical-description">
+<h2>Mathematical description<a class="headerlink" href="#mathematical-description" title="Permalink to this headline">¶</a></h2>
+<p>In the <em>Position Vector</em> convention, we define <span class="math notranslate nohighlight">\(R_x = radians \left( rx \right)\)</span>,
+<span class="math notranslate nohighlight">\(R_z = radians \left( ry \right)\)</span> and <span class="math notranslate nohighlight">\(R_z = radians \left( rz \right)\)</span></p>
+<p>In the <em>Coordinate Frame</em> convention, <span class="math notranslate nohighlight">\(R_x = - radians \left( rx \right)\)</span>,
+<span class="math notranslate nohighlight">\(R_z = - radians \left( ry \right)\)</span> and <span class="math notranslate nohighlight">\(R_z = - radians \left( rz \right)\)</span></p>
+<div class="math notranslate nohighlight" id="equation-10param">
+<span class="eqno">(1)<a class="headerlink" href="#equation-10param" title="Permalink to this equation">¶</a></span>\[\begin{split}\begin{align}
+ \begin{bmatrix}
+ X \\
+ Y \\
+ Z \\
+ \end{bmatrix}^{output} =
+ \begin{bmatrix}
+ T_x + P_x\\
+ T_y + P_y\\
+ T_z + P_z\\
+ \end{bmatrix} +
+ \left(1 + s \times 10^{-6}\right)
+ \begin{bmatrix}
+ 1 &amp; -R_z &amp; R_y \\
+ Rz &amp; 1 &amp; -R_x \\
+ -Ry &amp; R_x &amp; 1 \\
+ \end{bmatrix}
+ \begin{bmatrix}
+ X^{input} - P_x\\
+ Y^{input} - P_y\\
+ Z^{input} - P_z\\
+ \end{bmatrix}
+\end{align}\end{split}\]</div>
+</section>
+</section>
+
+
+ </div>
+ </div>
+ <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
+ <a href="molodensky.html" class="btn btn-neutral float-left" title="Molodensky transform" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
+ <a href="hgridshift.html" class="btn btn-neutral float-right" title="Horizontal grid shift" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
+ </div>
+
+ <hr/>
+
+ <div role="contentinfo">
+ <p>&#169; Copyright 1983-2022.
+ <span class="lastupdated">Last updated on 22 Mar 2022.
+ </span></p>
+ </div>
+
+ Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
+ <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
+ provided by <a href="https://readthedocs.org">Read the Docs</a>.
+
+
+</footer>
+ </div>
+ </div>
+ </section>
+ </div>
+ <script>
+ jQuery(function () {
+ SphinxRtdTheme.Navigation.enable(true);
+ });
+ </script>
+
+</body>
+</html> \ No newline at end of file
diff --git a/operations/transformations/molodensky.html b/operations/transformations/molodensky.html
new file mode 100644
index 00000000..9b38d0a4
--- /dev/null
+++ b/operations/transformations/molodensky.html
@@ -0,0 +1,275 @@
+<!DOCTYPE html>
+<html class="writer-html5" lang="en" >
+<head>
+ <meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
+
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <title>Molodensky transform &mdash; PROJ 9.0.0 documentation</title>
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
+ <link rel="shortcut icon" href="../../_static/favicon.png"/>
+ <link rel="canonical" href="https://proj.orgoperations/transformations/molodensky.html"/>
+ <!--[if lt IE 9]>
+ <script src="../../_static/js/html5shiv.min.js"></script>
+ <![endif]-->
+
+ <script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
+ <script src="../../_static/jquery.js"></script>
+ <script src="../../_static/underscore.js"></script>
+ <script src="../../_static/doctools.js"></script>
+ <script async="async" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
+ <script src="../../_static/js/theme.js"></script>
+ <link rel="author" title="About these documents" href="../../about.html" />
+ <link rel="index" title="Index" href="../../genindex.html" />
+ <link rel="search" title="Search" href="../../search.html" />
+ <link rel="next" title="Molodensky-Badekas transform" href="molobadekas.html" />
+ <link rel="prev" title="Horner polynomial evaluation" href="horner.html" />
+</head>
+
+<body class="wy-body-for-nav">
+ <div class="wy-grid-for-nav">
+ <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+ <div class="wy-side-scroll">
+ <div class="wy-side-nav-search" style="background: #353130" >
+ <a href="../../index.html">
+ <img src="../../_static/logo.png" class="logo" alt="Logo"/>
+ </a>
+ <div class="version">
+ 9.0.0
+ </div>
+<div role="search">
+ <form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
+ <input type="text" name="q" placeholder="Search docs" />
+ <input type="hidden" name="check_keywords" value="yes" />
+ <input type="hidden" name="area" value="default" />
+ </form>
+</div>
+ </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
+ <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../../about.html">About</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../news.html">News</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../download.html">Download</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../install.html">Installation</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../usage/index.html">Using PROJ</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../apps/index.html">Applications</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="../index.html">Coordinate operations</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="../projections/index.html">Projections</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../conversions/index.html">Conversions</a></li>
+<li class="toctree-l2 current"><a class="reference internal" href="index.html">Transformations</a><ul class="current">
+<li class="toctree-l3"><a class="reference internal" href="affine.html">Affine transformation</a></li>
+<li class="toctree-l3"><a class="reference internal" href="defmodel.html">Multi-component time-based deformation model</a></li>
+<li class="toctree-l3"><a class="reference internal" href="deformation.html">Kinematic datum shifting utilizing a deformation model</a></li>
+<li class="toctree-l3"><a class="reference internal" href="geogoffset.html">Geographic offsets</a></li>
+<li class="toctree-l3"><a class="reference internal" href="helmert.html">Helmert transform</a></li>
+<li class="toctree-l3"><a class="reference internal" href="horner.html">Horner polynomial evaluation</a></li>
+<li class="toctree-l3 current"><a class="current reference internal" href="#">Molodensky transform</a><ul>
+<li class="toctree-l4"><a class="reference internal" href="#examples">Examples</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#parameters">Parameters</a></li>
+</ul>
+</li>
+<li class="toctree-l3"><a class="reference internal" href="molobadekas.html">Molodensky-Badekas transform</a></li>
+<li class="toctree-l3"><a class="reference internal" href="hgridshift.html">Horizontal grid shift</a></li>
+<li class="toctree-l3"><a class="reference internal" href="tinshift.html">Triangulated Irregular Network based transformation</a></li>
+<li class="toctree-l3"><a class="reference internal" href="vgridshift.html">Vertical grid shift</a></li>
+<li class="toctree-l3"><a class="reference internal" href="xyzgridshift.html">Geocentric grid shift</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="../pipeline.html">The pipeline operator</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../operations_computation.html">Computation of coordinate operations between two CRS</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../../resource_files.html">Resource files</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../geodesic.html">Geodesic calculations</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../specifications/index.html">Specifications</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../community/index.html">Community</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq.html">FAQ</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../glossary.html">Glossary</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../zreferences.html">References</a></li>
+</ul>
+
+ </div>
+ </div>
+ </nav>
+
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" style="background: #353130" >
+ <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+ <a href="../../index.html">PROJ</a>
+ </nav>
+
+ <div class="wy-nav-content">
+ <div class="rst-content">
+ <div role="navigation" aria-label="Page navigation">
+ <ul class="wy-breadcrumbs">
+ <li><a href="../../index.html" class="icon icon-home"></a> &raquo;</li>
+ <li><a href="../index.html">Coordinate operations</a> &raquo;</li>
+ <li><a href="index.html">Transformations</a> &raquo;</li>
+ <li>Molodensky transform</li>
+ <li class="wy-breadcrumbs-aside">
+ <a href="https://github.com/OSGeo/PROJ/edit/8.2/docs/source/operations/transformations/molodensky.rst" class="fa fa-github"> Edit on GitHub</a>
+ </li>
+ </ul><div class="rst-breadcrumbs-buttons" role="navigation" aria-label="Sequential page navigation">
+ <a href="horner.html" class="btn btn-neutral float-left" title="Horner polynomial evaluation" accesskey="p"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
+ <a href="molobadekas.html" class="btn btn-neutral float-right" title="Molodensky-Badekas transform" accesskey="n">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
+ </div>
+ <hr/>
+</div>
+ <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+ <div itemprop="articleBody">
+
+ <section id="molodensky-transform">
+<span id="molodensky"></span><h1>Molodensky transform<a class="headerlink" href="#molodensky-transform" title="Permalink to this headline">¶</a></h1>
+<div class="versionadded">
+<p><span class="versionmodified added">New in version 5.0.0.</span></p>
+</div>
+<p>The Molodensky transformation resembles a <a class="reference internal" href="helmert.html#helmert"><span class="std std-ref">Helmert transform</span></a> with zero
+rotations and a scale of unity, but converts directly from geodetic coordinates to
+geodetic coordinates, without the intermediate shifts to and from cartesian
+geocentric coordinates, associated with the Helmert transformation.
+The Molodensky transformation is simple to implement and to parametrize, requiring
+only the 3 shifts between the input and output frame, and the corresponding
+differences between the semimajor axes and flattening parameters of the reference
+ellipsoids. Due to its algorithmic simplicity, it was popular prior to the
+ubiquity of digital computers. Today, it is mostly interesting for historical
+reasons, but nevertheless indispensable due to the large amount of data that has
+already been transformed that way <span id="id1">[<a class="reference internal" href="../../zreferences.html#id13" title="Evers, K. and Knudsen, T. Transformation pipelines for PROJ.4. In FIG Working Week 2017 Proceedings. Helsinki, Finland, 2017. URL: http://www.fig.net/resources/proceedings/fig_proceedings/fig2017/papers/iss6b/ISS6B_evers_knudsen_9156.pdf.">EversKnudsen2017</a>]</span>.</p>
+<table class="docutils align-default">
+<colgroup>
+<col style="width: 27%" />
+<col style="width: 73%" />
+</colgroup>
+<tbody>
+<tr class="row-odd"><td><p><strong>Alias</strong></p></td>
+<td><p>molodensky</p></td>
+</tr>
+<tr class="row-even"><td><p><strong>Domain</strong></p></td>
+<td><p>3D</p></td>
+</tr>
+<tr class="row-odd"><td><p><strong>Input type</strong></p></td>
+<td><p>Geodetic coordinates (horizontal), meters (vertical)</p></td>
+</tr>
+<tr class="row-even"><td><p><strong>output type</strong></p></td>
+<td><p>Geodetic coordinates (horizontal), meters (vertical)</p></td>
+</tr>
+</tbody>
+</table>
+<p>The Molodensky transform can be used to perform a datum shift from coordinate
+<span class="math notranslate nohighlight">\((\phi_1, \lambda_1, h_1)\)</span> to <span class="math notranslate nohighlight">\((\phi_2, \lambda_2, h_2)\)</span> where the two
+coordinates are referenced to different ellipsoids. This is based on three
+assumptions:</p>
+<blockquote>
+<div><ol class="arabic simple">
+<li><p>The cartesian axes, <span class="math notranslate nohighlight">\(X, Y, Z\)</span>, of the two ellipsoids are parallel.</p></li>
+<li><p>The offset, <span class="math notranslate nohighlight">\(\delta X, \delta Y, \delta Z\)</span>, between the two ellipsoid
+are known.</p></li>
+<li><p>The characteristics of the two ellipsoids, expressed as the difference in
+semimajor axis (<span class="math notranslate nohighlight">\(\delta a\)</span>) and flattening (<span class="math notranslate nohighlight">\(\delta f\)</span>), are known.</p></li>
+</ol>
+</div></blockquote>
+<p>The Molodensky transform is mostly used for transforming between old systems
+dating back to the time before computers. The advantage of the Molodensky transform
+is that it is fairly simple to compute by hand. The ease of computation come at the
+cost of limited accuracy.</p>
+<p>A derivation of the mathematical formulas for the Molodensky transform can be found
+in <span id="id2">[<a class="reference internal" href="../../zreferences.html#id8" title="Deakin, R. E. The standard and abridged Molodensky coordinate transformation formulae. Technical Report, Department of Mathematical and Geospatial Sciences, RMIT University, Melborne, Australia, 2004. URL: http://www.mygeodesy.id.au/documents/Molodensky%20V2.pdf.">Deakin2004</a>]</span>.</p>
+<section id="examples">
+<h2>Examples<a class="headerlink" href="#examples" title="Permalink to this headline">¶</a></h2>
+<p>The abridged Molodensky:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>proj=molodensky a=6378160 rf=298.25 da=-23 df=-8.120449e-8 dx=-134 dy=-48 dz=149 abridged
+</pre></div>
+</div>
+<p>The same transformation using the standard Molodensky:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>proj=molodensky a=6378160 rf=298.25 da=-23 df=-8.120449e-8 dx=-134 dy=-48 dz=149
+</pre></div>
+</div>
+</section>
+<section id="parameters">
+<h2>Parameters<a class="headerlink" href="#parameters" title="Permalink to this headline">¶</a></h2>
+<section id="required">
+<h3>Required<a class="headerlink" href="#required" title="Permalink to this headline">¶</a></h3>
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-da">
+<span class="sig-name descname"><span class="pre">+da</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;value&gt;</span></span><a class="headerlink" href="#cmdoption-arg-da" title="Permalink to this definition">¶</a></dt>
+<dd><p>Difference in semimajor axis of the defining ellipsoids.</p>
+</dd></dl>
+
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-df">
+<span class="sig-name descname"><span class="pre">+df</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;value&gt;</span></span><a class="headerlink" href="#cmdoption-arg-df" title="Permalink to this definition">¶</a></dt>
+<dd><p>Difference in flattening of the defining ellipsoids.</p>
+</dd></dl>
+
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-dx">
+<span class="sig-name descname"><span class="pre">+dx</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;value&gt;</span></span><a class="headerlink" href="#cmdoption-arg-dx" title="Permalink to this definition">¶</a></dt>
+<dd><p>Offset of the X-axes of the defining ellipsoids.</p>
+</dd></dl>
+
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-dy">
+<span class="sig-name descname"><span class="pre">+dy</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;value&gt;</span></span><a class="headerlink" href="#cmdoption-arg-dy" title="Permalink to this definition">¶</a></dt>
+<dd><p>Offset of the Y-axes of the defining ellipsoids.</p>
+</dd></dl>
+
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-dz">
+<span class="sig-name descname"><span class="pre">+dz</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;value&gt;</span></span><a class="headerlink" href="#cmdoption-arg-dz" title="Permalink to this definition">¶</a></dt>
+<dd><p>Offset of the Z-axes of the defining ellipsoids.</p>
+</dd></dl>
+
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-ellps">
+<span class="sig-name descname"><span class="pre">+ellps</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;value&gt;</span></span><a class="headerlink" href="#cmdoption-arg-ellps" title="Permalink to this definition">¶</a></dt>
+<dd><p>The name of a built-in ellipsoid definition.</p>
+<p>See <a class="reference internal" href="../../usage/ellipsoids.html#ellipsoids"><span class="std std-ref">Ellipsoids</span></a> for more information, or execute
+<a class="reference internal" href="../../apps/proj.html#cmdoption-proj-le"><code class="xref std std-option docutils literal notranslate"><span class="pre">proj</span> <span class="pre">-le</span></code></a> for a list of built-in ellipsoid names.</p>
+<p><em>Defaults to “GRS80”.</em></p>
+</dd></dl>
+
+</section>
+<section id="optional">
+<h3>Optional<a class="headerlink" href="#optional" title="Permalink to this headline">¶</a></h3>
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-abridged">
+<span class="sig-name descname"><span class="pre">+abridged</span></span><span class="sig-prename descclassname"></span><a class="headerlink" href="#cmdoption-arg-abridged" title="Permalink to this definition">¶</a></dt>
+<dd><p>Use the abridged version of the Molodensky transform.</p>
+</dd></dl>
+
+</section>
+</section>
+</section>
+
+
+ </div>
+ </div>
+ <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
+ <a href="horner.html" class="btn btn-neutral float-left" title="Horner polynomial evaluation" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
+ <a href="molobadekas.html" class="btn btn-neutral float-right" title="Molodensky-Badekas transform" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
+ </div>
+
+ <hr/>
+
+ <div role="contentinfo">
+ <p>&#169; Copyright 1983-2022.
+ <span class="lastupdated">Last updated on 22 Mar 2022.
+ </span></p>
+ </div>
+
+ Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
+ <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
+ provided by <a href="https://readthedocs.org">Read the Docs</a>.
+
+
+</footer>
+ </div>
+ </div>
+ </section>
+ </div>
+ <script>
+ jQuery(function () {
+ SphinxRtdTheme.Navigation.enable(true);
+ });
+ </script>
+
+</body>
+</html> \ No newline at end of file
diff --git a/operations/transformations/tinshift.html b/operations/transformations/tinshift.html
new file mode 100644
index 00000000..55024c1a
--- /dev/null
+++ b/operations/transformations/tinshift.html
@@ -0,0 +1,378 @@
+<!DOCTYPE html>
+<html class="writer-html5" lang="en" >
+<head>
+ <meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
+
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <title>Triangulated Irregular Network based transformation &mdash; PROJ 9.0.0 documentation</title>
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
+ <link rel="shortcut icon" href="../../_static/favicon.png"/>
+ <link rel="canonical" href="https://proj.orgoperations/transformations/tinshift.html"/>
+ <!--[if lt IE 9]>
+ <script src="../../_static/js/html5shiv.min.js"></script>
+ <![endif]-->
+
+ <script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
+ <script src="../../_static/jquery.js"></script>
+ <script src="../../_static/underscore.js"></script>
+ <script src="../../_static/doctools.js"></script>
+ <script async="async" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
+ <script src="../../_static/js/theme.js"></script>
+ <link rel="author" title="About these documents" href="../../about.html" />
+ <link rel="index" title="Index" href="../../genindex.html" />
+ <link rel="search" title="Search" href="../../search.html" />
+ <link rel="next" title="Vertical grid shift" href="vgridshift.html" />
+ <link rel="prev" title="Horizontal grid shift" href="hgridshift.html" />
+</head>
+
+<body class="wy-body-for-nav">
+ <div class="wy-grid-for-nav">
+ <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+ <div class="wy-side-scroll">
+ <div class="wy-side-nav-search" style="background: #353130" >
+ <a href="../../index.html">
+ <img src="../../_static/logo.png" class="logo" alt="Logo"/>
+ </a>
+ <div class="version">
+ 9.0.0
+ </div>
+<div role="search">
+ <form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
+ <input type="text" name="q" placeholder="Search docs" />
+ <input type="hidden" name="check_keywords" value="yes" />
+ <input type="hidden" name="area" value="default" />
+ </form>
+</div>
+ </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
+ <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../../about.html">About</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../news.html">News</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../download.html">Download</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../install.html">Installation</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../usage/index.html">Using PROJ</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../apps/index.html">Applications</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="../index.html">Coordinate operations</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="../projections/index.html">Projections</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../conversions/index.html">Conversions</a></li>
+<li class="toctree-l2 current"><a class="reference internal" href="index.html">Transformations</a><ul class="current">
+<li class="toctree-l3"><a class="reference internal" href="affine.html">Affine transformation</a></li>
+<li class="toctree-l3"><a class="reference internal" href="defmodel.html">Multi-component time-based deformation model</a></li>
+<li class="toctree-l3"><a class="reference internal" href="deformation.html">Kinematic datum shifting utilizing a deformation model</a></li>
+<li class="toctree-l3"><a class="reference internal" href="geogoffset.html">Geographic offsets</a></li>
+<li class="toctree-l3"><a class="reference internal" href="helmert.html">Helmert transform</a></li>
+<li class="toctree-l3"><a class="reference internal" href="horner.html">Horner polynomial evaluation</a></li>
+<li class="toctree-l3"><a class="reference internal" href="molodensky.html">Molodensky transform</a></li>
+<li class="toctree-l3"><a class="reference internal" href="molobadekas.html">Molodensky-Badekas transform</a></li>
+<li class="toctree-l3"><a class="reference internal" href="hgridshift.html">Horizontal grid shift</a></li>
+<li class="toctree-l3 current"><a class="current reference internal" href="#">Triangulated Irregular Network based transformation</a><ul>
+<li class="toctree-l4"><a class="reference internal" href="#parameters">Parameters</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#example">Example</a></li>
+</ul>
+</li>
+<li class="toctree-l3"><a class="reference internal" href="vgridshift.html">Vertical grid shift</a></li>
+<li class="toctree-l3"><a class="reference internal" href="xyzgridshift.html">Geocentric grid shift</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="../pipeline.html">The pipeline operator</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../operations_computation.html">Computation of coordinate operations between two CRS</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../../resource_files.html">Resource files</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../geodesic.html">Geodesic calculations</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../specifications/index.html">Specifications</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../community/index.html">Community</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq.html">FAQ</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../glossary.html">Glossary</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../zreferences.html">References</a></li>
+</ul>
+
+ </div>
+ </div>
+ </nav>
+
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" style="background: #353130" >
+ <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+ <a href="../../index.html">PROJ</a>
+ </nav>
+
+ <div class="wy-nav-content">
+ <div class="rst-content">
+ <div role="navigation" aria-label="Page navigation">
+ <ul class="wy-breadcrumbs">
+ <li><a href="../../index.html" class="icon icon-home"></a> &raquo;</li>
+ <li><a href="../index.html">Coordinate operations</a> &raquo;</li>
+ <li><a href="index.html">Transformations</a> &raquo;</li>
+ <li>Triangulated Irregular Network based transformation</li>
+ <li class="wy-breadcrumbs-aside">
+ <a href="https://github.com/OSGeo/PROJ/edit/8.2/docs/source/operations/transformations/tinshift.rst" class="fa fa-github"> Edit on GitHub</a>
+ </li>
+ </ul><div class="rst-breadcrumbs-buttons" role="navigation" aria-label="Sequential page navigation">
+ <a href="hgridshift.html" class="btn btn-neutral float-left" title="Horizontal grid shift" accesskey="p"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
+ <a href="vgridshift.html" class="btn btn-neutral float-right" title="Vertical grid shift" accesskey="n">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
+ </div>
+ <hr/>
+</div>
+ <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+ <div itemprop="articleBody">
+
+ <section id="triangulated-irregular-network-based-transformation">
+<span id="tinshift"></span><h1>Triangulated Irregular Network based transformation<a class="headerlink" href="#triangulated-irregular-network-based-transformation" title="Permalink to this headline">¶</a></h1>
+<div class="versionadded">
+<p><span class="versionmodified added">New in version 7.2.0.</span></p>
+</div>
+<table class="docutils align-default">
+<colgroup>
+<col style="width: 24%" />
+<col style="width: 76%" />
+</colgroup>
+<tbody>
+<tr class="row-odd"><td><p><strong>Alias</strong></p></td>
+<td><p>tinshift</p></td>
+</tr>
+<tr class="row-even"><td><p><strong>Input type</strong></p></td>
+<td><p>Projected or geographic coordinates (horizontal), meters (vertical)</p></td>
+</tr>
+<tr class="row-odd"><td><p><strong>Output type</strong></p></td>
+<td><p>Projected or geographic coordinates (horizontal), meters (vertical)</p></td>
+</tr>
+<tr class="row-even"><td><p><strong>Domain</strong></p></td>
+<td><p>2D or 3D</p></td>
+</tr>
+<tr class="row-odd"><td><p><strong>Available forms</strong></p></td>
+<td><p>Forward and inverse</p></td>
+</tr>
+</tbody>
+</table>
+<p>The <code class="docutils literal notranslate"><span class="pre">tinshift</span></code> transformation takes one mandatory
+argument, <code class="docutils literal notranslate"><span class="pre">file</span></code>, that points to a JSON file, which contains the
+triangulation and associated metadata. Input and output coordinates must be
+geographic or projected coordinates.
+Depending on the content of the JSON file, horizontal, vertical or both
+components of the coordinates may be transformed.</p>
+<p>The transformation is invertible, with the same computational complexity than
+the forward transformation.</p>
+<section id="parameters">
+<h2>Parameters<a class="headerlink" href="#parameters" title="Permalink to this headline">¶</a></h2>
+<section id="required">
+<h3>Required<a class="headerlink" href="#required" title="Permalink to this headline">¶</a></h3>
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-file">
+<span class="sig-name descname"><span class="pre">+file</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;filename&gt;</span></span><a class="headerlink" href="#cmdoption-arg-file" title="Permalink to this definition">¶</a></dt>
+<dd><p>Filename to the JSON file for the TIN.</p>
+</dd></dl>
+
+</section>
+</section>
+<section id="example">
+<h2>Example<a class="headerlink" href="#example" title="Permalink to this headline">¶</a></h2>
+<p>Transforming a point with the Finland EPSG:2393 (“KKJ / Finland Uniform
+Coordinate System”) projected CRS to EPSG:3067 (“ETRS89 / TM35FIN(E,N)”)</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>$ echo 3210000.0000 6700000.0000 0 2020 | cct +proj=tinshift +file=./triangulation_kkj.json
+
+209948.3217 6697187.0009 0.0000 2020
+</pre></div>
+</div>
+<section id="algorithm">
+<h3>Algorithm<a class="headerlink" href="#algorithm" title="Permalink to this headline">¶</a></h3>
+<p>Internally, <code class="docutils literal notranslate"><span class="pre">tinshift</span></code> ingest the whole file into memory. It is considered that
+triangulation should be small enough for that.</p>
+<p>When a point is transformed, one must find the triangle into which it falls into.
+Instead of iterating over all triangles, we build a in-memory quadtree to speed-up
+the identification of candidates triangles.</p>
+<p>To determine if a point falls into a triangle, one computes its 3
+<a class="reference external" href="https://en.wikipedia.org/wiki/Barycentric_coordinate_system#Conversion_between_barycentric_and_Cartesian_coordinates">barycentric coordinates</a>
+from its projected coordinates, <span class="math notranslate nohighlight">\(\lambda_i\)</span> for <span class="math notranslate nohighlight">\(i=1,2,3\)</span>.
+They are real values (in the [0,1] range for a point inside the triangle),
+giving the weight of each of the 3 vertices of the triangles.</p>
+<p>Once those weights are known, interpolating the target horizontal
+coordinate is a matter of doing the linear combination of those weights with
+the target horizontal coordinates at the 3 vertices of the triangle (<span class="math notranslate nohighlight">\(Xt_i\)</span> and <span class="math notranslate nohighlight">\(Yt_i\)</span>):</p>
+<div class="math notranslate nohighlight">
+\[ \begin{align}\begin{aligned}X_{target} = Xt_1 * \lambda_1 + Xt_2 * \lambda_2 + Xt_3 * \lambda_3\\Y_{target} = Yt_1 * \lambda_1 + Yt_2 * \lambda_2 + Yt_3 * \lambda_3\end{aligned}\end{align} \]</div>
+<p>This interpolation is exact at the vertices of the triangulation, and has linear properties
+inside each triangle. It is completely equivalent to other formulations of
+triangular interpolation, such as</p>
+<div class="math notranslate nohighlight">
+\[ \begin{align}\begin{aligned}X_{target} = A + X_{source} * B + Y_{source} * C\\Y_{target} = D + X_{source} * E + Y_{source} * F\end{aligned}\end{align} \]</div>
+<p>where the A, B, C, D, E, F constants (for a given triangle) are found by solving
+the 2 systems of 3 linear equations, constraint by the source and target coordinate pairs
+of the 3 vertices of the triangle:</p>
+<div class="math notranslate nohighlight">
+\[ \begin{align}\begin{aligned}Xt_i = A + Xs_i * B + Ys_i * C\\Yt_i = D + Xs_i * E + Ys_i * F\end{aligned}\end{align} \]</div>
+<p>Similarly for a vertical coordinate transformation, where <span class="math notranslate nohighlight">\(Zoff_i\)</span> is the vertical
+offset at each vertex of the triangle:</p>
+<div class="math notranslate nohighlight">
+\[Z_{target} = Z_{source} + Zoff_1 * \lambda_1 + Zoff_2 * \lambda_2 + Zoff_3 * \lambda_3\]</div>
+</section>
+<section id="constraints-on-the-triangulation">
+<h3>Constraints on the triangulation<a class="headerlink" href="#constraints-on-the-triangulation" title="Permalink to this headline">¶</a></h3>
+<p>No check is done on the consistence of the triangulation. It is highly
+recommended that triangles do not overlap each other (when considering the
+source coordinates or the forward transformation, or the target coordinates for
+the inverse transformation), otherwise which triangle will be selected is
+unspecified. Besides that, the triangulation does not need to have particular
+properties (like being a Delaunay triangulation)</p>
+</section>
+<section id="file-format">
+<h3>File format<a class="headerlink" href="#file-format" title="Permalink to this headline">¶</a></h3>
+<p>The triangulation is stored in a text-based format, using JSON as a serialization.</p>
+<p>Below a minimal example, from the KKJ to ETRS89 transformation, with just a
+single triangle:</p>
+<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span><span class="w"></span>
+<span class="w"> </span><span class="nt">&quot;file_type&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;triangulation_file&quot;</span><span class="p">,</span><span class="w"></span>
+<span class="w"> </span><span class="nt">&quot;format_version&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;1.0&quot;</span><span class="p">,</span><span class="w"></span>
+<span class="w"> </span><span class="nt">&quot;name&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;Name&quot;</span><span class="p">,</span><span class="w"></span>
+<span class="w"> </span><span class="nt">&quot;version&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;Version&quot;</span><span class="p">,</span><span class="w"></span>
+<span class="w"> </span><span class="nt">&quot;publication_date&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;2018-07-01T00:00:00Z&quot;</span><span class="p">,</span><span class="w"></span>
+<span class="w"> </span><span class="nt">&quot;license&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;Creative Commons Attribution 4.0 International&quot;</span><span class="p">,</span><span class="w"></span>
+<span class="w"> </span><span class="nt">&quot;description&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;Test triangulation&quot;</span><span class="p">,</span><span class="w"></span>
+<span class="w"> </span><span class="nt">&quot;authority&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
+<span class="w"> </span><span class="nt">&quot;name&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;Authority name&quot;</span><span class="p">,</span><span class="w"></span>
+<span class="w"> </span><span class="nt">&quot;url&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;http://example.com&quot;</span><span class="p">,</span><span class="w"></span>
+<span class="w"> </span><span class="nt">&quot;address&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;Adress&quot;</span><span class="p">,</span><span class="w"></span>
+<span class="w"> </span><span class="nt">&quot;email&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;test@example.com&quot;</span><span class="w"></span>
+<span class="w"> </span><span class="p">},</span><span class="w"></span>
+<span class="w"> </span><span class="nt">&quot;links&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"></span>
+<span class="w"> </span><span class="p">{</span><span class="w"></span>
+<span class="w"> </span><span class="nt">&quot;href&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;https://example.com/about.html&quot;</span><span class="p">,</span><span class="w"></span>
+<span class="w"> </span><span class="nt">&quot;rel&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;about&quot;</span><span class="p">,</span><span class="w"></span>
+<span class="w"> </span><span class="nt">&quot;type&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;text/html&quot;</span><span class="p">,</span><span class="w"></span>
+<span class="w"> </span><span class="nt">&quot;title&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;About&quot;</span><span class="w"></span>
+<span class="w"> </span><span class="p">},</span><span class="w"></span>
+<span class="w"> </span><span class="p">{</span><span class="w"></span>
+<span class="w"> </span><span class="nt">&quot;href&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;https://example.com/download&quot;</span><span class="p">,</span><span class="w"></span>
+<span class="w"> </span><span class="nt">&quot;rel&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;source&quot;</span><span class="p">,</span><span class="w"></span>
+<span class="w"> </span><span class="nt">&quot;type&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;application/zip&quot;</span><span class="p">,</span><span class="w"></span>
+<span class="w"> </span><span class="nt">&quot;title&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;Authoritative source&quot;</span><span class="w"></span>
+<span class="w"> </span><span class="p">},</span><span class="w"></span>
+<span class="w"> </span><span class="p">{</span><span class="w"></span>
+<span class="w"> </span><span class="nt">&quot;href&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;https://creativecommons.org/licenses/by/4.0/&quot;</span><span class="p">,</span><span class="w"></span>
+<span class="w"> </span><span class="nt">&quot;rel&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;license&quot;</span><span class="p">,</span><span class="w"></span>
+<span class="w"> </span><span class="nt">&quot;type&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;text/html&quot;</span><span class="p">,</span><span class="w"></span>
+<span class="w"> </span><span class="nt">&quot;title&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;Creative Commons Attribution 4.0 International license&quot;</span><span class="w"></span>
+<span class="w"> </span><span class="p">},</span><span class="w"></span>
+<span class="w"> </span><span class="p">{</span><span class="w"></span>
+<span class="w"> </span><span class="nt">&quot;href&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;https://example.com/metadata.xml&quot;</span><span class="p">,</span><span class="w"></span>
+<span class="w"> </span><span class="nt">&quot;rel&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;metadata&quot;</span><span class="p">,</span><span class="w"></span>
+<span class="w"> </span><span class="nt">&quot;type&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;application/xml&quot;</span><span class="p">,</span><span class="w"></span>
+<span class="w"> </span><span class="nt">&quot;title&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot; ISO 19115 XML encoded metadata regarding the deformation model&quot;</span><span class="w"></span>
+<span class="w"> </span><span class="p">}</span><span class="w"></span>
+<span class="w"> </span><span class="p">],</span><span class="w"></span>
+<span class="w"> </span><span class="nt">&quot;transformed_components&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="s2">&quot;horizontal&quot;</span><span class="w"> </span><span class="p">],</span><span class="w"></span>
+<span class="w"> </span><span class="nt">&quot;vertices_columns&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="s2">&quot;source_x&quot;</span><span class="p">,</span><span class="w"> </span><span class="s2">&quot;source_y&quot;</span><span class="p">,</span><span class="w"> </span><span class="s2">&quot;target_x&quot;</span><span class="p">,</span><span class="w"> </span><span class="s2">&quot;target_y&quot;</span><span class="w"> </span><span class="p">],</span><span class="w"></span>
+<span class="w"> </span><span class="nt">&quot;triangles_columns&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="s2">&quot;idx_vertex1&quot;</span><span class="p">,</span><span class="w"> </span><span class="s2">&quot;idx_vertex2&quot;</span><span class="p">,</span><span class="w"> </span><span class="s2">&quot;idx_vertex3&quot;</span><span class="w"> </span><span class="p">],</span><span class="w"></span>
+<span class="w"> </span><span class="nt">&quot;vertices&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="p">[</span><span class="mi">2</span><span class="p">,</span><span class="mi">49</span><span class="p">,</span><span class="mf">2.1</span><span class="p">,</span><span class="mf">49.1</span><span class="p">],</span><span class="w"> </span><span class="p">[</span><span class="mi">3</span><span class="p">,</span><span class="mi">50</span><span class="p">,</span><span class="mf">3.1</span><span class="p">,</span><span class="mf">50.1</span><span class="p">],</span><span class="w"> </span><span class="p">[</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">50</span><span class="p">,</span><span class="w"> </span><span class="mf">2.1</span><span class="p">,</span><span class="mf">50.1</span><span class="p">]</span><span class="w"> </span><span class="p">],</span><span class="w"></span>
+<span class="w"> </span><span class="nt">&quot;triangles&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">]</span><span class="w"> </span><span class="p">]</span><span class="w"></span>
+<span class="p">}</span><span class="w"></span>
+</pre></div>
+</div>
+<p>So after the generic metadata, we define the input and output CRS (informative
+only), and that the transformation affects horizontal components of
+coordinates. We name the columns of the <code class="docutils literal notranslate"><span class="pre">vertices</span></code> and <code class="docutils literal notranslate"><span class="pre">triangles</span></code> arrays.
+We defined the source and target coordinates of each vertex, and define a
+triangle by referring to the index of its vertices in the <code class="docutils literal notranslate"><span class="pre">vertices</span></code> array.</p>
+<p>More formally, the specific items for the triangulation file are:</p>
+<dl class="simple">
+<dt>input_crs</dt><dd><p>String identifying the CRS of source coordinates
+in the vertices. Typically <code class="docutils literal notranslate"><span class="pre">EPSG:XXXX</span></code>. If the transformation is for vertical
+component, this should be the code for a compound CRS (can be EPSG:XXXX+YYYY
+where XXXX is the code of the horizontal CRS and YYYY the code of the vertical CRS).
+For example, for the KKJ-&gt;ETRS89 transformation, this is EPSG:2393
+(<code class="docutils literal notranslate"><span class="pre">KKJ</span> <span class="pre">/</span> <span class="pre">Finland</span> <span class="pre">Uniform</span> <span class="pre">Coordinate</span> <span class="pre">System</span></code>). The input coordinates are assumed
+to be passed in the “normalized for visualisation” / “GIS friendly” order,
+that is longitude, latitude for geographic coordinates and
+easting, northing for projected coordinates.</p>
+</dd>
+<dt>output_crs</dt><dd><p>String identifying the CRS of target coordinates in the vertices.
+Typically <code class="docutils literal notranslate"><span class="pre">EPSG:XXXX</span></code>. If the transformation is for vertical component,
+this should be the code for a compound CRS (can be EPSG:XXXX+YYYY where
+XXXX is the code of the horizontal CRS and YYYY the code of the vertical CRS).
+For example, for the KKJ-&gt;ETRS89 transformation, this is EPSG:3067
+(&quot;ETRS89 / TM35FIN(E,N)&quot;). The output coordinates will be returned in
+the “normalized for visualisation” / “GIS friendly” order,
+that is longitude, latitude for geographic coordinates and
+easting, northing for projected coordinates.</p>
+</dd>
+<dt>transformed_components</dt><dd><p>Array which may contain one or two strings: “horizontal” when horizontal
+components of the coordinates are transformed and/or “vertical” when the
+vertical component is transformed.</p>
+</dd>
+<dt>fallback_strategy</dt><dd><p>String identifying how to treat points that do not fall into any of the
+specified triangles. This item is available for <code class="docutils literal notranslate"><span class="pre">format_version</span></code> &gt;= 1.1.
+Possible values are <code class="docutils literal notranslate"><span class="pre">none</span></code>, <code class="docutils literal notranslate"><span class="pre">nearest_side</span></code> and <code class="docutils literal notranslate"><span class="pre">nearest_centroid</span></code>. The
+default is <code class="docutils literal notranslate"><span class="pre">none</span></code> and signifies, that points that fall outside the
+specified triangles are not transformed. This is also the behaviour for
+<code class="docutils literal notranslate"><span class="pre">format_version</span></code> before 1.1. If <code class="docutils literal notranslate"><span class="pre">fallback_strategy</span></code> is set to
+<code class="docutils literal notranslate"><span class="pre">nearest_side</span></code>, then points that do not fall into any triangle are
+transformed according to the triangle closest to them by euclidean distance.
+If <code class="docutils literal notranslate"><span class="pre">fallback_strategy</span></code> is set to <code class="docutils literal notranslate"><span class="pre">nearest_centroid</span></code>, then points that do
+not fall into any triangle are transformed according to the triangle with the
+closest centroid (intersection of its medians).</p>
+</dd>
+<dt>vertices_columns</dt><dd><p>Specify the name of the columns of the rows in the <code class="docutils literal notranslate"><span class="pre">vertices</span></code>
+array. There must be exactly as many elements in <code class="docutils literal notranslate"><span class="pre">vertices_columns</span></code> as in a
+row of <code class="docutils literal notranslate"><span class="pre">vertices</span></code>. The following names have a special meaning: <code class="docutils literal notranslate"><span class="pre">source_x</span></code>,
+<code class="docutils literal notranslate"><span class="pre">source_y</span></code>, <code class="docutils literal notranslate"><span class="pre">target_x</span></code>, <code class="docutils literal notranslate"><span class="pre">target_y</span></code>, <code class="docutils literal notranslate"><span class="pre">source_z</span></code>, <code class="docutils literal notranslate"><span class="pre">target_z</span></code> and
+<code class="docutils literal notranslate"><span class="pre">offset_z</span></code>. <code class="docutils literal notranslate"><span class="pre">source_x</span></code> and <code class="docutils literal notranslate"><span class="pre">source_y</span></code> are compulsory.
+<code class="docutils literal notranslate"><span class="pre">source_x</span></code> is for the source longitude (in degree) or easting.
+<code class="docutils literal notranslate"><span class="pre">source_y</span></code> is for the source latitude (in degree) or northing.
+<code class="docutils literal notranslate"><span class="pre">target_x</span></code> and <code class="docutils literal notranslate"><span class="pre">target_y</span></code> are compulsory when <code class="docutils literal notranslate"><span class="pre">horizontal</span></code> is specified
+in <code class="docutils literal notranslate"><span class="pre">transformed_components</span></code>. (<code class="docutils literal notranslate"><span class="pre">source_z</span></code> and <code class="docutils literal notranslate"><span class="pre">target_z</span></code>) or
+<code class="docutils literal notranslate"><span class="pre">offset_z</span></code> are compulsory when <code class="docutils literal notranslate"><span class="pre">vertical</span></code> is specified in <code class="docutils literal notranslate"><span class="pre">transformed_components</span></code></p>
+</dd>
+<dt>triangles_columns</dt><dd><p>Specify the name of the columns of the rows in the
+<code class="docutils literal notranslate"><span class="pre">triangles</span></code> array. There must be exactly as many elements in <code class="docutils literal notranslate"><span class="pre">triangles_columns</span></code>
+as in a row of <code class="docutils literal notranslate"><span class="pre">triangles</span></code>. The following names have a special meaning:
+<code class="docutils literal notranslate"><span class="pre">idx_vertex1</span></code>, <code class="docutils literal notranslate"><span class="pre">idx_vertex2</span></code>, <code class="docutils literal notranslate"><span class="pre">idx_vertex3</span></code>. They are compulsory.</p>
+</dd>
+<dt>vertices</dt><dd><p>An array whose items are themselves arrays with as many columns as
+described in <code class="docutils literal notranslate"><span class="pre">vertices_columns</span></code>.</p>
+</dd>
+<dt>triangles</dt><dd><p>An array whose items are themselves arrays with as many columns as
+described in <code class="docutils literal notranslate"><span class="pre">triangles_columns</span></code>.
+The value of the <code class="docutils literal notranslate"><span class="pre">idx_vertexN</span></code> columns must be indices
+(between 0 and len(<code class="docutils literal notranslate"><span class="pre">vertices</span></code>-1) of items of the <code class="docutils literal notranslate"><span class="pre">vertices</span></code> array.</p>
+</dd>
+</dl>
+<p>A <a class="reference external" href="https://proj.org/schemas/triangulation.schema.json">JSON schema</a> is available
+for this file format.</p>
+</section>
+</section>
+</section>
+
+
+ </div>
+ </div>
+ <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
+ <a href="hgridshift.html" class="btn btn-neutral float-left" title="Horizontal grid shift" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
+ <a href="vgridshift.html" class="btn btn-neutral float-right" title="Vertical grid shift" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
+ </div>
+
+ <hr/>
+
+ <div role="contentinfo">
+ <p>&#169; Copyright 1983-2022.
+ <span class="lastupdated">Last updated on 22 Mar 2022.
+ </span></p>
+ </div>
+
+ Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
+ <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
+ provided by <a href="https://readthedocs.org">Read the Docs</a>.
+
+
+</footer>
+ </div>
+ </div>
+ </section>
+ </div>
+ <script>
+ jQuery(function () {
+ SphinxRtdTheme.Navigation.enable(true);
+ });
+ </script>
+
+</body>
+</html> \ No newline at end of file
diff --git a/operations/transformations/vgridshift.html b/operations/transformations/vgridshift.html
new file mode 100644
index 00000000..e6bd0730
--- /dev/null
+++ b/operations/transformations/vgridshift.html
@@ -0,0 +1,310 @@
+<!DOCTYPE html>
+<html class="writer-html5" lang="en" >
+<head>
+ <meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
+
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <title>Vertical grid shift &mdash; PROJ 9.0.0 documentation</title>
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
+ <link rel="shortcut icon" href="../../_static/favicon.png"/>
+ <link rel="canonical" href="https://proj.orgoperations/transformations/vgridshift.html"/>
+ <!--[if lt IE 9]>
+ <script src="../../_static/js/html5shiv.min.js"></script>
+ <![endif]-->
+
+ <script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
+ <script src="../../_static/jquery.js"></script>
+ <script src="../../_static/underscore.js"></script>
+ <script src="../../_static/doctools.js"></script>
+ <script async="async" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
+ <script src="../../_static/js/theme.js"></script>
+ <link rel="author" title="About these documents" href="../../about.html" />
+ <link rel="index" title="Index" href="../../genindex.html" />
+ <link rel="search" title="Search" href="../../search.html" />
+ <link rel="next" title="Geocentric grid shift" href="xyzgridshift.html" />
+ <link rel="prev" title="Triangulated Irregular Network based transformation" href="tinshift.html" />
+</head>
+
+<body class="wy-body-for-nav">
+ <div class="wy-grid-for-nav">
+ <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+ <div class="wy-side-scroll">
+ <div class="wy-side-nav-search" style="background: #353130" >
+ <a href="../../index.html">
+ <img src="../../_static/logo.png" class="logo" alt="Logo"/>
+ </a>
+ <div class="version">
+ 9.0.0
+ </div>
+<div role="search">
+ <form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
+ <input type="text" name="q" placeholder="Search docs" />
+ <input type="hidden" name="check_keywords" value="yes" />
+ <input type="hidden" name="area" value="default" />
+ </form>
+</div>
+ </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
+ <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../../about.html">About</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../news.html">News</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../download.html">Download</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../install.html">Installation</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../usage/index.html">Using PROJ</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../apps/index.html">Applications</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="../index.html">Coordinate operations</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="../projections/index.html">Projections</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../conversions/index.html">Conversions</a></li>
+<li class="toctree-l2 current"><a class="reference internal" href="index.html">Transformations</a><ul class="current">
+<li class="toctree-l3"><a class="reference internal" href="affine.html">Affine transformation</a></li>
+<li class="toctree-l3"><a class="reference internal" href="defmodel.html">Multi-component time-based deformation model</a></li>
+<li class="toctree-l3"><a class="reference internal" href="deformation.html">Kinematic datum shifting utilizing a deformation model</a></li>
+<li class="toctree-l3"><a class="reference internal" href="geogoffset.html">Geographic offsets</a></li>
+<li class="toctree-l3"><a class="reference internal" href="helmert.html">Helmert transform</a></li>
+<li class="toctree-l3"><a class="reference internal" href="horner.html">Horner polynomial evaluation</a></li>
+<li class="toctree-l3"><a class="reference internal" href="molodensky.html">Molodensky transform</a></li>
+<li class="toctree-l3"><a class="reference internal" href="molobadekas.html">Molodensky-Badekas transform</a></li>
+<li class="toctree-l3"><a class="reference internal" href="hgridshift.html">Horizontal grid shift</a></li>
+<li class="toctree-l3"><a class="reference internal" href="tinshift.html">Triangulated Irregular Network based transformation</a></li>
+<li class="toctree-l3 current"><a class="current reference internal" href="#">Vertical grid shift</a><ul>
+<li class="toctree-l4"><a class="reference internal" href="#temporal-gridshifting">Temporal gridshifting</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#parameters">Parameters</a></li>
+</ul>
+</li>
+<li class="toctree-l3"><a class="reference internal" href="xyzgridshift.html">Geocentric grid shift</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="../pipeline.html">The pipeline operator</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../operations_computation.html">Computation of coordinate operations between two CRS</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../../resource_files.html">Resource files</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../geodesic.html">Geodesic calculations</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../specifications/index.html">Specifications</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../community/index.html">Community</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq.html">FAQ</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../glossary.html">Glossary</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../zreferences.html">References</a></li>
+</ul>
+
+ </div>
+ </div>
+ </nav>
+
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" style="background: #353130" >
+ <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+ <a href="../../index.html">PROJ</a>
+ </nav>
+
+ <div class="wy-nav-content">
+ <div class="rst-content">
+ <div role="navigation" aria-label="Page navigation">
+ <ul class="wy-breadcrumbs">
+ <li><a href="../../index.html" class="icon icon-home"></a> &raquo;</li>
+ <li><a href="../index.html">Coordinate operations</a> &raquo;</li>
+ <li><a href="index.html">Transformations</a> &raquo;</li>
+ <li>Vertical grid shift</li>
+ <li class="wy-breadcrumbs-aside">
+ <a href="https://github.com/OSGeo/PROJ/edit/8.2/docs/source/operations/transformations/vgridshift.rst" class="fa fa-github"> Edit on GitHub</a>
+ </li>
+ </ul><div class="rst-breadcrumbs-buttons" role="navigation" aria-label="Sequential page navigation">
+ <a href="tinshift.html" class="btn btn-neutral float-left" title="Triangulated Irregular Network based transformation" accesskey="p"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
+ <a href="xyzgridshift.html" class="btn btn-neutral float-right" title="Geocentric grid shift" accesskey="n">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
+ </div>
+ <hr/>
+</div>
+ <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+ <div itemprop="articleBody">
+
+ <section id="vertical-grid-shift">
+<span id="vgridshift"></span><h1>Vertical grid shift<a class="headerlink" href="#vertical-grid-shift" title="Permalink to this headline">¶</a></h1>
+<div class="versionadded">
+<p><span class="versionmodified added">New in version 5.0.0.</span></p>
+</div>
+<p>Change Vertical datum change by grid shift</p>
+<table class="docutils align-default">
+<colgroup>
+<col style="width: 20%" />
+<col style="width: 80%" />
+</colgroup>
+<tbody>
+<tr class="row-odd"><td><p><strong>Alias</strong></p></td>
+<td><p>vgridshift</p></td>
+</tr>
+<tr class="row-even"><td><p><strong>Domain</strong></p></td>
+<td><p>3D and 4D</p></td>
+</tr>
+<tr class="row-odd"><td><p><strong>Input type</strong></p></td>
+<td><p>Geodetic coordinates (horizontal), meters (vertical),
+decimalyear (temporal)</p></td>
+</tr>
+<tr class="row-even"><td><p><strong>Output type</strong></p></td>
+<td><p>Geodetic coordinates (horizontal), meters (vertical),
+decimalyear (temporal)</p></td>
+</tr>
+</tbody>
+</table>
+<p>The vertical grid shift is done by offsetting the vertical input coordinates by
+a specific amount determined by the loaded grids. The simplest use case of the
+horizontal grid shift is applying a single grid. Here we change the vertical
+reference from the ellipsoid to the global geoid model, EGM96:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>+proj=vgridshift +grids=egm96_15.gtx
+</pre></div>
+</div>
+<p>More than one grid can be loaded at the same time, for instance in the case where
+a better geoid model than the global is available for a certain area. Here the
+gridshift is set up so that the local DVR90 geoid model takes precedence over
+the global model:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>+proj=vgridshift +grids=@dvr90.gtx,egm96_15.gtx
+</pre></div>
+</div>
+<p>The <code class="docutils literal notranslate"><span class="pre">&#64;</span></code> in the above example states that the grid is optional, in case the grid
+is not found in the PROJ search path. The list of grids is prioritized so that
+grids in the start of the list takes precedence over the grids in the back of the
+list.</p>
+<p>PROJ supports the GTX file format for vertical grid corrections. Details
+about all the format can be found in the GDAL documentation. GDAL both reads and
+writes the format. Using GDAL for construction of new grids is recommended.</p>
+<section id="temporal-gridshifting">
+<h2>Temporal gridshifting<a class="headerlink" href="#temporal-gridshifting" title="Permalink to this headline">¶</a></h2>
+<div class="versionadded">
+<p><span class="versionmodified added">New in version 5.1.0.</span></p>
+</div>
+<p>By initializing the vertical gridshift operation with a central epoch, it can be
+used as a step function applying the grid offsets only if a coordinate is
+transformed from an epoch before grids central epoch to an epoch after. This is
+handy in transformations where it is necessary to handle deformations caused by
+seismic activity.</p>
+<p>The central epoch of the grid is controlled with <a class="reference internal" href="#cmdoption-arg-t_epoch"><code class="xref std std-option docutils literal notranslate"><span class="pre">+t_epoch</span></code></a> and the final
+epoch of the coordinate is set with <a class="reference internal" href="#cmdoption-arg-t_final"><code class="xref std std-option docutils literal notranslate"><span class="pre">+t_final</span></code></a>. The observation epoch of
+the coordinate is part of the coordinate tuple.</p>
+<p>Suppose we want to model the deformation of the 2008 earthquake in Iceland in
+a transformation of data from 2005 to 2009:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>echo 63.992 -21.014 10.0 2005.0 | cct +proj=vgridshift +grids=iceland2008.gtx +t_epoch=2008.4071 +t_final=2009.0
+63.992 -21.014 10.11 2005.0
+</pre></div>
+</div>
+<div class="admonition note">
+<p class="admonition-title">Note</p>
+<p>The timestamp of the resulting coordinate is still 2005.0. The observation
+time is always kept unchanged as it would otherwise be impossible to do the
+inverse transformation.</p>
+</div>
+<p>Temporal gridshifting is especially powerful in transformation pipelines where
+several gridshifts can be chained together, effectively acting as a series of
+step functions that can be applied to a coordinate that is propagated through
+time. In the following example we establish a pipeline that allows transformation
+of coordinates from any given epoch up until the current date, applying only
+those gridshifts that have central epochs between the observation epoch and
+the final epoch:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>+proj=pipeline +t_final=now
++step +proj=vgridshift +grids=earthquake_1.gtx +t_epoch=2010.421
++step +proj=vgridshift +grids=earthquake_2.gtx +t_epoch=2013.853
++step +proj=vgridshift +grids=earthquake_3.gtx +t_epoch=2017.713
+</pre></div>
+</div>
+<div class="admonition note">
+<p class="admonition-title">Note</p>
+<p>The special epoch <em>now</em> is used when specifying the final epoch with
+<a class="reference internal" href="#cmdoption-arg-t_final"><code class="xref std std-option docutils literal notranslate"><span class="pre">+t_final</span></code></a>. This results in coordinates being transformed to the
+current date. Additionally, <a class="reference internal" href="#cmdoption-arg-t_final"><code class="xref std std-option docutils literal notranslate"><span class="pre">+t_final</span></code></a> is used as a
+<a class="reference internal" href="../pipeline.html#global-pipeline-parameter"><span class="std std-ref">global pipeline parameter</span></a>, which means
+that it is applied to all the steps in the pipeline.</p>
+</div>
+<p>In the above transformation, a coordinate with observation epoch 2009.32 would
+be subject to all three gridshift steps in the pipeline. A coordinate with
+observation epoch 2014.12 would only by offset by the last step in the pipeline.</p>
+</section>
+<section id="parameters">
+<h2>Parameters<a class="headerlink" href="#parameters" title="Permalink to this headline">¶</a></h2>
+<section id="required">
+<h3>Required<a class="headerlink" href="#required" title="Permalink to this headline">¶</a></h3>
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-grids">
+<span class="sig-name descname"><span class="pre">+grids</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;list&gt;</span></span><a class="headerlink" href="#cmdoption-arg-grids" title="Permalink to this definition">¶</a></dt>
+<dd><p>Comma-separated list of grids to load. If a grid is prefixed by an <cite>&#64;</cite> the
+grid is considered optional and PROJ will the not complain if the grid is
+not available.</p>
+<p>Grids are expected to be in GTX format.</p>
+</dd></dl>
+
+</section>
+<section id="optional">
+<h3>Optional<a class="headerlink" href="#optional" title="Permalink to this headline">¶</a></h3>
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-t_epoch">
+<span id="cmdoption-arg-t-epoch"></span><span class="sig-name descname"><span class="pre">+t_epoch</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;time&gt;</span></span><a class="headerlink" href="#cmdoption-arg-t_epoch" title="Permalink to this definition">¶</a></dt>
+<dd><p>Central epoch of the transformation.</p>
+</dd></dl>
+
+<div class="versionadded">
+<p><span class="versionmodified added">New in version 5.1.0.</span></p>
+</div>
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-t_final">
+<span id="cmdoption-arg-t-final"></span><span class="sig-name descname"><span class="pre">+t_final</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;time&gt;</span></span><a class="headerlink" href="#cmdoption-arg-t_final" title="Permalink to this definition">¶</a></dt>
+<dd><p>Final epoch that the coordinate will be propagated to after transformation.
+The special epoch <em>now</em> can be used instead of writing a specific period in
+time. When <em>now</em> is used, it is replaced internally with the epoch of the
+transformation. This means that the resulting coordinate will be slightly
+different if carried out again at a later date.</p>
+</dd></dl>
+
+<div class="versionadded">
+<p><span class="versionmodified added">New in version 5.1.0.</span></p>
+</div>
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-multiplier">
+<span class="sig-name descname"><span class="pre">+multiplier</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;value&gt;</span></span><a class="headerlink" href="#cmdoption-arg-multiplier" title="Permalink to this definition">¶</a></dt>
+<dd><p>Specify the multiplier to apply to the grid value in the forward transformation
+direction, such that:</p>
+<div class="math notranslate nohighlight" id="equation-multiplier-formula">
+<span class="eqno">(1)<a class="headerlink" href="#equation-multiplier-formula" title="Permalink to this equation">¶</a></span>\[Z_{target} = Z_{source} + multiplier \times gridvalue\]</div>
+<p>The multiplier can be used to control whether the gridvalue should be added
+or subtracted, and if unit conversion must be done (the multiplied gridvalue
+must be expressed in metre).</p>
+<p>Note that the default is <cite>-1.0</cite> for historical reasons.</p>
+</dd></dl>
+
+<div class="versionadded">
+<p><span class="versionmodified added">New in version 5.2.0.</span></p>
+</div>
+</section>
+</section>
+</section>
+
+
+ </div>
+ </div>
+ <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
+ <a href="tinshift.html" class="btn btn-neutral float-left" title="Triangulated Irregular Network based transformation" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
+ <a href="xyzgridshift.html" class="btn btn-neutral float-right" title="Geocentric grid shift" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
+ </div>
+
+ <hr/>
+
+ <div role="contentinfo">
+ <p>&#169; Copyright 1983-2022.
+ <span class="lastupdated">Last updated on 22 Mar 2022.
+ </span></p>
+ </div>
+
+ Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
+ <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
+ provided by <a href="https://readthedocs.org">Read the Docs</a>.
+
+
+</footer>
+ </div>
+ </div>
+ </section>
+ </div>
+ <script>
+ jQuery(function () {
+ SphinxRtdTheme.Navigation.enable(true);
+ });
+ </script>
+
+</body>
+</html> \ No newline at end of file
diff --git a/operations/transformations/xyzgridshift.html b/operations/transformations/xyzgridshift.html
new file mode 100644
index 00000000..57e7f08a
--- /dev/null
+++ b/operations/transformations/xyzgridshift.html
@@ -0,0 +1,256 @@
+<!DOCTYPE html>
+<html class="writer-html5" lang="en" >
+<head>
+ <meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
+
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <title>Geocentric grid shift &mdash; PROJ 9.0.0 documentation</title>
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
+ <link rel="shortcut icon" href="../../_static/favicon.png"/>
+ <link rel="canonical" href="https://proj.orgoperations/transformations/xyzgridshift.html"/>
+ <!--[if lt IE 9]>
+ <script src="../../_static/js/html5shiv.min.js"></script>
+ <![endif]-->
+
+ <script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
+ <script src="../../_static/jquery.js"></script>
+ <script src="../../_static/underscore.js"></script>
+ <script src="../../_static/doctools.js"></script>
+ <script src="../../_static/js/theme.js"></script>
+ <link rel="author" title="About these documents" href="../../about.html" />
+ <link rel="index" title="Index" href="../../genindex.html" />
+ <link rel="search" title="Search" href="../../search.html" />
+ <link rel="next" title="The pipeline operator" href="../pipeline.html" />
+ <link rel="prev" title="Vertical grid shift" href="vgridshift.html" />
+</head>
+
+<body class="wy-body-for-nav">
+ <div class="wy-grid-for-nav">
+ <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+ <div class="wy-side-scroll">
+ <div class="wy-side-nav-search" style="background: #353130" >
+ <a href="../../index.html">
+ <img src="../../_static/logo.png" class="logo" alt="Logo"/>
+ </a>
+ <div class="version">
+ 9.0.0
+ </div>
+<div role="search">
+ <form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
+ <input type="text" name="q" placeholder="Search docs" />
+ <input type="hidden" name="check_keywords" value="yes" />
+ <input type="hidden" name="area" value="default" />
+ </form>
+</div>
+ </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
+ <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../../about.html">About</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../news.html">News</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../download.html">Download</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../install.html">Installation</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../usage/index.html">Using PROJ</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../apps/index.html">Applications</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="../index.html">Coordinate operations</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="../projections/index.html">Projections</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../conversions/index.html">Conversions</a></li>
+<li class="toctree-l2 current"><a class="reference internal" href="index.html">Transformations</a><ul class="current">
+<li class="toctree-l3"><a class="reference internal" href="affine.html">Affine transformation</a></li>
+<li class="toctree-l3"><a class="reference internal" href="defmodel.html">Multi-component time-based deformation model</a></li>
+<li class="toctree-l3"><a class="reference internal" href="deformation.html">Kinematic datum shifting utilizing a deformation model</a></li>
+<li class="toctree-l3"><a class="reference internal" href="geogoffset.html">Geographic offsets</a></li>
+<li class="toctree-l3"><a class="reference internal" href="helmert.html">Helmert transform</a></li>
+<li class="toctree-l3"><a class="reference internal" href="horner.html">Horner polynomial evaluation</a></li>
+<li class="toctree-l3"><a class="reference internal" href="molodensky.html">Molodensky transform</a></li>
+<li class="toctree-l3"><a class="reference internal" href="molobadekas.html">Molodensky-Badekas transform</a></li>
+<li class="toctree-l3"><a class="reference internal" href="hgridshift.html">Horizontal grid shift</a></li>
+<li class="toctree-l3"><a class="reference internal" href="tinshift.html">Triangulated Irregular Network based transformation</a></li>
+<li class="toctree-l3"><a class="reference internal" href="vgridshift.html">Vertical grid shift</a></li>
+<li class="toctree-l3 current"><a class="current reference internal" href="#">Geocentric grid shift</a><ul>
+<li class="toctree-l4"><a class="reference internal" href="#example">Example</a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="../pipeline.html">The pipeline operator</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../operations_computation.html">Computation of coordinate operations between two CRS</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../../resource_files.html">Resource files</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../geodesic.html">Geodesic calculations</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../specifications/index.html">Specifications</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../community/index.html">Community</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq.html">FAQ</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../glossary.html">Glossary</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../zreferences.html">References</a></li>
+</ul>
+
+ </div>
+ </div>
+ </nav>
+
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" style="background: #353130" >
+ <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+ <a href="../../index.html">PROJ</a>
+ </nav>
+
+ <div class="wy-nav-content">
+ <div class="rst-content">
+ <div role="navigation" aria-label="Page navigation">
+ <ul class="wy-breadcrumbs">
+ <li><a href="../../index.html" class="icon icon-home"></a> &raquo;</li>
+ <li><a href="../index.html">Coordinate operations</a> &raquo;</li>
+ <li><a href="index.html">Transformations</a> &raquo;</li>
+ <li>Geocentric grid shift</li>
+ <li class="wy-breadcrumbs-aside">
+ <a href="https://github.com/OSGeo/PROJ/edit/8.2/docs/source/operations/transformations/xyzgridshift.rst" class="fa fa-github"> Edit on GitHub</a>
+ </li>
+ </ul><div class="rst-breadcrumbs-buttons" role="navigation" aria-label="Sequential page navigation">
+ <a href="vgridshift.html" class="btn btn-neutral float-left" title="Vertical grid shift" accesskey="p"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
+ <a href="../pipeline.html" class="btn btn-neutral float-right" title="The pipeline operator" accesskey="n">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
+ </div>
+ <hr/>
+</div>
+ <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+ <div itemprop="articleBody">
+
+ <section id="geocentric-grid-shift">
+<span id="xyzgridshift"></span><h1>Geocentric grid shift<a class="headerlink" href="#geocentric-grid-shift" title="Permalink to this headline">¶</a></h1>
+<div class="versionadded">
+<p><span class="versionmodified added">New in version 7.0.0.</span></p>
+</div>
+<p>Geocentric translation using a grid shift</p>
+<table class="docutils align-default">
+<colgroup>
+<col style="width: 20%" />
+<col style="width: 80%" />
+</colgroup>
+<tbody>
+<tr class="row-odd"><td><p><strong>Alias</strong></p></td>
+<td><p>xyzgridshift</p></td>
+</tr>
+<tr class="row-even"><td><p><strong>Domain</strong></p></td>
+<td><p>3D</p></td>
+</tr>
+<tr class="row-odd"><td><p><strong>Input type</strong></p></td>
+<td><p>Cartesian coordinates</p></td>
+</tr>
+<tr class="row-even"><td><p><strong>Output type</strong></p></td>
+<td><p>Cartesian coordinates</p></td>
+</tr>
+</tbody>
+</table>
+<p>Perform a geocentric translation by bilinear interpolation of dx, dy, dz
+translation values from a grid. The grid is referenced against either the
+2D geographic CRS corresponding to the input (or sometimes output) CRS.</p>
+<p>This method is described (in French) in <span id="id1">[<a class="reference internal" href="../../zreferences.html#id26" title="IGN. Grille de parametres de transformation de coordonnees - GR3DF97A - notice d'utilisation. Technical Report, Service de Geodesie et Nivellement, Institut Geographique National, 1997. URL: https://geodesie.ign.fr/contenu/fichiers/documentation/algorithmes/notice/NTG_88.pdf.">NTF_88</a>]</span>
+and as EPSG operation method code 9655 in <span id="id2">[<a class="reference internal" href="../../zreferences.html#id17" title="IOGP. Geomatics guidance note 7, part 2: coordinate conversions &amp; transformations including formulas. IOGP Publication 373-7-2, International Association For Oil And Gas Producers, 2018. URL: https://www.iogp.org/bookstore/product/coordinate-conversions-and-transformation-including-formulas/.">IOGP2018</a>]</span> (§2.4.4.1.1
+France geocentric interpolation).</p>
+<p>The translation in the grids are added to the input coordinates in the forward direction,
+and subtracted in the reverse direction.
+By default (if <code class="docutils literal notranslate"><span class="pre">grid_ref=input_crs</span></code>), in the forward direction, the input coordinates
+are converted to their geographic equivalent to directly read and interpolate from
+the grid. In the reverse direction, an iterative method is used to be able to find
+the grid locations to read.
+If <code class="docutils literal notranslate"><span class="pre">grid_ref=output_crs</span></code> is used, then the reverse strategy is applied: iterative
+method in the forward direction, and direct read in the reverse direction.</p>
+<section id="example">
+<h2>Example<a class="headerlink" href="#example" title="Permalink to this headline">¶</a></h2>
+<p>NTF to RGF93 transformation using <code class="file docutils literal notranslate"><span class="pre">gr3df97a.tif</span></code> grid</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>+proj=pipeline
+ +step +proj=push +v_3
+ +step +proj=cart +ellps=clrk80ign
+ +step +proj=xyzgridshift +grids=gr3df97a.tif +grid_ref=output_crs +ellps=GRS80
+ +step +proj=cart +ellps=GRS80 +inv
+ +step +proj=pop +v_3
+</pre></div>
+</div>
+<section id="parameters">
+<h3>Parameters<a class="headerlink" href="#parameters" title="Permalink to this headline">¶</a></h3>
+<p>The ellipsoid parameters should be the ones consistent with <code class="docutils literal notranslate"><span class="pre">grid_ref</span></code>.
+They are used to perform a geocentric to geographic conversion to find the
+translation parameters.</p>
+<section id="required">
+<h4>Required<a class="headerlink" href="#required" title="Permalink to this headline">¶</a></h4>
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-ellps">
+<span class="sig-name descname"><span class="pre">+ellps</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;value&gt;</span></span><a class="headerlink" href="#cmdoption-arg-ellps" title="Permalink to this definition">¶</a></dt>
+<dd><p>The name of a built-in ellipsoid definition.</p>
+<p>See <a class="reference internal" href="../../usage/ellipsoids.html#ellipsoids"><span class="std std-ref">Ellipsoids</span></a> for more information, or execute
+<a class="reference internal" href="../../apps/proj.html#cmdoption-proj-le"><code class="xref std std-option docutils literal notranslate"><span class="pre">proj</span> <span class="pre">-le</span></code></a> for a list of built-in ellipsoid names.</p>
+<p><em>Defaults to “GRS80”.</em></p>
+</dd></dl>
+
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-grids">
+<span class="sig-name descname"><span class="pre">+grids</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;list&gt;</span></span><a class="headerlink" href="#cmdoption-arg-grids" title="Permalink to this definition">¶</a></dt>
+<dd><p>Comma-separated list of grids to load. If a grid is prefixed by an <code class="docutils literal notranslate"><span class="pre">&#64;</span></code> the
+grid is considered optional and PROJ will the not complain if the grid is
+not available.</p>
+<p>Grids are expected to be in GeoTIFF format. If no metadata is provided,
+the first, second and third samples are assumed to be the geocentric
+translation along X, Y and Z axis respectively, in metres.</p>
+</dd></dl>
+
+</section>
+<section id="optional">
+<h4>Optional<a class="headerlink" href="#optional" title="Permalink to this headline">¶</a></h4>
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-grid_ref">
+<span id="cmdoption-arg-grid-ref"></span><span class="sig-name descname"><span class="pre">+grid_ref</span></span><span class="sig-prename descclassname"><span class="pre">=input_crs/output_crs</span></span><a class="headerlink" href="#cmdoption-arg-grid_ref" title="Permalink to this definition">¶</a></dt>
+<dd><p>Specify in which CRS the grid is referenced to. The default value is
+input_crs. That is the grid is referenced in the geographic CRS corresponding
+to the input geocentric CRS.</p>
+<p>If output_crs is specified, the grid is referenced in the geographic CRS corresponding
+to the output geocentric CRS. This is for example the case for the French
+<code class="file docutils literal notranslate"><span class="pre">gr3df97a.tif</span></code> grid converting from NTF to RGF93, but referenced against RGF93.
+Thus in the forward direction (NTF-&gt;RGF93), an iterative method is used to find
+the appropriate shift.</p>
+</dd></dl>
+
+<dl class="std option">
+<dt class="sig sig-object std" id="cmdoption-arg-multiplier">
+<span class="sig-name descname"><span class="pre">+multiplier</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;value&gt;</span></span><a class="headerlink" href="#cmdoption-arg-multiplier" title="Permalink to this definition">¶</a></dt>
+<dd><p>Specify the multiplier to apply to the grid values. Defaults to 1.0</p>
+</dd></dl>
+
+</section>
+</section>
+</section>
+</section>
+
+
+ </div>
+ </div>
+ <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
+ <a href="vgridshift.html" class="btn btn-neutral float-left" title="Vertical grid shift" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
+ <a href="../pipeline.html" class="btn btn-neutral float-right" title="The pipeline operator" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
+ </div>
+
+ <hr/>
+
+ <div role="contentinfo">
+ <p>&#169; Copyright 1983-2022.
+ <span class="lastupdated">Last updated on 22 Mar 2022.
+ </span></p>
+ </div>
+
+ Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
+ <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
+ provided by <a href="https://readthedocs.org">Read the Docs</a>.
+
+
+</footer>
+ </div>
+ </div>
+ </section>
+ </div>
+ <script>
+ jQuery(function () {
+ SphinxRtdTheme.Navigation.enable(true);
+ });
+ </script>
+
+</body>
+</html> \ No newline at end of file