Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

createOperation(): tune so that ITRF2000->ETRS89 does not return only NKG grid based operations but also time-dependent Helmert #4244

Merged
merged 2 commits into from
Sep 5, 2024

Conversation

rouault
Copy link
Member

@rouault rouault commented Sep 4, 2024

No description provided.

…(): avoid using intermediate CRS of ancient era when dealing with modern source/target CRS
@rouault rouault added this to the 9.5.0 milestone Sep 4, 2024
@rouault rouault changed the title createOperation(): tune so that ETRF2000->ETRS89 does not return only NKG grid based operations but also time-dependent Helmert createOperation(): tune so that ITRF2000->ETRS89 does not return only NKG grid based operations but also time-dependent Helmert Sep 4, 2024
… NKG grid based operations but also time-dependent Helmert
@kbevers
Copy link
Member

kbevers commented Sep 5, 2024

I'd like to see examples of behaviour before and after this change. I think the changes looks sound but a bit of help to grasp the consequences would be appreciated.

@rouault
Copy link
Member Author

rouault commented Sep 5, 2024

Forgot to mention this adresses https://lists.osgeo.org/pipermail/proj/2024-September/011494.html

Before: only NKG transformations:

$ projinfo -s EPSG:9989 -t EPSG:4937 --spatial-test intersects --summary
Candidate operations found: 9
unknown id, Conversion from ITRF2020 (geog3D) to ITRF2020 (geocentric) + Inverse of ITRF2014 to ITRF2020 (1) + ITRF2014 to ETRF2014 (1) + Inverse of NKG_ETRF14 to ETRF2014 + NKG_ETRF14 to ETRF93@2000.0 (Gridshift) + ETRF93@2000.0 to ETRF93@1995.0 using nkgrf17vel + Conversion from ETRS89 (geocentric) to ETRS89 (geog3D), 0.021 m, Norway - onshore.
unknown id, Conversion from ITRF2020 (geog3D) to ITRF2020 (geocentric) + Inverse of ITRF2000 to ITRF2020 (1) + ITRF2000 to ETRF2000 (2) + Inverse of NKG_ETRF00 to ETRF2000 + NKG_ETRF00 to ETRF93@2000.0 + ETRF93@2000.0 to ETRF93@1995.0 using nkgrf03vel_realigned + Conversion from ETRS89 (geocentric) to ETRS89 (geog3D), 0.03 m, Norway - onshore.
unknown id, Conversion from ITRF2020 (geog3D) to ITRF2020 (geocentric) + Inverse of ITRF2014 to ITRF2020 (1) + ITRF2014 to ETRF2014 (1) + Inverse of NKG_ETRF14 to ETRF2014 + NKG_ETRF14 to ETRF96@2000.0 (Finland) + ETRF96@2000.0 to ETRF96@1997.0 using nkgrf17vel + Conversion from ETRS89 (geocentric) to ETRS89 (geog3D), 0.021 m, Finland - onshore and offshore.
unknown id, Conversion from ITRF2020 (geog3D) to ITRF2020 (geocentric) + Inverse of ITRF2000 to ITRF2020 (1) + ITRF2000 to ETRF2000 (2) + Inverse of NKG_ETRF00 to ETRF2000 + NKG_ETRF00 to ETRF96@2000.0 (Finland) + ETRF96@2000.0 to ETRF96@1997.0 using nkgrf03vel_realigned + Conversion from ETRS89 (geocentric) to ETRS89 (geog3D), 0.03 m, Finland - onshore and offshore.
unknown id, Conversion from ITRF2020 (geog3D) to ITRF2020 (geocentric) + Inverse of ITRF2014 to ITRF2020 (1) + ITRF2014 to ETRF2014 (1) + Inverse of NKG_ETRF14 to ETRF2014 + NKG_ETRF14 to ETRF92@2000.0 + ETRF92@2000.0 to ETRF92@1994.704 using nkgrf17vel + Conversion from ETRS89 (geocentric) to ETRS89 (geog3D), 0.021 m, Denmark - onshore and offshore.
unknown id, Conversion from ITRF2020 (geog3D) to ITRF2020 (geocentric) + Inverse of ITRF2000 to ITRF2020 (1) + ITRF2000 to ETRF2000 (2) + Inverse of NKG_ETRF00 to ETRF2000 + NKG_ETRF00 to ETRF92@2000.0 + ETRF92@2000.0 to ETRF92@1994.704 using nkgrf03vel_realigned + Conversion from ETRS89 (geocentric) to ETRS89 (geog3D), 0.03 m, Denmark - onshore and offshore.
unknown id, Conversion from ITRF2020 (geog3D) to ITRF2020 (geocentric) + Inverse of ITRF2014 to ITRF2020 (1) + ITRF2014 to ETRF2014 (1) + Inverse of NKG_ETRF14 to ETRF2014 + NKG_ETRF14 to ETRF96@2000.0 (Estonia) + ETRF96@2000.0 to ETRF96@1997.56 using nkgrf17vel + Conversion from ETRS89 (geocentric) to ETRS89 (geog3D), 0.021 m, Estonia - onshore and offshore.
unknown id, Conversion from ITRF2020 (geog3D) to ITRF2020 (geocentric) + Inverse of ITRF2000 to ITRF2020 (1) + ITRF2000 to ETRF2000 (2) + Inverse of NKG_ETRF00 to ETRF2000 + NKG_ETRF00 to ETRF96@2000.0 (Estonia) + ETRF96@2000.0 to ETRF96@1997.56 using nkgrf03vel_realigned + Conversion from ETRS89 (geocentric) to ETRS89 (geog3D), 0.03 m, Estonia - onshore and offshore.
unknown id, Ballpark geographic offset from ITRF2020 to ETRS89, unknown accuracy, World, has ballpark transformation

After, also include ITRF2020 <--> ETRFxxxx time dependent Helmert transformations:

$ bin/projinfo -s EPSG:9989 -t EPSG:4937 --spatial-test intersects --summary
Candidate operations found: 12
unknown id, Conversion from ITRF2020 (geog3D) to ITRF2020 (geocentric) + ITRF2020 to ETRF2020 (2) + Conversion from ETRF2020 (geocentric) to ETRF2020 (geog2D) + Inverse of ETRS89 to ETRF2020 + Null geographic offset from ETRS89 (geog2D) to ETRS89 (geog3D), 0.1 m, Europe - onshore and offshore: Albania; Andorra; Austria; Belgium; Bosnia and Herzegovina; Bulgaria; Croatia; Czechia; Denmark; Estonia; Faroe Islands; Finland; France; Germany; Gibraltar; Greece; Hungary; Ireland; Italy; Kosovo; Latvia; Liechtenstein; Lithuania; Luxembourg; Malta; Moldova; Monaco; Montenegro; Netherlands; North Macedonia; Norway including Svalbard and Jan Mayen; Poland; Portugal - mainland; Romania; San Marino; Serbia; Slovakia; Slovenia; Spain - mainland and Balearic islands; Sweden; Switzerland; United Kingdom (UK) including Channel Islands and Isle of Man; Vatican City State.
unknown id, Conversion from ITRF2020 (geog3D) to ITRF2020 (geocentric) + ITRF2020 to ETRF2020 (1) + Conversion from ETRF2020 (geocentric) to ETRF2020 (geog2D) + Inverse of ETRS89 to ETRF2020 + Null geographic offset from ETRS89 (geog2D) to ETRS89 (geog3D), 0.1 m, Europe - onshore and offshore: Albania; Andorra; Austria; Belgium; Bosnia and Herzegovina; Bulgaria; Croatia; Czechia; Denmark; Estonia; Faroe Islands; Finland; France; Germany; Gibraltar; Greece; Hungary; Ireland; Italy; Kosovo; Latvia; Liechtenstein; Lithuania; Luxembourg; Malta; Moldova; Monaco; Montenegro; Netherlands; North Macedonia; Norway including Svalbard and Jan Mayen; Poland; Portugal - mainland; Romania; San Marino; Serbia; Slovakia; Slovenia; Spain - mainland and Balearic islands; Sweden; Switzerland; United Kingdom (UK) including Channel Islands and Isle of Man; Vatican City State.
unknown id, Conversion from ITRF2020 (geog3D) to ITRF2020 (geocentric) + ITRF2020 to ETRF2014 (1) + Conversion from ETRF2014 (geocentric) to ETRF2014 (geog2D) + Inverse of ETRS89 to ETRF2014 + Null geographic offset from ETRS89 (geog2D) to ETRS89 (geog3D), 0.1 m, Europe - onshore and offshore: Albania; Andorra; Austria; Belgium; Bosnia and Herzegovina; Bulgaria; Croatia; Czechia; Denmark; Estonia; Faroe Islands; Finland; France; Germany; Gibraltar; Greece; Hungary; Ireland; Italy; Kosovo; Latvia; Liechtenstein; Lithuania; Luxembourg; Malta; Moldova; Monaco; Montenegro; Netherlands; North Macedonia; Norway including Svalbard and Jan Mayen; Poland; Portugal - mainland; Romania; San Marino; Serbia; Slovakia; Slovenia; Spain - mainland and Balearic islands; Sweden; Switzerland; United Kingdom (UK) including Channel Islands and Isle of Man; Vatican City State.
unknown id, Conversion from ITRF2020 (geog3D) to ITRF2020 (geocentric) + ITRF2020 to ETRF2000 (1) + Conversion from ETRF2000 (geocentric) to ETRF2000 (geog2D) + Inverse of ETRS89 to ETRF2000 + Null geographic offset from ETRS89 (geog2D) to ETRS89 (geog3D), 0.1 m, Europe - onshore and offshore: Albania; Andorra; Austria; Belgium; Bosnia and Herzegovina; Bulgaria; Croatia; Czechia; Denmark; Estonia; Faroe Islands; Finland; France; Germany; Gibraltar; Greece; Hungary; Ireland; Italy; Kosovo; Latvia; Liechtenstein; Lithuania; Luxembourg; Malta; Moldova; Monaco; Montenegro; Netherlands; North Macedonia; Norway including Svalbard and Jan Mayen; Poland; Portugal - mainland; Romania; San Marino; Serbia; Slovakia; Slovenia; Spain - mainland and Balearic islands; Sweden; Switzerland; United Kingdom (UK) including Channel Islands and Isle of Man; Vatican City State.
unknown id, Conversion from ITRF2020 (geog3D) to ITRF2020 (geocentric) + Inverse of ITRF2014 to ITRF2020 (1) + ITRF2014 to ETRF2014 (1) + Inverse of NKG_ETRF14 to ETRF2014 + NKG_ETRF14 to ETRF93@2000.0 (Gridshift) + ETRF93@2000.0 to ETRF93@1995.0 using nkgrf17vel + Conversion from ETRS89 (geocentric) to ETRS89 (geog3D), 0.021 m, Norway - onshore., at least one grid missing
unknown id, Conversion from ITRF2020 (geog3D) to ITRF2020 (geocentric) + Inverse of ITRF2000 to ITRF2020 (1) + ITRF2000 to ETRF2000 (2) + Inverse of NKG_ETRF00 to ETRF2000 + NKG_ETRF00 to ETRF93@2000.0 + ETRF93@2000.0 to ETRF93@1995.0 using nkgrf03vel_realigned + Conversion from ETRS89 (geocentric) to ETRS89 (geog3D), 0.03 m, Norway - onshore., at least one grid missing
unknown id, Conversion from ITRF2020 (geog3D) to ITRF2020 (geocentric) + Inverse of ITRF2014 to ITRF2020 (1) + ITRF2014 to ETRF2014 (1) + Inverse of NKG_ETRF14 to ETRF2014 + NKG_ETRF14 to ETRF96@2000.0 (Finland) + ETRF96@2000.0 to ETRF96@1997.0 using nkgrf17vel + Conversion from ETRS89 (geocentric) to ETRS89 (geog3D), 0.021 m, Finland - onshore and offshore., at least one grid missing
unknown id, Conversion from ITRF2020 (geog3D) to ITRF2020 (geocentric) + Inverse of ITRF2000 to ITRF2020 (1) + ITRF2000 to ETRF2000 (2) + Inverse of NKG_ETRF00 to ETRF2000 + NKG_ETRF00 to ETRF96@2000.0 (Finland) + ETRF96@2000.0 to ETRF96@1997.0 using nkgrf03vel_realigned + Conversion from ETRS89 (geocentric) to ETRS89 (geog3D), 0.03 m, Finland - onshore and offshore., at least one grid missing
unknown id, Conversion from ITRF2020 (geog3D) to ITRF2020 (geocentric) + Inverse of ITRF2014 to ITRF2020 (1) + ITRF2014 to ETRF2014 (1) + Inverse of NKG_ETRF14 to ETRF2014 + NKG_ETRF14 to ETRF92@2000.0 + ETRF92@2000.0 to ETRF92@1994.704 using nkgrf17vel + Conversion from ETRS89 (geocentric) to ETRS89 (geog3D), 0.021 m, Denmark - onshore and offshore., at least one grid missing
unknown id, Conversion from ITRF2020 (geog3D) to ITRF2020 (geocentric) + Inverse of ITRF2000 to ITRF2020 (1) + ITRF2000 to ETRF2000 (2) + Inverse of NKG_ETRF00 to ETRF2000 + NKG_ETRF00 to ETRF92@2000.0 + ETRF92@2000.0 to ETRF92@1994.704 using nkgrf03vel_realigned + Conversion from ETRS89 (geocentric) to ETRS89 (geog3D), 0.03 m, Denmark - onshore and offshore., at least one grid missing
unknown id, Conversion from ITRF2020 (geog3D) to ITRF2020 (geocentric) + Inverse of ITRF2014 to ITRF2020 (1) + ITRF2014 to ETRF2014 (1) + Inverse of NKG_ETRF14 to ETRF2014 + NKG_ETRF14 to ETRF96@2000.0 (Estonia) + ETRF96@2000.0 to ETRF96@1997.56 using nkgrf17vel + Conversion from ETRS89 (geocentric) to ETRS89 (geog3D), 0.021 m, Estonia - onshore and offshore., at least one grid missing
unknown id, Conversion from ITRF2020 (geog3D) to ITRF2020 (geocentric) + Inverse of ITRF2000 to ITRF2020 (1) + ITRF2000 to ETRF2000 (2) + Inverse of NKG_ETRF00 to ETRF2000 + NKG_ETRF00 to ETRF96@2000.0 (Estonia) + ETRF96@2000.0 to ETRF96@1997.56 using nkgrf03vel_realigned + Conversion from ETRS89 (geocentric) to ETRS89 (geog3D), 0.03 m, Estonia - onshore and offshore., at least one grid missing

The NKG ones should are still taken in their area of use since they have a lower value for the accuracy field

Example in Estonia:

$ echo 59 25 0 2024 | PROJ_NETWORK=ON PROJ_DEBUG=ON bin/cs2cs EPSG:9989 EPSG:4937
[...]
Using coordinate operation Conversion from ITRF2020 (geog3D) to ITRF2020 (geocentric) + Inverse of ITRF2014 to ITRF2020 (1) + ITRF2014 to ETRF2014 (1) + Inverse of NKG_ETRF14 to ETRF2014 + NKG_ETRF14 to ETRF96@2000.0 (Estonia) + ETRF96@2000.0 to ETRF96@1997.56 using nkgrf17vel + Conversion from ETRS89 (geocentric) to ETRS89 (geog3D)
58d59'59.983"N	24d59'59.957"E -0.073 2024

@kbevers
Copy link
Member

kbevers commented Sep 5, 2024

Thanks. It does indeed look sound!

@rouault rouault merged commit 4fccba3 into OSGeo:master Sep 5, 2024
22 checks passed
rouault added a commit to rouault/PROJ that referenced this pull request Sep 17, 2024
…target CRS that have the same originating authority

Fixes https://lists.osgeo.org/pipermail/proj/2024-September/011531.html
i.e.
```
projinfo -s EPSG:4269 -t EPSG:6318 --3d --spatial-test intersects
```

The fix consists in making sure that we recognize that the 3d-promoted
object EPSG:4269 (NAD83(86)) is still linked to EPSG, and thus discard
ESRI 3D objects in findsOpsInRegistryWithIntermediate()

Fixes a "regression" of OSGeo#4244
(one could argue which of the results is the best, given that NAD83(86)
as a 3D geographic CRS has no solid foundation)
rouault added a commit to rouault/PROJ that referenced this pull request Sep 17, 2024
…target CRS that have the same originating authority

Fixes https://lists.osgeo.org/pipermail/proj/2024-September/011531.html
i.e.
```
projinfo -s EPSG:4269 -t EPSG:6318 --3d --spatial-test intersects
```

The fix consists in making sure that we recognize that the 3d-promoted
object EPSG:4269 (NAD83(86)) is still linked to EPSG, and thus discard
ESRI 3D objects in findsOpsInRegistryWithIntermediate()

Fixes a "regression" of OSGeo#4244
(one could argue which of the results is the best, given that NAD83(86)
as a 3D geographic CRS has no solid foundation)
rouault added a commit to rouault/PROJ that referenced this pull request Sep 17, 2024
…target CRS that have the same originating authority

Fixes https://lists.osgeo.org/pipermail/proj/2024-September/011531.html
i.e.
```
projinfo -s EPSG:4269 -t EPSG:6318 --3d --spatial-test intersects
```

The fix consists in making sure that we recognize that the 3d-promoted
object EPSG:4269 (NAD83(86)) is still linked to EPSG, and thus discard
ESRI 3D objects in findsOpsInRegistryWithIntermediate()

Fixes a "regression" of OSGeo#4244
(one could argue which of the results is the best, given that NAD83(86)
as a 3D geographic CRS has no solid foundation)
rouault added a commit that referenced this pull request Sep 24, 2024
…target CRS that have the same originating authority

Fixes https://lists.osgeo.org/pipermail/proj/2024-September/011531.html
i.e.
```
projinfo -s EPSG:4269 -t EPSG:6318 --3d --spatial-test intersects
```

The fix consists in making sure that we recognize that the 3d-promoted
object EPSG:4269 (NAD83(86)) is still linked to EPSG, and thus discard
ESRI 3D objects in findsOpsInRegistryWithIntermediate()

Fixes a "regression" of #4244
(one could argue which of the results is the best, given that NAD83(86)
as a 3D geographic CRS has no solid foundation)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants