diff options
| author | PROJ deploybot <proj.bot@proj.bot> | 2022-03-22 20:00:06 +0000 |
|---|---|---|
| committer | PROJ deploybot <proj.bot@proj.bot> | 2022-03-22 20:00:06 +0000 |
| commit | a3f43744feec86272fe532124679d3a013ef9a8c (patch) | |
| tree | 27e4198db6011e3097eb7bcfe7197684aba7583a /operations/transformations/helmert.html | |
| download | PROJ-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/helmert.html')
| -rw-r--r-- | operations/transformations/helmert.html | 603 |
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 — 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> »</li> + <li><a href="../index.html">Coordinate operations</a> »</li> + <li><a href="index.html">Transformations</a> »</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">=<value></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">=<value></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">=<value></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">=<value></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">=<value></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">=<value></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">=<value></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">=<value></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">=<value></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">=<value></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">=<value></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">=<value></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">=<value></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">=<value></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">=<value></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">=<value></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 & \sin \theta \\ + -\sin \theta & \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} & \sin \dot{\theta} \\ + -\sin\ \dot{\theta} & \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 &= \begin{bmatrix} 1 & 0 & 0\\ 0 & \cos R_x & -\sin R_x \\ 0 & \sin R_x & \cos R_x \end{bmatrix} +\end{align}\end{split}\]</div> +<div class="math notranslate nohighlight"> +\[\begin{split}\begin{align} + \mathbf{R}_Y &= \begin{bmatrix} \cos R_y & 0 & \sin R_y\\ 0 & 1 & 0\\ -\sin R_y & 0 & \cos R_y \end{bmatrix} +\end{align}\end{split}\]</div> +<div class="math notranslate nohighlight"> +\[\begin{split}\begin{align} + \mathbf{R}_Z &= \begin{bmatrix} \cos R_z & -\sin R_z & 0\\ \sin R_z & \cos R_z & 0\\ 0 & 0 & 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 & -\cos R_x \sin R_z + & \sin R_x \sin R_z + \\ + & \sin R_x \sin R_y \cos R_z & \cos R_x \sin R_y \cos R_z \\ + \cos R_y\sin R_z & \cos R_x \cos R_z + & - \sin R_x \cos R_z + \\ + & \sin R_x \sin R_y \sin R_z & \cos R_x \sin R_y \sin R_z \\ + -\sin R_y & \sin R_x \cos R_y & \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 & -R_z & R_y \\ + Rz & 1 & -R_x \\ + -Ry & R_x & 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 & -R_z & R_y \\ + Rz & 1 & -R_x \\ + -Ry & R_x & 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 & -\dot{R_z} & \dot{R_y} \\ + \dot{R_z} & 1 & -\dot{R_x} \\ + -\dot{R_y} & \dot{R_x} & 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>© 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 |
