[PROJ] Unexpected no NADCON5 transformations
Even Rouault
even.rouault at spatialys.com
Wed May 17 09:02:48 PDT 2023
Hi Javier,
this is complicated... Assuming that PROJ is going to get consistent
results for all those variations of complex transformations is a pipe dream
The use of NADCON5 for the EPSG:4979 to EPSG:6318+5703 is actually a bit
dubious, but not totally unexpected given what there is in the DB and
the logic of PROJ. When looking at all transformations returned by
projinfo, there is "Inverse of NAD83(2011) to WGS 84 (1) + NAD83(2011)
to NAVD88 height (3)" which uses Geoid 2018 and a no-op transformation
between NAD23(2011) and WGS 84, whose total accuracy (remainder the way
we synthetize total accuracy from individual transformations is quite
naive, by adding individual accuracies) is 2.015 m. What is selected
given the point you transform is Inverse of NAD83(HARN) to WGS 84 (3) +
NAD83(HARN) to NAVD88 height (6) + NAD83(HARN) to NAD83(2011) (NADCON5,
CONUS) using Geoid 1999, a Helmert transformation to go from WGS 84 to
NAD83 (HARN) and the NAD83(HARN) to NAD83(2011) concatenated operation
chaining 3 NADCON5 grids, whose total accuracy is 1.14 m, hence its
selection
For EPSG:4326+5773 to EPSG:6319, what is selected is "Inverse of WGS 84
to EGM96 height (1) + Inverse of NAD83(2011) to WGS 84 (1)" which uses
the EGM96 grid + the no-op tranfomration between NAD23(2011) and WGS 84.
Why no NADCON5 grids here ? Because when transforming between a compound
CRS and a geographic 3D CRS, PROJ looks for all transformations
involving the vertical CRS (here EGM96 height), and tries to find a
relationsihp between the geographic CRS/datum of the vertical
transformation and the geographic CRS/datum of the source and target
transformations. Here the EGM96 transformation uses WGS84 as the
interpolation CRS, which matches the source CRS, and there is a known
transformation between that interpolation CRS and the target CRS.
If one applies that logic to the first situation EPSG:4979 to
EPSG:6318+5703, things are much more complicated because EPSG:5703
NAVD88 height has transformations using different geoids and NAD83(xxx)
variants as interpolation CRS, hence the wild list of transformations
PROJ has to explore and synthetize.
EPSG:4979 to EPSG:6319 uses the direct "Inverse of NAD83(2011) to WGS 84
(1)" transformation. When there is a direct transformation, PROJ doesn't
try, at least by default, to find more convoluted transformation paths.
EPSG:4326+5773 to EPSG:6318+5703 uses "Inverse of WGS 84 to EGM96 height
(1) + Inverse of NAD83(2011) to WGS 84 (1) + NAD83(2011) to NAVD88
height (3)", that is EGM96 grid + no-op WGS84<-->NAD83(2011) +
Geoid2018. Very reasonable. Compound to Compound is one of the most
complicated case, with different heuristics applied. Here I suspect what
triggers is the "use the geographic 3D CRS of the source CRS as a
candidate intermediate for the first step" and "use the geographic 3D
CRS of the target CRS as a candidate intermediate for the last step",
and so this goes through the EPSG:4326+5773 -> EPSG:4979 and
EPSG:6319->EPSG:6318+5703, and connect EPSG:4979 and EPSG:6319
What is certainly true is that in some of those inferences code paths,
PROJ takes sometimes shortcuts as soon as it has managed to obtained
reasonable transformation steps (ie no ballpark) from the first
heuristics it tries, otherwise in the most complicated cases, the
combinatorics explodes.
Even
Le 17/05/2023 à 15:53, Javier Jimenez Shaw a écrit :
> Hi devs,
>
> I was going to get an order of magnitude of NADCON5 transformations
> added in PROJ 9.2.0 (+ PROJ-data), and I found that they are not
> always applied.
> As they are datum transformations, I would assume that they are
> independent of the vertical system, but maybe I am wrong.
>
> Going from WGS84(3D) to NAD83(2011) + NAVD88 height produces different
> horizontal values than the input (what I expected)
>
> $ echo 40 -100 0 | PROJ_NETWORK=ON ./cs2cs EPSG:4979 EPSG:6318+5703 -d 8
> 39.99999330 -99.99999115 25.47826194
>
> However any other combination using 2D+vert or 3D is not changing the
> horizontal coordinates.
>
> $ echo 40 -100 0 | PROJ_NETWORK=ON ./cs2cs EPSG:4326+5773 EPSG:6319 -d 8
> 40.00000000 -100.00000000 -25.05249596
> $ echo 40 -100 0 | PROJ_NETWORK=ON ./cs2cs EPSG:4979 EPSG:6319 -d 8
> 40.00000000 -100.00000000 0.00000000
> $ echo 40 -100 0 | PROJ_NETWORK=ON ./cs2cs EPSG:4326+5773
> EPSG:6318+5703 -d 8
> 40.00000000 -100.00000000 -0.49709511
>
> Enabling the debug messages, the first case is clearly looking for the
> nadcon5 grids. The other 3 are not.
>
> Is that expected?
>
> Thanks.
>
> .___ ._ ..._ .. . ._. .___ .. __ . _. . __.. ... .... ._ .__
>
> _______________________________________________
> PROJ mailing list
> PROJ at lists.osgeo.org
> https://lists.osgeo.org/mailman/listinfo/proj
--
http://www.spatialys.com
My software is free, but my time generally not.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/proj/attachments/20230517/0aa8acc5/attachment.htm>
More information about the PROJ
mailing list