Readme for the Combined TRMM Microwave Imager (TMI) and Precipitation Radar (PR) Gridded Orbital Data Set 

Data Access for
Combined TRMM Microwave Imager (TMI) and Precipitation Radar (PR) Gridded Orbital Data Set

Combined TMI and PR Gridded Orbital Data

Contents of the
Combined TRMM Microwave Imager (TMI) and Precipitation Radar (PR) Gridded Orbital Data Set Readme

Summary

Sponsor
Future Updates
Data Set Description
Data Characteristics

Data Format
Sample Software

References
Data Access
Anonymous FTP
Points of Contact

Summary

This document provides a general description of the Combined TRMM Microwave Imager (TMI) and Precipitation Radar (PR) gridded orbital rainfall data, a special product derived from the TRMM standard product (2B-31) TMI and PR combined and mapped to a 0.1 degree x 0.1 degree latitude/longitude grid. The spatial coverage is defined by a 220 km swath bounded by the latitudes 38 degree N and 38 degree S for a single satellite orbit. The parameters included in this data set include the mean, standard deviation, and number of samples of the surface rain rate. The document also provides the information necessary to readily access and interpret the parameters stored in the files.

This product is produced by the Hydrology Data Support Team of the Goddard Distributed Active Archive Center (GDAAC) with inputs from members of the TRMM Science Team. Questions about reading and accessing these files should be directed to hydrology@daac.gsfc.nasa.gov.

Sponsor

The distribution of this data set is being funded by NASA's Earth Science Enterprise. The data are not copyrighted; however, we request that when you publish data or results using these data, please acknowledge as follows:

The authors wish to thank the Distributed Active Archive Center (Code 902) at the Goddard Space Flight Center, Greenbelt, MD, 20771, for producing and distributing the data; and the TRMM Science Data and Information System at the Goddard Space Flight Center for providing the original data from which this product originates. Goddard's contribution to these activities was sponsored by NASA's Earth Science Enterprise.

Future Updates

The Goddard DAAC will update this data set as new data are processed and made available by the data producers, or as previous data are reprocessed and submitted to the DAAC for archival.

Data Set Description

Further information on the contents and structure of the TMI 2B-31 product can be found in Volume 4 of the "File Specifications for TSDIS Products - Level 2 and Level 3" (PDF document).
The Combined TRMM Microwave Imager (TMI) and Precipitation Radar (PR) product contains vertical hydrometeor profiles, using data from the PR and the 10 GHz channels of the TMI.

There is one parameter in the gridded orbital data set:

This parameter is reported over both land and sea. The mean and standard deviation for a grid box are included as well as the number of rays. The mean surface rain rate of a grid box is the average over all rays.

The mean surface rain rate R and its standard deviation s(R) within a given grid box is computed as follows:

R = SUM( Ri ) / NR

s(R) = { SUM ( Ri - R)2 / NR }0. 5

In the above equations, Ri is the surface rain rate for ray i of the original orbital data, NR is the total number of rays for a grid box, and the sum is over all rays.

Data Characteristics

This data set contains a single orbit of Combined TMI and PR orbital parameters mapped to a 0.1 x 0.1 degree latitude-longitude grid. The latitudinal limits of the orbital swath are 38 degree N to 38 degree S, since the TRMM satellite has an inclination of 35 degrees. Because the spatial resolution of the Combined TMI and PR data is about 5 km, the maximum number of samples per grid box in the gridded orbital data is about nine. The metadata applicable to each orbit of data are contained in a header record in the file ordered as follows:

HEADER RECORD CONTENTS

Variable Description Units Data Type
1 Algorithm ID - 8 characters
2 Region Name - 40 characters
3 Header record length - 4 byte integer
4 Data record length - 4 byte integer
5 Number of grid boxes with rain NGR - 4 byte integer
6 Orbit number - 4 byte integer
7 Orbit start date yyyymmdd 4 byte integer
8 Orbit end date yyyymmdd 4 byte integer
9 Orbit start time hhmmss 4 byte integer
10 Orbit end time hhmmss 4 byte integer
11 Longitude of maximum latitude degrees 4 byte float
12-17 Grid constants degrees 4 byte float
18 Maximum 2B-31 rain rate mm/hr 4 byte float
19 Latitude(max 2B-31 rain rate) degrees 4 byte float
20 Longitude(max 2B-31 rain rate) degrees 4 byte float
21 Maximum gridded rain rate mm/hr 4 byte float
22 Center latitude(max gridded rain rate) degrees 4 byte float
23 Center longitude(max gridded rain rate) degrees 4 byte float
24-25 Spares - 4 byte float

The grid constants (variables 12-17) include the starting latitude and longitude of the gridded output (-39.95 and -179.95 degrees, respectively), the ending latitude and longitude of the gridded output (39.95 and 179.95 degrees, respectively), as well as the latitudinal and longitudinal increments (0.1 and 0.1 degree, respectively). The spares (variables 24-25) pad the header out to the same record length as the data record length multiplied by seven.

The geolocation, time stamp, land sea index and parameter statistics for each grid box are contained in data records structured as follows:

DATA RECORD CONTENTS

Variable Description Units Data Type
1 Center latitude of grid box deg * 100 2 byte integer
2 Center longitude of grid box deg * 100 2 byte integer
3 Time stamp for grid box ddhhmmss 4 byte integer
4 Land sea index - 2 byte integer
5 Number of ray in box NR - 2 byte integer
6 Surface rain rate R mm/hr * 100 4 byte integer
7 Standard deviation of 
surface rain rate s(R)
mm/hr * 100 4 byte integer

The time stamp for a particular grid box is the time stamp of the last ray included in that box (in the original 2B-31 data file, a time stamp is assigned on a per-scan, rather than a per-ray, basis). The land sea index has values of 1 or 0, depending on whether the center of a grid box is over land or ocean, respectively. The parameter statistics are scaled by a factor of 100 to provide 2-decimal accuracy when stored as 16-bit or 32-bit integers. Thus, for proper interpretation of the data, these values must be descaled by 100 when reading the file.

Data Format

These data are stored as IEEE binary with record length of 20 bytes (five 4-byte words). The total number of data content records in each file is determined by the first variable in the header record (see Header Record table above):

Nrec = 7 + NGR

where:

record 1-7 : header
record 8 : data record for first grid box
:
record NGR + 7 : data record for last grid box

The progression is such that the data for the southwesternmost grid box are reported first, and the data for the northeasternmost grid box are reported last. Thus, the central coordinates of the first box are (39.95 S, 179.95 W) and those of the last box are (39.95 N, 179.95 E), provided that at least one ray in the original 2B-31 orbital file falls within these boxes.

A typical file size is about 1.55 MB.

The file naming convention for the Combined TMI and PR Gridded Orbital data set conforms to the file naming convention for the standard TRMM data products, with slight modifications:

G2B31.yymmdd.n.v.BIN

where:

G = Gridded
2B31 = TRMM algorithm ID for original orbital data product
yy = 2 digit year
mm = month number
dd = day of month
n = orbit number
v = data product version number for 2B-31 product
BIN = Binary

As an example, the file G2B31.971228.475.1.BIN refers to the Gridded Orbital data product generated from the standard TRMM product, 2B31.971228.475.1.HDF, collected on December 28, 1997 for orbit number 475, and distributed as the first version of the product.

Sample Software

Example programs in FORTRAN and C to read the Combined TMI and PR G2B31 data set are shown below. The programs were developed and tested on a Silicon Graphics machine running the IRIX operating system. You may have to make some minor modifications to the programs in order to run them on different machines (e.g., record length keyword "recl" may need to be expressed in terms of bytes rather than 4-byte words in the FORTRAN program, depending on the machine).
SAMPLE READ PROGRAM IN FORTRAN:
----------------------------

c ************************************************************************
c *
c * Program Name:
c * ------------
c *    ReadG2B31.f
c *
c * Description:
c * -----------
c *       This sample fortran program shows how to read a gridded 2B31
c *       binary file.
c *
c *  Date                 Author Name         Change Description
c *  -----------          ------------        ------------------
c *  08-Dec-1998          Hualan Rui           Created
c *
c ***********************************************************************

      character*120 file_in
      INTEGER*4 n, nmax

c  Structure for G2B31 header record
c  ------------------------------------
      STRUCTURE /G2B31_HEADER/
         character*8  algID
         character*40 region
         INTEGER*4    head_len
         INTEGER*4    rec_len
         INTEGER*4    totBoxes
         INTEGER*4    orbitNumber
         INTEGER*4    beginDate
         INTEGER*4    endDate
         INTEGER*4    beginTime
         INTEGER*4    endTime
         REAL*4       lonMaxLat
         REAL*4       lat0
         REAL*4       lon0
         REAL*4       late
         REAL*4       lone
         REAL*4       dlat
         REAL*4       dlon
         REAL*4       RainMax
         REAL*4       RainMaxLat
         REAL*4       RainMaxLon
         REAL*4       BoxRainMax
         REAL*4       BoxRainMaxLat
         REAL*4       BoxRainMaxLon
         REAL*4       dummy(2)
      END STRUCTURE

c  Structure for G2B31 data record
c  -------------------------------------------
      STRUCTURE /G2B31_STNREC/
         INTEGER*2  lat
         INTEGER*2  lon
         INTEGER*4  dayntime
         INTEGER*2  landsea
         INTEGER*2  totRay
         INTEGER*4  rrSurf
         INTEGER*4  std_rrSurf
      END STRUCTURE

      RECORD /G2B31_HEADER/ header
      RECORD /G2B31_STNREC/ stn

c Read input file name which should be in your local system
c ---------------------------------------------------------
      print *, 'Enter data file name (with double quotes) : '
      read(5,*) file_in
      write(6, '(A10,A80)') 'file_in = ', file_in

c Open input file with record length equal to header record length,
c which is 35 words. Then read the header record and close the file.
c -----------------------------------------------------------------
      open(10,file=file_in,access='DIRECT',err=900,status='OLD',recl=35)
      read(10, rec=1, err=910, end=500) header
      close(10)

c  Print header information
c  -------------------------
      write(6,*) 'HEADER INFORMATION For G2B31: '
      write(6,'(A20,A8)')    'algID        = ',header.algID
      write(6,'(A20,A40)')   'region       = ',header.region
      write(6,'(A20,I6)')    'head_len     = ',header.head_len
      write(6,'(A20,I6)')    'rec_len      = ',header.rec_len
      write(6,'(A20,I9)')    'Total Points = ',header.totBoxes
      write(6,'(A20, I9)')   'OrbitNumber  = ',header.orbitNumber
      write(6,'(A20, I9)')   'Begin Date   = ',header.beginDate
      write(6,'(A20, I9)')   'End Date     = ',header.endDate
      write(6,'(A20, I9.6)') 'Begin Time   = ',header.beginTime
      write(6,'(A20, I9.6)') 'End Time     = ',header.endTime
      write(6,'(A20, f9.3)') 'LonMaxLat    = ',header.lonMaxLat
      write(6,'(A20, f9.2)') 'Start Lat    = ',header.lat0
      write(6,'(A20, f9.2)') 'Start Lon    = ',header.lon0
      write(6,'(A20, f9.2)') 'End Lat      = ',header.late
      write(6,'(A20, f9.2)') 'End Lon      = ',header.lone
      write(6,'(A20, f9.2)') 'Dlat         = ',header.dlat
      write(6,'(A20, f9.2)') 'Dlon         = ',header.dlon
      write(6,'(A20, f9.2)') 'Rain Max     = ',header.RainMax
      write(6,'(A20, f9.3)') 'Max Rain Lat = ',header.RainMaxLat
      write(6,'(A20, f9.3)') 'Max Rain Lon = ',header.RainMaxLon
      write(6,'(A20, f9.3)') 'BoxRainMax   = ',header.boxRainMax
      write(6,'(A20, f9.3)') 'BoxRainMaxLat= ',header.boxRainMaxLat
      write(6,'(A20, f9.3)') 'BoxRainMaxLon= ',header.boxRainMaxLon

c Open input file again with record length equal to data record length,
c which is 5 words. Then loop to read the data records.
c ---------------------------------------------------------------------
      open(10,file=file_in,access='DIRECT',err=900,status='OLD',recl=5)
      nmax = header.totBoxes
      do 100 n=1,nmax
         nrec = n+7
         read(10, rec=nrec, err=910, end=500) stn


c        Print some variables for checking.   Here is the place
c        to insert your own code to deal with the data.
c        -------------------------------------------------------
         write(6,'(I6,2I8,I10,2I6,2I5)') n, stn.lat, stn.lon,
     $          stn.dayntime, stn.landsea, stn.totRay,
     $          stn.rrSurf,stn.std_rrSurf

 100  continue
      stop

 500  write(6,*)'Hit end-of-file'
      stop 0

 900  call perror('Error opening dataset')
      stop 2

 910  call perror('Error reading dataset')
      stop 4
      end


SAMPLE READ PROGRAM in C:
---------------------------

/***********************************************************************
*
* Program Name:
* ------------
*    ReadG2B31.c
*
* Description:
* -----------
*       This sample C program shows how to read a gridded 2B31
*       binary file.
*
*  Date                 Author Name         Change Description
*  -----------          ------------        ------------------
*  Dec-10-1998          Hualan Rui           Created
*
***********************************************************************/

#include <stdio.h>

typedef short int         int16;
typedef long int          int32;

/* Parameters and structure defined for L2B31 gridded data.              */
/* ------------------------------------------------------------------- */
#define L2B31_KMAX    14
#define L2B31_SPVAL   -999.0

/* Structure for Gridded 2B31 header record                            */
/* ------------------------------------------------------------------- */

typedef struct
{
  char    algID[8];
  char    region[40];
  int     head_len;
  int     rec_len;
  int     totBoxes;
  int     orbitNumber;
  int     beginDate;
  int     endDate;
  int     beginTime;
  int     endTime;
  float   lonMaxLat;
  float   lat0;
  float   lon0;
  float   late;
  float   lone;
  float   dlat;
  float   dlon;
  float   RainMax;
  float   RainMaxLat;
  float   RainMaxLon;
  float   BoxRainMax;
  float   BoxRainMaxLat;
  float   BoxRainMaxLon;
  float   dummy[2];
} G2B31_HEADER;

/* Structure for Gridded 2B31 data record                              */
/* ------------------------------------------------------------------- */
typedef struct
{
     int16   lat;
     int16   lon;
     int32   dayntime;
     int16   landsea;
     int16   totRay;
     int32  rrSurf;
     int32  std_rrSurf;
}  G2B31_STNREC;

/* Main program                                                    */
/* --------------------------------------------------------------- */
void main(int argc, char* argv[] )
{
  char file_in[80];
  FILE *fptr;
  int n,k, nmax;

  G2B31_HEADER header;
  G2B31_STNREC stn;

  if ( argc > 1 ) {
    strcpy(file_in, argv[1]);
    printf("file_in=%s\n",file_in);
  } else {
    printf ("Usage: One command line argument is needed,\n");
    printf ("       which should be input file name.\n");
    exit(1);
  }

  if (  (fptr=fopen(file_in,"rb")) == NULL) {
     printf ("ERROR: Cannot open file %s.\n", file_in);
     exit(1);
  }

  fread(&header, sizeof(G2B31_HEADER), 1, fptr);/* read the header */

  /* Print header information                                      */
  /* ------------------------------------------------------------- */
  printf("Algorithm ID:       %s\n",header.algID);
  printf("Header Length:     %d\n",header.head_len);
  printf("Record Length:     %d\n",header.rec_len);
  printf("Total Points:      %d\n",header.totBoxes);
  printf("Orbit Number:      %d\n",header.orbitNumber);
  printf("Begin Date & Time: %d %6.6d\n",
                             header.beginDate,header.beginTime);
  printf("End Date and Time: %d %6.6d\n",
                             header.endDate,header.endTime);
  printf("lonMaxlat:         %-9.3f\n",header.lonMaxLat);
  printf("Area:              %10.3f,%10.3f, %10.3f, %10.3f\n",
                             header.lat0,header.lon0,
                             header.late,header.lone);
  printf("Resolution:        %10.3f,%10.3f\n",
                             header.dlat,header.dlon);
  printf("RainMax:           %-f, at (%f, %f) \n",header.RainMax,
                             header.RainMaxLat, header.RainMaxLon);
  printf("BoxRainMax:        %-f, at (%f, %f) \n",header.BoxRainMax,
                             header.BoxRainMaxLat, header.BoxRainMaxLon);

  /* Print data records                                            */
  /* ------------------------------------------------------------- */
  nmax = header.totBoxes;
  printf("\n\n");
  for (n=1; n<=nmax; n++) {
      fread(&stn, sizeof(G2B31_STNREC), 1, fptr);/* read nth record */

      /*  Print the variables for your checking.  Here is the place */
      /*  to insert your own code to save the data for each grid.   */
      /*  --------------------------------------------------------  */
      printf("%8d %8d %8d %8d %4d %8d %8d %8d\n", n, stn.lat, stn.lon,
              stn.dayntime, stn.landsea, stn.totRay, stn.rrSurf,
              stn.std_rrSurf);
  }
  close (fptr);
}

*********************************************************

References

[To Be Provided at a later date.]

"Data Access"

The Combined TMI and PR Gridded Orbital data set is available online via the Goddard DAAC's anonymous FTP server. In the future, the data will be ingested into the DAAC's nearline tape jukebox. It will then be available to users by tape or FTP pickup through the DAAC search-and-order interface available on the World Wide Web..

Anonymous FTP
The TRMM Combined TMI and PR Gridded Orbital data set may be accessed either directly from this document,

Combined TMI and PR Gridded Orbital Data

or via anonymous FTP at
ftp://disc2.nascom.nasa.gov/data/s4pa/
login: anonymous
password: < your internet address >
cd /data/TRMM/Gridded/G2B31

Points of Contact

DAAC Help Desk:
For information about or assistance in using any DAAC data, contact the DAAC Help Desk at:

EOS Distributed Active Archive Center (DAAC)
Code 902
NASA Goddard Space Flight Center
Greenbelt, Maryland 20771

Email: daacuso@daac.gsfc.nasa.gov
301-614-5224 (voice)
301-614-5268 (fax)
Data Producers:
The Principal Investigator for the original Combined TMI and PR 2B31 data set is:

Dr. Christian Kummerow
Laboratory for Atmospheres / Code 912
NASA Goddard Space Flight Center
Greenbelt, Maryland 20771

Email: kummerow@audrey.gsfc.nasa.gov
301-286-6299 (voice)
301-286-1762 (fax)

The producer of the Combined TMI and PR gridded 2B31 product is:

Goddard DAAC Hydrology Data Support Team
Distributed Active Archive Center / Code 902
NASA Goddard Space Flight Center
Greenbelt, Maryland 20771

Email: hydrology@daac.gsfc.nasa.gov

Privacy, Security, Notices 

NASA Home Page | DAAC Home Page | GCMD Home Page Precipitation Home Page |   Data Order Home Page


Goddard DAAC Help Desk: 301-614-5224 or 1-877-422-1222 -- daacuso@disc.gsfc.nasa.gov
NASA Official: Steve Kempler, DAAC Manager -- Steven.J.Kempler@nasa.gov
Last updated: 2005-11-13 01:22:20