I have some recorded commercial flight data that contains altitude readings defined as "uncorrected pressure altitude." So I have a sequence of lat/lon/alt/timestamps as the aircraft travels about. My ultimate goal is to convert this altitude to an approximation of a WGS84 altitude (height above the WGS84 ellipsoid). The data is from USA if that makes a difference.

What pieces of information would I need, and what formulas should I use, in order to "correct" the uncorrected pressure altitude? Would correcting the pressure even be helpful for my WGS84 goal? (I'm under the assumption that a corrected pressure would help me get to a MSL altitude, and then there's a conversion to WGS84 altitude).

Any advice?

  • $\begingroup$ Do you have date and time of the flight? $\endgroup$
    – DeltaLima
    Commented Oct 8, 2021 at 19:04
  • $\begingroup$ Yes, it has many timestamps. $\endgroup$ Commented Oct 8, 2021 at 21:34

2 Answers 2


Frame challenge: when aircraft are operating below the transition altitude (which in the USA is 18,000' MSL), ATC radar scopes will correct the reported pressure altitude and display the proper MSL figure (rounded to the nearest 100'). If you are only dealing with a small number of flights, you may be able to submit a FOIA request to the FAA and get the stored track data. I do not think this information is kept for a long time, perhaps only 45 days or so.

Some background: transponders always report altitude in flight levels, that is, they report their altitude assuming the local sea-level pressure is 29.92 inHg (1013 hPa). It is up to the receiving station to correct this altitude according to the true local atmospheric pressure and thereby determine the aircraft's MSL altitude. For more information, see Wikipedia: Flight level, PPRuNe: Converting Mode C flight levels to altitudes (and the linked Aviation Formulary site), and Av.SE: How does one calculate true altitude?.

The equation you need, from the Formulary, is:

  • Find pressure height (altitude) $H_\text{P}$ (in feet) given indicated height (altitude) $H_\text{I}$ and the altimeter setting $A$ (in inches of mercury):
    $$ H_\text{P} = H_\text{I} + 145442.2 \left(1- \left[ \frac{A}{29.92126} \right] ^ {0.190261} \right) $$ or reversed to be more relevant for your question, that is, find the indicated altitude given the pressure altitude: $$ H_\text{I} = H_\text{P} - 145442.2 \left(1- \left[ \frac{A}{29.92126} \right] ^ {0.190261} \right) $$

Note that this will only get you the indicated MSL altitude; that altitude will still not be truly accurate due to other factors, mainly the fact that the rate of change in air pressure is also dependent on temperature. So there is another equation:

  • Find true height (altitude) $H_\text{T}$ (in feet) of an aircraft, given indicated calibrated altitude $H_\text{C}$, field height (elevation) $H_\text{F}$ of the station providing the altimeter setting, average deviation $D$ (in Celsius) from standard temperature in the column of air between the aircraft and the reporting station, and air temperature $T$ outside the aircraft: $$ H_\text{T} = H_\text{C} + D \left(\frac{ H_\text{C} - H_\text{F} }{ 273 + T } \right) $$

I am not sure what the relationship is between indicated altitude $H_\text{I}$ and calibrated altitude $H_\text{C}$, besides the fact that "calibrated" means the value has been adjusted for equipment discrepancies in the altimeter unit itself (as compared to discrepancies in meteorological conditions). It may be that we assume $H_\text{C} = H_\text{I}$. But in any case your data does not include $D$ or $T$ so the second equation is of little use, and you will have to be content with only knowing the indicated altitude.

To perform this correction after the fact, you will need to locate nearby altimeter settings that were current when the aircraft passed by for each data point in your set.

A google search for "archived METARs" resulted in this Av.SE answer which suggests OGIMET. You will have to search by station identifier rather than lat/long so the process will be quite arduous, I'm afraid. (See skyvector for some hints about which station to search for; the colored dots indicate reporting station locations.)

The piece of information you're looking for is the altimeter setting, which is the letter A followed by four digits. In the US that number represents hundredths of inches of mercury, e.g. A2992 indicates a setting of 29.92 inHg.

As for conversion between MSL and WGS84 elevation, I have no suggestions beyond another google search which led to this GIS.SE question.

  • $\begingroup$ Thanks for the input. Is there any kind of website or organization I could contact to try and get some of those "nearby altimeter settings" that hopefully were recorded near the timestamps of interest? $\endgroup$ Commented Oct 8, 2021 at 17:28
  • $\begingroup$ @SittinHawk How long ago are the flights? $\endgroup$
    – Ralph J
    Commented Oct 9, 2021 at 1:53
  • $\begingroup$ A few weeks old $\endgroup$ Commented Oct 10, 2021 at 16:55
  • $\begingroup$ @SittinHawk see my updated answer. $\endgroup$
    – randomhead
    Commented Oct 12, 2021 at 3:20
  • 1
    $\begingroup$ I would suggest that instead of nearby altimeter settings, get ahold of an isobar chart for the area on that day. Plot your course across it and you will be able to see the pressure gradients so you can interpolate as many points as you like along the route of flight. $\endgroup$ Commented Oct 13, 2021 at 4:41

The best way to obtain an accurate GPS height estimate requires a static pressure measurement on board the aircraft and an accurate atmosphere model, valid at the time of measurement.

Pressure is measured on board, but often converted to pressure altitude. If you have static pressure in your dataset, use that. If you have pressure altitude, convert it to pressure using the standard atmosphere model (see ICAO doc 7488)

Now that we have pressure, we take the atmosphere model valid at the time of measurement. This could be obtained from, for example, NOAA or ECMWF. Within the atmosphere model, typically a GRIB2 grid file, you interpolate the position, time and pressure level and obtain the geopotental height.

The interpolatation requires some thought. Linear interpolation will yield inaccurate results for geopotential height, as the variation of geopotential height with pressure is non-linear but logarithmic.

If you cannot get access to an accurate model, or can live with several hundreds of feet of error in your estimate, you can use a non-standard hydrostatic model that correct for temperature and sea level pressure instead, as is done in this answer.

Now that we have the geopotential height, we can convert to geometric height, using the formulas from ICAO DOC 7488.

The resulting geometric height is measured above mean sea level (AMSL). GPS output is typically with give as height above WGS84 ellipsoid (HAE). To convert between AMSL and HAE, you can use EGM2008.


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .