Open in playproj

playproj

GuidePerspectiveCones and cylindersSight and shadeSpilhausGlobals and interruptedsPeeling the orangeDistortionEllipsoidGeoidOrthorectifications2 cellsH3 hexagonsL3 binsModel gridsIndex spaceMGRS and Sentinel-2AAT gridTiles and overviewsRectilinear chunksIcechunk and ZarrRasterizeAffineRegular in what?Convex hullCatastrophesTexture mappingPenguin datumFor exampleHomageVicGridNuyinaRhumb linesFrameTime and depthCutawayVoxels

Click the globe to move the nearer end of the profile; hover the profile to read the heights.

With GEBCO, the profile adds the land and sea floor (heights above mean sea level, so above the geoid) and the readout gives h = H + N.

How it works

Projections start from a datum: a sphere or, for real work, an ellipsoid such as WGS84, a smooth shape about 21 km shorter through the poles than across the equator (the Ellipsoid page exaggerates it). Height above it, the ellipsoidal height h, is what a GNSS receiver gives. But water does not run downhill on the ellipsoid. It runs downhill in the earth's gravity, and the level surface of gravity that best fits mean sea level is the geoid. "Height above sea level", the orthometric height H, is height above the geoid.

The geoid is lumpy because the earth's mass is: density differences, mostly deep in the mantle, bend the level surfaces up over extra mass and down over less. The bumps are small, at most about 100 m against a radius of 6371 km, so the globe here exaggerates them (ten thousand times turns a 100 m low into a 1000 km dent). They do not follow the mountains: the deepest low is over open ocean south of Sri Lanka, the highest point is over New Guinea, and the Himalaya sit on a modest geoid.

The height of the geoid above the ellipsoid is the geoid undulation N, and the three heights add up: h = H + N. The profile draws them along the line between two places: the ellipsoid is the straight line at zero, the geoid swings above and below it, and the terrain (with GEBCO) stands on the geoid. Over the sea, the sea surface lies within a metre or two of the geoid (the difference is the ocean's dynamic topography, which drives the currents). Profile wall hangs the same profile on the globe, from the ellipsoid up or down to the geoid.

The slope of the geoid is the deflection of the vertical: the angle between a plumb line and the ellipsoid normal, a few seconds of arc in most places. The readout gives it from the grid's slope, which at a whole degree is the smooth, long-wavelength part.

The geoid is EGM2008 at whole degrees, every 24th node of PROJ's 2.5 minute grid, read bilinear as PROJ's vgridshift reads it and checked against PROJ in test/check-geoid.mjs (the whole degree grid is within about 5 m of the full model). The PROJ pipeline from ellipsoidal heights (EPSG:4979) to EGM2008 heights (EPSG:4326+3855) is in the readout. Places on the globe are geocentric positions on WGS84 (on the exaggerated ellipsoid when flattening is exaggerated) moved N times the exaggeration along the ellipsoid normal.

Hash keys: alon, alat, blon, blat (the profile's ends), nx (geoid exaggeration), fx (flattening exaggeration), ell, coast, grat, wall, bm, fit, cam.

  • Pavlis, N. K., Holmes, S. A., Kenyon, S. C. and Factor, J. K. (2012) The development and evaluation of the Earth Gravitational Model 2008 (EGM2008), J. Geophys. Res. 117, B04406. Model by the US National Geospatial-Intelligence Agency (NGA).
  • The grid us_nga_egm08_25.tif from cdn.proj.org (PROJ-data), with PROJ's vgridshift as the reference; the shipped whole degree grid is made by test/make-geoid-fixture.py.
  • Terrain from the GEBCO 2026 Grid (GEBCO Compilation Group), from Source Cooperative; coastlines from Natural Earth; drawn with three.js.
Source and contributing