Commit 2c27beb
committed
Fix issue with WGS 84 + EGM2008 -> Amersfoort + NAP height (master only)
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.1 parent ac9ac9f commit 2c27beb
File tree
2 files changed
+67
-2
lines changed- src/iso19111/operation
- test/unit
2 files changed
+67
-2
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
7033 | 7033 | | |
7034 | 7034 | | |
7035 | 7035 | | |
7036 | | - | |
| 7036 | + | |
7037 | 7037 | | |
7038 | 7038 | | |
7039 | 7039 | | |
7040 | 7040 | | |
7041 | 7041 | | |
7042 | 7042 | | |
7043 | 7043 | | |
7044 | | - | |
| 7044 | + | |
7045 | 7045 | | |
7046 | 7046 | | |
7047 | 7047 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
6585 | 6585 | | |
6586 | 6586 | | |
6587 | 6587 | | |
| 6588 | + | |
| 6589 | + | |
| 6590 | + | |
| 6591 | + | |
| 6592 | + | |
| 6593 | + | |
| 6594 | + | |
| 6595 | + | |
| 6596 | + | |
| 6597 | + | |
| 6598 | + | |
| 6599 | + | |
| 6600 | + | |
| 6601 | + | |
| 6602 | + | |
| 6603 | + | |
| 6604 | + | |
| 6605 | + | |
| 6606 | + | |
| 6607 | + | |
| 6608 | + | |
| 6609 | + | |
| 6610 | + | |
| 6611 | + | |
| 6612 | + | |
| 6613 | + | |
| 6614 | + | |
| 6615 | + | |
| 6616 | + | |
| 6617 | + | |
| 6618 | + | |
| 6619 | + | |
| 6620 | + | |
| 6621 | + | |
| 6622 | + | |
| 6623 | + | |
| 6624 | + | |
| 6625 | + | |
| 6626 | + | |
| 6627 | + | |
| 6628 | + | |
| 6629 | + | |
| 6630 | + | |
| 6631 | + | |
| 6632 | + | |
| 6633 | + | |
| 6634 | + | |
| 6635 | + | |
| 6636 | + | |
| 6637 | + | |
| 6638 | + | |
| 6639 | + | |
| 6640 | + | |
| 6641 | + | |
| 6642 | + | |
| 6643 | + | |
| 6644 | + | |
| 6645 | + | |
| 6646 | + | |
| 6647 | + | |
| 6648 | + | |
| 6649 | + | |
| 6650 | + | |
| 6651 | + | |
| 6652 | + | |
6588 | 6653 | | |
6589 | 6654 | | |
6590 | 6655 | | |
| |||
0 commit comments