[PROJ] Differences in coordinate transforms from proj 9.1 to 9.2
Robert Denham
Robert.Denham at des.qld.gov.au
Sun Jan 7 16:20:29 PST 2024
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.
------------------------------
More information about the PROJ
mailing list