Readme for the Visible/Infrared Scanner (VIRS) Radiance Gridded Orbital Data Set

Data Access for the
Visible/Infrared Scanner (VIRS) Radiance Gridded Orbital Data Set

VIRS Radiance Gridded Orbital Data

Contents of the
Visible/Infrared Scanner (VIRS) Radiance 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 Visible/Infrared Scanner (VIRS) Radiance Gridded Orbital data, a special product derived from the TRMM standard product, VIRS Radiance (1B-01), and mapped to a 0.25 degree x 0.25 degree latitude/longitude grid. The spatial coverage is defined by a 720 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 are the scene radiance data for the five VIRS channels. The document also provides 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 (DAAC), with inputs from members of the TRMM Science Team and the DAAC User Working Group. 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 VIRS Radiance (1B-01) product can be found in Volume 3 of the "File Specifications for TSDIS Products - Level 1" (PDF document).
The Visible/Infrared Scanner (VIRS) is one of five instruments on the TRMM satellite. The VIRS has a swath width of 720 km and a horizontal resolution of 2.2 km at nadir. VIRS is similar to the Advanced Very High Resolution Radiometer (AVHRR) now in operation on NOAA's Polar Orbiting Environmental Satellites.

Some characteristics of the VIRS are shown in the following table:

Frequency0.63, 1.6. 3.75, 10.8, and 12.0 µm
Scanning ModeCross track
Scan Time0.3 second
Ground Resolution2.2 km
Swath Width720 km
Science ApplicationsCloud coverage, cloud type, cloud top temperature,
and precipitation index.

The Gridded Orbital data contain, for each grid box, the radiances for all five channels of the pixel closest to the center of the grid box:

These radiances are reported over both land and sea.

Data Characteristics

This data set contains a single orbit of VIRS Radiance orbital channels, mapped to a 0.25 x 0.25 degree latitude-longitude grid. The latitudinal limits of the orbital swath are 38 degree N to 38 degree S, because the TRMM satellite has an inclination of 35 degrees. 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 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-20 Spares - 4 byte float

The grid constants (variables 12-17) include the starting latitude and longitude of the gridded output (-39.75 and -179.75 degrees, respectively), the ending latitude and longitude of the gridded output (39.75 and 179.75 degrees, respectively), as well as the latitudinal and longitudinal increments (0.25 and 0.25 degree, respectively). The spares (variables 18-20) pad the header out to the same record length as the data record length multiplied by six.

The geolocation, time stamp, and five channel values 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 Total number of pixels in grid box - 2 byte integer
5-9 Channels mW cm-2 µm-1 sr-1 * Factor2 byte integer

The time stamp for a particular grid box is the time stamp of the pixel nearest to the center of the box. Radiance values of the five channels are scaled by factors of 500, 1000, 100000, 10000, 10000, respectively, to provide certain accuracy when stored as 32-bit integers. Thus, for proper interpretation of the data, these values must be descaled by these factors 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 records Nrecin each file is determined by the fifth variable in the header record (see Header Record Contents table above):

Nrec = 6 + NGR
where:
record 1-6 : header
record 7 : data record for first grid box
.
.
.
record NGR + 6 : data record for last grid box
The gridding is done from west to east, for each row of grid boxes, starting with the southernmost row and ending with the northernmost row. There is a data record for each grid box that contains part of an orbit.

A typical file size is about 0.85 MB.

The file naming convention for the VIRS Radiance Gridded Orbital data conforms to that for the standard TRMM data products, with slight modifications:

G1B01.yymmdd.n.v.BIN
where:
G = Gridded
1B01 = TRMM algorithm ID for the original orbital data product
yy = 2-digit year
mm = month number
dd = day of month
n = orbit number
v = data product version number for 1B-01 product
BIN = Binary
As an example, the file name, G1B01.971228.475.1.BIN, refers to the Gridded Orbital data product generated from the standard TRMM product, 1B01.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 VIRS G1B01 data 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 *    ReadG1B01.f
c *
c * Description:
c * -----------
c *       This sample fortran program shows how to read a gridded 1B01
c *       binary file.
c *
c *  Date                 Author Name         Change Description
c *  -----------          ------------        ------------------
c *  08-Dec-1998          Hualan Rui           Created
c *
c ***********************************************************************

      parameter(L1B01_CHANNELS=5)
      character*120 file_in
      INTEGER*4 n, nmax

c  Structure for G1B01 header record
c  ------------------------------------
      STRUCTURE /G1B01_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       dummy(3)
      END STRUCTURE

c  Structure for G1B01 data record
c  -------------------------------------------
      STRUCTURE /G1B01_STNREC/
         INTEGER*2  lat
         INTEGER*2  lon
         INTEGER*4  dayntime
         INTEGER*2  totPixel
         INTEGER*2  channels(L1B01_CHANNELS)
      END STRUCTURE

      RECORD /G1B01_HEADER/ header
      RECORD /G1B01_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 30 words. Then read the header record and close the file.
c -----------------------------------------------------------------
      open(10,file=file_in,access='DIRECT',err=900,status='OLD',recl=30)
      read(10, rec=1, err=910, end=500) header
      close(10)

c  Print header information
c  -------------------------
      write(6,*) 'HEADER INFORMATION For G1B01: '
      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

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+6
         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,2I10, I12,I6,5I6)') n, stn.lat, stn.lon,
     $        stn.dayntime, stn.totPixel,stn.channels

 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:
* ------------
*    ReadG1B01.c
*
* Description:
* -----------
*       This sample C program shows how to read a gridded 1B01
*       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 L1B01 gridded data.              */
/* ------------------------------------------------------------------- */
#define L1B01_CHANNELS  5
#define L1B01_SPVAL    -999.0

/* Structure for Gridded 1B01 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   dummy[3];
} G1B01_HEADER;

/* Structure for G1B01 data record                                 */
/* --------------------------------------------------------------- */
typedef struct
{
  int16   lat;
  int16   lon;
  int32   dayntime;
  int16   totPixel;
  int16   channels[L1B01_CHANNELS];
} G1B01_STNREC;

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

  G1B01_HEADER header;
  G1B01_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(G1B01_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);

  /* Print data record                                             */
  /* ------------------------------------------------------------- */
  nmax = header.totBoxes;
  printf("\n\n");
  for (n=1; n<=nmax; n++) {
      fread(&stn, sizeof(G1B01_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 %6d %6d %8d %6d",
             n, stn.lat, stn.lon, stn.dayntime, stn.totPixel);
      for ( k=0; k<L1B01_CHANNELS; k++) printf("%6d", stn.channels[k]);
      printf ("\n");
  }
  close (fptr);
}

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

References

[To be provided at a later date.]

Data Access

The VIRS Radiance Gridded Orbital data are 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. They 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 VIRS Radiance Gridded Orbital data may be accessed either directly from this document,

VIRS Radiance Gridded Orbital Data

or via anonymous FTP at

ftp disc2.nascom.nasa.gov
login: anonymous
password: < your internet address >
cd /data/s4pa/TRMM_L1/TRMM_G1B01/

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 VIRS Radiance 1B01 data set is:

Dr. William Barnes
Laboratory for Hydrospheric Processes / Code 970
NASA Goddard Space Flight Center
Greenbelt, Maryland 20771

Email: wbarnes@neptune.gsfc.nasa.gov
301-286-8670 (voice)
301-286-1761 (fax)

The producer of the VIRS Radiance Gridded 1B01 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