EPSG guidance note #7-2, http://www.epsg.org
Transformation of the vertical component of a Geographic 3D CRS to a Vertical CRS. Grid file format: US NGS .gtx (in US sometimes also referred to as 'vdatum format').
This transformation involves the application of a height difference interpolated from a height correction model. The model provides height difference values at the nodes on a regular grid of latitude and longitude intersection points. The geodetic latitude and longitude used to interpolate within the grid are not affected by this transformation. The grid is referenced to a specific geographic CRS (the horizontal component of the source CRS) and interpolation must be made in the latitude and longitude of this system. Calculation of the height difference is achieved through a bi-linear interpolation of the grid, using the latitude and longitude of the point. This step provides the height correction (C) of the target datum above the ellipsoid of the source Geographic 3D CRS. C differs from the geoid-ellipsoid separation N because a vertical datum is a realisation of the geoid surface, not the geoid itself. Then: H = h - C where h = the height above the ellipsoid in the source geographic 3D CRS and H = the gravity-related height in the target vertical CRS. The method is not reversible because the gravity-related height is 1-dimensional and not associated with a horizontal CRS.
For coordinate transformation: NZGD2000 to NZVD2016 height(2), code 9326: For a point at 36°54'01"S, 174°46'46"E (36.9003°S, 174.7794°E), with NZGD2009 ellipsoidal height of 50.000 metres, to find its NZVD2009 height: First using source CRS NZGD2000, code 4167, for interpolation, obtain the offsets at each of the surrounding grid nodes: NW corner 36.9000°S, 174.7667°E, geoid height = 34.267m NE corner 36.9000°S, 174.7833°E, geoid height = 34.293m SE corner 36.9167°S, 174.7833°E, geoid height = 34.205m SW corner 36.9167°S, 174.7667°E, geoid height = 34.185m Then using bi-linear interpolation for 36.9003°S, 174.7794°E, geoid height = 34.285m Then NZVD2016 height = 50.000 - (34.285) = 15.715m.