⇐ ⇒

[CF-metadata] CF Section 5.3 "Reduced Horizontal Grid" and Section 8.2 "compression by gathering" somewhat inconsistent

From: John Caron <caron>
Date: Sat, 11 Oct 2008 15:45:41 -0600

CF Section 8.2 compression by gathering has this example:

dimensions:
  lat=73;
  lon=96;
  landpoint=2381;
  depth=4;

variables:
  int landpoint(landpoint);
    landpoint:compress="lat lon";
  float landsoilt(depth,landpoint);
    landsoilt:long_name="soil temperature";
    landsoilt:units="K";
  float depth(depth);
  float lat(lat);
  float lon(lon);

data:
  landpoint=363, 364, 365, ...;


However, CF Section 5.3 "Reduced Horizontal Grid" has a different example of Compression by Gathering:

"A "reduced" longitude-latitude grid is one in which the points are arranged along constant latitude lines with the number of points on a latitude line decreasing toward the poles. Storing this type of gridded data in two-dimensional arrays wastes space, and results in the presence of missing values in the 2D coordinate variables."

Example 5.3. Reduced horizontal grid

dimensions:
  londim = 128 ;
  latdim = 64 ;
  rgrid = 6144 ;
variables:
  float PS(rgrid) ;
    PS:long_name = "surface pressure" ;
    PS:units = "Pa" ;
    PS:coordinates = "lon lat" ;
  float lon(rgrid) ;
    lon:long_name = "longitude" ;
    lon:units = "degrees_east" ;
  float lat(rgrid) ;
    lat:long_name = "latitude" ;
    lat:units = "degrees_north" ;
  int rgrid(rgrid);
    rgrid:compress = "latdim londim";

note:
  float lon(rgrid);
  float lat(rgrid);

instead of:
  float lat(lat);
  float lon(lon);

I believe CF is trying to deal with 2D lat lon coordinates here, whereas in 8.2, it had 1D coordinates. Actually i think the common case for reduced grids is 1D latitude coordinates and variable length 2D longitide coordinates (eg reduced Gaussian Grids). So probably the example should be

dimensions:
  londim = 128 ;
  lat = 64 ;
  rgrid = 6144 ;
variables:
  float PS(rgrid) ;
    PS:long_name = "surface pressure" ;
    PS:units = "Pa" ;
    PS:coordinates = "lon lat" ;
  float lon(rgrid) ;
    lon:long_name = "longitude" ;
    lon:units = "degrees_east" ;
  float lat(lat) ;
    lat:long_name = "latitude" ;
    lat:units = "degrees_north" ;
  int rgrid(rgrid);
    rgrid:compress = "lat londim";

Its also probably worth adding into 8.3 the use of coordinates:

  float data(depth, cindex);
    data:coordinates = "lon lat" ;

We havent really described the general use of this "compression by gathering" technique. Does anyone have any example files using this? Should we deprecate? generalize?


      
Received on Sat Oct 11 2008 - 15:45:41 BST

This archive was generated by hypermail 2.3.0 : Tue Sep 13 2022 - 23:02:40 BST

⇐ ⇒