OB.DAAC Logo
NASA Logo
Ocean Color Science Software

ocssw V2022
write_ECS_metadata.c
Go to the documentation of this file.
1 #include "L1A_prototype.h"
2 #include "hdf.h"
3 #include "MD_metadata.h"
4 #include "mapi.h"
5 #include "PGS_SMF.h"
6 #include "PGS_MET.h"
7 #include "PGS_MODIS_35005.h"
8 #include "SDST_SetLGranId.h"
9 #include "PGS_MODIS_39604.h"
10 
11 PGSt_SMF_status write_ECS_metadata (PGSt_MET_all_handles md_handles,
12  MD_ECS_GRA_INV_MET_t *ecs_gra_inv_met)
13 
14 /****************************************************************************
15 !C
16 
17 !Description: Function write_ECS_metadata assigns values of the ECS Granule
18  Inventory Metadata to metadata attributes after an MCF file
19  is initialized into memory.
20 
21 !Input Parameters:
22  PGSt_MET_all_handles md_handles metadata group in MCF
23  MD_ECS_GRA_INV_MET_t ecs_gra_inv_met ECS Inventory Metadata structure
24 
25 !Output Parameters: None
26 
27 Return Values:
28  MODIS_E_GETCONFIG_FAILED If the universal reference number of
29  engineering data list file was not found.
30  MODIS_E_MET_SETATTRA_FAILED If PGS_MET_SetAttr() failed.
31  MODIS_E_NULL_POINTER If either input argument is NULL
32  MODIS_S_SUCCESS Otherwise
33 
34 Externally Defined:
35  ARCHIVED_METADATA (mapi.h)
36  global_input_pointer (L1A_prototype.h)
37  INVENTORY_METADATA (mapi.h)
38  MCORE_ACTUALLY_REDONE (mapi.h)
39  MCORE_ADDATTRIBUTENAME (mapi.h)
40  MCORE_DAYNIGHTFLAG (mapi.h)
41  MCORE_EQUATCROSSINGDATE (mapi.h)
42  MCORE_EQUATCROSSINGLONG (mapi.h)
43  MCORE_EQUATCROSSINGTIME (mapi.h)
44  MCORE_EXCLUS_GRING_FLG (mapi.h)
45  MCORE_GRING_POINT_LAT (mapi.h)
46  MCORE_GRING_POINT_LON (mapi.h)
47  MCORE_GRING_POINT_NUM (mapi.h)
48  MCORE_INPUT_POINTER (mapi.h)
49  MCORE_LOCALGRANULEID (mapi.h)
50  MCORE_LOCALVERSIONID (mapi.h)
51  MCORE_ORBIT_NUM (mapi.h)
52  MCORE_PARAMETERVALUE (mapi.h)
53  MCORE_PGEVERSION (mapi.h)
54  MCORE_PRODUCTIONDATETIME (mapi.h)
55  MCORE_RANGE_BEG_DATE (mapi.h)
56  MCORE_RANGE_BEG_TIME (mapi.h)
57  MCORE_RANGE_ENDING_DATE (mapi.h)
58  MCORE_RANGE_ENDING_TIME (mapi.h)
59  MCORE_TO_BE_REDONE (mapi.h)
60  MD_ECS_GRA_INV_MET_t (MD_metadata.h)
61  MECS_PRODHISTORY (MD_metadata.h)
62  EASTBOUNDINGCOORDINATE (MD_metadata.h)
63  WESTBOUNDINGCOORDINATE (MD_metadata.h)
64  SOUTHBOUNDINGCOORDINATE (MD_metadata.h)
65  NORTHBOUNDINGCOORDINATE (MD_metadata.h)
66  EASTBOUNDVALUE (MD_metadata.h)
67  WESTBOUNDVALUE (MD_metadata.h)
68  SOUTHBOUNDVALUE (MD_metadata.h)
69  NORTHBOUNDVALUE (MD_metadata.h)
70  MODIS_E_GETCONFIG_FAILED (PGS_MODIS_35005.h)
71  MODIS_E_MET_SETATTRA_FAILED (PGS_MODIS_35005.h)
72  MODIS_E_NULL_POINTER (PGS_MODIS_35005.h)
73  MODIS_S_SUCCESS (PGS_MODIS_35005.h)
74  PC_L1A_ENG_DATA_LIST_FILE (PC_pcf_info.h)
75  PC_L1A_PROCESSINGENVIRONMENT (PC_pcf_info.h)
76  PGS_SMF_MAX_MSGBUF_SIZE (PGS_SMF.h)
77  PGSt_SMF_status (PGS_SMF.h)
78  PGS_TRUE (PGS_SMF.h)
79  PGSd_PC_VALUE_LENGTH_MAX (PGS_PC.h)
80 
81 Called By:
82  write_global_metadata
83 
84 Routines Called:
85  PGS_MET_SetAttr
86  PGS_PC_GetUniversalRef
87  PGS_SMF_TestSuccessLevel
88  log_fmt_msg
89 
90 !Revision History:
91  $Log: write_ECS_metadata.c,v $
92  Revision 5.1 2004/09/23 19:17:54 seaton
93  Added Bounding Coordinates to the Archive Metadata set in the L1A product file.
94  seaton@saicmodis.com
95 
96  Revision 4.1 2003/11/12 21:08:12 kuyper
97  Corrected to always provide a terminating NULL pointer in input_pointers.
98 
99  Revision 4.0 2003/01/07 21:37:01 vlin
100  Updated according to write_ECS_metadata.pdl v4.1
101  vlin@saicmodis.com
102 
103  revision 1.0 1997/08/20 17:30:00
104  Qi Huang/RDC (qhuang@ltpmail.gsfc.nasa.gov)
105  Original development
106 
107 !Team-unique Header:
108 
109  This software is developed by the MODIS Science Data Support Team
110  for the National Aeronautics and Space Administration,
111  Goddard Space Flight Center, under contract NAS5-32373.
112 
113 References and Credits:
114 
115 Design Notes:
116 
117 !END
118 ******************************************************************************/
119 
120 {
121  char *routine = "write_ECS_metadata";
122  char msg[PGS_SMF_MAX_MSGBUF_SIZE];
123  char *pchar, *input_ptr[MAX_INPUTS+1];
124  PGSt_integer version_num;
125  PGSt_SMF_status returnStatus = MODIS_S_SUCCESS;
126  PGSt_SMF_status PGS_status;
127  double fval[1];
128 
129  if (md_handles == NULL || ecs_gra_inv_met == NULL) {
130  log_fmt_msg(MODIS_E_NULL_POINTER, routine, "");
131  return MODIS_E_NULL_POINTER;
132  }
133 
134  version_num = 1;
135  PGS_status = PGS_PC_GetUniversalRef(PC_L1A_ENG_DATA_LIST_FILE, &version_num,
137  if (PGS_SMF_TestSuccessLevel(PGS_status) != PGS_TRUE) {
138  sprintf(msg, "unable to retrieve eng data list file name from pcf file");
141  }
142 
143  input_ptr[0] = global_input_pointer[0];
144  input_ptr[1] = global_input_pointer[1];
145  input_ptr[2] = global_input_pointer[2];
146  input_ptr[MAX_INPUTS] = (char*)NULL;
147 
148  PGS_status = PGS_MET_SetAttr(md_handles[INVENTORY_METADATA], MCORE_PGEVERSION,
149  &ecs_gra_inv_met->pgeversion);
150  if (PGS_SMF_TestSuccessLevel(PGS_status) != PGS_TRUE) {
151  returnStatus = MODIS_E_MET_SETATTR_FAILED;
152  sprintf(msg,"The %s attribute could not be set", MCORE_PGEVERSION);
154  }
155 
156  PGS_status = PGS_MET_SetAttr(md_handles[INVENTORY_METADATA],
157  MCORE_LOCALVERSIONID, &ecs_gra_inv_met->localversionid);
158  if (PGS_SMF_TestSuccessLevel(PGS_status) != PGS_TRUE) {
159  returnStatus = MODIS_E_MET_SETATTR_FAILED;
160  sprintf(msg,"The %s attribute could not be set", MCORE_LOCALVERSIONID);
162  }
163 
164  pchar = ecs_gra_inv_met->productionhistory;
165  PGS_status = PGS_MET_SetAttr(md_handles[ARCHIVED_METADATA],
166  MECS_PRODHISTORY, &pchar);
167  if (PGS_SMF_TestSuccessLevel(PGS_status) != PGS_TRUE) {
168  returnStatus = MODIS_E_MET_SETATTR_FAILED;
169  sprintf(msg,"The %s attribute could not be set", MECS_PRODHISTORY);
171  }
172 
173  pchar = ecs_gra_inv_met->rangebeginningdate;
174  PGS_status = PGS_MET_SetAttr(md_handles[INVENTORY_METADATA],
175  MCORE_RANGE_BEG_DATE, &pchar);
176  if (PGS_SMF_TestSuccessLevel(PGS_status) != PGS_TRUE) {
177  returnStatus = MODIS_E_MET_SETATTR_FAILED;
178  sprintf(msg,"The %s attribute could not be set", MCORE_RANGE_BEG_DATE);
180  }
181 
182  pchar = ecs_gra_inv_met->rangebeginningtime;
183  PGS_status = PGS_MET_SetAttr(md_handles[INVENTORY_METADATA],
184  MCORE_RANGE_BEG_TIME, &pchar);
185  if (PGS_SMF_TestSuccessLevel(PGS_status) != PGS_TRUE) {
186  returnStatus = MODIS_E_MET_SETATTR_FAILED;
187  sprintf(msg,"The %s attribute could not be set", MCORE_RANGE_BEG_TIME);
189  }
190 
191  pchar = ecs_gra_inv_met->rangeendingdate;
192  PGS_status = PGS_MET_SetAttr(md_handles[INVENTORY_METADATA],
193  MCORE_RANGE_ENDING_DATE, &pchar);
194  if (PGS_SMF_TestSuccessLevel(PGS_status) != PGS_TRUE) {
195  returnStatus = MODIS_E_MET_SETATTR_FAILED;
196  sprintf(msg,"The %s attribute could not be set", MCORE_RANGE_ENDING_DATE);
198  }
199 
200  pchar = ecs_gra_inv_met->rangeendingtime;
201  PGS_status = PGS_MET_SetAttr(md_handles[INVENTORY_METADATA],
202  MCORE_RANGE_ENDING_TIME, &pchar);
203  if (PGS_SMF_TestSuccessLevel(PGS_status) != PGS_TRUE) {
204  returnStatus = MODIS_E_MET_SETATTR_FAILED;
205  sprintf(msg,"The %s attribute could not be set", MCORE_RANGE_ENDING_TIME);
207  }
208 
209  pchar = ecs_gra_inv_met->day_night_flag;
210  PGS_status = PGS_MET_SetAttr(md_handles[INVENTORY_METADATA],
211  MCORE_DAYNIGHTFLAG, &pchar);
212  if (PGS_SMF_TestSuccessLevel(PGS_status) != PGS_TRUE) {
213  returnStatus = MODIS_E_MET_SETATTR_FAILED;
214  sprintf(msg,"The %s attribute could not be set", MCORE_DAYNIGHTFLAG);
216  }
217 
218  PGS_status = PGS_MET_SetAttr(md_handles[INVENTORY_METADATA],
219  MCORE_ORBIT_NUM".1", &ecs_gra_inv_met->orbit_num_1);
220  if (PGS_SMF_TestSuccessLevel(PGS_status) != PGS_TRUE) {
221  returnStatus = MODIS_E_MET_SETATTR_FAILED;
222  sprintf(msg,"The %s.1 attribute could not be set", MCORE_ORBIT_NUM);
224  }
225 
226  PGS_status = PGS_MET_SetAttr(md_handles[INVENTORY_METADATA],
227  MCORE_EQUATCROSSINGLONG".1",
228  &ecs_gra_inv_met->equatorcrossinglongitude_1);
229  if (PGS_SMF_TestSuccessLevel(PGS_status) != PGS_TRUE) {
230  returnStatus = MODIS_E_MET_SETATTR_FAILED;
231  sprintf(msg,"The %s.1 attribute could not be set",
232  MCORE_EQUATCROSSINGLONG);
234  }
235 
236  pchar = ecs_gra_inv_met->equatorcrossingdate_1;
237  PGS_status = PGS_MET_SetAttr(md_handles[INVENTORY_METADATA],
238  MCORE_EQUATCROSSINGDATE".1", &pchar);
239  if (PGS_SMF_TestSuccessLevel(PGS_status) != PGS_TRUE) {
240  returnStatus = MODIS_E_MET_SETATTR_FAILED;
241  sprintf(msg,"The %s.1 attribute could not be set",
242  MCORE_EQUATCROSSINGDATE);
244  }
245 
246  pchar = ecs_gra_inv_met->equatorcrossingtime_1;
247  PGS_status = PGS_MET_SetAttr(md_handles[INVENTORY_METADATA],
248  MCORE_EQUATCROSSINGTIME".1", &pchar);
249  if (PGS_SMF_TestSuccessLevel(PGS_status) != PGS_TRUE) {
250  returnStatus = MODIS_E_MET_SETATTR_FAILED;
251  sprintf(msg,"The %s.1 attribute could not be set",
252  MCORE_EQUATCROSSINGTIME);
254  }
255 
256  pchar = ecs_gra_inv_met->exclusiongringflag_1;
257  PGS_status = PGS_MET_SetAttr(md_handles[INVENTORY_METADATA],
258  MCORE_EXCLUS_GRING_FLG, &pchar);
259  if (PGS_SMF_TestSuccessLevel(PGS_status) != PGS_TRUE) {
260  returnStatus = MODIS_E_MET_SETATTR_FAILED;
261  sprintf(msg,"The %s.1 attribute could not be set", MCORE_EXCLUS_GRING_FLG);
263  }
264 
265  PGS_status = PGS_MET_SetAttr(md_handles[INVENTORY_METADATA],
266  MCORE_GRING_POINT_LAT,
267  ecs_gra_inv_met->gringpointlatitude_1);
268  if (PGS_SMF_TestSuccessLevel(PGS_status) != PGS_TRUE) {
269  returnStatus = MODIS_E_MET_SETATTR_FAILED;
270  sprintf(msg,"The %s.1 attribute could not be set", MCORE_GRING_POINT_LAT);
272  }
273 
274  PGS_status = PGS_MET_SetAttr(md_handles[INVENTORY_METADATA],
275  MCORE_GRING_POINT_LON,
276  ecs_gra_inv_met->gringpointlongitude_1);
277  if (PGS_SMF_TestSuccessLevel(PGS_status) != PGS_TRUE) {
278  returnStatus = MODIS_E_MET_SETATTR_FAILED;
279  sprintf(msg,"The %s.1 attribute could not be set", MCORE_GRING_POINT_LON);
281  }
282 
283  PGS_status = PGS_MET_SetAttr(md_handles[INVENTORY_METADATA],
284  MCORE_GRING_POINT_NUM,
285  ecs_gra_inv_met->gringpointsequenceno_1);
286  if (PGS_SMF_TestSuccessLevel(PGS_status) != PGS_TRUE) {
287  returnStatus = MODIS_E_MET_SETATTR_FAILED;
288  sprintf(msg,"The %s.1 attribute could not be set", MCORE_GRING_POINT_NUM);
290  }
291 
292  pchar = ecs_gra_inv_met->additionalattributename_1;
293  PGS_status = PGS_MET_SetAttr(md_handles[INVENTORY_METADATA],
294  MCORE_ADDATTRIBUTENAME".1", &pchar);
295  if (PGS_SMF_TestSuccessLevel(PGS_status) != PGS_TRUE) {
296  returnStatus = MODIS_E_MET_SETATTR_FAILED;
297  sprintf(msg,"The %s.1 attribute could not be set",
298  MCORE_ADDATTRIBUTENAME);
300  }
301 
302  pchar = ecs_gra_inv_met->parametervalue_1;
303  PGS_status = PGS_MET_SetAttr(md_handles[INVENTORY_METADATA],
304  MCORE_PARAMETERVALUE".1", &pchar);
305  if (PGS_SMF_TestSuccessLevel(PGS_status) != PGS_TRUE) {
306  returnStatus = MODIS_E_MET_SETATTR_FAILED;
307  sprintf(msg,"The %s.1 attribute could not be set", MCORE_PARAMETERVALUE);
309  }
310 
311  pchar = ecs_gra_inv_met->additionalattributename_2;
312  PGS_status = PGS_MET_SetAttr(md_handles[INVENTORY_METADATA],
313  MCORE_ADDATTRIBUTENAME".2", &pchar);
314  if (PGS_SMF_TestSuccessLevel(PGS_status) != PGS_TRUE) {
315  returnStatus = MODIS_E_MET_SETATTR_FAILED;
316  sprintf(msg,"The %s.2 attribute could not be set",
317  MCORE_ADDATTRIBUTENAME);
319  }
320 
321  pchar = ecs_gra_inv_met->parametervalue_2;
322  PGS_status = PGS_MET_SetAttr(md_handles[INVENTORY_METADATA],
323  MCORE_PARAMETERVALUE".2", &pchar);
324  if (PGS_SMF_TestSuccessLevel(PGS_status) != PGS_TRUE) {
325  returnStatus = MODIS_E_MET_SETATTR_FAILED;
326  sprintf(msg,"The %s.2 attribute could not be set", MCORE_PARAMETERVALUE);
328  }
329 
330  pchar = ecs_gra_inv_met->reprocessingactual;
331  PGS_status = PGS_MET_SetAttr(md_handles[INVENTORY_METADATA],
332  MCORE_ACTUALLY_REDONE, &pchar);
333  if (PGS_SMF_TestSuccessLevel(PGS_status) != PGS_TRUE) {
334  returnStatus = MODIS_E_MET_SETATTR_FAILED;
335  sprintf(msg,"The %s attribute could not be set", MCORE_ACTUALLY_REDONE);
337  }
338 
339  pchar = ecs_gra_inv_met->reprocessingplanned;
340  PGS_status = PGS_MET_SetAttr(md_handles[INVENTORY_METADATA],
341  MCORE_TO_BE_REDONE, &pchar);
342  if (PGS_SMF_TestSuccessLevel(PGS_status) != PGS_TRUE) {
343  returnStatus = MODIS_E_MET_SETATTR_FAILED;
344  sprintf(msg,"The %s attribute could not be set", MCORE_TO_BE_REDONE);
346  }
347 
348  pchar = ecs_gra_inv_met->processingenvironment;
349  PGS_status = PGS_MET_SetAttr(md_handles[ARCHIVED_METADATA],
351  if (PGS_SMF_TestSuccessLevel(PGS_status) != PGS_TRUE) {
352  returnStatus = MODIS_E_MET_SETATTR_FAILED;
353  sprintf(msg,"The %s attribute could not be set",
356  }
357 
358  PGS_status = PGS_MET_SetAttr(md_handles[INVENTORY_METADATA],
359  MCORE_INPUT_POINTER, &input_ptr);
360  if (PGS_SMF_TestSuccessLevel(PGS_status) != PGS_TRUE) {
361  returnStatus = MODIS_E_MET_SETATTR_FAILED;
362  sprintf(msg,"The %s attribute could not be set", MCORE_INPUT_POINTER);
364  }
365 
366  PGS_status = SDST_SetLocalGranId(L1A, md_handles);
367  if (PGS_status != MODIS_S_SDST_SUCCESS) {
368  sprintf(msg,"The %s attribute could not be set", MCORE_LOCALGRANULEID);
370  }
371 
372  *fval = EASTBOUNDVALUE;
373  PGS_status = PGS_MET_SetAttr(md_handles[ARCHIVED_METADATA],
374  EASTBOUNDINGCOORDNIATE, &fval);
375  if (PGS_SMF_TestSuccessLevel(PGS_status) != PGS_TRUE) {
376  returnStatus = MODIS_E_MET_SETATTR_FAILED;
377  sprintf(msg,"The %s attribute could not be set", EASTBOUNDINGCOORDNIATE);
379  }
380 
381  *fval = WESTBOUNDVALUE;
382  PGS_status = PGS_MET_SetAttr(md_handles[ARCHIVED_METADATA],
383  WESTBOUNDINGCOORDNIATE, &fval);
384  if (PGS_SMF_TestSuccessLevel(PGS_status) != PGS_TRUE) {
385  returnStatus = MODIS_E_MET_SETATTR_FAILED;
386  sprintf(msg,"The %s attribute could not be set", WESTBOUNDINGCOORDNIATE);
388  }
389 
390  *fval = SOUTHBOUNDVALUE;
391  PGS_status = PGS_MET_SetAttr(md_handles[ARCHIVED_METADATA],
392  SOUTHBOUNDINGCOORDNIATE, &fval);
393  if (PGS_SMF_TestSuccessLevel(PGS_status) != PGS_TRUE) {
394  returnStatus = MODIS_E_MET_SETATTR_FAILED;
395  sprintf(msg,"The %s attribute could not be set", SOUTHBOUNDINGCOORDNIATE);
397  }
398 
399  *fval = NORTHBOUNDVALUE;
400  PGS_status = PGS_MET_SetAttr(md_handles[ARCHIVED_METADATA],
401  NORTHBOUNDINGCOORDNIATE, &fval);
402  if (PGS_SMF_TestSuccessLevel(PGS_status) != PGS_TRUE) {
403  returnStatus = MODIS_E_MET_SETATTR_FAILED;
404  sprintf(msg,"The %s attribute could not be set", NORTHBOUNDINGCOORDNIATE);
406  }
407 
408  return returnStatus;
409 }
#define WESTBOUNDINGCOORDNIATE
Definition: MD_metadata.h:108
char rangebeginningdate[MD_TIMECODEADATELEN]
Definition: MD_metadata.h:162
#define ARCHIVED_METADATA
double gringpointlongitude_1[4]
Definition: MD_metadata.h:173
#define NORTHBOUNDINGCOORDNIATE
Definition: MD_metadata.h:110
#define PC_L1A_ENG_DATA_LIST_FILE
Definition: PC_pcf_info.h:53
#define NULL
Definition: decode_rs.h:63
char global_input_pointer[MAX_INPUTS][PGSd_PC_VALUE_LENGTH_MAX]
Definition: level1a.c:23
char productionhistory[16]
Definition: MD_metadata.h:183
u5 which has been done in the LOCALGRANULEID metadata should have an extension NRT It is requested to identify the NRT production Changes from v6 which may affect scientific the sector rotation may actually occur during one of the scans earlier than the one where it is first reported As a the b1 values are about the LOCALGRANULEID metadata should have an extension NRT It is requested to identify the NRT to fill pixels affected by dead subframes with a special value Output the metadata of noisy and dead subframe Dead Subframe EV and Detector Quality Flag2 Removed the function call of Fill_Dead_Detector_SI to stop interpolating SI values for dead but also for all downstream products for science test only Changes from v5 which will affect scientific to conform to MODIS requirements Removed the Mixed option from the ScanType in the code because the L1A Scan Type is never Mixed Changed for ANSI C compliance and comments to better document the fact that when the HDF_EOS metadata is stricly the and products are off by and in the track respectively Corrected some misspelling of RCS swir_oob_sending_detector to the Reflective LUTs to enable the SWIR OOB correction detector so that if any of the sending detectors becomes noisy or non near by good detectors from the same sending band can be specified as the substitute in the new look up table Code change for adding an additional dimension of mirror side to the Band_21_b1 LUT to separate the coefficient of the two mirror sides for just like other thermal emissive so that the L1B code can calibrate Band scan to scan with mirror side dependency which leads better calibration result Changes which do not affect scientific when the EV data are not provided in L1A
Definition: HISTORY.txt:318
#define INVENTORY_METADATA
#define MECS_PRODHISTORY
Definition: L1a_data.h:138
#define MODIS_E_GETCONFIG_FAILED
#define MAX_INPUTS
char rangeendingtime[MD_TIMECODEATIMELEN]
Definition: MD_metadata.h:165
PGSt_SMF_status write_ECS_metadata(PGSt_MET_all_handles md_handles, MD_ECS_GRA_INV_MET_t *ecs_gra_inv_met)
char rangebeginningtime[MD_TIMECODEATIMELEN]
Definition: MD_metadata.h:163
double gringpointlatitude_1[4]
Definition: MD_metadata.h:172
double equatorcrossinglongitude_1
Definition: MD_metadata.h:168
#define MODIS_E_MET_SETATTR_FAILED
void log_fmt_msg(PGSt_SMF_status code, const char *routine, const char *msg_fmt,...)
Definition: log_fmt_msg.c:6
char rangeendingdate[MD_TIMECODEADATELEN]
Definition: MD_metadata.h:164
char * additionalattributename_1
Definition: MD_metadata.h:175
char * equatorcrossingtime_1
Definition: MD_metadata.h:170
#define NORTHBOUNDVALUE
Definition: MD_metadata.h:114
#define SOUTHBOUNDINGCOORDNIATE
Definition: MD_metadata.h:109
#define PC_L1A_PROCESSINGENVIRONMENT
Definition: PC_pcf_info.h:70
#define EASTBOUNDINGCOORDNIATE
Definition: MD_metadata.h:107
#define WESTBOUNDVALUE
Definition: MD_metadata.h:112
#define MODIS_S_SUCCESS
#define SOUTHBOUNDVALUE
Definition: MD_metadata.h:113
string msg
Definition: mapgen.py:227
int gringpointsequenceno_1[4]
Definition: MD_metadata.h:174
char * equatorcrossingdate_1
Definition: MD_metadata.h:169
#define MODIS_E_NULL_POINTER
char * processingenvironment
Definition: MD_metadata.h:181
char * additionalattributename_2
Definition: MD_metadata.h:176
char exclusiongringflag_1[2]
Definition: MD_metadata.h:171
#define EASTBOUNDVALUE
Definition: MD_metadata.h:111