Fix issue with WGS 84 + EGM2008 -> Amersfoort + NAP height (master only)#4676
Merged
rouault merged 1 commit intoOSGeo:masterfrom Feb 22, 2026
Merged
Conversation
7d8a925 to
4823de3
Compare
4823de3 to
74b6ecd
Compare
lnicola
reviewed
Feb 22, 2026
Fixes https://lists.osgeo.org/pipermail/proj/2026-February/011959.html Output of projinfo EPSG:4326+3855 EPSG:7415 --spatial-test intersects --------------------------------------------------------------------- 9.7.1 +++++ Operation No. 1: ``` unknown id, Inverse of WGS 84 to EGM2008 height (1) + Inverse of ETRS89 to WGS 84 (1) + ETRS89 to NAP height (2) + Inverse of Amersfoort to ETRS89 (9) + RD New, 1.114 m, Netherlands - onshore, including Waddenzee, Dutch Wadden Islands and 12-mile offshore coastal zone., at least one grid missing PROJ string: +proj=pipeline +step +proj=axisswap +order=2,1 +step +proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=vgridshift +grids=us_nga_egm08_25.tif +multiplier=1 +step +inv +proj=vgridshift +grids=nl_nsgi_nlgeo2018.tif +multiplier=1 +step +inv +proj=hgridshift +grids=nl_nsgi_rdtrans2018.tif +step +proj=sterea +lat_0=52.1561605555556 +lon_0=5.38763888888889 +k=0.9999079 +x_0=155000 +y_0=463000 +ellps=bessel ``` master before this change +++++++++++++++++++++++++ Operation No. 1: ``` unknown id, Inverse of WGS 84 to EGM2008 height (1) + Inverse of ETRS89-NLD [AGRS2010] to WGS 84 (1) + ETRS89-NLD [AGRS2010] to NAP height (2) + Inverse of Amersfoort to ETRS89-NLD [AGRS2010] (9) + RD New, 1.123 m, Netherlands - onshore and offshore., at least one grid missing PROJ string: +proj=pipeline +step +proj=axisswap +order=2,1 +step +proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=vgridshift +grids=us_nga_egm08_25.tif +multiplier=1 +step +inv +proj=vgridshift +grids=nl_nsgi_nlgeo2018.tif +multiplier=1 +step +inv +proj=hgridshift +grids=nl_nsgi_rdtrans2018.tif +step +proj=sterea +lat_0=52.1561605555556 +lon_0=5.38763888888889 +k=0.9999079 +x_0=155000 +y_0=463000 +ellps=bessel OPERATIONACCURACY[1.123], USAGE[ SCOPE["unknown"], AREA["Netherlands - onshore and offshore."], BBOX[50.75,2.53,55.77,7.22]]] ``` Operation No. 3: ``` unknown id, Inverse of WGS 84 to EGM2008 height (1) + Inverse of Amersfoort to WGS 84 (4) + ETRS89-NLD [AGRS2010] to NAP height (2) using Amersfoort to ETRS89-NLD [AGRS2010] (9) + RD New, 1.123 m, Netherlands - onshore, including Waddenzee, Dutch Wadden Islands and 12-mile offshore coastal zone., at least one grid missing PROJ string: +proj=pipeline +step +proj=axisswap +order=2,1 +step +proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=vgridshift +grids=us_nga_egm08_25.tif +multiplier=1 +step +proj=cart +ellps=WGS84 +step +inv +proj=helmert +x=565.4171 +y=50.3319 +z=465.5524 +rx=0.398957388243134 +ry=-0.343987817378283 +rz=1.87740163998045 +s=4.0725 +convention=coordinate_frame +step +inv +proj=cart +ellps=bessel +step +proj=push +v_1 +v_2 +step +proj=hgridshift +grids=nl_nsgi_rdtrans2018.tif +omit_inv +step +inv +proj=vgridshift +grids=nl_nsgi_nlgeo2018.tif +multiplier=1 +step +inv +proj=hgridshift +grids=nl_nsgi_rdtrans2018.tif +omit_fwd +step +proj=pop +v_1 +v_2 +step +proj=sterea +lat_0=52.1561605555556 +lon_0=5.38763888888889 +k=0.9999079 +x_0=155000 +y_0=463000 +ellps=bessel OPERATIONACCURACY[1.123], USAGE[ SCOPE["unknown"], AREA["Netherlands - onshore, including Waddenzee, Dutch Wadden Islands and 12-mile offshore coastal zone."], BBOX[50.75,3.2,53.7,7.22]]] ``` Analysis -------- Due to the ETRS89 datum ensemble changes, PROJ synthetized a new operation (operation 3) that has the same accuracy than the "correct" (operation 1), and a smaller area of use, thus it was selected. However that choice was not super relevant compared to 1, because it relied on using Amersfoort CRS in 3D (with ellipsoidal height), through the Helmert transformation "Amersfoort to WGS 84 (4)"). Given that there's no entry in the database for a 3D Amersfoort CRS, this possibility should be discarded when there is an alternative that uses only known objects.
74b6ecd to
2c27beb
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes https://lists.osgeo.org/pipermail/proj/2026-February/011959.html
Output of projinfo EPSG:4326+3855 EPSG:7415 --spatial-test intersects
9.7.1
+++++
Operation No. 1:
master before this change
+++++++++++++++++++++++++
Operation No. 1:
Operation No. 3:
Analysis
Due to the ETRS89 datum ensemble changes, PROJ synthetized a new operation (operation 3) that has the same accuracy than the "correct" (operation 1), and a smaller area of use, thus it was selected. However that choice was not super relevant compared to 1, because it relied on using Amersfoort CRS in 3D (with ellipsoidal height), through the Helmert transformation "Amersfoort to WGS 84 (4)"). Given that there's no entry in the database for a 3D Amersfoort CRS, this possibility should be discarded when there is an alternative that uses only known objects.