aboutsummaryrefslogtreecommitdiff
path: root/operations/transformations/helmert.html
diff options
context:
space:
mode:
Diffstat (limited to 'operations/transformations/helmert.html')
-rw-r--r--operations/transformations/helmert.html603
1 files changed, 603 insertions, 0 deletions
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