From e05dcd84ab69e1522c67c1ec9e5b38f45fd77c6e Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Tue, 21 Aug 2018 14:38:04 +0200 Subject: [BREAKING] Hermert: add +convention=position_vector/coordinate_frame, forbids +transpose (fixes #1091) As identified in #1091, Helmert implementation in PROJ 5.0 and 5.1 is confusing. It happens that by default it used the coordinate_frame convention, contrary to the position_vector convention used traditionaly for +towgs84. The documentation of Helmert was also wrongly specifying that the default convention was position_vector. This commit: - bans the confusing +transpose parameter - removes the concept of a default convention, since in practice both are equally found, and requires +convention as soon as a rotational term parameter is present. For translation only, convention is ignored and optional, as having no effect. - fixes all the identified uses of proj=helmert in code, doc and tests This is obviously a breaking change: - users will have to adapt their pipeline expressions - in particular, init files that would use helmert must be adapted However, as designed, the break will be explicit, and not silent. --- docs/source/usage/transformation.rst | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) (limited to 'docs/source/usage') diff --git a/docs/source/usage/transformation.rst b/docs/source/usage/transformation.rst index acec0bb5..b4ed7031 100644 --- a/docs/source/usage/transformation.rst +++ b/docs/source/usage/transformation.rst @@ -75,7 +75,7 @@ the introduction). In PROJ it can be implemented as proj=pipeline step proj=cart ellps=intl - step proj=helmert + step proj=helmert convention=coordinate_frame x=-81.0703 y=-89.3603 z=-115.7526 rx=-0.48488 ry=-0.02436 rz=-0.41321 s=-0.540645 step proj=cart inv ellps=GRS80 @@ -101,7 +101,7 @@ deprecated system with decimeter level tensions. step init=./s45b.pol:s45b_tc32 step proj=utm inv ellps=intl zone=32 step proj=cart ellps=intl - step proj=helmert + step proj=helmert convention=coordinate_frame x=-81.0703 y=-89.3603 z=-115.7526 rx=-0.48488 ry=-0.02436 rz=-0.41321 s=-0.540645 step proj=cart inv ellps=GRS80 @@ -116,16 +116,15 @@ data, but the 14-parameter Helmert transform expects temporal units in decimalye Hence the first step in the pipeline is the unitconvert pseudo-projection that makes sure the correct units are passed along to the Helmert transform. Most parameters of the Helmert transform are taken from :cite:`Altamimi2002`, -except the epoch which is the epoch of the transformation. The default setting is to -use “coordinate frame” convention of the Helmert transform, but “position vector” -convention can also be used. The last step in the pipeline is converting the +except the epoch which is the epoch of the transformation. +The last step in the pipeline is converting the coordinate timestamps back to GPS weeks. :: proj=pipeline step proj=unitconvert t_in=gps_week t_out=decimalyear - step proj=helmert + step proj=helmert convention=coordinate_frame x=0.0127 y=0.0065 z=-0.0209 s=0.00195 rx=0.00039 ry=-0.00080 rz=0.00114 dx=-0.0029 dy=-0.0002 dz=-0.0006 ds=0.00001 -- cgit v1.2.3