[PROJ] Combining custom transformations with EPSG
Kristian Evers
kristianevers at gmail.com
Tue Nov 3 12:27:03 PST 2020
Even,
Thanks for you feedback and confirming my suspicion about PROJ’s limitation.
> Happy to see too that we are able to encode custom advanced transformations in
> the formalism of the database.
So am I! You’ve done a great job making all this work.
>
> Side notes:
> - the ETRF92_2000_TO_ETRF92_1994 transformation would in an ideal world be
> encoded as a point motion operation (similarly to EPSG:7957 "Canada velocity
> grid v6" that we don't support) if we had ways of doing change of coordinate
> epoch in a "cleaner" way than what we do currently, that is that
> createOperations() could take a input and output coordinate epoch. But that
> would bring new interesting problems regarding on at which step you do the
> coordinate epoch change . I remember there's a EPSG guidance note that
> examines different scenarios regarding that, but not sure that it adresses all
> cases we could hit.
> Hum actually looking closer at the way you define this transformation, that
> couldn't be a point motion operation as your target CRS code != source CRS,
> saying that ETRF92 at 1994.704 == ETRS89 in Denmark.
It’s a bit tricky, but yes, the endpoint is a static frame which effectively is a snapshot
of ETRS89/ETRF92 at epoch 1994.704. It is common practice to put a local name
on such realizations of ETRS89, e.g. the Swedish SWEREF99, but unfortunately
that was never done for the Danish realization of ETRS89. Hence using the ETRS89
ensemble EPSG:4936. I may add NKG:DK CRS/datum to make things clearer but I
haven’t decided on that yet.
>
> - ETRF2000_TO_NKG_ETRF00 using a fixed central epoch would need to be another
> kind of operation. It would be a bit like the time-specific Helmert
> transformation that is used in a few EPSG transformations (but we currently
> don't map to a PROJ transformation).
I am not sure I follow, are you thinking about a WKT2-mapping of +proj=deformation?
Or perhaps an EPSG-mapping? At some point I will get round to submitting these
transformations to the EPSG registry.
> You guessed right. Figuring out that ITRF2008 to ETRS89 needs to go through
> ITRF2014 and then NKG_ETRF00 as intermediate steps is out of reach of PROJ
> inference capabilities. It indeed "just" manages one hop. For performance
> results mostly and because the SQL requests would be quite horrific (have a
> look at AuthorityFactory::createFromCRSCodesWithIntermediates() and
> AuthorityFactory::createBetweenGeodeticCRSWithDatumBasedIntermediates() for
> the "simple" version with just one intermediate). And with just one hop, in
> some cases that can lead to hundreds of results being returned.
>
I figured. I think I remember we had a discussion about this way back when. It’s
good to get confirmed that is the case.
> So my suggesting would be that you create concatenated operations for
> ITRFxxxx -> NKG_ETRF00
> chaining ITRFxxxx -> ITRF2014 and ITRF2014 -> NKG_ETRF00
That would probably work, yes. Another solution is to not use NKG_ETRF00
as a hub at all and simply make one big concatenated operation from ITRF2000
to each national realization of ETRS89. In this particular setup I actually don’t
need the NKG_ETRF00 as a hub. That was usefull in the init-file but shouldn’t
be necessary here.
>
> One idea I had in the past to make PROJ inference a bit more powerful, without
> going to a full 2 or 3-hops database lookups would be do define "families" of
> datums, that is sets of datums that are known to be related by
> transformations, which would guide PROJ in infering more transformation paths.
> For example the various NAD83(xxxx) datum (especially if NADCON5 is
> integrated, which has transformations only between 'consecutive' NAD83(xxxx)
> variants, but not between arbitrary pairs of them), or ITRFxxxx, could be such
> families. Writing that, it looks a bit like the DatumEnsemble concept, except
> that we wouldn't constraint those datums to be considered as "equivalent" for
> lower accuracy purposes. Anyway this is just an idea without any
> implementation reality right now.
It’s an interesting idea, I can see how that might be useful.
/Kristian
More information about the PROJ
mailing list