Readme for the Visible/Infrared Scanner (VIRS) Radiance Gridded Orbital Data Set |
VIRS Radiance 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 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.
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 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:
Frequency 0.63, 1.6. 3.75, 10.8, and 12.0 µm Scanning Mode Cross track Scan Time 0.3 second Ground Resolution 2.2 km Swath Width 720 km Science Applications Cloud 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:
- channel 1, Visible, Wavelength 0.63 µm, daytime operation
- channel 2, Short-wave Infrared, Wavelength 1.6 µm, daytime operation
- channel 3, Short-wave Infrared, Wavelength 3.75 µm, all time operation
- channel 4, Thermal Infrared, Wavelength 10.8 µm, all time operation
- channel 5, Thermal Infrared, Wavelength 12.0 µm, all time operation
These radiances are reported over both land and sea.
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 * Factor 2 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.
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):
where:
- Nrec = 6 + NGR
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.
- record 1-6 : header
- record 7 : data record for first grid box
- .
- .
- .
- record NGR + 6 : data record for last grid box
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:
where:
- G1B01.yymmdd.n.v.BIN
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.
- 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
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); } *********************************************************
[To be provided at a later date.]
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.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/
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