/********************************************************** 2A25 data check 98/06/24 Y.Suzuki@restec Listing 2A25 metadata, latitude, longitude, scan time, and rain(mm/hr) USAGE: c_2a25rd '2A25_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 ---------- */ L2A_25_SWATHDATA read_L2A25_data ; IO_HANDLE granuleHandle2A25; DATE_STR beginDate; TIME_STR beginTime; DATE_STR endDate; TIME_STR endTime; char granuleID_L2A25[N100]; int dataType_L2A25; 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_2a25rd '2A25_Input_File_Name'\n" ); return ; } strcpy(granuleID_L2A25,argv[1]); dataType_L2A25 = TK_L2A_25; filemode_read = TK_READ_ONLY; filemode_write = TK_NEW_FILE; /* open file */ status = TKopen(granuleID_L2A25, dataType_L2A25, filemode_read, &granuleHandle2A25); if(status != TK_SUCCESS) { printf( "*** ERROR -> STOP ----- " "Failed to open 2A25 input file: %s\n",granuleID_L2A25); } /* ------- check metadata ------ */ status = TKreadMetadataInt(&granuleHandle2A25, TK_BEGIN_DATE, &beginDate); status = TKreadMetadataInt(&granuleHandle2A25, TK_BEGIN_TIME, &beginTime); status = TKreadMetadataInt(&granuleHandle2A25, TK_END_DATE, &endDate); status = TKreadMetadataInt(&granuleHandle2A25, 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(&granuleHandle2A25, TK_ORBIT_SIZE, &orbitSize); printf( " orbitSize = %d\n", orbitSize ); numberOfScan = orbitSize ; status = TKreadMetadataChar(&granuleHandle2A25, TK_GRANULE_ID, granuleID); status = TKreadMetadataChar(&granuleHandle2A25, TK_ALGORITHM_ID, algorithmID); status = TKreadMetadataChar(&granuleHandle2A25, TK_ALGORITHM_VERSION, algorithmVersion); status = TKreadMetadataChar(&granuleHandle2A25, 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(&granuleHandle2A25,&read_L2A25_data) ; if( status != TK_SUCCESS ) printf( " Read Scan Error\n"); else { for(i=0; i<49; i++) { /* angle loop */ printf( "Scan : %5d/%5d ScanTime : %9.3f Angle : %2d " "Lat,Lon : %9.3f,%9.3f \n", iScan, numberOfScan, read_L2A25_data.scanTime, i+1, /* UTC seconds of the day */ read_L2A25_data.geolocation[i][0], /* Latitude (deg) */ read_L2A25_data.geolocation[i][1] ); /* Longitude (deg) */ for(j=0;j<80;j++) printf( " %8.1f", /* vertical loop */ read_L2A25_data.rain[i][j] ); /* Rain (mm/hr) */ printf( "\n" ); } } } /* close TRMM data */ status = TKclose(&granuleHandle2A25); return status; }