<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<p>Nigel,<br>
</p>
<div class="moz-cite-prefix">Le 11/10/2024 à 12:27, Nigel Stewart
via PROJ a écrit :<br>
</div>
<blockquote type="cite"
cite="mid:CAKhDM9N=hB21ySkMqawG5uZu062gQ97LixtzL7TnFAAQyMAUug@mail.gmail.com">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<div dir="ltr">> First of all I think you are being way too
unrealistic about what you can use ChatGPT for.
<div>>If you'd tried the command it's suggested to you, you
would know that it doesn't work.</div>
<div>> It has given you an ill-formed CRS, as well as
suggesting you use deprecated syntax.<br>
<br>
</div>
<div>It didn't smell good, I must admit.<br>
<br>
> It would be helpful if you can be more explicit about
what you are trying to do. </div>
<div>> What EPSG-codes are you trying to get a transformation
between?<br>
<br>
In a nutshell:<br>
<br>
# to GDA94 / MGA zone 56<br>
<br>
</div>
<div>$ echo "0 0 0" | cs2cs +proj=tmerc +lat_0=-34.0
+lon_0=150.0 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs
+type=crs +to 'EPSG:28356'<br>
222908.70 6233785.28 0.00<br>
<br>
# to GDA2020 / MGA zone 56<br>
<br>
$ echo "0 0 0" | cs2cs +proj=tmerc +lat_0=-34.0 +lon_0=150.0
+k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs +type=crs
+to 'EPSG:7856'<br>
222908.70 6233785.28 0.00<br>
<br>
# to GDA2020 / MGA zone 56<br>
<br>
$ echo "222908.70 6233785.28 0.00" | cs2cs 'EPSG:28356'
+to 'EPSG:7856'<br>
222909.17 6233786.71 0.00<br>
<br>
Our expectation is that GDA2020 is within a meter or two of
GDA94 due to the tectonic drift of the Australian plate
towards the north east.<br>
Our concern is that from these custom transverse mercator
projections, this difference isn't reflected.<br>
We can see the Helmert transformation being applied in the
third case, but not in the first two.<br>
</div>
</div>
</blockquote>
<p>This is fully expected.</p>
<p>Basically GDA94 ~= WGS84 at epoch 1994.0 and GDA2020 ~= WGS84 at
epoch 2020.0</p>
<p>So when you ask to transform between GDA94 and WGS84 a null datum
transformation is a perfectly valid answer since they matched in
1994.0. As well as a null one between GDA2020 and WGS84 since they
matched in 2020.0</p>
<p>There are also alternate transformations available in the EPSG
dataset where they consider that when transforming between GDA94
and WGS84, then the user could mean they assume this WGS84 to be a
recent one, so you actually want to use the transformation between
GDA94 and GDA2020<br>
</p>
<p><br>
</p>
<p>$ projinfo -s "+proj=tmerc +lat_0=-34.0 +lon_0=150.0 +k=1 +x_0=0
+y_0=0 +datum=WGS84 +type=crs" -t EPSG:28356 --spatial-test
intersects -o PROJ<br>
Candidate operations found: 3<br>
-------------------------------------<br>
Operation No. 1:<br>
<br>
unknown id, Inverse of unknown + axis order change (2D) + Inverse
of GDA94 to WGS 84 (1) + Map Grid of Australia zone 56, 3 m,
Australia including Lord Howe Island, Macquarie Island, Ashmore
and Cartier Islands, Christmas Island, Cocos (Keeling) Islands,
Norfolk Island. All onshore and offshore.<br>
<br>
PROJ string:<br>
+proj=pipeline<br>
+step +inv +proj=tmerc +lat_0=-34 +lon_0=150 +k=1 +x_0=0 +y_0=0
+ellps=WGS84<br>
+step +proj=utm +zone=56 +south +ellps=GRS80<br>
<br>
-------------------------------------<br>
Operation No. 2:<br>
<br>
unknown id, Inverse of unknown + axis order change (2D) + Inverse
of GDA94 to WGS 84 (2) + Map Grid of Australia zone 56, 3 m,
Australia including Lord Howe Island, Macquarie Island, Ashmore
and Cartier Islands, Christmas Island, Cocos (Keeling) Islands,
Norfolk Island. All onshore and offshore.<br>
<br>
PROJ string:<br>
+proj=pipeline<br>
+step +inv +proj=tmerc +lat_0=-34 +lon_0=150 +k=1 +x_0=0 +y_0=0
+ellps=WGS84<br>
+step +proj=push +v_3<br>
+step +proj=cart +ellps=WGS84<br>
+step +inv +proj=helmert +x=0.06155 +y=-0.01087 +z=-0.04019
+rx=-0.0394924<br>
+ry=-0.0327221 +rz=-0.0328979 +s=-0.009994
+convention=coordinate_frame<br>
+step +inv +proj=cart +ellps=GRS80<br>
+step +proj=pop +v_3<br>
+step +proj=utm +zone=56 +south +ellps=GRS80<br>
<br>
-------------------------------------<br>
Operation No. 3:<br>
<br>
unknown id, Inverse of unknown + axis order change (2D) + Inverse
of GDA94 to WGS 84 (3) + Map Grid of Australia zone 56, 3 m,
Australia - Australian Capital Territory; New South Wales;
Northern Territory; Queensland; South Australia; Tasmania; Western
Australia; Victoria., at least one grid missing<br>
<br>
PROJ string:<br>
+proj=pipeline<br>
+step +inv +proj=tmerc +lat_0=-34 +lon_0=150 +k=1 +x_0=0 +y_0=0
+ellps=WGS84<br>
+step +inv +proj=hgridshift<br>
+grids=au_icsm_GDA94_GDA2020_conformal_and_distortion.tif<br>
+step +proj=utm +zone=56 +south +ellps=GRS80<br>
<br>
Grid au_icsm_GDA94_GDA2020_conformal_and_distortion.tif needed but
not found on the system. Can be obtained at
<a class="moz-txt-link-freetext" href="https://cdn.proj.org/au_icsm_GDA94_GDA2020_conformal_and_distortion.tif">https://cdn.proj.org/au_icsm_GDA94_GDA2020_conformal_and_distortion.tif</a><br>
</p>
<p><br>
</p>
<p>You'll notice all those 3 transformations are advertized to have
a 3 metre accuracy. The first one (note that the heuristics to
determine the default one has changed among PROJ versions), which
is the one used by default by cs2cs, uses the WGS84 = GDA94
hypothesis. The second and third ones us WGS84 = GDA2020</p>
<p>If you want to use the second one, you need to pass its pipeline
to cct:<br>
</p>
<p>$ echo 0 0 0 | cct +proj=pipeline +step +inv +proj=tmerc
+lat_0=-34 +lon_0=150 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +step
+proj=push +v_3 +step +proj=cart +ellps=WGS84 +step +inv
+proj=helmert +x=0.06155 +y=-0.01087 +z=-0.04019 +rx=-0.0394924
+ry=-0.0327221 +rz=-0.0328979 +s=-0.009994
+convention=coordinate_frame +step +inv +proj=cart +ellps=GRS80
+step +proj=pop +v_3 +step +proj=utm +zone=56 +south +ellps=GRS80<br>
222908.2299 6233783.8497 0.0000 inf<br>
<br>
</p>
<p>Rule of thumb: as soon as one of your CRS is WGS84 related, you
will generally go into troubles if you are interested in geodetic
grade transformations.</p>
<p>Even<br>
</p>
<p><span style="white-space: pre-wrap">
</span></p>
<pre class="moz-signature" cols="72">--
<a class="moz-txt-link-freetext" href="http://www.spatialys.com">http://www.spatialys.com</a>
My software is free, but my time generally not.
Mostly a fool, sometimes acting like a professional (or vice versa)</pre>
</body>
</html>