[PROJ] Problems with last EPSG update in Germany

Javier Jimenez Shaw j1 at jimenezshaw.com
Sat Apr 29 09:32:28 PDT 2023


Hi

When doing transformations from WGS84 (or ETRS89) to "DHDN + DHHN2016
height" in PROJ 9.2.0 (using a German geoid file), it works fine.
However in master it is only doing the vertical part, producing an error of
more than a hundred meters horizontally.

I was going to open an issue, but then I realized that EPSG was recently
updated, and maybe that is the reason.

I have a "proper" German geoid mode grid file. For this example I just
copied the EGM2008 tif file into GCG2016.txt, and put it next to proj.db.
The accuracy of the vertical component is not important in this case.

(Note: BKG is working on releasing the German geoid model free. Let's see
when it finally happens and the license they use.)

In PROJ 9.2.0, the pipelines obtained with projinfo make sense to me,
including both, horizontal and vertical operations:

PROJ_NETWORK=ON projinfo -o proj --spatial-test intersects -s
EPSG:4979 -t EPSG:31468+7837
Candidate operations found: 10
-------------------------------------
Operation No. 1:

unknown id, Inverse of ETRS89 to WGS 84 (1) + ETRS89 to DHHN2016
height (1) + Inverse of DHDN to ETRS89 (8) + 3-degree Gauss-Kruger
zone 4, 1.92 m, Germany - onshore - states of Baden-Wurtemberg,
Bayern, Berlin, Brandenburg, Bremen, Hamburg, Hessen,
Mecklenburg-Vorpommern, Niedersachsen, Nordrhein-Westfalen,
Rheinland-Pfalz, Saarland, Sachsen, Sachsen-Anhalt,
Schleswig-Holstein, Thuringen.

PROJ string:
+proj=pipeline
  +step +proj=axisswap +order=2,1
  +step +proj=unitconvert +xy_in=deg +xy_out=rad
  +step +inv +proj=vgridshift +grids=GCG2016.txt +multiplier=1
  +step +inv +proj=hgridshift +grids=de_adv_BETA2007.tif
  +step +proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=bessel
  +step +proj=axisswap +order=2,1

-------------------------------------
Operation No. 2:

unknown id, Inverse of ETRS89 to WGS 84 (1) + ETRS89 to DHHN2016
height (1) + Inverse of DHDN to ETRS89 (2) + 3-degree Gauss-Kruger
zone 4, 4.02 m, Germany - states of former West Germany onshore -
Baden-Wurtemberg, Bayern, Bremen, Hamburg, Hessen, Niedersachsen,
Nordrhein-Westfalen, Rheinland-Pfalz, Saarland, Schleswig-Holstein.

PROJ string:
+proj=pipeline
  +step +proj=axisswap +order=2,1
  +step +proj=unitconvert +xy_in=deg +xy_out=rad
  +step +inv +proj=vgridshift +grids=GCG2016.txt +multiplier=1
  +step +proj=push +v_3
  +step +proj=cart +ellps=GRS80
  +step +inv +proj=helmert +x=598.1 +y=73.7 +z=418.2 +rx=0.202 +ry=0.045
        +rz=-2.455 +s=6.7 +convention=position_vector
  +step +inv +proj=cart +ellps=bessel
  +step +proj=pop +v_3
  +step +proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=bessel
  +step +proj=axisswap +order=2,1

-------------------------------------

However The pipelines in master do use the vertical or horizontal
transformation, but not both:

PROJ_NETWORK=ON projinfo -o proj --spatial-test intersects -s
EPSG:4979 -t EPSG:31468+7837
Candidate operations found: 5
-------------------------------------
Operation No. 1:

unknown id, Inverse of Ballpark geographic offset from
ETRS89/DREF91/2016 to WGS 84 + ETRS89/DREF91/2016 to DHHN2016 height
(1) + Inverse of Ballpark geographic offset
from DHDN to ETRS89/DREF91/2016 + 3-degree Gauss-Kruger zone 4,
unknown accuracy, Germany - onshore and offshore., has ballpark
transformation

PROJ string:
+proj=pipeline
  +step +proj=axisswap +order=2,1
  +step +proj=unitconvert +xy_in=deg +xy_out=rad
  +step +inv +proj=vgridshift +grids=GCG2016.txt +multiplier=1
  +step +proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=bessel
  +step +proj=axisswap +order=2,1

-------------------------------------
Operation No. 2:

unknown id, Inverse of Transformation from DHHN2016 height to WGS 84
(ballpark vertical transformation, without ellipsoid height to
vertical height correction) + Inverse of
DHDN to WGS 84 (4) + 3-degree Gauss-Kruger zone 4, unknown accuracy,
Germany - onshore - states of Baden-Wurtemberg, Bayern, Berlin,
Brandenburg, Bremen,
Hamburg, Hessen, Mecklenburg-Vorpommern, Niedersachsen,
Nordrhein-Westfalen, Rheinland-Pfalz, Saarland, Sachsen,
Sachsen-Anhalt, Schleswig-Holstein, Thuringen., has ballpark
transformation

PROJ string:
+proj=pipeline
  +step +proj=axisswap +order=2,1
  +step +proj=unitconvert +xy_in=deg +xy_out=rad
  +step +inv +proj=hgridshift +grids=de_adv_BETA2007.tif
  +step +proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=bessel
  +step +proj=axisswap +order=2,1

-------------------------------------
Operation No. 3:

unknown id, Inverse of Transformation from DHHN2016 height to WGS 84
(ballpark vertical transformation, without ellipsoid height to
vertical height correction) + Inverse of
Ballpark geographic offset from DHDN to WGS 84 + 3-degree Gauss-Kruger
zone 4, unknown accuracy, World, has ballpark transformation

PROJ string:
+proj=pipeline
  +step +proj=axisswap +order=2,1
  +step +proj=unitconvert +xy_in=deg +xy_out=rad
  +step +proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=bessel
  +step +proj=axisswap +order=2,1

-------------------------------------
Operation No. 4:

unknown id, Inverse of Transformation from DHHN2016 height to WGS 84
(ballpark vertical transformation, without ellipsoid height to
vertical height correction) + Inverse of
DHDN to WGS 84 (2) + 3-degree Gauss-Kruger zone 4, unknown accuracy,
Germany - states of former West Germany onshore - Baden-Wurtemberg,
Bayern, Bremen, Hamburg, Hessen,
Niedersachsen, Nordrhein-Westfalen, Rheinland-Pfalz, Saarland,
Schleswig-Holstein., has ballpark transformation

PROJ string:
+proj=pipeline
  +step +proj=axisswap +order=2,1
  +step +proj=unitconvert +xy_in=deg +xy_out=rad
  +step +proj=push +v_3
  +step +proj=cart +ellps=WGS84
  +step +inv +proj=helmert +x=598.1 +y=73.7 +z=418.2 +rx=0.202 +ry=0.045
        +rz=-2.455 +s=6.7 +convention=position_vector
  +step +inv +proj=cart +ellps=bessel
  +step +proj=pop +v_3
  +step +proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=bessel
  +step +proj=axisswap +order=2,1

-------------------------------------
Operation No. 5:

unknown id, Inverse of Transformation from DHHN2016 height to WGS 84
(ballpark vertical transformation, without ellipsoid height to
vertical height correction) + Inverse of
DHDN to WGS 84 (3) + 3-degree Gauss-Kruger zone 4, unknown accuracy,
Germany - states of former East Germany - Berlin, Brandenburg;
Mecklenburg-Vorpommern; Sachsen;
Sachsen-Anhalt; Thuringen., has ballpark transformation

PROJ string:
+proj=pipeline
  +step +proj=axisswap +order=2,1
  +step +proj=unitconvert +xy_in=deg +xy_out=rad
  +step +proj=push +v_3
  +step +proj=cart +ellps=WGS84
  +step +inv +proj=helmert +x=612.4 +y=77 +z=440.2 +rx=-0.054 +ry=0.057
        +rz=-2.797 +s=2.55 +convention=position_vector
  +step +inv +proj=cart +ellps=bessel
  +step +proj=pop +v_3
  +step +proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=bessel
  +step +proj=axisswap +order=2,1


I think that the reason is that they deprecated the transformations
EPSG:9925 'ETRS89 to DHHN2016 height (1)' and EPSG:9926 'ETRS89 to
ETRS89 + DHHN2016 height (1)',
creating instead EPSG:10294 'ETRS89/DREF91/2016 to DHHN2016 height
(1)' and EPSG:10295 'ETRS89/DREF91/2016 to ETRS89/DREF91/2016 +
DHHN2016 height (1)'.
I have not found any transformation from WGS84 or ETRS89 to
ETRS89/DREF91/2016, only 'ETRS89/DREF91/2016 to ETRF2000 (1)', that is
not very useful I guess.
The PRs that update the DB:
https://github.com/OSGeo/PROJ/pull/3643/files ,
https://github.com/OSGeo/PROJ/pull/3646/files

(I don't know why I cannot find the transformation EPSG:9925 in
epsg.org, asking to include deprecated entries)

What can I do to perform the transformation from EPSG:4979 to
EPSG:31468+7837 as in PROJ 9.2.0?

Thanks.

.___ ._ ..._ .. . ._.  .___ .. __ . _. . __..  ... .... ._ .__
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/proj/attachments/20230429/c12926b0/attachment.htm>


More information about the PROJ mailing list