HDF-EOS V2 MODIS CMG Surface Reflectance HDF File Specification
Revision 6.0.1, 15-OCT-09
Product ID(s):
MOD09CMA (Terra Aerosol Optical Thickness Daily Climate Modeling Grid)
Point of Contact:
Jim Ray
Sigma Space Corp.
MODIS Land Science Team
4321 Hartwick Rd., Suite 209
College Park, MD 20742
301-405-8120
jim@ltdri.org
Principal Investigator:
Eric Vermote
University of Maryland, College Park
NASA's Goddard Space Flight Center, Code 614.5
Greenbelt, MD 20771
301-405-8052
eric@ltdri.org
SDST:
Gang Ye
MODIS SDST
7501 Forbes Blvd., Suite 103
Seabrook, MD 20706
301-352-2109
gye@ltpmail.gsfc.nasa.gov
ECS Metadata
CoreMetadata.0: The following is the MCF section that will be used to
create the core metadata string. Items labeled as "NOTE" will not be part
of the MCF, but have been added for clarity.
GROUP = INVENTORYMETADATA
GROUPTYPE = MASTERGROUP
GROUP = ECSDataGranule
OBJECT = LocalGranuleID
Mandatory = "TRUE"
Data_Location = "PGE"
NUM_VAL = 1
TYPE = "STRING"
END_OBJECT = LocalGranuleID
OBJECT = SizeMBECSDataGranule
Mandatory = "FALSE"
Data_Location = "DSS"
NUM_VAL = 1
TYPE = "DOUBLE"
END_OBJECT = SizeMBECSDataGranule
OBJECT = ProductionDateTime
Mandatory = "TRUE"
Data_Location = "TK"
NUM_VAL = 1
TYPE = "DATETIME"
END_OBJECT = ProductionDateTime
OBJECT = DayNightFlag
Mandatory = "TRUE"
Data_Location = "PGE"
NUM_VAL = 1
TYPE = "STRING"
END_OBJECT = DayNightFlag
OBJECT = ReprocessingActual
Mandatory = "TRUE"
Data_Location = "PGE"
NUM_VAL = 1
TYPE = "STRING"
END_OBJECT = ReprocessingActual
OBJECT = LocalVersionID
Mandatory = "TRUE"
Data_Location = "PGE"
NUM_VAL = 1
TYPE = "STRING"
END_OBJECT = LocalVersionID
OBJECT = ReprocessingPlanned
Mandatory = "TRUE"
Data_Location = "PGE"
NUM_VAL = 1
TYPE = "STRING"
END_OBJECT = ReprocessingPlanned
END_GROUP = ECSDataGranule
GROUP = MeasuredParameter
OBJECT = MeasuredParameterContainer
Data_Location = "NONE"
Mandatory = "TRUE"
CLASS = "M"
GROUP = QAFlags
CLASS = "M"
OBJECT = ScienceQualityFlag
Mandatory = "FALSE"
Data_Location = "DP"
NUM_VAL = 1
TYPE = "STRING"
Value = "Not Investigated"
END_OBJECT = ScienceQualityFlag
OBJECT = AutomaticQualityFlagExplanation
Mandatory = "TRUE"
Data_Location = "PGE"
NUM_VAL = 1
TYPE = "STRING"
END_OBJECT = AutomaticQualityFlagExplanation
OBJECT = AutomaticQualityFlag
Mandatory = "TRUE"
Data_Location = "PGE"
NUM_VAL = 1
TYPE = "STRING"
END_OBJECT = AutomaticQualityFlag
OBJECT = OperationalQualityFlagExplanation
Mandatory = "FALSE"
Data_Location = "PGE"
NUM_VAL = 1
TYPE = "STRING"
END_OBJECT = OperationalQualityFlagExplanation
OBJECT = OperationalQualityFlag
Mandatory = "FALSE"
Data_Location = "PGE"
NUM_VAL = 1
TYPE = "STRING"
END_OBJECT = OperationalQualityFlag
OBJECT = ScienceQualityFlagExplanation
Mandatory = "FALSE"
Data_Location = "PGE"
NUM_VAL = 1
TYPE = "STRING"
END_OBJECT = ScienceQualityFlagExplanation
END_GROUP = QAFlags
GROUP = QAStats
CLASS = "M"
OBJECT = QAPercentMissingData
Mandatory = "TRUE"
Data_Location = "PGE"
NUM_VAL = 1
TYPE = "INTEGER"
END_OBJECT = QAPercentMissingData
END_GROUP = QAStats
OBJECT = ParameterName
Mandatory = "TRUE"
CLASS = "M"
Data_Location = "PGE"
NUM_VAL = 1
TYPE = "STRING"
END_OBJECT = ParameterName
END_OBJECT = MeasuredParameterContainer
END_GROUP = MeasuredParameter
NOTE: There will be 1 OrbitCalculatedSpatialDomain field per orbit in
this file
GROUP = OrbitCalculatedSpatialDomain
OBJECT = OrbitCalculatedSpatialDomainContainer
Data_Location = "NONE"
Mandatory = "TRUE"
CLASS = "M"
OBJECT = EquatorCrossingDate
Mandatory = "TRUE"
CLASS = "M"
Data_Location = "PGE"
NUM_VAL = 1
TYPE = "DATE"
END_OBJECT = EquatorCrossingDate
OBJECT = EquatorCrossingTime
Mandatory = "TRUE"
CLASS = "M"
Data_Location = "PGE"
NUM_VAL = 1
TYPE = "TIME"
END_OBJECT = EquatorCrossingTime
OBJECT = OrbitNumber
Mandatory = "TRUE"
CLASS = "M"
Data_Location = "PGE"
NUM_VAL = 1
TYPE = "INTEGER"
END_OBJECT = OrbitNumber
OBJECT = EquatorCrossingLongitude
Mandatory = "TRUE"
CLASS = "M"
Data_Location = "PGE"
NUM_VAL = 1
TYPE = "DOUBLE"
END_OBJECT = EquatorCrossingLongitude
END_OBJECT = OrbitCalculatedSpatialDomainContainer
END_GROUP = OrbitCalculatedSpatialDomain
GROUP = CollectionDescriptionClass
OBJECT = VersionID
Mandatory = "TRUE"
Data_Location = "MCF"
NUM_VAL = 1
TYPE = "INTEGER"
Value = 6
END_OBJECT = VersionID
OBJECT = ShortName
Mandatory = "TRUE"
Data_Location = "MCF"
NUM_VAL = 1
TYPE = "STRING"
Value = "MOD09CMA"
END_OBJECT = ShortName
END_GROUP = CollectionDescriptionClass
GROUP = InputGranule
OBJECT = InputPointer
Mandatory = "TRUE"
Data_Location = "PGE"
NUM_VAL = 75
TYPE = "STRING"
END_OBJECT = InputPointer
END_GROUP = InputGranule
GROUP = SpatialDomainContainer
GROUP = HorizontalSpatialDomainContainer
GROUP = BoundingRectangle
OBJECT = EastBoundingCoordinate
Mandatory = "TRUE"
Data_Location = "PGE"
NUM_VAL = 1
TYPE = "DOUBLE"
END_OBJECT = EastBoundingCoordinate
OBJECT = WestBoundingCoordinate
Mandatory = "TRUE"
Data_Location = "PGE"
NUM_VAL = 1
TYPE = "DOUBLE"
END_OBJECT = WestBoundingCoordinate
OBJECT = SouthBoundingCoordinate
Mandatory = "TRUE"
Data_Location = "PGE"
NUM_VAL = 1
TYPE = "DOUBLE"
END_OBJECT = SouthBoundingCoordinate
OBJECT = NorthBoundingCoordinate
Mandatory = "TRUE"
Data_Location = "PGE"
NUM_VAL = 1
TYPE = "DOUBLE"
END_OBJECT = NorthBoundingCoordinate
END_GROUP = BoundingRectangle
END_GROUP = HorizontalSpatialDomainContainer
GROUP = GranuleLocality
OBJECT = LocalityValue
Mandatory = "TRUE"
Data_Location = "MCF"
NUM_VAL = 1
TYPE = "STRING"
Value = "Global"
END_OBJECT = LocalityValue
END_GROUP = GranuleLocality
END_GROUP = SpatialDomainContainer
GROUP = RangeDateTime
OBJECT = RangeEndingDate
Mandatory = "TRUE"
Data_Location = "PGE"
NUM_VAL = 1
TYPE = "DATE"
END_OBJECT = RangeEndingDate
OBJECT = RangeEndingTime
Mandatory = "TRUE"
Data_Location = "PGE"
NUM_VAL = 1
TYPE = "TIME"
END_OBJECT = RangeEndingTime
OBJECT = RangeBeginningDate
Mandatory = "TRUE"
Data_Location = "PGE"
NUM_VAL = 1
TYPE = "DATE"
END_OBJECT = RangeBeginningDate
OBJECT = RangeBeginningTime
Mandatory = "TRUE"
Data_Location = "PGE"
NUM_VAL = 1
TYPE = "TIME"
END_OBJECT = RangeBeginningTime
END_GROUP = RangeDateTime
GROUP = PGEVersionClass
OBJECT = PGEVersion
Mandatory = "TRUE"
Data_Location = "PGE"
NUM_VAL = 1
TYPE = "STRING"
END_OBJECT = PGEVersion
END_GROUP = PGEVersionClass
GROUP = AssociatedPlatformInstrumentSensor
OBJECT = AssociatedPlatformInstrumentSensorContainer
Data_Location = "NONE"
Mandatory = "TRUE"
CLASS = "1"
OBJECT = AssociatedSensorShortName
Mandatory = "TRUE"
CLASS = "1"
Data_Location = "MCF"
NUM_VAL = 1
TYPE = "STRING"
Value = "MODIS"
END_OBJECT = AssociatedSensorShortName
OBJECT = AssociatedPlatformShortName
Mandatory = "TRUE"
CLASS = "1"
Data_Location = "MCF"
NUM_VAL = 1
TYPE = "STRING"
Value = "Terra"
END_OBJECT = AssociatedPlatformShortName
OBJECT = AssociatedInstrumentShortName
Mandatory = "TRUE"
CLASS = "1"
Data_Location = "MCF"
NUM_VAL = 1
TYPE = "STRING"
Value = "MODIS"
END_OBJECT = AssociatedInstrumentShortName
END_OBJECT = AssociatedPlatformInstrumentSensorContainer
END_GROUP = AssociatedPlatformInstrumentSensor
NOTE: There are no AdditionalAttributes in this file
GROUP = AdditionalAttributes
OBJECT = AdditionalAttributesContainer
Data_Location = "NONE"
Mandatory = "FALSE"
CLASS = "M"
OBJECT = AdditionalAttributeName
Mandatory = "FALSE"
CLASS = "M"
Data_Location = "PGE"
NUM_VAL = 1
TYPE = "STRING"
END_OBJECT = AdditionalAttributeName
GROUP = InformationContent
CLASS = "M"
OBJECT = ParameterValue
Mandatory = "FALSE"
Data_Location = "PGE"
NUM_VAL = 1
TYPE = "STRING"
END_OBJECT = ParameterValue
END_GROUP = InformationContent
END_OBJECT = AdditionalAttributesContainer
END_GROUP = AdditionalAttributes
END_GROUP = INVENTORYMETADATA
ArchiveMetadata.0: The following is the MCF section that will be used
to create the archive metadata string.
GROUP = ARCHIVEDMETADATA
GROUPTYPE = MASTERGROUP
OBJECT = AlgorithmPackageAcceptanceDate
Mandatory = "FALSE"
Data_Location = "PGE"
TYPE = "STRING"
NUM_VAL = 1
END_OBJECT = AlgorithmPackageAcceptanceDate
OBJECT = AlgorithmPackageMaturityCode
Mandatory = "FALSE"
Data_Location = "PGE"
TYPE = "STRING"
NUM_VAL = 1
END_OBJECT = AlgorithmPackageMaturityCode
OBJECT = AlgorithmPackageName
Mandatory = "FALSE"
Data_Location = "PGE"
TYPE = "STRING"
NUM_VAL = 1
END_OBJECT = AlgorithmPackageName
OBJECT = AlgorithmPackageVersion
Mandatory = "FALSE"
Data_Location = "PGE"
TYPE = "STRING"
NUM_VAL = 1
END_OBJECT = AlgorithmPackageVersion
OBJECT = LongName
DATA_LOCATION = "MCF"
TYPE = "STRING"
NUM_VAL = 1
MANDATORY = "TRUE"
Value = "MODIS/Terra Aerosol Optical Thickness Daily L3 Global 0.05Deg CMA"
END_OBJECT = LongName
OBJECT = SPSOPARAMETERS
DATA_LOCATION = "MCF"
TYPE = "STRING"
NUM_VAL = 1
MANDATORY = "TRUE"
Value = "None"
END_OBJECT = SPSOPARAMETERS
OBJECT = PROCESSINGCENTER
DATA_LOCATION = "MCF"
TYPE = "STRING"
NUM_VAL = 1
MANDATORY = "TRUE"
Value = "MODAPS"
END_OBJECT = PROCESSINGCENTER
OBJECT = ProcessingEnvironment
Data_Location = "PGE"
Mandatory = "FALSE"
TYPE = "STRING"
NUM_VAL = 1
END_OBJECT = ProcessingEnvironment
OBJECT = DESCRrevision
Data_Location = "MCF"
Mandatory = "TRUE"
NUM_VAL = 1
TYPE = "STRING"
VALUE = "5.0"
END_OBJECT = DESCRrevision
OBJECT = ProductionHistory
Data_Location = "PGE"
Mandatory = "FALSE"
NUM_VAL = 1
TYPE = "STRING"
END_OBJECT = ProductionHistory
OBJECT = SystemFileName
Data_Location = "PGE"
Mandatory = "FALSE"
NUM_VAL = 75
TYPE = "STRING"
END_OBJECT = SystemFileName
END_GROUP = ARCHIVEDMETADATA
END
Dimensions:
Dimension Name Value
Dimension_1 Data Lines 3600
Dimension_2 Data Samples Per Line 7200
DataFields:
The exact contents of this file depends upon the contents of
the IDS inputs that are read by MOD_PR09C.exe. For collection 6
this file is anticipated to contain:
"Coarse Resolution AOT Model Residual Values"
"Coarse Resolution AOT at 550 nm"
"Coarse Resolution Water Vapor"
"Coarse Resolution Air Temperature (2m)"
"Coarse Resolution Atmospheric Optical Depth QA"
"Coarse Resolution Atmospheric Optical Depth Model"
All data stored within DataFields that contain the HDF attributes
"scale_factor" and "add_offset" are scaled according to the following data
conversion:
parameter = scale_factor * (file data - add_offset)
file data = (parameter / scale_factor) + add_offset
DataField DataField_1
Name Coarse Resolution AOT Model Residual Values
Data Type INT16
Dimensions Dimension_1, Dimension_2
DataField_1 HDF Attributes:
Attribute Data Type Quantity Value
long_name STRING 1 Coarse Resolution AOT
Model Residual Values
units STRING 1 (unitless)
valid_range INT16 2 0, 3000
_FillValue INT16 1 60
scale_factor FLOAT64 1 0.001
scale_factor_err FLOAT64 1 0.0
add_offset FLOAT64 1 0.0
add_offset_err FLOAT64 1 0.0
calibrated_nt INT32 1 5
DataField DataField_2
Name Coarse Resolution AOT at 550 nm
Data Type INT16
Dimensions Dimension_1, Dimension_2
DataField_2 HDF Attributes:
Attribute Data Type Quantity Value
long_name STRING 1 Coarse Resolution AOT at 550 nm
units STRING 1 (unitless)
valid_range INT16 2 0, 3000
_FillValue INT16 1 60
scale_factor FLOAT64 1 0.001
scale_factor_err FLOAT64 1 0.0
add_offset FLOAT64 1 0.0
add_offset_err FLOAT64 1 0.0
calibrated_nt INT32 1 5
DataField DataField_3
Name Coarse Resolution Water Vapor
Data Type UINT16
Dimensions Dimension_1, Dimension_2
DataField_3 HDF Attributes:
Attribute Data Type Quantity Value
long_name STRING 1 Coarse Resolution Water Vapor
units STRING 1 g/cm^2
valid_range INT16 2 0, 255
_FillValue INT16 1 0
scale_factor FLOAT64 1 0.01
scale_factor_err FLOAT64 1 0.0
add_offset FLOAT64 1 0.0
add_offset_err FLOAT64 1 0.0
calibrated_nt INT32 1 5
DataField DataField_4
Name Coarse Resolution Air Temperature (2m)
Data Type UINT16
Dimensions Dimension_1, Dimension_2
DataField_4 HDF Attributes:
Attribute Data Type Quantity Value
long_name STRING 1 Coarse Resolution Air Temperature (2m)
units STRING 1 degrees K
valid_range INT16 2 0, 40000
_FillValue INT16 1 0
scale_factor FLOAT64 1 0.01
scale_factor_err FLOAT64 1 0.0
add_offset FLOAT64 1 0.0
add_offset_err FLOAT64 1 0.0
calibrated_nt INT32 1 5
DataField DataField_5
Name Coarse Resolution Atmospheric Optical Depth QA
Data Type UINT8
Dimensions Dimension_1, Dimension_2
Not bitmapped, but with the following values:
0 inital value;
1 None of the 500m pixels that correspond to this 1km pixel
has data that reaches either criteria for containing aerosols;
2 Pixel is over water;
3 One or more of the retrieved aerosol values has saturated
(and then all are set to a fill value);
4 Pixel is cloudy or mixed or has a high band 26 value;
5 Pixel had been flagged as water, but also had positive NDVI;
6 Pixel is flagged as water and tests clear;
7 Pixel is flagged as water and tests for turbidity;
8 Snow (set in aot_filter());
9 Bad geolocation, or high solar zenith;
10 Snow, or sunglint, or fire;
11 Bad 500m data, no aerosol retrieval;
12 Subpixel cloud (set in aot_filter());
13 Aerosol retrieval anomalies;
14 Possible salt-pan;
15 Desert;
16 Aerosol retrieval rejection (from global_AOTR_rejection_mask.hdf);
17 Anomalous atmospheric correction in 500m cloud test;
18 AOT set to zero in routine check_correction();
19 Adjacent to cloud;
127 Fill value (no data)
DataField_5 HDF Attributes:
Attribute Data Type Quantity Value
long_name STRING 1 Coarse Resolution Atmospheric
Optical Depth QA
units STRING 1 (unitless)
valid_range INT16 2 0, 19
_FillValue INT16 1 127
QA index STRING * (an index of Coarse Resolution Atmospheric Optical
Depth QA values, like the description above.)
DataField DataField_6
Name Coarse Resolution Atmospheric Optical Depth Model
Data Type UINT8
Dimensions Dimension_1, Dimension_2
DataField_6 HDF Attributes:
Attribute Data Type Quantity Value
long_name STRING 1 Coarse Resolution Atmospheric Optical Depth Model
units STRING 1 (unitless)
valid_range UINT8 2 1, 5
_FillValue UINT8 1 0
scale_factor FLOAT64 1 1
scale_factor_err FLOAT64 1 0.0
add_offset FLOAT64 1 0.0
add_offset_err FLOAT64 1 0.0
calibrated_nt UINT8 1 5
Model_values STRING 1 "0 = no AOTR, 1 = SMKL, 2 = SMKH, 3 = DUST, 4 = URBANPOLU, 5 = URBANCLEAN"