[PROJ] Tie breakers used when ordering candidate operations

Nyall Dawson nyall.dawson at gmail.com
Tue Feb 9 15:09:49 PST 2021


On Wed, 10 Feb 2021 at 08:54, Nyall Dawson <nyall.dawson at gmail.com> wrote:
>
> On Wed, 10 Feb 2021 at 08:47, Kristian Evers <kristianevers at gmail.com> wrote:
> >
> > Nyall,
> >
> > Have you had a look at https://proj.org/operations/operations_computation.html ?
> > It’s a bit of a long read but it explains the logic behind what transformations are
> > chosen under various circumstances.
>
> Perfect, thanks!
>

A follow up question: on master using
projinfo -t EPSG:7844 -s EPSG:4326 --spatial-test intersects

I get three candidates:

1 EPSG:9690, WGS 84 to GDA2020 (3), 3.0 m, Australia including Lord
Howe Island, Macquarie Islands, Ashmore and Cartier Islands, Christmas
Island, Cocos (Keeling) Islands, Norfolk Island. All onshore and
offshore.
2 INVERSE(EPSG):8450, Inverse of GDA2020 to WGS 84 (2), 3.0 m,
Australia including Lord Howe Island, Macquarie Islands, Ashmore and
Cartier Islands, Christmas Island, Cocos (Keeling) Islands, Norfolk
Island. All onshore and offshore.
3 DERIVED_FROM(EPSG):9691, WGS 84 to GDA2020 (4), 3.0 m, Australia -
Australian Capital Territory; New South Wales; Northern Territory;
Queensland; South Australia; Tasmania; Western Australia; Victoria.

I'm trying to determine what dictates the order of 1 and 2.

Running through the list of sorting criteria:

1. consider as more relevant an operation that can be expressed as a
PROJ operation string (the database might list operations whose method
is not (yet) implemented by PROJ)
N/A - both can be expressed as proj strings

2. if both operations evaluate identically with respect to the above
criterion, consider as more relevant an operation that does not
include a synthetic ballpark vertical transformation (occurs when
there is a geoid model).
N/A - neither has a vertical transform

3. if both operations evaluate identically with respect to the above
criterion, consider as more relevant an operation that does not
include a synthetic ballpark horizontal transformation.
I believe N/A (but not 100% sure)

4. consider as more relevant an operation that refers to shift grids
that are locally available.
5. consider as more relevant an operation that refers to grids that
are available in one of the proj-datumgrid packages, but not
necessarily locally available
N/A neither op uses a grid

6. consider as more relevant an operation that has a known accuracy.
N/A - both have the same reported accuracy of 3m

7. if two operations have unknown accuracy, consider as more relevant
an operation that uses grid(s) if the other one does not (grid based
operations are assumed to be more precise than operations relying on a
few parameters)
N/A neither op uses a grid

8. consider as more relevant an operation whose area of use is larger
(note: the computation of the are of use is approximate, based on a
bounding box)
N/A both have identical area of use

9. consider as more relevant an operation that has a better accuracy.
N/A both have reported 3m accuracy

10. in case of same accuracy, consider as more relevant an operation
that does not use grids (operations that use only parameters will be
faster)
N/A

11. consider as more relevant an operation that involves less
transformation steps

Here I'd have thought 8450 (with a single noop step) would be picked
over 9690, which has a pipeline of:

+proj=pipeline
  +step +proj=axisswap +order=2,1
  +step +proj=unitconvert +xy_in=deg +xy_out=rad
  +step +proj=push +v_3
  +step +proj=cart +ellps=WGS84
  +step +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=unitconvert +xy_in=rad +xy_out=deg
  +step +proj=axisswap +order=2,1

What am I missing here?

Nyall


More information about the PROJ mailing list