Coordinate systems

Ellipsoidal height vs height above sea level

A GNSS receiver measures height above a mathematical ellipsoid. A surveyor, a contour line and a flood map all mean height above the geoid, which is roughly mean sea level. The two differ by the geoid undulation, and that is not a rounding error: it runs from about 105 m below the ellipsoid in the Indian Ocean to about 85 m above it elsewhere. Subtract the wrong one and your elevations are wrong by the whole amount, consistently, with nothing in the file to warn you.

On this page
  1. Side by side
  2. One equation, and it is the whole subject
  3. What the geoid actually is
  4. EGM96, and what it is for
  5. Which number did your drone actually write?
  6. Why this is the error that survives review
  7. What this site can and cannot do about it
  8. Questions people ask

Side by side

 Ellipsoidal height (h)Orthometric height (H)
Measured fromThe WGS 84 ellipsoid, a smooth mathematical surfaceThe geoid, an equipotential surface of the earth's gravity field
Also calledHeight above ellipsoid, HAE, GNSS heightElevation, height above mean sea level, MSL
What produces itAny GNSS receiver, directlyLevelling, or a GNSS height corrected by a geoid model
Physical meaningNone - the ellipsoid is a convention, not a surface water responds toWater flows downhill in it, which is why drainage and flood work use it
Who asks for itAlmost nobody, as a deliverableClients, planners, regulators, contour maps, flood models
Typical differenceReferenceThe geoid undulation N, from -105 m to +85 m worldwide

One equation, and it is the whole subject

Ellipsoidal height equals orthometric height plus geoid undulation: h = H + N. Rearranged for the number you usually want, H = h - N. Everything below is about where N comes from and how wrong you are if you skip it.

N is negative over most of the world, including all of India, which means the geoid sits below the ellipsoid there and your GNSS height reads higher than the elevation you want. The global minimum, about 105 m below the ellipsoid, sits in the Indian Ocean south of the subcontinent. The global maximum is about 85 m above. The total spread is roughly 190 m.

N changes slowly across the ground - tens of centimetres over a few kilometres in most places - so within one site it behaves like a constant offset. That is exactly what makes it dangerous. A uniform 50 m error looks like a correct survey until someone compares it with a benchmark.

What the geoid actually is

The geoid is the equipotential surface of the earth's gravity field that best matches global mean sea level. Put differently: the shape the oceans would take if they were free to flow everywhere, with no tides, currents or wind, responding only to gravity and rotation.

Because rock is denser than water and mountains are not evenly distributed, gravity is not uniform, so the geoid is bumpy. It is not an ellipsoid and no ellipsoid fits it closely. The ellipsoid is the smooth approximation that makes the maths tractable; the geoid is the surface that means something physically.

This is why heights referenced to the geoid are the ones that predict where water goes. A drainage design, a flood extent and a contour line are all statements about gravity, not about a mathematical reference surface.

EGM96, and what it is for

EGM96 is the Earth Gravitational Model of 1996, a spherical harmonic model of the geoid complete to degree and order 360. It is the model almost every consumer GNSS device carries, and it is why a handheld receiver can display something labelled 'elevation' at all - internally it computes ellipsoidal height and subtracts an EGM96 undulation before showing you a number.

Its accuracy is usually quoted around 0.1 to 0.5 m one-sigma, with worst cases of 1 to 5 m in poorly surveyed and mountainous regions. That is fine for navigation and for knowing roughly how high a hill is. It is not survey grade, and it is not what you should use to deliver contours against a national vertical datum.

EGM2008 superseded it, with coefficients to degree 2190 and completeness to 2159 - about six times the resolution of EGM96, and three to six times the accuracy depending on quantity and region. Where a national geoid model exists it beats both: a study over South India found the local geoid and EGM2008 agreeing to within about 2 m, with the differences tracking the topography.

Which number did your drone actually write?

A DJI image can carry three different altitudes, and they mean three different things. RelativeAltitude is height above the takeoff point, which is the number the pilot flew to and is referenced to nothing outside that flight. GPSAltitude is the EXIF field, with GPSAltitudeRef flagging above or below sea level. AbsoluteAltitude is a DJI XMP field, and it is usually the same value that lands in GPSAltitude.

The honest answer to what AbsoluteAltitude is referenced to is: it depends on the model, the firmware and the altitude source, and published accounts contradict each other. Some documentation treats it as WGS 84 ellipsoidal. Other sources describe it as a barometric estimate of MSL derived from air pressure, which on a consumer drone can drift by tens of metres over a flight. Newer airframes expose an AltitudeType field with values such as GpsFusionAlt, which tells you which sensor produced the number.

This matters because photogrammetry software has to guess. A community manual for Metashape records that it treats EXIF GPSAltitude as ellipsoidal height, which is the wrong assumption for a DJI barometric value - and nothing in the processing will complain. The same images then produce a model that is internally consistent and vertically wrong.

The one thing you can do cheaply is look. Open your own images in the metadata viewer on this site and read all three fields plus GPSAltitudeRef, before deciding what the numbers mean. Nothing is uploaded; the parsing happens in your browser.

Why this is the error that survives review

Horizontal errors get caught. Someone opens the data over a basemap, sees the site sitting in the wrong field, and asks a question. A vertical datum error produces a dataset that looks perfect in plan and is uniformly displaced in a direction nobody renders.

An RTK drone survey sold on centimetre accuracy, delivered in ellipsoidal height when the client's control is orthometric, is a product with a 50 m error and a 2 cm label. The relative geometry is excellent. Every absolute elevation is wrong by N.

The cost lands late. It shows up when the deliverable is compared against a benchmark, a flood study, an existing contour set or a neighbouring survey - which is usually after the aircraft, the crew and the processing have all been paid for.

There is a second, quieter version of the same mistake: mixing RelativeAltitude into anything absolute. Height above takeoff is meaningful only relative to wherever the drone happened to launch, so two flights of the same site from different launch points do not agree, and neither agrees with anything else.

What this site can and cannot do about it

It cannot convert your heights. The converter here runs proj4 in your browser, and proj4 cannot carry a vertical axis through a transformation - EPSG:4979, the three-dimensional form of WGS 84, is handled as its two-dimensional equivalent for exactly that reason. Applying a geoid model properly needs a gridded geoid file, which is a large binary and the same constraint that stops this site doing grid-based horizontal datum shifts.

What it can do is tell you what you have. The metadata viewer reads every altitude field your images carry, in the browser, so you can see whether you have a relative height, a barometric height or a GNSS height before anyone processes it.

For the actual conversion, use tooling that ships the grids: the National Geodetic Survey's GEOID models and VDatum in the United States, your national geodetic agency's model elsewhere, or PROJ with the relevant geoid grid installed. In India the Survey of India is the authority for the vertical datum, and the practical route is usually to tie the survey to a published benchmark rather than to trust any global model.

Whatever you use, write the vertical datum and the geoid model into the deliverable next to the horizontal one. A file that says 'WGS 84' and nothing else has not told anyone what its heights mean.

Questions people ask

What is the difference between ellipsoidal and orthometric height?

Ellipsoidal height is measured from the WGS 84 ellipsoid, a smooth mathematical surface, and is what a GNSS receiver computes directly. Orthometric height is measured from the geoid, which approximates mean sea level, and is what everyone means by elevation. They differ by the geoid undulation N, following h = H + N, and N reaches about -105 m to +85 m worldwide.

Is GPS altitude the same as height above sea level?

Not natively. A GNSS receiver computes height above the ellipsoid, then most consumer devices subtract an EGM96 geoid undulation before displaying an elevation. Whether a given device shows you the raw ellipsoidal height or the corrected one is a device decision, and it is frequently undocumented, so check rather than assume.

What is EGM96?

The Earth Gravitational Model of 1996, a spherical harmonic model of the geoid complete to degree and order 360. It is the model carried by most consumer GNSS hardware for converting ellipsoidal height to an approximate elevation. Typical accuracy is around 0.1 to 0.5 m, with 1 to 5 m in the worst regions, so it is adequate for navigation and not for survey deliverables.

Should I use EGM96 or EGM2008?

EGM2008 where you have the choice: it has coefficients to degree 2190 against EGM96's 360, roughly six times the resolution and three to six times the accuracy. EGM96 persists because it is what is baked into older hardware and file formats. Where a national geoid model exists, use that instead of either.

Is my drone's altitude ellipsoidal or MSL?

It depends on the model, the firmware and which sensor produced it, and published sources disagree. DJI images can carry RelativeAltitude (above takeoff), GPSAltitude with a GPSAltitudeRef flag, and an AbsoluteAltitude XMP field that is variously described as WGS 84 ellipsoidal or as a barometric MSL estimate. Newer airframes add an AltitudeType field naming the source. Read the fields from your own images before deciding.

Why is my drone survey 50 metres too high?

Almost certainly a vertical datum mismatch rather than a GNSS fault. If the offset is large, uniform across the whole site and in plan the data is perfect, you are comparing an ellipsoidal height against orthometric control. The size of the offset is the local geoid undulation. Nothing in the coordinate file records which one you have, which is why it survives review.

Can I convert ellipsoidal height to MSL in the browser?

Not on this site. proj4 cannot carry a vertical axis through a transformation, and a proper conversion needs a gridded geoid file too large to load client-side. Use NGS GEOID models and VDatum in the United States, your national agency's geoid model elsewhere, or PROJ with the grid installed.

Need the zone for a specific place? The UTM zone finder gives the zone, EPSG code and MGRS grid square from a map click.