Thank you Erixen, That makes sense, and this agrees with Geoscience Australia calculator https://geodesyapps.ga.gov.au/geographic-to-grid. This gives the same results as proj 9.2
Robert From: Erixen Cruz <[email protected]> Sent: Monday, January 8, 2024 1:55 PM To: Jonathan Johansen; Robert Denham Cc: [email protected] Subject: Re: [PROJ] Differences in coordinate transforms from proj 9.1 to 9.2 I think https: //github. com/OSGeo/PROJ/pull/3621. 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 I think https://github.com/OSGeo/PROJ/pull/3621<https://urldefense.com/v3/__https:/github.com/OSGeo/PROJ/pull/3621__;!!PUY2jUP3Fp7oEg!F7cBGkbpEaUh7JbDaygWZvd1WOAfMdTnDyS6msuUNaOlDKHHNx3moxenuk25133D5HL9v5A1YwkZdsY0kqWaY3-hT9M-u42MTg$>. 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. ________________________________ From: PROJ <[email protected]<mailto:[email protected]>> on behalf of Jonathan Johansen via PROJ <[email protected]<mailto:[email protected]>> Sent: Sunday, January 7, 2024 8:12:57 PM To: Robert Denham <[email protected]<mailto:[email protected]>> Cc: [email protected]<mailto:[email protected]> <[email protected]<mailto:[email protected]>> Subject: Re: [PROJ] Differences in coordinate transforms from proj 9.1 to 9.2 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. On Mon, Jan 8, 2024 at 10:47 AM Robert Denham via PROJ <[email protected]<mailto:[email protected]>> wrote: 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. For example, if I do: echo -27.495159464576993 153.02971160860926| docker run -i --rm --env PROJ_DEBUG=4 --env PROJ_NETWORK=ON osgeo/proj:9.2.0 \ cs2cs epsg:4326 +to epsg:28356 I get: pj_open_lib(proj.ini): call fopen(/usr/share/proj/proj.ini) - succeeded pj_open_lib(proj.db): call fopen(/usr/share/proj/proj.db) - succeeded 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 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 502934.82 6958719.00 0.00 Using coordinate operation Inverse of GDA94 to WGS 84 (1) + Map Grid of Australia zone 56 But if I do the same with version 9.1.1: echo -27.495159464576993 153.02971160860926| docker run -i --rm --env PROJ_DEBUG=4 --env PROJ_NETWORK=ON osgeo/proj:9.1.1 \ cs2cs epsg:4326 +to epsg:28356 I get a slightly different output: 502934.23 6958717.61 0.00 And a large amount of output (see below) I just wanted to check whether this was expected behaviour, and if the difference in the coordinate transformation could be interpreted as an improvement? I checked other projected coordinates systems, including * GDA2020 Zone 56 (EPSG:7856) * Australian Albers GDA94 (EPSG:3755) * Australian Albers GDA2020 (EPSG:9473) 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? Thanks Robert (output from cs2cs with proj 9.1.1 follows) pj_open_lib(proj.ini): call fopen(/usr/share/proj/proj.ini) - succeeded pj_open_lib(proj.db): call fopen(/usr/share/proj/proj.db) - succeeded 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 pipeline: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0 pipeline: pj_ellipsoid - final: ellps=GRS80 pipeline: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0 pipeline: pj_ellipsoid - final: pipeline: Pipeline: Building arg list for step no. 0 pipeline: Pipeline: init - proj=axisswap, 2 pipeline: order=2,1 axisswap: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0 axisswap: pj_ellipsoid - final: ellps=GRS80 pipeline: Pipeline: Step 0 (proj=axisswap) at 0x562104a31020 pipeline: Pipeline at [0x562104bc7f60]: step at [0x562104a31020] (proj=axisswap) done pipeline: Pipeline: Building arg list for step no. 1 pipeline: Pipeline: init - proj=unitconvert, 3 pipeline: xy_in=deg pipeline: xy_out=rad unitconvert: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0 unitconvert: pj_ellipsoid - final: ellps=GRS80 unitconvert: xy_in unit: Degree unitconvert: xy_out unit: Radian pipeline: Pipeline: Step 1 (proj=unitconvert) at 0x56210470c510 pipeline: Pipeline at [0x562104bc7f60]: step at [0x56210470c510] (proj=unitconvert) done pipeline: Pipeline: Building arg list for step no. 2 pipeline: Pipeline: init - proj=utm, 4 pipeline: zone=56 pipeline: south pipeline: ellps=GRS80 utm: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0 utm: pj_ellipsoid - final: ellps=GRS80 pipeline: Pipeline: Step 2 (proj=utm) at 0x562104b90340 pipeline: Pipeline at [0x562104bc7f60]: step at [0x562104b90340] (proj=utm) done pipeline: Pipeline: 3 steps built. Determining i/o characteristics axisswap: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0 axisswap: pj_ellipsoid - final: ellps=GRS80 pipeline: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0 pipeline: pj_ellipsoid - final: ellps=GRS80 pipeline: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0 pipeline: pj_ellipsoid - final: pipeline: Pipeline: Building arg list for step no. 0 pipeline: Pipeline: init - proj=unitconvert, 3 pipeline: xy_in=deg pipeline: xy_out=rad unitconvert: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0 unitconvert: pj_ellipsoid - final: ellps=GRS80 unitconvert: xy_in unit: Degree unitconvert: xy_out unit: Radian pipeline: Pipeline: Step 0 (proj=unitconvert) at 0x562104bc82a0 pipeline: Pipeline at [0x562104b87920]: step at [0x562104bc82a0] (proj=unitconvert) done pipeline: Pipeline: Building arg list for step no. 1 pipeline: Pipeline: init - proj=utm, 4 pipeline: zone=56 pipeline: south pipeline: ellps=GRS80 utm: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0 utm: pj_ellipsoid - final: ellps=GRS80 pipeline: Pipeline: Step 1 (proj=utm) at 0x562104b94000 pipeline: Pipeline at [0x562104b87920]: step at [0x562104b94000] (proj=utm) done pipeline: Pipeline: 2 steps built. Determining i/o characteristics pipeline: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0 pipeline: pj_ellipsoid - final: ellps=GRS80 pipeline: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0 pipeline: pj_ellipsoid - final: pipeline: Pipeline: Building arg list for step no. 0 pipeline: Pipeline: init - proj=axisswap, 2 pipeline: order=2,1 axisswap: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0 axisswap: pj_ellipsoid - final: ellps=GRS80 pipeline: Pipeline: Step 0 (proj=axisswap) at 0x562104ac94a0 pipeline: Pipeline at [0x562104c029b0]: step at [0x562104ac94a0] (proj=axisswap) done pipeline: Pipeline: Building arg list for step no. 1 pipeline: Pipeline: init - proj=unitconvert, 3 pipeline: xy_in=deg pipeline: xy_out=rad unitconvert: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0 unitconvert: pj_ellipsoid - final: ellps=GRS80 unitconvert: xy_in unit: Degree unitconvert: xy_out unit: Radian pipeline: Pipeline: Step 1 (proj=unitconvert) at 0x562104b94d60 pipeline: Pipeline at [0x562104c029b0]: step at [0x562104b94d60] (proj=unitconvert) done pipeline: Pipeline: Building arg list for step no. 2 pipeline: Pipeline: init - proj=utm, 4 pipeline: zone=56 pipeline: south pipeline: ellps=GRS80 utm: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0 utm: pj_ellipsoid - final: ellps=GRS80 pipeline: Pipeline: Step 2 (proj=utm) at 0x562104b952a0 pipeline: Pipeline at [0x562104c029b0]: step at [0x562104b952a0] (proj=utm) done pipeline: Pipeline: 3 steps built. Determining i/o characteristics pipeline: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0 pipeline: pj_ellipsoid - final: ellps=WGS84 pipeline: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0 pipeline: pj_ellipsoid - final: pipeline: Pipeline: Building arg list for step no. 0 pipeline: Pipeline: init - proj=axisswap, 2 pipeline: order=2,1 axisswap: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0 axisswap: pj_ellipsoid - final: ellps=GRS80 pipeline: Pipeline: Step 0 (proj=axisswap) at 0x562104b976f0 pipeline: Pipeline at [0x562104b96660]: step at [0x562104b976f0] (proj=axisswap) done pipeline: Pipeline: Building arg list for step no. 1 pipeline: Pipeline: init - proj=unitconvert, 3 pipeline: xy_in=deg pipeline: xy_out=rad unitconvert: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0 unitconvert: pj_ellipsoid - final: ellps=GRS80 unitconvert: xy_in unit: Degree unitconvert: xy_out unit: Radian pipeline: Pipeline: Step 1 (proj=unitconvert) at 0x562104b97cc0 pipeline: Pipeline at [0x562104b96660]: step at [0x562104b97cc0] (proj=unitconvert) done pipeline: Pipeline: Building arg list for step no. 2 pipeline: Pipeline: init - proj=push, 2 pipeline: v_3 push: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0 push: pj_ellipsoid - final: ellps=GRS80 pipeline: Pipeline: Step 2 (proj=push) at 0x562104b98290 pipeline: Pipeline at [0x562104b96660]: step at [0x562104b98290] (proj=push) done pipeline: Pipeline: Building arg list for step no. 3 pipeline: Pipeline: init - proj=cart, 2 pipeline: ellps=WGS84 cart: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0 cart: pj_ellipsoid - final: ellps=WGS84 pipeline: Pipeline: Step 3 (proj=cart) at 0x562104b98810 pipeline: Pipeline at [0x562104b96660]: step at [0x562104b98810] (proj=cart) done pipeline: Pipeline: Building arg list for step no. 4 pipeline: Pipeline: init - inv, 10 pipeline: proj=helmert pipeline: x=0.06155 pipeline: y=-0.01087 pipeline: z=-0.04019 pipeline: rx=-0.0394924 pipeline: ry=-0.0327221 pipeline: rz=-0.0328979 pipeline: s=-0.009994 pipeline: convention=coordinate_frame helmert: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0 helmert: pj_ellipsoid - final: ellps=GRS80 helmert: Helmert parameters: helmert: x= 0.06155 y= -0.01087 z= -0.04019 helmert: rx= -0.03949 ry= -0.03272 rz= -0.03290 helmert: s= -0.00999 exact=0 convention=coordinate_frame helmert: dx= 0.00000 dy= 0.00000 dz= 0.00000 helmert: drx= 0.00000 dry= 0.00000 drz= 0.00000 helmert: ds= 0.00000 t_epoch= 0.00000 helmert: Transformation parameters for observation t_obs=0 (t_epoch=0): helmert: x: 0.06155 helmert: y: -0.01087 helmert: z: -0.04019 helmert: s: -9.994e-09 helmert: rx: -1.91465e-07 helmert: ry: -1.58641e-07 helmert: rz: -1.59494e-07 helmert: theta: 0 helmert: Rotation Matrix: helmert: | 1 -1.59494e-07 1.58641e-07 | helmert: | 1.59494e-07 1 -1.91465e-07 | helmert: | -1.58641e-07 1.91465e-07 1 | pipeline: Pipeline: Step 4 (inv) at 0x562104b98e90 pipeline: Pipeline at [0x562104b96660]: step at [0x562104b98e90] (inv) done pipeline: Pipeline: Building arg list for step no. 5 pipeline: Pipeline: init - inv, 3 pipeline: proj=cart pipeline: ellps=GRS80 cart: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0 cart: pj_ellipsoid - final: ellps=GRS80 pipeline: Pipeline: Step 5 (inv) at 0x562104b99560 pipeline: Pipeline at [0x562104b96660]: step at [0x562104b99560] (inv) done pipeline: Pipeline: Building arg list for step no. 6 pipeline: Pipeline: init - proj=pop, 2 pipeline: v_3 pop: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0 pop: pj_ellipsoid - final: ellps=GRS80 pipeline: Pipeline: Step 6 (proj=pop) at 0x562104b99ac0 pipeline: Pipeline at [0x562104b96660]: step at [0x562104b99ac0] (proj=pop) done pipeline: Pipeline: Building arg list for step no. 7 pipeline: Pipeline: init - proj=utm, 4 pipeline: zone=56 pipeline: south pipeline: ellps=GRS80 utm: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0 utm: pj_ellipsoid - final: ellps=GRS80 pipeline: Pipeline: Step 7 (proj=utm) at 0x562104b9a070 pipeline: Pipeline at [0x562104b96660]: step at [0x562104b9a070] (proj=utm) done pipeline: Pipeline: 8 steps built. Determining i/o characteristics pipeline: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0 pipeline: pj_ellipsoid - final: ellps=GRS80 pipeline: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0 pipeline: pj_ellipsoid - final: pipeline: Pipeline: Building arg list for step no. 0 pipeline: Pipeline: init - proj=axisswap, 2 pipeline: order=2,1 axisswap: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0 axisswap: pj_ellipsoid - final: ellps=GRS80 pipeline: Pipeline: Step 0 (proj=axisswap) at 0x562104b9b790 pipeline: Pipeline at [0x562104b9a890]: step at [0x562104b9b790] (proj=axisswap) done pipeline: Pipeline: Building arg list for step no. 1 pipeline: Pipeline: init - proj=unitconvert, 3 pipeline: xy_in=deg pipeline: xy_out=rad unitconvert: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0 unitconvert: pj_ellipsoid - final: ellps=GRS80 unitconvert: xy_in unit: Degree unitconvert: xy_out unit: Radian pipeline: Pipeline: Step 1 (proj=unitconvert) at 0x562104b9bd60 pipeline: Pipeline at [0x562104b9a890]: step at [0x562104b9bd60] (proj=unitconvert) done pipeline: Pipeline: Building arg list for step no. 2 pipeline: Pipeline: init - inv, 3 pipeline: proj=hgridshift pipeline: grids=au_icsm_GDA94_GDA2020_conformal_and_distortion.tif hgridshift: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0 hgridshift: pj_ellipsoid - final: ellps=GRS80 pipeline: Pipeline: Step 2 (inv) at 0x562104b9c380 pipeline: Pipeline at [0x562104b9a890]: step at [0x562104b9c380] (inv) done pipeline: Pipeline: Building arg list for step no. 3 pipeline: Pipeline: init - proj=utm, 4 pipeline: zone=56 pipeline: south pipeline: ellps=GRS80 utm: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0 utm: pj_ellipsoid - final: ellps=GRS80 pipeline: Pipeline: Step 3 (proj=utm) at 0x562104b9c950 pipeline: Pipeline at [0x562104b9a890]: step at [0x562104b9c950] (proj=utm) done pipeline: Pipeline: 4 steps built. Determining i/o characteristics Using coordinate operation Inverse of GDA94 to WGS 84 (3) + Map Grid of Australia zone 56 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 502934.23 6958717.61 0.00 R ------------------------------ 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. Any form of review, disclosure, modification, distribution and/or publication of this email message is prohibited, unless as a necessary part of Departmental business. 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. ------------------------------ _______________________________________________ PROJ mailing list [email protected]<mailto:[email protected]> https://lists.osgeo.org/mailman/listinfo/proj<https://urldefense.com/v3/__https:/lists.osgeo.org/mailman/listinfo/proj__;!!PUY2jUP3Fp7oEg!F7cBGkbpEaUh7JbDaygWZvd1WOAfMdTnDyS6msuUNaOlDKHHNx3moxenuk25133D5HL9v5A1YwkZdsY0kqWaY3-hT9O7ZrCbTQ$>
_______________________________________________ PROJ mailing list [email protected] https://lists.osgeo.org/mailman/listinfo/proj
