/********************************************************** 1B11 TMI data check 98/06/24 Y.Suzuki@restec Listing 1B11 metadata information, latitude, longitude, scan time and Brightness temperature (K) USAGE: c_1b11rd '1B11_File_Name' CALLING SEQUENCE: (I) int argc : (number of command line strings) (I) char *argv[] : see the note below NOTE: argv[0]: program name argv[1]: input file name from 1B11 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_11_SWATHDATA read_L1B11_data ; IO_HANDLE granuleHandle1B11; DATE_STR beginDate; TIME_STR beginTime; DATE_STR endDate; TIME_STR endTime; /* --------- Other Variables ---------- */ char granuleID_L1B11[N100]; int dataType_L1B11; char filemode_read, filemode_write; int i, j, il, status, iScan, numberOfScan, orbitSize ; char granuleID[N100], algorithmID[N100], algorithmVersion[N100], toolkitVersion[N100] ; /* --------- Argument check ---------- */ if( argc != 2 ) { fprintf( stderr, " USAGE : " "c_1b11rd '1B11_Input_File_Name'\n" ); return ; } /* --------- Input file ---------- */ strcpy(granuleID_L1B11,argv[1]); dataType_L1B11 = TK_L1B_11; filemode_read = TK_READ_ONLY; filemode_write = TK_NEW_FILE; status = TKopen(granuleID_L1B11, dataType_L1B11, filemode_read, &granuleHandle1B11); if(status != TK_SUCCESS) { printf( "*** ERROR -> STOP ----- " "Failed to open 1B11 input file: %s\n",granuleID_L1B11); } /* ------- check metadata ------ */ status = TKreadMetadataInt(&granuleHandle1B11, TK_BEGIN_DATE, &beginDate); status = TKreadMetadataInt(&granuleHandle1B11, TK_BEGIN_TIME, &beginTime); status = TKreadMetadataInt(&granuleHandle1B11, TK_END_DATE, &endDate); status = TKreadMetadataInt(&granuleHandle1B11, 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(&granuleHandle1B11, TK_ORBIT_SIZE, &orbitSize); printf( " numberOfScan = %d\n", orbitSize ); numberOfScan = orbitSize ; status = TKreadMetadataChar(&granuleHandle1B11, TK_GRANULE_ID, granuleID); status = TKreadMetadataChar(&granuleHandle1B11, TK_ALGORITHM_ID, algorithmID); status = TKreadMetadataChar(&granuleHandle1B11, TK_ALGORITHM_VERSION, algorithmVersion); status = TKreadMetadataChar(&granuleHandle1B11, 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(&granuleHandle1B11,&read_L1B11_data) ; if( status != TK_SUCCESS ) printf( " Read Scan Error\n"); else { for(i=0; i<208; i++) { /* angle loop */ printf( "Scan : %5d/%5d ScanTime : %4d/%2d/%2d %2d:%2d:%2d" " IFOV : %2d " "Lat,Lon : %9.3f,%9.3f \n", iScan, numberOfScan, read_L1B11_data.scanTime.year, read_L1B11_data.scanTime.month, read_L1B11_data.scanTime.dayOfMonth, read_L1B11_data.scanTime.hour, read_L1B11_data.scanTime.minute, read_L1B11_data.scanTime.second, i+1, read_L1B11_data.geolocation[i][0], /* Latitude (deg) */ read_L1B11_data.geolocation[i][1] ); /* Longitude (deg) */ /* lowResCh Ch 1 : 10GHz Vertical Ch 2 : 10GHz Horizontal Ch 3 : 19GHz Vertical Ch 4 : 19GHz Horizontal Ch 5 : 21GHz Vertical Ch 6 : 37GHz Vertical Ch 7 : 37GHz Horizontal highResCh Ch 1 : 85GHz Vertical Ch 2 : 85GHz Horizontal */ if( i%2 == 0 ) { il = i/2 ; for(j=0;j<7;j++) printf( " %8.3f", read_L1B11_data.lowResCh[il][j] ); for(j=0;j<2;j++) printf( " %8.3f", read_L1B11_data.highResCh[i][j] ); } else { for(j=0;j<63;j++) printf( " " ); for(j=0;j<2;j++) printf( " %8.3f", read_L1B11_data.highResCh[i][j] ); } printf( "\n" ); } } } /* close TRMM data */ status = TKclose(&granuleHandle1B11); return status; }