Go to the documentation of this file.
7 MODFILE *
const l1a_file,
8 int const number_of_scans,
117 #define Earth_Frames 1
122 #define MIRR_SIDE_INDEX 8
123 #define NUM_METADATA (sizeof(Scan_metadata) / sizeof(Scan_metadata[0]))
125 static float64 *EV_start;
126 static float64 *SD_start;
127 static float64 *SV_start;
129 static scan_quality_t *scan_quality;
130 static int16 *scan_id;
132 static frame_count_t *frame_count;
133 static int8 *sci_state;
134 static int8 *sci_abnorm;
136 static scan_type_t *scan_type;
145 scan_quality = (scan_quality_t*) calloc(
MAX_SCAN_NUMBER,
sizeof(scan_quality_t));
147 frame_count = (frame_count_t*) calloc(
MAX_SCAN_NUMBER,
sizeof(frame_count_t));
150 scan_type = (scan_type_t*) calloc(
MAX_SCAN_NUMBER,
sizeof(scan_type_t));
157 } Scan_metadata[] = {
175 char msgbuf[PGS_SMF_MAX_MSGBUF_SIZE];
179 if((l1a_file ==
NULL) || (granule_metadata ==
NULL) || (number_of_scans < 0)
183 sprintf(msgbuf,
"Invalid input argument l1a_file = %p, "
184 "granule_metadata = %p, number_of_scans = %d, frame_data = %p, "
185 "mirror_side = %p", (
void*)l1a_file, (
void*)granule_metadata,
186 number_of_scans, (
void*)frame_data, (
void*)mirr_side );
188 "GEO_read_L1Ascan_metadata.c, GEO_read_L1Ascan_metadata");
191 else if(number_of_scans == 0)
204 Scan_metadata[
i].dims[0] = (
long int) number_of_scans;
211 start, Scan_metadata[
i].dims, Scan_metadata[
i].
data) != MAPIOK) {
212 sprintf(msgbuf,
" getMODISarray reading %s", Scan_metadata[
i].
name);
214 "GEO_read_L1Ascan_metadata.c, GEO_read_L1Ascan_metadata");
224 frame_data[
scan].L1A_scan_id = (int32)scan_id[
scan];
225 frame_data[
scan].EV_start = EV_start[
scan];
227 frame_data[
scan].L1A_scan_quality[
i] = scan_quality[
scan][
i];
233 frame_data[
scan].EV_frames =
238 sprintf(msgbuf,
"%d Earth frames in scan %d",
241 "GEO_read_L1Ascan_metadata.c, GEO_read_L1Ascan_metadata");
243 frame_data[
scan].EV_frames = 0;
246 frame_data[
scan].SD_start = SD_start[
scan];
251 frame_data[
scan].SD_frames =
256 sprintf(msgbuf,
"%d SD Frames in scan %d",
259 "GEO_read_L1Ascan_metadata.c, GEO_read_L1Ascan_metadata");
261 frame_data[
scan].SD_frames = 0;
264 frame_data[
scan].SV_start = SV_start[
scan];
269 frame_data[
scan].SV_frames =
274 sprintf(msgbuf,
"%d SV frames in scan %d",
277 "GEO_read_L1Ascan_metadata.c, GEO_read_L1Ascan_metadata");
279 frame_data[
scan].SV_frames = 0;
282 frame_data[
scan].SCI_STATE = sci_state[
scan];
283 frame_data[
scan].SCI_ABNORM = sci_abnorm[
scan];
284 memcpy(frame_data[
scan].Scan_type, scan_type[
scan],
sizeof(scan_type[
scan]));
#define MODIS_W_GEO_FRAMENO_INPUT
#define MODIS_E_BAD_INPUT_ARG
MOD_PR01 Production producing one five minute granule of output data in each run It can be configured to produce as many as three five minute granules per run Each execution with one construction record and one date file for each dataset In normal these are created by which splits them out of the hour datasets For LANCE they are created by which merges all session MODIS L0 datasets overlapping the requested time and extracts from the merged data those packets which fall within that time period Each scan of data is stored in the L1A granule that covers the start time of that scan
#define SCAN_QUALITY_ARRAY
#define NUM_L1A_SECTOR_VIEWS
#define NUM_L1A_QUALITY_FLAGS
no change in intended resolving MODur00064 Corrected handling of bad ephemeris attitude data
const int MAX_SCAN_NUMBER
#define EARTH_SECTOR_FRAMES
#define L1A_SCAN_META_GRP