<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<div>
<div dir="ltr">I think <a rel="noreferrer noopener" href="https://github.com/OSGeo/PROJ/pull/3621">https://github.com/OSGeo/PROJ/pull/3621</a>. Before that PR, PROJ did a shift with a geotiff between GDA2020<->GDA94 as an intermediate step for transforming
to WGS84. Now, WGS84 to either GDA is null (no operation). I remember reading some bulletin published by an Australian government or agency that confirms this behaviour is "correct"? That geotiff grid shift is intended only for conversion between 94 and 2020
and not as a more accurate way to get to WGS84.</div>
</div>
<div id="ms-outlook-mobile-signature">
<div></div>
</div>
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" color="#000000"><b>From:</b> PROJ <proj-bounces@lists.osgeo.org> on behalf of Jonathan Johansen via PROJ <proj@lists.osgeo.org><br>
<b>Sent:</b> Sunday, January 7, 2024 8:12:57 PM<br>
<b>To:</b> Robert Denham <Robert.Denham@des.qld.gov.au><br>
<b>Cc:</b> proj@lists.osgeo.org <proj@lists.osgeo.org><br>
<b>Subject:</b> Re: [PROJ] Differences in coordinate transforms from proj 9.1 to 9.2</font>
<div> </div>
</div>
<div>
<div dir="ltr">Oh, I'd be interested in the cause of this too, please, as a user located in Aus who updated to PROJ 9 not too long ago.</div>
<br>
<div class="x_gmail_quote">
<div dir="ltr" class="x_gmail_attr">On Mon, Jan 8, 2024 at 10:47 AM Robert Denham via PROJ <<a href="mailto:proj@lists.osgeo.org">proj@lists.osgeo.org</a>> wrote:<br>
</div>
<blockquote class="x_gmail_quote" style="margin:0px 0px 0px 0.8ex; border-left:1px solid rgb(204,204,204); padding-left:1ex">
This is probably just an improvement, but I was wondering if someone could help explain minor differences we're observing when transforming coordinates from WGS 84 geographic coordinates to projected coordinates in Australia.
<br>
<br>
For example, if I do:<br>
<br>
echo -27.495159464576993 153.02971160860926|<br>
docker run -i --rm --env PROJ_DEBUG=4 --env PROJ_NETWORK=ON osgeo/proj:9.2.0 \<br>
cs2cs epsg:4326 +to epsg:28356<br>
<br>
I get:<br>
<br>
pj_open_lib(proj.ini): call fopen(/usr/share/proj/proj.ini) - succeeded<br>
pj_open_lib(proj.db): call fopen(/usr/share/proj/proj.db) - succeeded<br>
pj_open_lib(au_icsm_GDA94_GDA2020_conformal_and_distortion.tif): call fopen(/usr/share/proj/au_icsm_GDA94_GDA2020_conformal_and_distortion.tif) - succeeded<br>
pj_open_lib(au_icsm_GDA94_GDA2020_conformal_and_distortion.tif): call fopen(/usr/share/proj/au_icsm_GDA94_GDA2020_conformal_and_distortion.tif) - succeeded<br>
502934.82 6958719.00 0.00<br>
Using coordinate operation Inverse of GDA94 to WGS 84 (1) + Map Grid of Australia zone 56<br>
<br>
But if I do the same with version 9.1.1:<br>
<br>
echo -27.495159464576993 153.02971160860926|<br>
docker run -i --rm --env PROJ_DEBUG=4 --env PROJ_NETWORK=ON osgeo/proj:9.1.1 \<br>
cs2cs epsg:4326 +to epsg:28356<br>
<br>
I get a slightly different output:<br>
<br>
502934.23 6958717.61 0.00<br>
<br>
<br>
And a large amount of output (see below)<br>
<br>
I just wanted to check whether this was expected behaviour, and if the difference in the coordinate transformation could be interpreted as an improvement?<br>
I checked other projected coordinates systems, including <br>
<br>
* GDA2020 Zone 56 (EPSG:7856)<br>
* Australian Albers GDA94 (EPSG:3755)<br>
* Australian Albers GDA2020 (EPSG:9473)<br>
<br>
Each of these give slightly different results under proj 9.1.1 and 9.2.0. The only relevant change I could see in proj was EPSG updated to EPSG 10.082 in proj 9.2. I assume this is the source of the differences?<br>
<br>
<br>
Thanks<br>
Robert<br>
<br>
<br>
<br>
(output from cs2cs with proj 9.1.1 follows)<br>
<br>
pj_open_lib(proj.ini): call fopen(/usr/share/proj/proj.ini) - succeeded<br>
pj_open_lib(proj.db): call fopen(/usr/share/proj/proj.db) - succeeded<br>
pj_open_lib(au_icsm_GDA94_GDA2020_conformal_and_distortion.tif): call fopen(/usr/share/proj/au_icsm_GDA94_GDA2020_conformal_and_distortion.tif) - succeeded<br>
pipeline: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0<br>
pipeline: pj_ellipsoid - final: ellps=GRS80<br>
pipeline: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0<br>
pipeline: pj_ellipsoid - final: <br>
pipeline: Pipeline: Building arg list for step no. 0<br>
pipeline: Pipeline: init - proj=axisswap, 2<br>
pipeline: order=2,1<br>
axisswap: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0<br>
axisswap: pj_ellipsoid - final: ellps=GRS80<br>
pipeline: Pipeline: Step 0 (proj=axisswap) at 0x562104a31020<br>
pipeline: Pipeline at [0x562104bc7f60]: step at [0x562104a31020] (proj=axisswap) done<br>
pipeline: Pipeline: Building arg list for step no. 1<br>
pipeline: Pipeline: init - proj=unitconvert, 3<br>
pipeline: xy_in=deg<br>
pipeline: xy_out=rad<br>
unitconvert: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0<br>
unitconvert: pj_ellipsoid - final: ellps=GRS80<br>
unitconvert: xy_in unit: Degree<br>
unitconvert: xy_out unit: Radian<br>
pipeline: Pipeline: Step 1 (proj=unitconvert) at 0x56210470c510<br>
pipeline: Pipeline at [0x562104bc7f60]: step at [0x56210470c510] (proj=unitconvert) done<br>
pipeline: Pipeline: Building arg list for step no. 2<br>
pipeline: Pipeline: init - proj=utm, 4<br>
pipeline: zone=56<br>
pipeline: south<br>
pipeline: ellps=GRS80<br>
utm: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0<br>
utm: pj_ellipsoid - final: ellps=GRS80<br>
pipeline: Pipeline: Step 2 (proj=utm) at 0x562104b90340<br>
pipeline: Pipeline at [0x562104bc7f60]: step at [0x562104b90340] (proj=utm) done<br>
pipeline: Pipeline: 3 steps built. Determining i/o characteristics<br>
axisswap: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0<br>
axisswap: pj_ellipsoid - final: ellps=GRS80<br>
pipeline: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0<br>
pipeline: pj_ellipsoid - final: ellps=GRS80<br>
pipeline: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0<br>
pipeline: pj_ellipsoid - final: <br>
pipeline: Pipeline: Building arg list for step no. 0<br>
pipeline: Pipeline: init - proj=unitconvert, 3<br>
pipeline: xy_in=deg<br>
pipeline: xy_out=rad<br>
unitconvert: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0<br>
unitconvert: pj_ellipsoid - final: ellps=GRS80<br>
unitconvert: xy_in unit: Degree<br>
unitconvert: xy_out unit: Radian<br>
pipeline: Pipeline: Step 0 (proj=unitconvert) at 0x562104bc82a0<br>
pipeline: Pipeline at [0x562104b87920]: step at [0x562104bc82a0] (proj=unitconvert) done<br>
pipeline: Pipeline: Building arg list for step no. 1<br>
pipeline: Pipeline: init - proj=utm, 4<br>
pipeline: zone=56<br>
pipeline: south<br>
pipeline: ellps=GRS80<br>
utm: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0<br>
utm: pj_ellipsoid - final: ellps=GRS80<br>
pipeline: Pipeline: Step 1 (proj=utm) at 0x562104b94000<br>
pipeline: Pipeline at [0x562104b87920]: step at [0x562104b94000] (proj=utm) done<br>
pipeline: Pipeline: 2 steps built. Determining i/o characteristics<br>
pipeline: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0<br>
pipeline: pj_ellipsoid - final: ellps=GRS80<br>
pipeline: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0<br>
pipeline: pj_ellipsoid - final: <br>
pipeline: Pipeline: Building arg list for step no. 0<br>
pipeline: Pipeline: init - proj=axisswap, 2<br>
pipeline: order=2,1<br>
axisswap: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0<br>
axisswap: pj_ellipsoid - final: ellps=GRS80<br>
pipeline: Pipeline: Step 0 (proj=axisswap) at 0x562104ac94a0<br>
pipeline: Pipeline at [0x562104c029b0]: step at [0x562104ac94a0] (proj=axisswap) done<br>
pipeline: Pipeline: Building arg list for step no. 1<br>
pipeline: Pipeline: init - proj=unitconvert, 3<br>
pipeline: xy_in=deg<br>
pipeline: xy_out=rad<br>
unitconvert: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0<br>
unitconvert: pj_ellipsoid - final: ellps=GRS80<br>
unitconvert: xy_in unit: Degree<br>
unitconvert: xy_out unit: Radian<br>
pipeline: Pipeline: Step 1 (proj=unitconvert) at 0x562104b94d60<br>
pipeline: Pipeline at [0x562104c029b0]: step at [0x562104b94d60] (proj=unitconvert) done<br>
pipeline: Pipeline: Building arg list for step no. 2<br>
pipeline: Pipeline: init - proj=utm, 4<br>
pipeline: zone=56<br>
pipeline: south<br>
pipeline: ellps=GRS80<br>
utm: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0<br>
utm: pj_ellipsoid - final: ellps=GRS80<br>
pipeline: Pipeline: Step 2 (proj=utm) at 0x562104b952a0<br>
pipeline: Pipeline at [0x562104c029b0]: step at [0x562104b952a0] (proj=utm) done<br>
pipeline: Pipeline: 3 steps built. Determining i/o characteristics<br>
pipeline: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0<br>
pipeline: pj_ellipsoid - final: ellps=WGS84<br>
pipeline: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0<br>
pipeline: pj_ellipsoid - final: <br>
pipeline: Pipeline: Building arg list for step no. 0<br>
pipeline: Pipeline: init - proj=axisswap, 2<br>
pipeline: order=2,1<br>
axisswap: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0<br>
axisswap: pj_ellipsoid - final: ellps=GRS80<br>
pipeline: Pipeline: Step 0 (proj=axisswap) at 0x562104b976f0<br>
pipeline: Pipeline at [0x562104b96660]: step at [0x562104b976f0] (proj=axisswap) done<br>
pipeline: Pipeline: Building arg list for step no. 1<br>
pipeline: Pipeline: init - proj=unitconvert, 3<br>
pipeline: xy_in=deg<br>
pipeline: xy_out=rad<br>
unitconvert: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0<br>
unitconvert: pj_ellipsoid - final: ellps=GRS80<br>
unitconvert: xy_in unit: Degree<br>
unitconvert: xy_out unit: Radian<br>
pipeline: Pipeline: Step 1 (proj=unitconvert) at 0x562104b97cc0<br>
pipeline: Pipeline at [0x562104b96660]: step at [0x562104b97cc0] (proj=unitconvert) done<br>
pipeline: Pipeline: Building arg list for step no. 2<br>
pipeline: Pipeline: init - proj=push, 2<br>
pipeline: v_3<br>
push: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0<br>
push: pj_ellipsoid - final: ellps=GRS80<br>
pipeline: Pipeline: Step 2 (proj=push) at 0x562104b98290<br>
pipeline: Pipeline at [0x562104b96660]: step at [0x562104b98290] (proj=push) done<br>
pipeline: Pipeline: Building arg list for step no. 3<br>
pipeline: Pipeline: init - proj=cart, 2<br>
pipeline: ellps=WGS84<br>
cart: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0<br>
cart: pj_ellipsoid - final: ellps=WGS84<br>
pipeline: Pipeline: Step 3 (proj=cart) at 0x562104b98810<br>
pipeline: Pipeline at [0x562104b96660]: step at [0x562104b98810] (proj=cart) done<br>
pipeline: Pipeline: Building arg list for step no. 4<br>
pipeline: Pipeline: init - inv, 10<br>
pipeline: proj=helmert<br>
pipeline: x=0.06155<br>
pipeline: y=-0.01087<br>
pipeline: z=-0.04019<br>
pipeline: rx=-0.0394924<br>
pipeline: ry=-0.0327221<br>
pipeline: rz=-0.0328979<br>
pipeline: s=-0.009994<br>
pipeline: convention=coordinate_frame<br>
helmert: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0<br>
helmert: pj_ellipsoid - final: ellps=GRS80<br>
helmert: Helmert parameters:<br>
helmert: x= 0.06155 y= -0.01087 z= -0.04019<br>
helmert: rx= -0.03949 ry= -0.03272 rz= -0.03290<br>
helmert: s= -0.00999 exact=0 convention=coordinate_frame<br>
helmert: dx= 0.00000 dy= 0.00000 dz= 0.00000<br>
helmert: drx= 0.00000 dry= 0.00000 drz= 0.00000<br>
helmert: ds= 0.00000 t_epoch= 0.00000<br>
helmert: Transformation parameters for observation t_obs=0 (t_epoch=0):<br>
helmert: x: 0.06155<br>
helmert: y: -0.01087<br>
helmert: z: -0.04019<br>
helmert: s: -9.994e-09<br>
helmert: rx: -1.91465e-07<br>
helmert: ry: -1.58641e-07<br>
helmert: rz: -1.59494e-07<br>
helmert: theta: 0<br>
helmert: Rotation Matrix:<br>
helmert: | 1 -1.59494e-07 1.58641e-07 |<br>
helmert: | 1.59494e-07 1 -1.91465e-07 |<br>
helmert: | -1.58641e-07 1.91465e-07 1 |<br>
pipeline: Pipeline: Step 4 (inv) at 0x562104b98e90<br>
pipeline: Pipeline at [0x562104b96660]: step at [0x562104b98e90] (inv) done<br>
pipeline: Pipeline: Building arg list for step no. 5<br>
pipeline: Pipeline: init - inv, 3<br>
pipeline: proj=cart<br>
pipeline: ellps=GRS80<br>
cart: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0<br>
cart: pj_ellipsoid - final: ellps=GRS80<br>
pipeline: Pipeline: Step 5 (inv) at 0x562104b99560<br>
pipeline: Pipeline at [0x562104b96660]: step at [0x562104b99560] (inv) done<br>
pipeline: Pipeline: Building arg list for step no. 6<br>
pipeline: Pipeline: init - proj=pop, 2<br>
pipeline: v_3<br>
pop: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0<br>
pop: pj_ellipsoid - final: ellps=GRS80<br>
pipeline: Pipeline: Step 6 (proj=pop) at 0x562104b99ac0<br>
pipeline: Pipeline at [0x562104b96660]: step at [0x562104b99ac0] (proj=pop) done<br>
pipeline: Pipeline: Building arg list for step no. 7<br>
pipeline: Pipeline: init - proj=utm, 4<br>
pipeline: zone=56<br>
pipeline: south<br>
pipeline: ellps=GRS80<br>
utm: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0<br>
utm: pj_ellipsoid - final: ellps=GRS80<br>
pipeline: Pipeline: Step 7 (proj=utm) at 0x562104b9a070<br>
pipeline: Pipeline at [0x562104b96660]: step at [0x562104b9a070] (proj=utm) done<br>
pipeline: Pipeline: 8 steps built. Determining i/o characteristics<br>
pipeline: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0<br>
pipeline: pj_ellipsoid - final: ellps=GRS80<br>
pipeline: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0<br>
pipeline: pj_ellipsoid - final: <br>
pipeline: Pipeline: Building arg list for step no. 0<br>
pipeline: Pipeline: init - proj=axisswap, 2<br>
pipeline: order=2,1<br>
axisswap: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0<br>
axisswap: pj_ellipsoid - final: ellps=GRS80<br>
pipeline: Pipeline: Step 0 (proj=axisswap) at 0x562104b9b790<br>
pipeline: Pipeline at [0x562104b9a890]: step at [0x562104b9b790] (proj=axisswap) done<br>
pipeline: Pipeline: Building arg list for step no. 1<br>
pipeline: Pipeline: init - proj=unitconvert, 3<br>
pipeline: xy_in=deg<br>
pipeline: xy_out=rad<br>
unitconvert: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0<br>
unitconvert: pj_ellipsoid - final: ellps=GRS80<br>
unitconvert: xy_in unit: Degree<br>
unitconvert: xy_out unit: Radian<br>
pipeline: Pipeline: Step 1 (proj=unitconvert) at 0x562104b9bd60<br>
pipeline: Pipeline at [0x562104b9a890]: step at [0x562104b9bd60] (proj=unitconvert) done<br>
pipeline: Pipeline: Building arg list for step no. 2<br>
pipeline: Pipeline: init - inv, 3<br>
pipeline: proj=hgridshift<br>
pipeline: grids=au_icsm_GDA94_GDA2020_conformal_and_distortion.tif<br>
hgridshift: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0<br>
hgridshift: pj_ellipsoid - final: ellps=GRS80<br>
pipeline: Pipeline: Step 2 (inv) at 0x562104b9c380<br>
pipeline: Pipeline at [0x562104b9a890]: step at [0x562104b9c380] (inv) done<br>
pipeline: Pipeline: Building arg list for step no. 3<br>
pipeline: Pipeline: init - proj=utm, 4<br>
pipeline: zone=56<br>
pipeline: south<br>
pipeline: ellps=GRS80<br>
utm: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0<br>
utm: pj_ellipsoid - final: ellps=GRS80<br>
pipeline: Pipeline: Step 3 (proj=utm) at 0x562104b9c950<br>
pipeline: Pipeline at [0x562104b9a890]: step at [0x562104b9c950] (proj=utm) done<br>
pipeline: Pipeline: 4 steps built. Determining i/o characteristics<br>
Using coordinate operation Inverse of GDA94 to WGS 84 (3) + Map Grid of Australia zone 56<br>
pj_open_lib(au_icsm_GDA94_GDA2020_conformal_and_distortion.tif): call fopen(/usr/share/proj/au_icsm_GDA94_GDA2020_conformal_and_distortion.tif) - succeeded<br>
502934.23 6958717.61 0.00<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
R<br>
<br>
------------------------------<br>
The information in this email together with any attachments is intended only for the person or entity to which it is addressed and may contain confidential and/or privileged material. There is no waiver of any confidentiality/privilege by your inadvertent receipt
of this material. <br>
Any form of review, disclosure, modification, distribution and/or publication of this email message is prohibited, unless as a necessary part of Departmental business.<br>
If you have received this message in error, you are asked to inform the sender as quickly as possible and delete this message and any copies of this message from your computer and/or your computer system network.<br>
------------------------------<br>
_______________________________________________<br>
PROJ mailing list<br>
<a href="mailto:PROJ@lists.osgeo.org" target="_blank">PROJ@lists.osgeo.org</a><br>
<a href="https://lists.osgeo.org/mailman/listinfo/proj" rel="noreferrer" target="_blank">https://lists.osgeo.org/mailman/listinfo/proj</a><br>
</blockquote>
</div>
</div>
</body>
</html>