aboutsummaryrefslogtreecommitdiff
path: root/docs/source/usage/operations/transformations
diff options
context:
space:
mode:
Diffstat (limited to 'docs/source/usage/operations/transformations')
-rw-r--r--docs/source/usage/operations/transformations/deformation.rst148
-rw-r--r--docs/source/usage/operations/transformations/helmert.rst388
-rw-r--r--docs/source/usage/operations/transformations/hgridshift.rst39
-rw-r--r--docs/source/usage/operations/transformations/index.rst17
-rw-r--r--docs/source/usage/operations/transformations/molodensky.rst74
-rw-r--r--docs/source/usage/operations/transformations/vgridshift.rst41
6 files changed, 0 insertions, 707 deletions
diff --git a/docs/source/usage/operations/transformations/deformation.rst b/docs/source/usage/operations/transformations/deformation.rst
deleted file mode 100644
index 2489f18e..00000000
--- a/docs/source/usage/operations/transformations/deformation.rst
+++ /dev/null
@@ -1,148 +0,0 @@
-.. _deformation:
-
-================================================================================
-Kinematic datum shifting utilizing a deformation model
-================================================================================
-
-Perform datum shifts means of a deformation/velocity model.
-
-+-----------------+--------------------------------------------------------------------+
-| **Input type** | Cartesian coordinates. |
-+-----------------+--------------------------------------------------------------------+
-| **Output type** | Cartesian coordinates. |
-+-----------------+--------------------------------------------------------------------+
-| **Options** |
-+-----------------+--------------------------------------------------------------------+
-| `xy_grids` | Comma-separated list of grids to load. |
-+-----------------+--------------------------------------------------------------------+
-| `z_grids` | Comma-separated list of grids to load. |
-+-----------------+--------------------------------------------------------------------+
-| `t_epoch` | Central epoch of transformation. [decimalyear]. Only used in |
-| | spatiotemporal transformations. |
-+-----------------+--------------------------------------------------------------------+
-| `t_obs` | Observation time of coordinate(s). Mostly useful in 2D and 3D |
-| | transformations. [decimalyear]. *Optional*. |
-+-----------------+--------------------------------------------------------------------+
-
-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. Tntraplate
-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.
-
-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.
-Details about the formats can be found in the GDAL documentation. GDAL both reads and
-writes both file formats. Using GDAL for construction of new grids is recommended.
-
-Example
--------------------------------------------------------------------------------
-
-In [Häkli2016]_ 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 ERTS89. Scandinavia is an area with significant post-glacial
-rebound. The deformations from the post-glacial uplift is not accounted for in the
-offcial ETRS89 transformations so in order to get accurate transformations in the Nordic
-countries it is necesarry to apply the deformation model. The transformation from ITRF2008
-to the Danish realisation of ETRS89 is in PROJ described as::
-
- proj = pipeline ellps = GRS80
- # ITRF2008@t_obs -> ITRF2000@t_obs
- step init = ITRF2008:ITRF2000
- # ITRF2000@t_obs -> ETRF2000@t_obs
- step proj=helmert t_epoch = 2000.0 transpose
- 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 -> NKG_ETRF00@2000.0
- step proj = deformation t_epoch = 2000.0
- xy_grids = ./nkgrf03vel_realigned_xy.ct2
- z_grids = ./nkgrf03vel_realigned_z.gtx
- # NKG_ETRF@2000.0 -> ETRF92@2000.0
- step proj=helmert transpose 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 -> ETRF92@1994.704
- step proj = deformation t_epoch = 1994.704 t_obs = 2000.0
- xy_grids = ./nkgrf03vel_realigned_xy.ct2
- z_grids = ./nkgrf03vel_realigned_z.gtx
-
-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::
-
- proj = deformation t_epoch = 2000.0
- xy_grids = ./nkgrf03vel_realigned_xy.ct2
- z_grids = ./nkgrf03vel_realigned_z.gtx
-
-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 *xy_grids* and *z_grids*. The first is
-the horizontal part of the model and the second is the vertical component.
-
-Mathematical description
--------------------------------------------------------------------------------
-
-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, :math:`(X, Y, Z)`, velocities
-:math:`(V_X, V_Y, V_Z)` can be interpolated from the gridded model. The time span
-between :math:`t_c` and :math:`t_{obs}` determine the magnitude of the coordinate
-correcton as seen in eq. :eq:`apply_velocity` below.
-
-.. math::
- :label: apply_velocity
-
- \begin{align}
- \begin{pmatrix}
- X \\
- Y \\
- Z \\
- \end{pmatrix}_B =
- \begin{pmatrix}
- X \\
- Y \\
- Z \\
- \end{pmatrix}_A +
- (t_c - t_{obs})
- \begin{pmatrix}
- V_X \\
- V_Y \\
- V_Z \\
- \end{pmatrix}
- \end{align}
-
-Corrections are done in cartesian space.
-
-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. Consequentyly though, the input coordinates needs to be converted to
-lat/long space when searching for corrections in the grid. This is done with *cart*
-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:
-
-.. math::
- :label: enu2xyz
-
- \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}
-
-where :math:`\phi` and :math:`\lambda` are the latitude and longitude of the coordinate
-that is searched for in the grid. :math:`(E, N, U)` are the grid values in ENU-space and
-:math:`(X, Y, Z)` are the corrections converted to cartesian space.
diff --git a/docs/source/usage/operations/transformations/helmert.rst b/docs/source/usage/operations/transformations/helmert.rst
deleted file mode 100644
index 03e5db15..00000000
--- a/docs/source/usage/operations/transformations/helmert.rst
+++ /dev/null
@@ -1,388 +0,0 @@
-.. _helmert:
-
-================================================================================
-Helmert transform
-================================================================================
-
-The Helmert transformation changes coordinates from one reference frame to
-anoether by means of 3-, 4-and 7-parameter shifts, or one of their 6-, 8- and
-14-parameter kinematic counterparts.
-
-+-----------------+-------------------------------------------------------------------+
-| **Input type** | Cartesian coordinates (spatial), decimalyears (temporal). |
-+-----------------+-------------------------------------------------------------------+
-| **Output type** | Cartesian coordinates (spatial), decimalyears (temporal). |
-+-----------------+-------------------------------------------------------------------+
-| **Options** |
-+----------------+--------------------------------------------------------------------+
-| `x` | Translation of the x-axis [m]. *Optional*. |
-+----------------+--------------------------------------------------------------------+
-| `y` | Translation of the y-axis [m]. *Optional*. |
-+----------------+--------------------------------------------------------------------+
-| `z` | Translation of the z-axis. [m]. *Optional*. |
-+----------------+--------------------------------------------------------------------+
-| `s` | Scale factor [ppm]. *Optional*. |
-+----------------+--------------------------------------------------------------------+
-| `rx` | X-axis rotation in the 3D Helmert [arc seconds]. *Optional*. |
-+----------------+--------------------------------------------------------------------+
-| `ry` | Y-axis rotatoin in the 3D Helmert [arc seconds]. *Optional*. |
-+----------------+--------------------------------------------------------------------+
-| `rz` | Z-axis rotation in the 3D Helmert [arc seconds]. *Optional*. |
-+----------------+--------------------------------------------------------------------+
-| `theta` | Rotation angle in the 2D Helmert. [arc seconds]. *Optional*. |
-+----------------+--------------------------------------------------------------------+
-| `dx` | Translation rate of the x-axis. [m/year]. *Optional*. |
-+----------------+--------------------------------------------------------------------+
-| `dy` | Translation rate of the y-axis. [m/year]. *Optional*. |
-+----------------+--------------------------------------------------------------------+
-| `dz` | Translation rate of the z-axis. [m/year]. *Optional*. |
-+----------------+--------------------------------------------------------------------+
-| `ds` | Scale rate factor [ppm/year]. *Optional*. |
-+----------------+--------------------------------------------------------------------+
-| `drx` | Rotation rate of the x-axis [arc seconds/year]. *Optional*. |
-+----------------+--------------------------------------------------------------------+
-| `dry` | Rotation rate of the y-axis [arc seconds/year]. *Optional*. |
-+----------------+--------------------------------------------------------------------+
-| `drz` | Rotation rate of the y-axis [arc seconds/year]. *Optional*. |
-+----------------+--------------------------------------------------------------------+
-| `t_epoch` | Central epoch of transformation. [decimalyear]. Only used in |
-| | spatiotemporal transformations. *Optional*. |
-+----------------+--------------------------------------------------------------------+
-| `t_obs` | Observation time of coordinate(s). Mostly useful in 2D and 3D |
-| | transformations. [decimalyear]. *Optional*. |
-+----------------+--------------------------------------------------------------------+
-| `exact` | Use exact transformation equations. *Optional*. |
-+----------------+--------------------------------------------------------------------+
-| `transpose` | Transpose rotation matrix. *Optional*. |
-+----------------+--------------------------------------------------------------------+
-
-The Helmert transform, in all it's 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.
-
-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 behaviour of the transformation depends on which parameters are used in the setup.
-For instance, if a rate of change paramater is specified a kinematic version of the
-transformation is used.
-
-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 eopch is controlled with the parameter `t_epoch`. The observation
-time can either by stated as part of the coordinate when using PROJ's
-4D-functionality or it can be controlled in the transformation setup by the
-parameter `t_obs`. When `t_obs` is specified, all transformed coordinates are
-treated as if they have the same observation time.
-
-Examples
-+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-Transforming coordinates from NAD72 to NAD83 using the 4 parameter 2D Helmert:
-
-::
-
- proj=helmert ellps=GRS80 x=-9597.3572 y=.6112
- s=0.304794780637 theta=-1.244048
-
-Simplified transformations from ITRF2008/IGS08 to ETRS89 using 7 parameters:
-
-::
-
- proj=helmert ellps=GRS80 x=0.67678 y=0.65495 z=-0.52827
- rx=-0.022742 ry=0.012667 rz=0.022704 s=-0.01070
-
-Transformation from `ITRF2000@2017.0` to `ITRF93@2017.0` using 15 parameters:
-
-::
-
- proj=helmert ellps=GRS80
- 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
- epoch=1988.0 tobs=2017.0 transpose
-
-Mathematical description
-+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-In the notation used below, :math:`\hat{P}` is the rate of change of a given transformation
-parameter :math:`P`. :math:`\dot{P}` is the kinematically adjusted version of :math:`P`,
-described by
-
-.. math::
- :label: propagation
-
- \dot{P}= P + \hat{P}\left(t - t_{central}\right)
-
-where :math:`t` is the observation time of the coordinate and :math:`t_{central}` is
-the central epoch of the transformation. Equation :eq:`propagation` can be used to
-propagate all transformation parameters in time.
-
-Superscripts of vectors denote the reference frame the coordinates in the vector belong to.
-
-
-2D Helmert
--------------------------------------------------------------------------------
-
-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 `x` and `y`
-parameters. The rotation is determined by `theta` and the scale is controlled with
-the `s` paramaters.
-
-.. note::
-
- The scaling parameter `s` is unitless for the 2D Helmert, as opposed to the
- 3D version where the scaling parameter is given in units of ppm.
-
-Mathematically the 2D Helmert is described as:
-
-.. math::
- :label: 4param
-
- \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}
-
-
-:eq:`4param` can be extended to a time-varying kinematic version by
-adjusting the parameters with :eq:`propagation` to :eq:`4param`, which yields
-the kinematic 2D Helmert transform:
-
-.. math::
- :label: 8param
-
- \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}
-
-All parameters in :eq:`8param` are determined by the use of :eq:`propagation`,
-which applies the rate of change to each individual parameter for a given
-timespan between :math:`t` and :math:`t_{central}`.
-
-
-3D Helmert
--------------------------------------------------------------------------------
-
-The general form of the 3D Helmert is
-
-.. math::
- :label: general-helmert
-
-
- \begin{align}
- V^B = T + \left(1 + s \times 10^{-6}\right) \mathbf{R} V^A
- \end{align}
-
-Where :math:`T` is a vector consisting of the three translation parameters, :math:`s`
-is the scaling factor and :math:`\mathbf{R}` is a rotation matrix. :math:`V^A` and
-:math:`V^B` are coordinate vectors, with :math:`V^A` being the input coordinate and
-:math:`V^B` is the output coordinate.
-
-The rotation matrix is composed of three rotation matrices, one for each axis:
-
-.. math::
-
- \begin{align}
- \mathbf{R}_X &= \begin{bmatrix} 1 & 0 & 0\\ 0 & \cos\phi & -\sin\phi\\ 0 & \sin\phi & \cos\phi \end{bmatrix}
- \end{align}
-
-.. math::
-
- \begin{align}
- \mathbf{R}_Y &= \begin{bmatrix} \cos\theta & 0 & \sin\theta\\ 0 & 1 & 0\\ -\sin\theta & 0 & \cos\theta \end{bmatrix}
- \end{align}
-
-.. math::
-
- \begin{align}
- \mathbf{R}_Z &= \begin{bmatrix} \cos\psi & -\sin\psi & 0\\ \sin\psi & \cos\psi & 0\\ 0 & 0 & 1 \end{bmatrix}
- \end{align}
-
-The three rotation matrices can be combined in one:
-
-.. math::
-
- \begin{align}
- \mathbf{R} = \mathbf{R_X} \mathbf{R_Y} \mathbf{R_Y}
- \end{align}
-
-For :math:`\mathbf{R}`, this yields:
-
-.. math::
- :label: rot_exact
-
- \begin{bmatrix}
- \cos\theta \cos\psi & -\cos\phi \sin\psi + \sin\phi \sin\theta \cos\psi & \sin\phi \sin\psi + \cos\phi \sin\theta \cos\psi \\
- \cos\theta\sin\psi & \cos\phi \cos\psi + \sin\phi \sin\theta \sin\psi & - \sin\phi \cos\psi + \cos\phi \sin\theta \sin\psi \\
- -\sin\theta & \sin\phi \cos\theta & \cos\phi \cos\theta \\
- \end{bmatrix}
-
-
-Using the small angle approxition the rotation matrix can be simplified to
-
-.. math::
- :label: rot_approx
-
- \begin{align} \mathbf{R} =
- \begin{bmatrix}
- 1 & -R_z & R_y \\
- Rz & 1 & -R_x \\
- -Ry & R_x & 1 \\
- \end{bmatrix}
- \end{align}
-
-Which allow us to express the most common version of the Helmert transform,
-using the approximated rotation matrix:
-
-
-.. math::
- :label: 7param
-
- \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}
-
-If the rotation matrix is transposed the transformation is effectively reversed.
-This is cause for some confusion since there is no correct way of defining the
-rotation matrix. Two conventions exists and they seem to be equally popular.
-In PROJ the rotation matrix can be transposed by adding the `transpose` flag in
-the transformation setup.
-
-Applying :eq:`propagation` we get the kinematic version of the approximated
-3D Helmert:
-
-.. math::
- :label: 14param
-
- \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}
-
-
-
-
-The Helmert transformation can be applied without using the rotation parameters,
-in which case it becomes a simlpe translation of the origin of the coordinate
-system. When using the Helmert in this version equation :eq:`general-helmert`
-simplies to:
-
-.. math::
- :label: 3param
-
- \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}
-
-That after application of :eq:`propagation` has the following kinematic
-countpart:
-
-.. math::
- :label: 6param
-
- \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}
diff --git a/docs/source/usage/operations/transformations/hgridshift.rst b/docs/source/usage/operations/transformations/hgridshift.rst
deleted file mode 100644
index 7f3c9895..00000000
--- a/docs/source/usage/operations/transformations/hgridshift.rst
+++ /dev/null
@@ -1,39 +0,0 @@
-.. _hgridshift:
-
-================================================================================
-Horizontal grid shift
-================================================================================
-
-Change of horizontal datum by grid shift.
-
-+-----------------+--------------------------------------------------------------------+
-| **Input type** | Geodetic coordinates. |
-+-----------------+--------------------------------------------------------------------+
-| **Output type** | Geodetic coordinates. |
-+-----------------+--------------------------------------------------------------------+
-| **Options** |
-+-----------------+--------------------------------------------------------------------+
-| `+grids` | Comma-separated list of grids to load. |
-+-----------------+--------------------------------------------------------------------+
-
-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::
-
- +hgridshift +grids=nzgr2kgrid0005.gsb
-
-
-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::
-
- +hgridshift +grids=@conus,@alaska,@ntv2_0.gsb,@ntv_can.dat
-
-The ``@`` 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 presedence over the grids in the back of the
-list.
-
-PROJ supports CTable2, NTv1 and NTv2 files for horizontal grid corrections. Details
-about all three formats can be found in the GDAL documentation. GDAL reads and
-writes all three formats. Using GDAL for construction of new grids is recommended.
diff --git a/docs/source/usage/operations/transformations/index.rst b/docs/source/usage/operations/transformations/index.rst
deleted file mode 100644
index 5112ffa2..00000000
--- a/docs/source/usage/operations/transformations/index.rst
+++ /dev/null
@@ -1,17 +0,0 @@
-.. _transformation_list:
-
-================================================================================
-Transformations
-================================================================================
-
-Transformations coordinate operation in which the two coordinate reference
-systems are based on different datums.
-
-.. toctree::
- :maxdepth: 1
-
- deformation
- helmert
- molodensky
- hgridshift
- vgridshift
diff --git a/docs/source/usage/operations/transformations/molodensky.rst b/docs/source/usage/operations/transformations/molodensky.rst
deleted file mode 100644
index d4ff3e79..00000000
--- a/docs/source/usage/operations/transformations/molodensky.rst
+++ /dev/null
@@ -1,74 +0,0 @@
-.. _molodensky:
-
-================================================================================
-Molodensky transform
-================================================================================
-
-The Molodensky transformation resembles a :ref:`Helmert` 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 parameterize, 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 [EversKnudsen2017]_.
-
-+---------------------+----------------------------------------------------------+
-| **Input type** | Geodetic coordinates. |
-+---------------------+----------------------------------------------------------+
-| **Output type** | Geodetic coordinates. |
-+---------------------+----------------------------------------------------------+
-| **Options** |
-+---------------------+----------------------------------------------------------+
-| `+da` | Difference in semimajor axis of the defining ellipsoids. |
-+---------------------+----------------------------------------------------------+
-| `+df` | Difference in flattening of the defining ellipsoids. |
-+---------------------+----------------------------------------------------------+
-| `+dx` | Offset of the X-axes of the defining ellipsoids. |
-+---------------------+----------------------------------------------------------+
-| `+dy` | Offset of the Y-axes of the defining ellipsoids. |
-+---------------------+----------------------------------------------------------+
-| `+dz` | Offset of the Z-axes of the defining ellipsoids. |
-+---------------------+----------------------------------------------------------+
-| `+ellps` | Ellipsoid definition of source coordinates. |
-| | Any specification can be used (e.g. `+a`, `+rf`, etc). |
-|   | If not specified, default ellipsoid is used. |
-+---------------------+----------------------------------------------------------+
-| `+abridged` | Use the abridged version of the Molodensky transform. |
-| | Optional. |
-+---------------------+----------------------------------------------------------+
-
-The Molodensky transform can be used to perform a datum shift from coordinate
-:math:`(\phi_1, \lambda_1, h_1)` to :math:`(\phi_2, \lambda_2, h_2)` where the two
-coordinates are referenced to different ellipsoids. This is based on three
-assumptions:
-
- 1. The cartesian axes, :math:`X, Y, Z`, of the two ellipsoids are parallel.
- 2. The offset, :math:`\delta X, \delta Y, \delta Z`, between the two ellipsoid
- are known.
- 3. The characteristics of the two ellipsoids, expressed as the difference in
- semimajor axis (:math:`\delta a`) and flattening (:math:`\delta f`), are known.
-
-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.
-
-A derivation of the mathematical formulas for the Molodensky transform can be found
-in [Deakin2004]_.
-
-
-Examples
-###############################################################################
-
-The abridged Molodensky::
-
- proj=molodensky a=6378160 rf=298.25 da=-23 df=-8.120449e-8 dx=-134 dy=-48 dz=149 abridged
-
-The same transformation using the standard Molodensky::
-
- proj=molodensky a=6378160 rf=298.25 da=-23 df=-8.120449e-8 dx=-134 dy=-48 dz=149
-
diff --git a/docs/source/usage/operations/transformations/vgridshift.rst b/docs/source/usage/operations/transformations/vgridshift.rst
deleted file mode 100644
index e9f78310..00000000
--- a/docs/source/usage/operations/transformations/vgridshift.rst
+++ /dev/null
@@ -1,41 +0,0 @@
-.. _vgridshift:
-
-================================================================================
-Vertical grid shift
-================================================================================
-
-Change Vertical datum change by grid shift
-
-+-----------------+--------------------------------------------------------------------+
-| **Input type** | Geodetic coordinates (horizontal), meters (vertical). |
-+-----------------+--------------------------------------------------------------------+
-| **Output type** | Geodetic coordinates (horizontal), meters (vertical). |
-+-----------------+--------------------------------------------------------------------+
-| **Options** |
-+-----------------+--------------------------------------------------------------------+
-| `+grids` | Comma-separated list of grids to load. |
-+-----------------+--------------------------------------------------------------------+
-
-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::
-
- +vgridshift +grids=egm96_16.gtx
-
-
-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 presedence over
-the global model::
-
- +vgridshift +grids=@dvr90.gtx,egm96_16.gtx
-
-The ``@`` 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 presedence over the grids in the back of the
-list.
-
-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.