Skip to content

Kumul 34 height not applied to PNG94 / PNGMG94 zone 54 #4618

@scottmcnab

Description

@scottmcnab

Kumul 34 height (EPSG:7651) is defined as:

Kumul 34 height = WGS 84 ellipsoid height - value of geoid undulation derived by bilinear interpolation of EGM96 geoid model - 0.87m = EGM96 height - 0.87m.

This works as expected when combined with EPSG:32754 (WGS 84 / UTM zone 54S). For example, you can see the 0.87m offset being applied here:

$ ./projinfo -s EPSG:32754+EPSG:7651 -t EPSG:9754 -o proj
Candidate operations found: 2
-------------------------------------
Operation No. 1:

unknown id, Inverse of UTM zone 54S + WGS 84 to WGS 84 (G2139) + Inverse of EGM96 height to Kumul 34 height (1) + Inverse of WGS 84 to EGM96 height (1), 3 m,
Papua New Guinea - Papuan fold and thrust belt.

PROJ string:
+proj=pipeline
  +step +inv +proj=utm +zone=54 +south +ellps=WGS84
  +step +proj=geogoffset +dh=0.87
  +step +proj=vgridshift +grids=us_nga_egm96_15.tif +multiplier=1
  +step +proj=unitconvert +xy_in=rad +xy_out=deg
  +step +proj=axisswap +order=2,1

Example of problem

However, this height is not applied when it is combined with EPSG:5550 (PNG94 / PNGMG94 zone 54).
Specifically:

$ ./projinfo -s EPSG:5550+EPSG:7651 -t EPSG:9754 -o proj
Candidate operations found: 2
-------------------------------------
Operation No. 1:

unknown id, Inverse of Papua New Guinea Map Grid 1994 zone 54 + PNG94 to WGS 84 (1) + WGS 84 to WGS 84 (G2139) + Transformation from Kumul 34 height to WGS 84 (G2139) (ballpark vertical transformation, without ellipsoid height to vertical height correction), unknown accuracy, Papua New Guinea - onshore and offshore. Includes Bismark archipelago, Louisade archipelago, Admiralty Islands, d'Entrecasteaux Islands, northern Solomon Islands, Trobriand Islands, New Britain, New Ireland, Woodlark, and associated islands., has ballpark transformation

PROJ string:
+proj=pipeline
  +step +inv +proj=utm +zone=54 +south +ellps=GRS80
  +step +proj=unitconvert +xy_in=rad +xy_out=deg
  +step +proj=axisswap +order=2,1

Notice how the +proj=geogoffset +dh=0.87 step is missing? This causes the output heights to be incorrect.

Inconsistent behaviour

Furthermore, converting from EPSG:5550+EPSG:7651 to EPSG:32754+EPSG:7651 does work as expected (the heights cancel out):

$ ./projinfo -s EPSG:5550+EPSG:7651 -t EPSG:32754+EPSG:7651 -o proj
Candidate operations found: 1
-------------------------------------
Operation No. 1:

unknown id, Inverse of Papua New Guinea Map Grid 1994 zone 54 + PNG94 to WGS 84 (1) + UTM zone 54S, 2 m, Papua New Guinea - onshore and offshore. Includes Bismark archipelago, Louisade archipelago, Admiralty Islands, d'Entrecasteaux Islands, northern Solomon Islands, Trobriand Islands, New Britain, New Ireland, Woodlark, and associated islands.

PROJ string:
+proj=pipeline
  +step +inv +proj=utm +zone=54 +south +ellps=GRS80
  +step +proj=utm +zone=54 +south +ellps=WGS84

This suggests the problem has something to do specifically with the EPSG:5550+EPSG:7651 combination.

ChatGPT concurs with this conclusion:

The 0.87 m shift is required by the Kumul 34 definition and is correctly present in the 32754+7651 → 9754 pipeline.
The 5550+7651 → 32754+7651 pipeline needs no 0.87 m because the vertical CRS is the same on both sides.
The 5550+7651 → 9754 pipeline is missing the Kumul → EGM96 → ellipsoidal vertical steps, most likely because PROJ doesn’t automatically compose that full 3D path for PNG94 + Kumul.

Any ideas how to fix this?

Environment Information

  • PROJ version: 9.7.0 (built from source)
  • Operation System Information: Ubuntu-20.24

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions