createOperations(): tune geod_crs_of_datum_ensemble <--> geod_crs_of_another_datum#4773
Conversation
08e5a7e to
f9bcbc9
Compare
|
@kbevers Note that commit 'createOperationsEnsembleCRSToOtherGeodCRS(): better deal with geographic 3D / geocentric CRS' has a consequence on 1 test case of interest for you Now Previously it only returned the NKG:ITRF2014_TO_DK operation. |
|
@nich0lasbr0wn (hoping you're still on topics related to Australian coordinate transformation), also CC'ing @nyalldawson This pull requests changes the way PROJ infers coordinate operations when a datum ensemble is involved in the source or target CRS. This is based on a ongoing discussion with EPSG, following recent changes in ETRS89. It enhances the traditional lookups that PROJ used to do by also considering transformations between a member of the datum ensemble (a realization of ETRS89 or WGS 84 typically) and the other CRS. A typical exemple in Europe would be to use "ETRS89-ROU to Pulkovo 42(58)" when the user asked for generic ETRS89 to "Pulkovo 42(58)" (the later being what users do since ETRS89-ROU is a recent addition. This PR is generic for all datum ensembles, not just ETRS89, and so WGS 84 'generic' (EPSG:4326/4978/4978) is also concerned. Which brings us to Australia... For now I've blocklisted the GDA94 <--> WGS 84 and GDA2020 <--> WGS 84 cases as I'm unusure of what is desired. But if I remove the blocking logic,
The novelty (if the unblocking would be removed) is the addition of the "EPSG:9687, GDA94 to WGS 84 (G1762) (2)" operation that was previously not used because targetting specifically WGS 84 (G1762) is now considered. And as its accuracy is 0.25 compared to the other ones, it would be used (when the GDA94_GDA2020_conformal_and_distortion grid is available). Whereas currently the "GDA94 to WGS 84 (1)" no-op is selected. Similarly, for GDA2020 to WGS 84 (but only for 3D operations), returns The novelty (if the unblocking would be removed) would be the first operation "GDA2020 to WGS 84 (G1762) (1)" that would be used, whereas currently the null transformation "GDA2020 to WGS 84 (2)" is used. Would such a change be desired ? I'd note that PROJ logic can use time-dependent operations, even when the input coordinate tuple has no epoch (in which case the time-dependent part is not applied). So for "GDA2020 to WGS 84 (G1762) (1) " that would still be essentially a no-op (just the tiny difference of semi-minor axis between the GRS80 and WGS 84 ellipsoids causing sub-millimetric shift) |
This is good, thanks for testing it. The two transformations returned are the same so probably I should mark the NKG ones deprecated. |
not stritcly the same PROJ string, but apparently equivalent ITRF2014<-->ETRF2014 Helmert using different centrals epochs. On a Copenhagen test point, both indeed match perfectly: |
|
@kbevers, have you checked whether the commit works for Danish or Greenlandic vertical ensembles? |
@RogerLott I've poked around a bit and haven't found any issues compared to a previous PROJ version |
|
@kbevers @jjimenezshaw I believe this can be merged independently whether EPSG reverts a number of the changes as discussed in today's meeting or keep them, right ? |
|
I would say so, yes |
Yes, that's my understanding |
This reverts commit a818559.
This reverts commit 4982d17.
…ETRS89" This reverts commit 94be2a3.
…another_datum typically ETRS89 to some national CRS (e.g. Pulkovo 42(58), etc.) If the existing lookup paths have not tried to go through an intermediate datum already (which can be the case if direct transformations exists), then force trying with the members of the datum ensemble. e.g. ETRS89 to Pulkovo 42(58) has direct transformations (EPSG:15993 Romania 10m and EPSG:1644 Poland 1m), but there's also a ETRS89-ROU to Pulkovo 42(58), EPSG:15994, for Romania 3m.
…_op_without_plus'^
…hic 3D / geocentric CRS
This reverts largely #4736 ("make ETRS89 great again"), except the test cases it fixed and added. The fragile logic of #4736 is replaced by an hopefully less fragile one of commit 400d5c5
createOperations(): tune geod_crs_of_datum_ensemble <--> geod_crs_of_another_datum
typically ETRS89 to some national CRS (e.g. Pulkovo 42(58), etc.)
If the existing lookup paths have not tried to go through an
intermediate datum already (which can be the case if direct
transformations exists), then force trying with the members of the datum
ensemble.
e.g. ETRS89 to Pulkovo 42(58) has direct transformations (EPSG:15993
Romania 10m and EPSG:1644 Poland 1m), but there's also a ETRS89-ROU to
Pulkovo 42(58), EPSG:15994, for Romania 3m.
This has been tuned quite a bit to obtain the same runtime when running ctest as in master (earlier attempts resulted in terrible runtime in some cases)
This implements this suggestion of "ETRS89 datum change issues v3 2026-05-08":
I confirm the difficulty of the data mining!!!