aboutsummaryrefslogtreecommitdiff
path: root/operations/transformations/vgridshift.html
blob: e6bd07302f6485480d516a66b96a49c147cbee27 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
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>