Since the CF-conventions only provide limited support for trajectory data (in particular no ensemble dimension), we’re currently using a custom NetCDF layout that follows the CF-versions. There are a few limitations:
- There is only one time dimension per NetCDF file, which corresponds to the time of the particle positions along the trajectories. If you have a series of trajectory bundles started at different times (i.e., a bundle of trajectories for each forecast time step as used for WCB detection), you need one NetCDF file per trajectory bundle.
The following example contains a NetCDF header of a file containing an ensemble forecast on pressure levels:
netcdf sometrajectorydata { dimensions: time = 17 ; trajectory = 215332 ; ensemble = 51 ; start_lon = 101 ; start_lat = 41 ; start_isobaric = 52 ; time_interval = 8 ; variables: double time(time) ; time:standard_name = "time" ; time:long_name = "time" ; time:units = "hours since 2012-10-19 06:00:00" ; time:trajectory_starttime = "2012-10-19 06:00:00" ; time:forecast_inittime = "2012-10-17 00:00:00" ; float lon(ensemble, trajectory, time) ; lon:standard_name = "longitude" ; lon:long_name = "longitude" ; lon:units = "degrees_east" ; float lat(ensemble, trajectory, time) ; lat:standard_name = "latitude" ; lat:long_name = "latitude" ; lat:units = "degrees_north" ; float pressure(ensemble, trajectory, time) ; pressure:standard_name = "air_pressure" ; pressure:long_name = "pressure" ; pressure:units = "hPa" ; pressure:positive = "down" ; pressure:axis = "Z" ; float start_lon(start_lon) ; start_lon:long_name = "longitude of start grid" ; start_lon:units = "degrees_east" ; float start_lat(start_lat) ; start_lat:long_name = "latitude of start grid" ; start_lat:units = "degrees_north" ; float start_isobaric(start_isobaric) ; start_isobaric:long_name = "Isobaric surface of start grid" ; start_isobaric:units = "hPa" ; start_isobaric:positive = "down" ; start_isobaric:axistype = "pressure levels" ; float time_interval(time_interval) ; time_interval:long_name = "time interval" ; time_interval:units = "hours" ; float delta_pressure_per_time_interval(ensemble, trajectory, time_interval) ; delta_pressure_per_time_interval:long_name = "max. delta pressure of trajectory in time interval around start time" ; delta_pressure_per_time_interval:units = "hPa" ; }
- In addition to the air parcel time, Met.3D requires the two time attributes
trajectory_starttime
andforecast_inittime
that define the time at which the trajectory was started, as well as the forecast initialisation/base time of the forecast data on which the trajectory was computed. - The
start_lon
,start_lat
andstart_isobaric
variables are optional and define the grid from which the trajectory bundle was started (used for WCB detection). - Similarly, the
time_interval
anddelta_pressure_per_time_interval
variables are optional and define pre-computed values for WCB detection. Contact us if you’re interested.