Use cases for handling of gridded data in Metcast
Category Ingestion
Scenario 1
[Unless specified otherwise, the grids are assumed to be
regular FNMOC (uniform) lat-lon grids]
-
- Start with an empty database
-
forming a GRDValue out of lat/lon iso-time/pressure slices
- Add a global-1deg temperature grid, level pressure = 1000 mbar, ref_time=R1, valid_time=R1
- Add a global-1deg temperature grid, level pressure = 1000 mbar, ref_time=R1, valid_time=R1+3
- Add a global-1deg temperature grid, level pressure = 1000 mbar, ref_time=R1, valid_time=R1+6
- Add a global-1deg temperature grid, level pressure = 950 mbar, ref_time=R1, valid_time=R1
- Add a global-1deg temperature grid, level pressure = 950 mbar, ref_time=R1, valid_time=R1+6
Expect: all the grids above show up in the same GRDValue
-
ingesting special level grids
- Add a global-1deg temperature grid, special level Surface, ref_time=R1, valid_time=R1
- Add a global-1deg temperature grid, special level Surface, ref_time=R1, valid_time=R1
- Add a global-1deg temperature grid, special level Surface, ref_time=R1, valid_time=R1+6
Expect: Each grid is in a GRDValue by itself
-
ingesting vector-datum grids: winds [The input files are in GIEF-W format]
- Add a global-1deg wind grid, level pressure= 1000, ref_time=R1, valid_time=R1+6
- Add a global-1deg wind grid, level pressure= 950, ref_time=R1, valid_time=R1
- Add a global-1deg wind grid, level pressure= 1000, ref_time=R1, valid_time=R1
Expect: All the above grids are in a single GRDValue (with a (u,v) grid datum)
-
ingesting grids in a Lambert-Conformal (LC) projection [For the grids below, MM5 means a Lambert-conformal grid from
an MM5 or a similar meso-scale model.]
- Add a regional MM5 temperature grid, level pressure = 1000 mbar, ref_time=R1, valid_time=R1
- Add a regional MM5 temperature grid, level pressure = 1000 mbar, ref_time=R1, valid_time=R1+3
- Add a regional MM5 temperature grid, level pressure = 1000 mbar, ref_time=R1, valid_time=R1+6
- Add a regional MM5 temperature grid, level pressure = 950 mbar, ref_time=R1, valid_time=R1
- Add a regional MM5 temperature grid, level pressure = 950 mbar, ref_time=R1, valid_time=R1+6
Expect: all the grids above show up in the same GRDValue
-
ingesting grids produced by regional, high-resolution models [For the grids below, REG means a regional (e.g., COAMPS Europe) lat-lon 0.2-degree grid]
- Add a REG temperature grid, level pressure = 1000 mbar, ref_time=R1, valid_time=R1
- Add a REG temperature grid, level pressure = 1000 mbar, ref_time=R1, valid_time=R1+6
- Add a REG temperature grid, level pressure = 850 mbar, ref_time=R1, valid_time=R1
- Add a REG temperature grid, level pressure = 850 mbar, ref_time=R1, valid_time=R1+6
Expect: all the grids above show up in the same GRDValue
-
forming a GRDValue out of lat/lon iso-time/height slices
- Add a global-1deg temperature grid, level height = 2 m, ref_time=R1, valid_time=R1
- Add a global-1deg temperature grid, level height = 2 m, ref_time=R1, valid_time=R1+3
- Add a global-1deg temperature grid, level height = 102 m, ref_time=R1, valid_time=R1+6
- Add a global-1deg temperature grid, level height = 102 m, ref_time=R1, valid_time=R1
- Add a global-1deg temperature grid, level height = 2 m, ref_time=R1, valid_time=R1+6
Expect: all the grids above show up in the same GRDValue (distinct
from the other GRDValues)
-
forming a GRDValue from the data of the next model run
- Add a global-1deg temperature grid, level pressure = 1000 mbar, ref_time=R1+12, valid_time=R1+12
- Add a global-1deg temperature grid, level pressure = 1000 mbar, ref_time=R1+12, valid_time=R1+18
- Add a global-1deg temperature grid, level pressure = 950 mbar, ref_time=R1+12, valid_time=R1+12
Expect: all the grids above show up in the same GRDValue, different
from the GRDValue after form-GRDvalue-isobars
Scenario 2
-
purge obsolete grids with the reference time R1
Expect: Only the GRDValue created at the point form-GRDvalue-nextrun
should be left in the database
Source NetCDF files to run the above scenarios are available at
<http://zowie.metnet.navy.mil/~spawar/JMV-TNG/Code/Use-cases/>
Category Description
Scenario 1
-
describe the contents of the database in the MTOC or a similar format
Expect: Regardless of the format, the description should contain:
- all parameters (with human-readable names, e.g., Temperature)
- all levels
- all time slices (a time slice is characterized by a pair
ref_time, valid_time)
- all data sources (center/subcenter ids)
- all models
- the bounding box and the resolution (in degrees and km) for each GRDValue
Category Query
Scenario 1
Get everything we have put in, in the GIEF (NetCDF) form [The output grids are assumed to be (uniform) lat-lon grids.]
-
-
requesting single-value grids, with no transformations
- Get a global-1deg temperature grid level 1000 mbar valid at R1
- Get a global-1deg temperature grid level 950 mbar valid at R1
- Get a global-1deg temperature grid level 950 mbar valid at R1+6
- Get a global-1deg temperature grid level between 950-1013 mbars valid at R1+6
- Get a regional temperature grid level 1000 mbar valid at R1+3
- Get a global-1deg temperature grid level 2000 m valid at R1
- Get a global-1deg temperature grid level 2000 m valid at R1+6
- Get a global-1deg temperature grid level 1000 mbar valid at R1+12
- Get a global-1deg temperature grid level 1000 mbar valid at R1+18
Expect: all queries must succeed. The received grids must be equivalent to the input grids.
-
requesting winds, with no transformations
- Get a global-1deg wind grid, level 1000 mbar valid at R1
- Get a global-1deg wind grid, level 1000 mbar valid at R1+6
- Get a global-1deg wind grid, level 950 mbar valid at R1
- Get a global-1deg wind grid, level 950 mbar valid at R1+6
Expect: all queries must succeed. The resulting GIEF files must have (u,v) grid data.
-
requesting grids that were put in a Lambert-Conformal (LC) projection [For the grids below, MM5 means a Lambert-conformal grid from
an MM5 or a similar meso-scale model.]
- Get an MM5 temperature grid, level 1000 mbar valid at R1
- Get an MM5 temperature grid, level 1000 mbar valid at R1+6
Expect: all queries must succeed. The resulting GIEF files must be in uniform lat/lon coordinates.
-
requesting non-existent grids, with no transformations
- Get a global-1deg temperature grid level 1000 mbar valid at R1-6
- Get a global-1deg temperature grid level 1013 mbar valid at R1
- Get a global-1deg xxxxx grid level 1000 mbar valid at R1
- Get a xxxx temperature grid level 1000 mbar valid at R1
- Get a global-1deg temperature grid level between 800-1013 mbars valid at R1+6
- Get a global-1deg temperature grid level between 1000-2000 m valid at R1
- Get a global-1deg temperature grid level sigma 0.5 valid at R1
Expect: all queries must return the empty result.
Scenario 2
Get everything we have put in, in the GRIB form [The output grids are assumed to be (uniform) lat-lon grids.]
-
- Run the scenario from the point q1-init
forward. All requests should explicitly set the desired output format to GRIB.
Expect: All the queries that succeeded in that scenario must succeed here -- with the sole exception of requests for wind data. The output GRIB files must be equivalent to the ones that were ingested into the database. Because non-scalar grid data cannot be represented in GRIB, the requests for wind data in the GRIB format may fail and return an error.
Scenario 3
Modified-since queries [The output grids are assumed to be (uniform) lat-lon grids, in GIEF (NetCDF) format.]
-
- Run the scenario from the point q1-init
forward. All requests should explicitly ask for data modified since the time moment form-GRDvalue-nextrun
grids were inserted
Expect: Only those grids that were inserted at form-GRDvalue-nextrun
should be returned.
Scenario 4
Requests for parts of the original grid [The output grids are assumed to be (uniform) lat-lon grids, in GIEF (NetCDF) format.]
-
-
requesting a subgrid of a global single-value grid. The area of interest is a georectangle lat1 through lat2, lon1 through lon2, where lon2>lon1. The area of interest does not intersect the International Date line.
- Get a global-1deg temperature grid level 1000 mbar valid at R1
- Get a global-1deg temperature grid level 950 mbar valid at R1
- Get a global-1deg temperature grid level between 950-1013 mbars valid at R1+6
- Get a global-1deg temperature grid level 2000 m valid at R1
- Get a global-1deg temperature grid level 1000 mbar valid at R1+12
Expect: all queries must succeed. The received grids must cover (but not exceed) the area of interest.
-
requesting a subgrid of a global single-value grid. The area of interest is a georectangle lat1 through lat2, lon1 through lon2, where lon2<lon1. The area of interest does
intersect the International Date line.
- Get a global-1deg temperature grid level 1000 mbar valid at R1
- Get a global-1deg temperature grid level 950 mbar valid at R1+6
- Get a global-1deg temperature grid level between 950-1013 mbars valid at R1
- Get a global-1deg temperature grid level 2000 m valid at R1
- Get a global-1deg temperature grid level 1000 mbar valid at R1+18
Expect: all queries must succeed. The received grids must cover (but not exceed) the area of interest.
-
requesting a subgrid of a regional single-value grid. The area of interest is a georectangle lat1 through lat2, lon1 through lon2. The area of interest is within the bounding box of the original grid.
- Get a regional temperature grid level 1000 mbar valid at R1
- Get a regional temperature grid level 1000 mbar valid at R1+3
Expect: all queries must succeed. The received grids must cover (but not exceed) the area of interest.
-
requesting a subgrid of a regional single-value grid. The area of interest is a georectangle lat1 through lat2, lon1 through lon2. The area of interest overlaps (but is not within) the bounding box of the original grid.
- Get a regional temperature grid level 1000 mbar valid at R1
- Get a regional temperature grid level 950 mbar valid at R1+6
Expect: all queries must succeed. The received grids must cover (but not exceed) the area of interest.
-
requesting a subgrid of a regional single-value grid. The area of interest is a georectangle lat1 through lat2, lon1 through lon2. The area of interest does not intersect the bounding box of the original grid.
- Get a regional temperature grid level 1000 mbar valid at R1
- Get a regional temperature grid level 1000 mbar valid at R1+3
Expect: all queries must return the empty result.
Scenario 5
Queries for grids produced by a specific originator (e.g., FNMOC), by model-name, model-id, grid-id
Scenario 6
Closest-valid-time queries
Scenario 7
Time-interpolation queries
Scenario 8
Subsampling/oversampling grid queries (queries for grids with different resolution)
Scenario 9
Requesting a 'post'
Scenario 10
Requesting a 'post' in XML (JMGRIB) format
Scenario 11
Requesting grids in Mercator, LC and Polar-Stereographic projections
Scenario 12
3D (lat,lon,z) grid requests
Scenario 13
3D (lat,lon,time) grid requests
Scenario 14
4D-grid requests
Scenario 15
Requests for slanted sections of the 4D Cube
Scenario 16
Requesting a number of geographically separated points and returning the parameter/value pairs in XML (JMGRIB)
[To be continued]
Last updated July 31, 2002
Converted from SXML by SXML->HTML
$Id: Grid-use-cases.scm,v 1.5 2002/10/19 03:08:59 oleg Exp oleg $