/********************************************************** 1B01 VIRS data check 98/06/24 Y.Suzuki@restec Listing 1B01 metadata information, latitude, longitude, scan time and radiance print. USAGE: c_1b01rd '1B01_File_Name' This program is FREEWARE, so there is NO SUPPORT. ************************************************************/ #include #include #include #include #include #include #include #define N100 100 int main(int argc, char *argv[]) { /* --------- Variables related to toolkit ---------- */ L1B_01_SWATHDATA read_L1B01_data ; IO_HANDLE granuleHandle1B01; DATE_STR beginDate; TIME_STR beginTime; DATE_STR endDate; TIME_STR endTime; char granuleID_L1B01[N100]; int dataType_L1B01; char filemode_read, filemode_write; int i, j, status, iScan, numberOfScan, orbitSize ; char granuleID[N100], algorithmID[N100], algorithmVersion[N100], toolkitVersion[N100] ; if( argc != 2 ) { fprintf( stderr, " USAGE : " "c_1b01rd '1B01_Input_File_Name'\n" ); return ; } strcpy(granuleID_L1B01,argv[1]); dataType_L1B01 = TK_L1B_01; filemode_read = TK_READ_ONLY; filemode_write = TK_NEW_FILE; /* open file */ status = TKopen(granuleID_L1B01, dataType_L1B01, filemode_read, &granuleHandle1B01); if(status != TK_SUCCESS) { printf( "*** ERROR -> STOP ----- " "Failed to open 1B01 input file: %s\n",granuleID_L1B01); } /* ------- check metadata ------ */ status = TKreadMetadataInt(&granuleHandle1B01, TK_BEGIN_DATE, &beginDate); status = TKreadMetadataInt(&granuleHandle1B01, TK_BEGIN_TIME, &beginTime); status = TKreadMetadataInt(&granuleHandle1B01, TK_END_DATE, &endDate); status = TKreadMetadataInt(&granuleHandle1B01, TK_END_TIME, &endTime); printf( " beginDate = %d/%d/%d \n", beginDate.tkyear, beginDate.tkmonth, beginDate.tkday ); printf( " beginTime = %d:%d:%d\n", beginTime.tkhour, beginTime.tkminute, beginTime.tksecond ); printf( " endDate = %d/%d/%d\n", endDate.tkyear, endDate.tkmonth, endDate.tkday ); printf( " endTime = %d:%d:%d\n", endTime.tkhour, endTime.tkminute, endTime.tksecond ); status = TKreadMetadataInt(&granuleHandle1B01, TK_ORBIT_SIZE, &orbitSize); printf( " numberOfScan = %d\n", orbitSize ); numberOfScan = orbitSize ; status = TKreadMetadataChar(&granuleHandle1B01, TK_GRANULE_ID, granuleID); status = TKreadMetadataChar(&granuleHandle1B01, TK_ALGORITHM_ID, algorithmID); status = TKreadMetadataChar(&granuleHandle1B01, TK_ALGORITHM_VERSION, algorithmVersion); status = TKreadMetadataChar(&granuleHandle1B01, TK_TOOLKIT_VERSION, toolkitVersion); printf( " granuleID = %s\n", granuleID ); printf( " algorithmID = %s\n", algorithmID ); printf( " algorithmVersion = %s\n", algorithmVersion ); printf( " toolkitVersion = %s\n", toolkitVersion ); /* read scan by scan */ for(iScan=1; iScan<=numberOfScan; iScan++) { /* scan loop */ status = TKreadScan(&granuleHandle1B01,&read_L1B01_data) ; if( status != TK_SUCCESS ) printf( " Read Scan Error\n"); else { for(i=0; i<261; i++) { /* angle loop */ printf( "Scan : %5d/%5d ScanTime : %9.3f IFOV : %3d " "Lat,Lon : %9.3f,%9.3f \n", iScan, numberOfScan, read_L1B01_data.scanTime, i+1, /* UTC seconds of the day */ read_L1B01_data.geolocation[i][0], /* Latitude (deg) */ read_L1B01_data.geolocation[i][1] ); /* Longitude (deg) */ for(j=0;j<5;j++) printf( " %9.5f", /* channnel loop */ read_L1B01_data.channels[i][j] ); /* radiance (mW cm^-2 um^-1 sr^-1) multiplied by a scale factor scale factors are 500, 1000, 100000, 10000, and 10000 */ printf( "\n" ); } } } /* close TRMM data */ status = TKclose(&granuleHandle1B01); return status; }