Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Info

Full documentation on NetCDF functionality in Metview is here.

Setup

Navigate into the 4_netcdf folder within Metview where you will find some data files and other icons.

...

You will need to tell Metview how to visualise this data, as there are multiple variables. Create a new NetCDF Visualiser icon, edit it and set the following parameters:

ParameterValue
Netcdf DataDrop the era5_2000_aug.nc icon into this box
Netcdf Plot TypeGeomatrix
Netcdf Latitude Variablelatitude
Netcdf Longitude Variablelongitude
Netcdf Value Variablet2m

Save the icon and visualise it. For fun, drop the supplied icons contour_t2m and mollweide into the plot window to obtain the following:

...

Examine the file madis-maritime.nc. We will plot the temperature variable. As you can see, there are 1-dimensional variables for temperature, latitude and longitude. Create a copy of your previous NetCDF Visualiser icon and edit it as follows:

ParameterValue
Netcdf DataRight-click/remove the existing netCDF file from there, then drop madis-maritime.nc into this box
Netcdf Plot TypeGeo Points
Netcdf Latitude Variablelatitude
Netcdf Longitude Variablelongitude
Netcdf Value Variabletemperature

Visualise it to get a default plot. In the solutions folder is a script called gallery_example_nc_maritime_obs.py, which converts from Kelvin to Celcius and adds some stying to the plot (generated as PDF - simply remove the mv.setoutput() command to get an on-screen visualisation).

Extract data and convert to pandas

Have a look in the solutions folder and edit and run the script netcdf_to_pandas.py. This shows how to extract some metadata from the previous netCDF file, and also some value arrays and convert into a pandas dataframe. The code is also here:

Code Block
languagepy
collapsetrue
import metview as mv
import pandas as pd

nc = mv.read("madis-maritime.nc")

# print some global fields
print('Variables: \n', nc.variables())
print('Global attributes: \n', nc.global_attributes())

# extract certain variables - setcurrent() followed by values()
nc.setcurrent('latitude')
lats = nc.values()
nc.setcurrent('longitude')
lons = nc.values()
nc.setcurrent('temperature')
temps = nc.values()
print('temperature attributes: \n', nc.attributes())

# create a dictionary in order to convert to pandas
pddict = {'latitude'    : lats,
          'longitude'   : lons,
          'temperature' : temps}

df = pd.DataFrame(pddict)
print('Dataframe: \n', df)
print('temperature describe: \n', df.temperature.describe())