<p>I have two solutions.</p>
<ol>
<li>Use <a href="https://unidata.github.io/MetPy/latest/api/generated/metpy.calc.geopotential_to_height.html?highlight=height#metpy.calc.geopotential_to_height" rel="nofollow noreferrer">MetPy</a> to calculate the height from the geopotential height.</li>
<li>Use the <a href="https://en.wikipedia.org/wiki/Hypsometric_equation" rel="nofollow noreferrer">hypsometric equation</a>, averaging the temperature below the level.</li>
</ol>

CC BY-SA 4.0
2020-10-12T15:51:31.980Z
2020-10-12T15:51:31.980Z
BarocliniCplusplus
<p>If I understood the question right:
<a href="https://code.mpimet.mpg.de/projects/cdo/embedded/index.html#x1-6630002.12.10" rel="nofollow noreferrer">CDO</a> can interpolate from model level to height level with the operator</p>
<blockquote>
<p>ml2hl infile.nc outfile.nc</p>
</blockquote>
<p>additionally, for the lower atmospheric levels, you can add an extrapolation option.
BUT I don't recommend it since its extrapolation performance is questionable.</p>

CC BY-SA 4.0
2020-10-11T23:26:58.093Z
2020-10-11T23:26:58.093Z
ahmathelte
<p>This seems like a really simple question, but I have been struggling for a couple of days to find an answer online or in the ERA documentation.</p>

<p>I am using ERA5 and ERA Interim reanalyses to get atmospheric profiles for a model I am running.
However, the model requires values to be given at fixed values of altitude (above sea level) (it is a rectangular grid 60x60x60 km).</p>

<p>The data I get from ERA (downloaded using the python script API they suggest) gives me data on either pressure level or model level. I can get geopotential as a variable, but there is no option for 'real-world' height.</p>

<p>So my question is how do I calculate the 'real' altitude of each level?</p>

<p>I initially tried dividing geopotential by 9.81, but I'm not sure that's quite right, as geopotential is an integral of g.
Alternatively should I be using the values in the tables <a href="https://www.ecmwf.int/en/forecasts/documentation-and-support/60-model-levels" rel="noreferrer">here</a>, and if so why are they not provided as an option of a variable or coordinate when downloading the data?</p>

<p>Apologies in advance if this is a silly question with a simple answer and thanks for your help.</p>

<reanalysis><era><coordinate-system>
How to calculate 'real-world' geometric height from ERA reanalysis data
FluidFox
# How to calculate 'real-world' geometric height from ERA reanalysis data

(Asked by: username_0 on 2020-04-30)

This seems like a really simple question, but I have been struggling for a couple of days to find an answer online or in the ERA documentation.

I am using ERA5 and ERA Interim reanalyses to get atmospheric profiles for a model I am running.
However, the model requires values to be given at fixed values of altitude (above sea level) (it is a rectangular grid 60x60x60 km).

The data I get from ERA (downloaded using the python script API they suggest) gives me data on either pressure level or model level. I can get geopotential as a variable, but there is no option for 'real-world' height.

So my question is how do I calculate the 'real' altitude of each level?

I initially tried dividing geopotential by 9.81, but I'm not sure that's quite right, as geopotential is an integral of g.
Alternatively should I be using the values in the tables [here](https://www.ecmwf.int/en/forecasts/documentation-and-support/60-model-levels), and if so why are they not provided as an option of a variable or coordinate when downloading the data?

Apologies in advance if this is a silly question with a simple answer and thanks for your help.

**Tags:** reanalysis, era, coordinate-system


---

## 2 answers

### Answer by username_1 on 2020-10-12. Score: 2

I have two solutions.

1. Use [MetPy](https://unidata.github.io/MetPy/latest/api/generated/metpy.calc.geopotential_to_height.html?highlight=height#metpy.calc.geopotential_to_height) to calculate the height from the geopotential height.
2. Use the [hypsometric equation](https://en.wikipedia.org/wiki/Hypsometric_equation), averaging the temperature below the level.


---

### Answer by username_2 on 2020-10-11. Score: 1

If I understood the question right:
[CDO](https://code.mpimet.mpg.de/projects/cdo/embedded/index.html#x1-6630002.12.10) can interpolate from model level to height level with the operator

> ml2hl infile.nc outfile.nc

additionally, for the lower atmospheric levels, you can add an extrapolation option.
BUT I don't recommend it since its extrapolation performance is questionable.


---

