Readme for the Combined TRMM Microwave Imager (TMI) and Precipitation Radar (PR) Gridded Orbital Data Set |
Combined TMI and PR Gridded Orbital Data
- Summary
Sponsor
Future Updates
Data Set Description- Data Characteristics
Data Format- Sample Software
References
Data Access- Anonymous FTP
- Points of Contact
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.
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.
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.
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:
The mean surface rain rate R and its standard deviation s(R) within a given grid box is computed as follows:
R = SUM( Ri ) / NRIn 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.s(R) = { SUM ( Ri - R)2 / NR }0. 5
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.
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):
where:
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:
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.
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);
}
*********************************************************
[To Be Provided at a later date.]
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
DAAC Help Desk:Data Producers:
- 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)
- 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