HDF-EOS V2 MODIS L2G-lite Thermal Bands File Specification Revision 1.0 (10/16/2013) Product ID(s): MODTB L2G 1DY 1KM (MODTBGA) Description: The MODIS 1km Resolution Level 2G (L2G) thermal band file contains the restructured Level 2 (L2) thermal bands data from (observations) which intersects a geographic area, a tile, in the MODIS Land global Level 3 (L3) grid. The global L3 grid is divided into a number of tiles, areas with a nominal size of 1100 km by 1100 km (10 deg. by 10 deg.). The data is stored at a nominal grid resolutions of 1km. A single 1km observation consist of the 1km brightness temperature data from bands 20, 31 and 31 and albedo from band 20 along with the orbit and granule pointer fields. The 1km observations are chosen based on nested best 500m observations. The 500m observations (and corresponding 1km observations) are chosen in the following three steps: 1. First, one 500m observation in each orbit for each grid cell is selected by selecting the one with the largest observation coverage. 2. Next, for a 500m grid cell, the 500m observations with the maximum observation coverage for each orbit are selected and sorted in the order of ascending orbit numbers (earliest first). 3. The first layer is then selected using the same compositing criteria as is used in the 8-day surface reflectance product (as of June 2005). The observation with the highest score is pulled up to the first layer and stored. Note that the scoring does not use a maximum observation coverage criteria, it uses: 1) best observation based on a QA score; and 2) then for observations with the same QA score and that are close to the smallest observed blue value, the one with the lowest view zenith angle. The observation coverage is stored with each observation so the end-user can always reorder the observations using whatever criteria they want, once they read them in. This new format reduces the number of 1km and 500m L2G files from five files to one file per day for each tile. The mapping between the original L2G files and this new L2G file is: MODPT1KD - granule_pnt MODTBGD - all SDSs except the orb_cov There are two ways to which the observation data can be stored in a L2G grid file, full and compact. The actual method is specified by the L2GStorageFormat metadata values. In both methods, the first layer of observations is stored in a 2 dimensional array. In the full method, all of the values are stored in a 3 dimensional array with the slowest varying dimension specifying the observation layer. This is an inefficient storage method because typically a large number of cells are empty. For the compact method, the additional observation values are stored in a single dimensional array, with the dimension corresponding to the number of additional observations since the beginning of the file. Essentially, the additional observations are run-length encoded with each observation stored sequentially for each cell. In addition, the a run-time parameter may specify that only the first layer be stored, in which case the additional arrays are not stored. Points of Contact: Robert Wolfe NASA's Goddard Space Flight Center, Code 614.5 Greenbelt, MD 20771 (301) 614-5508 robert.e.wolfe@nasa.gov Principal Investigator: Eric Vermote University of Maryland, College Park NASA's Goddard Space Flight Center, Code 614.5 Greenbelt, MD 20771 (301) 405-8052 vermote@kratmos.gsfc.nasa.gov =========================================================================== Generic Constructs ECS Metadata Strings: Notes: "FR" is an abbreviation for "FREE_RANGE". "D/T" is an abbreviation for "DATE/TIME" (A) implies that multiple values are stored within a single array. A value of "Variable" indicates that this value will vary according to the granule being processed. "M" means class M. CoreMetadata.0 This string will contain the following PVL fields: # of Field Name Data Value Value Type s GROUP = INVENTORYMETADATA GROUP = CollectionDescriptionClass SHORTNAME STRING 1 "MODTBGA" VERSIONID STRING 1 Variable END_GROUP = CollectionDescriptionClass GROUP = ECSDataGranule REPROCESSINGPLANNED STRING 1 "further update is anticipated" REPROCESSINGACTUAL STRING 1 "reprocessed" LOCALGRANULEID STRING 1 Variable DAYNIGHTFLAG STRING 1 Variable PRODUCTIONDATETIME D/T 1 Variable LOCALVERSIONID STRING 1 Variable SIZEMBECSDATAGRANULE DOUBLE 1 Variable END_GROUP = ECSDataGranule GROUP = PGEVersionClass PGEVERSION STRING 1 Variable END_GROUP = PGEVersionClass GROUP = InputGranule INPUTPOINTER STRING FR (A) Variable END_GROUP = InputGranule GROUP = RangeDateTime RANGEBEGINNINGDATE DATE 1 Variable RANGEBEGINNINGTIME TIME 1 Variable RANGEENDINGDATE DATE 1 Variable RANGEENDINGTIME TIME 1 Variable END_GROUP = RangeDateTime GROUP = GRing EXCLUSIONGRINGFLAG STRING 1 "N" END_GROUP = GRing GROUP = GRingPoint GRINGPOINTLATITUDE DOUBLE 4 (A) Variable GRINGPOINTLONGITUDE DOUBLE 4 (A) Variable GRINGPOINTSEQUENCENO INTEGER 4 (A) Variable END_GROUP = GRingPoint GROUP = ZoneIdentifierClass ZONEIDENTIFIER STRING 1 "0" END_GROUP = ZoneIdentifierClass GROUP = OrbitCalculatedSpatialDomain ** number of containers is equal to "NumberofOrbits" ** ORBITNUMBER INTEGER 1 Variable EQUATORCROSSINGLONGITUDE DOUBLE 1 Variable EQUATORCROSSINGDATE DATE 1 Variable EQUATORCROSSINGTIME TIME 1 Variable END_GROUP = OrbitCalculatedSpatialDomain GROUP = MeasuredParameter PARAMETERNAME STRING FR (A) "MOD09G" GROUP = QAFLAGS AUTOMATICQUALITYFLAG STRING 1 Variable AUTOMATICQUALITYFLAGEXPLANATION STRING 1 Variable SCIENCEQUALITYFLAG STRING 1 Variable SCIENCEQUALITYFLAGEXPLANATION STRING 1 Variable END_GROUP = QAFlags GROUP = QAStats QAPERCENTMISSINGDATA INTEGER 1 Variable QAPERCENTOUTOFBOUNDSDATA INTEGER 1 Variable QAPERCENTINTERPOLATEDDATA INTEGER 1 Variable END_GROUP = QAStats END_GROUP = MeasuredParameter GROUP = AssociatedPlatformInstrumentSensor ASSOCIATEDPLATFORMSHORTNAME STRING 1 "Terra/Aqua" ASSOCIATEDINSTRUMENTSHORTNAME STRING 1 "MODIS" ASSOCIATEDSENSORSHORTNAME STRING 1 "MODIS" END_GROUP = AssociatedPlatformInstrumentSensor GROUP = AdditionalAttributes ADDITIONALATTRIBUTENAME STRING FR (A) Variable PARAMETERVALUE STRING FR (A) Variable ADDITIONALATTRIBUTENAME.1 = "QAPERCENTGOODQUALITY" ADDITIONALATTRIBUTENAME.2 = "QAPERCENTOTHERQUALITY" ADDITIONALATTRIBUTENAME.3 = "QAPERCENTNOTPRODUCEDCLOUD" ADDITIONALATTRIBUTENAME.4 = "QAPERCENTNOTPRODUCEDOTHER" ADDITIONALATTRIBUTENAME.5 = "HORIZONTALTILENUMBER" ADDITIONALATTRIBUTENAME.6 = "VERTICALTILENUMBER" ADDITIONALATTRIBUTENAME.7 = "TileID" ADDITIONALATTRIBUTENAME.8 = "PROCESSVERSION" ADDITIONALATTRIBUTENAME.9 = "identifier_product_doi" ADDITIONALATTRIBUTENAME.10 = "identifier_product_doi_authority" END_GROUP = AdditionalAttributes END_GROUP = INVENTORYMETADATA ArchiveMetadata.0 This string will contain the following PVL fields: # of Field Name Data Value Value Type s GROUP = ARCHIVEMETADATA GROUP = BoundingRectangle WESTBOUNDINGCOORDINATE DOUBLE 1 Variable NORTHBOUNDINGCOORDINATE DOUBLE 1 Variable EASTBOUNDINGCOORDINATE DOUBLE 1 Variable SOUTHBOUNDINGCOORDINATE DOUBLE 1 Variable END_GROUP = BoundingRectangle GEOANYABNORMAL STRING 1 Variable GEOESTMAXRMSERROR DOUBLE 1 Variable LONGNAME STRING 1 "MODIS/Terra Thermal Bands Daily L2G Global 1km SIN Grid Day" SPSOPARAMETERS STRING 1 "2015" PROCESSINGCENTER STRING 1 "MODAPS" NUMBEROFOVERLAPGRANULES INTEGER 1 Variable NUMBEROFINPUTGRANULES INTEGER 1 Variable NUMBEROFGRANULES INTEGER 1 Variable GRANULENUMBERARRAY INTEGER FR(A) Variable GRANULEPOINTERARRAY INTEGER FR(A) Variable ORBITNUMBERARRAY INTEGER FR(A) Variable NUMBEROFORBITS INTEGER 1 Variable GRANULEBEGINNINGDATETIME STRING "NumberofGranules" Variable GRANULEENDINGDATETIME STRING "NumberofGranules" Variable GRANULEDAYNIGHTFLAG STRING "NumberofGranules" Variable GRANULEDAYOFYEAR INTEGER "NumberofGranules" Variable GRANULEBEGINNINGDATETIMEARRAY STRING FR(A) Variable GRANULEENDINGDATETIMEARRAY STRING FR(A) Variable GRANULEDAYNIGHTFLAGARRAY STRING FR(A) Variable NADIRDATARESOLUTION STRING 1 Variable CHARACTERISTICBINANGULARSIZE DOUBLE 1 Variable CHARACTERISTICBINSIZE DOUBLE 1 Variable DATACOLUMNS INTEGER 1 Variable DATAROWS INTEGER 1 Variable GLOBALGRIDCOLUMNS INTEGER 1 Variable GLOBALGRIDROWS INTEGER 1 Variable MAXIMUMOBSERVATIONS INTEGER 1 Variable ADDITIONALLAYERS INTEGER 1 Variable TOTALOBSERVATIONS INTEGER 1 Variable TOTALADDITIONALOBSERVATIONS INTEGER 1 Variable COVERAGECALCULATIONMETHOD STRING 1 Variable FIRSTLAYERSELECTIONCRITERIA STRING 1 Variable L2GStorageFormat STRING 1 Variable PROCESSINGENVIRONMENT STRING 1 Variable DESCRREVISION STRING 1 Variable SYSTEMFILENAME STRING FR (A) Variable PERCENTPROCESSED INTEGER 1 Variable PERCENTLAND INTEGER 1 Variable PERCENTLANDSEAMASKCLASS INTEGER 8 Variable PERCENTCLOUDY INTEGER 1 Variable PERCENTSHADOW INTEGER 1 Variable PERCENTLOWSUN INTEGER 1 Variable RANKING STRING 1 Variable KEEPALL STRING 1 Variable COVERAGEMINIMUM DOUBLE 1 Variable MAXOUTPUTRES STRING 1 Variable DEEPOCEANFLAG STRING 1 Variable CLOUDOPTION STRING 1 Variable ****************************************************************** * 1. The field "L2GStorageFormat" * is either "full", "compact" or "one layer only". * 2. The field "CoverageCalculationMethod" is either * "area" or "volume". * 3. The field "FirstLayerSelectionCriteria" is either * "nearest neighbor" or "maximum observation coverage". ****************************************************************** END_GROUP = ARCHIVEMETADATA StructuralMetadata.0 This string will be populated automatically by HDF-EOS. Grid Structure: MODIS_Grid_2D Dimensions: Dimension Name Value YDim:MODIS_Grid_2D "DataRows" XDim:MODIS_Grid_2D "DataColumns" Corner Locations: Corner Values UpperLeftPointMtrs (Variable, Variable) LowerRightPointMtrs (Variable, Variable) Geographic Grid Projection Parameters: Supported Grids: Integerized Sinusoidal (GCTP_ISINUS) Sinusoidal (GCTP_SNSOID) Interrupted Goodes Homolosine (GCTP_GOOD) Lambert Azimuthal Equal Area (GCTP_LAMAZ) Projection gridID = GCTP_ISINUS ProjParam[0] 6371007.181 ProjParam[1 to 7] 0.0 ProjParam[8] 86400 ProjParam[9] 0.0 ProjParam[10] 1.0 ProjParam[11 to 12] 0.0 Spherecode -1 GridOrigin HDFE_GD_UL Projection gridID = GCTP_SNSOID ProjParam[0] 6371007.181 ProjParam[1 to 12] 0.0 Spherecode -1 GridOrigin HDFE_GD_UL Projection gridID = GCTP_GOOD ProjParam[0 to 12] 0.0 Spherecode 19 GridOrigin HDFE_GD_UL Projection gridID = GCTP_LAMAZ ProjParam[0] 6371228.0 ProjParam[1 to 5] 0.0 ProjParam[6] Variable ProjParam[7 to 12] 0.0 Spherecode 19 GridOrigin HDFE_GD_UL Grid Structure: MODIS_Grid_3D Dimensions: Dimension Name Value Additional Layers:MODIS_Grid_3D "AdditionalLayers" YDim:MODIS_Grid_3D "DataRows" XDim:MODIS_Grid_3D "DataColumns" Corner Locations: (same as MODIS_Grid_2D) Geographic Grid Projection Parameters: (same as MODIS_Grid_2D) =========================================================================== Additional global attributes: Data Name Type maximum_observations_1km INT8 total_additional_observations_1km INT32 l2g_storage_format_1km STRING NumberLandWater1km INT32 identifier_product_doi STRING identifier_product_doi_authority STRING =========================================================================== DataFields: The following datafields are always in this file: num_observations BAND20_1 BAND31_1 BAND32_1 BAND20ALBEDO_1 orbit_pnt_1 granule_pnt_1 If the "L2GStorageFormat" metadata value is "full", the following datafields are also present: BAND20_1 BAND31_1 BAND32_1 BAND20ALBEDO_1 orbit_pnt_f granule_pnt_f If the "L2GStorageFormat" metadata value is "compact", the following datafields are also present: BAND20_c BAND31_c BAND32_c BAND20ALBEDO_c orbit_pnt_c granule_pnt_c nadd_obs_row Each datafield has at least the following 4 attributes: long_name (STRING) units (STRING) valid_range (agrees with data type of SDS) _FillValue (agrees with data type of SDS) Some datafields also contain the following 5 attributes: add_offset (float64) add_offset_err (float64) calibrated_nt (int32) scale_factor (float64) scale_factor_err (float64) Nadir Data Resolution (STRING - "1km") QA index (STRING) =========================================================================== Name Data Dimensions Type num_observations INT8 "YDim:MODIS_Grid_2D", "XDim:MODIS_Grid_2D" Description: The number of 1km observations per pixel contained within this L2G file. In addition, if the value is less than zero, it means that intersections were not computed for this cell. If it is -1, it is part of the fill region of the grid. If it is -2, it is in the area identified as 'non-production' in the Land Production Mask. HDF Attributes: Number of Values or Max. Attribute Data String Value Type Length long_name STRING 22 "Number of observations" units STRING 4 "none" valid_range INT8 2 0, 127 _FillValue INT8 1 -1 =========================================================================== Name Data Dimensions Type BAND20_1 UINT16 "YDim:MODIS_Grid_2D", "XDim:MODIS_Grid_2D" BAND20_f UINT16 "Additional Layers:MODIS_Grid_3D", "YDim:MOD_Grid_L2g_3D", "XDim:MOD_Grid_L2g_3D" BAND20_c UINT16 "TotalAdditionalObservations" metadata value Description: 1km MODIS Band 20 Brightness Temperature "BAND20_1" is for storing the first layer of observations and is always stored. "BAND20_f" and "BAND20_c" are for storing the additional layers of observations. "BAND20_f" is for the full format and is stored only if "L2GStorageFormat" is "full". "BAND20_c" is for the compact format and is stored only if "L2GStorageFormat" is "compact". Number of Values or Max. Attribute Data String Value Type Length long_name STRING 48 Variable units STRING 1 "K" valid_range UINT16 2 0, 33300 _FillValue UINT16 1 0 add_offset FLOAT64 1 0.0 add_offset_err FLOAT64 1 0.0 calibrated_nt INT32 1 5 scale_factor FLOAT64 1 100.0 scale_factor_err FLOAT64 1 0.0 Nadir Data Resolution STRING 3 "1km" Note: The attribute "long_name" is "1km Band 20 Brightness Temperature - first layer" for "BAND20_1", "1km Band 20 Brightness Temperature - additional layers, full" for "BAND20_f", or "1km Band 20 Brightness Temperature - additional layers, compact" for "BAND20_c". =========================================================================== Name Data Dimensions Type BAND31_1 UINT16 "YDim:MODIS_Grid_2D", "XDim:MODIS_Grid_2D" BAND31_f UINT16 "Additional Layers:MODIS_Grid_3D", "YDim:MOD_Grid_L2g_3D", "XDim:MOD_Grid_L2g_3D" BAND31_c UINT16 "TotalAdditionalObservations" metadata value Description: 1km MODIS Band 31 Brightness Temperature "BAND31_1" is for storing the first layer of observations and is always stored. "BAND31_f" and "BAND31_c" are for storing the additional layers of observations. "BAND31_f" is for the full format and is stored only if "L2GStorageFormat" is "full". "BAND31_c" is for the compact format and is stored only if "L2GStorageFormat" is "compact". Number of Values or Max. Attribute Data String Value Type Length long_name STRING 48 Variable units STRING 1 "K" valid_range UINT16 2 0, 37800 _FillValue UINT16 1 0 add_offset FLOAT64 1 0.0 add_offset_err FLOAT64 1 0.0 calibrated_nt INT32 1 5 scale_factor FLOAT64 1 100.0 scale_factor_err FLOAT64 1 0.0 Nadir Data Resolution STRING 3 "1km" Note: The attribute "long_name" is "1km Band 31 Brightness Temperature - first layer" for "BAND31_1", "1km Band 31 Brightness Temperature - additional layers, full" for "BAND31_f", or "1km Band 31 Brightness Temperature - additional layers, compact" for "BAND31_c". =========================================================================== Name Data Dimensions Type BAND32_1 UINT16 "YDim:MODIS_Grid_2D", "XDim:MODIS_Grid_2D" BAND32_f UINT16 "Additional Layers:MODIS_Grid_3D", "YDim:MOD_Grid_L2g_3D", "XDim:MOD_Grid_L2g_3D" BAND32_c UINT16 "TotalAdditionalObservations" metadata value Description: 1km MODIS Band 32 Brightness Temperature "BAND32_1" is for storing the first layer of observations and is always stored. "BAND32_f" and "BAND32_c" are for storing the additional layers of observations. "BAND32_f" is for the full format and is stored only if "L2GStorageFormat" is "full". "BAND32_c" is for the compact format and is stored only if "L2GStorageFormat" is "compact". Number of Values or Max. Attribute Data String Value Type Length long_name STRING 48 Variable units STRING 1 "K" valid_range UINT16 2 0, 41900 _FillValue UINT16 1 0 add_offset FLOAT64 1 0.0 add_offset_err FLOAT64 1 0.0 calibrated_nt INT32 1 5 scale_factor FLOAT64 1 100.0 scale_factor_err FLOAT64 1 0.0 Nadir Data Resolution STRING 3 "1km" Note: The attribute "long_name" is "1km Band 32 Brightness Temperature - first layer" for "BAND32_1", "1km Band 32 Brightness Temperature - additional layers, full" for "BAND32_f", or "1km Band 32 Brightness Temperature - additional layers, compact" for "BAND32_c". =========================================================================== Name Data Dimensions Type BAND20ALBEDO_1 INT16 "YDim:MODIS_Grid_2D", "XDim:MODIS_Grid_2D" BAND20ALBEDO_f INT16 "Additional Layers:MODIS_Grid_3D", "YDim:MOD_Grid_L2g_3D", "XDim:MOD_Grid_L2g_3D" BAND20ALBEDO_c INT16 "TotalAdditionalObservations" metadata value Description: 1km MODIS Band 20 Albedo "BAND20ALBEDO_1" is for storing the first layer of observations and is always stored. "BAND20ALBEDO_f" and "BAND20ALBEDO_c" are for storing the additional layers of observations. "BAND20ALBEDO_f" is for the full format and is stored only if "L2GStorageFormat" is "full". "BAND20ALBEDO_c" is for the compact format and is stored only if "L2GStorageFormat" is "compact". Number of Values or Max. Attribute Data String Value Type Length long_name STRING 26 Variable units STRING 11 "reflectance" valid_range INT16 2 0, 5000 _FillValue INT16 1 -28672 add_offset FLOAT64 1 0.0 add_offset_err FLOAT64 1 0.0 calibrated_nt INT32 1 5 scale_factor FLOAT64 1 10000.0 scale_factor_err FLOAT64 1 0.0 Nadir Data Resolution STRING 3 "1km" Note: The attribute "long_name" is "BAND20ALBEDO - first layer" for "BAND20ALBEDO_1", "BAND20ALBEDO - additional layers, full" for "BAND20ALBEDO_f", or "BAND20ALBEDO - additional layers, compact" for "BAND20ALBEDO_c". =========================================================================== Name Data Dimensions Type orbit_pnt_1 INT8 "YDim:MODIS_Grid_2D", "XDim:MODIS_Grid_2D" orbit_pnt_f INT8 "Additional Layers:MODIS_Grid_3D", "YDim:MODIS_Grid_3D", "XDim:MODIS_Grid_3D" orbit_pnt_c INT8 "TotalAdditionalObservations" metadata value Description: Pointer to the orbit information for each 1km observation. This value is zero relative, with zero (0) refering to the first orbit in the "OrbitCalculatedSpatialDomain" HDF EOS inventory metadata group. "orbit_pnt_1" is for storing the first layer of observations and is always stored. "orbit_pnt_f" and "orbit_pnt_c" are for storing the additional layers of observations. "orbit_pnt_f" is for the full format and is stored only if "L2GStorageFormat" is "full". "orbit_pnt_c" is for the compact format and is stored only if "L2GStorageFormat" is "compact". HDF Attributes: Number of Values or Max. Attribute Data String Value Type Length long_name STRING 42 Variable units STRING 6 "none" valid_range INT8 2 0, 15 _FillValue INT8 1 -1 Note: The attribute "long_name" is "Orbit pointer - first layer" for "orbit_pnt_1", "Orbit pointer - additional layers, full" for "orbit_pnt_f", or "Orbit pointer - additional layers, compact" for "orbit_pnt_c". =========================================================================== Name Data Dimensions Type granule_pnt_1 UINT8 "YDim:MODIS_Grid_2D", "XDim:MODIS_Grid_2D" granule_pnt_f UINT8 "Additional Layers:MODIS_Grid_3D", "YDim:MODIS_Grid_3D", "XDim:MODIS_Grid_3D" granule_pnt_c UINT8 "TotalAdditionalObservations" metadata value Description: Pointer to the granule information for each 1km observation. This value is zero relative, with zero (0) refering to the first overlap granule in the "GranulePointerArray" HDF EOS ArchiveMetadata group. "granule_pnt_1" is for storing the first layer of observations and is always stored. "granule_pnt_f" and "granule_pnt_c" are for storing the additional layers of observations. "orbit_pnt_f" is for the full format and is stored only if "L2GStorageFormat" is "full". "orbit_pnt_c" is for the compact format and is stored only if "L2GStorageFormat" is "compact". HDF Attributes: Number of Values or Max. Attribute Data String Value Type Length long_name STRING 42 Variable units STRING 6 "none" valid_range UINT8 2 0, 254 _FillValue UINT8 1 255 Note: The attribute "long_name" is "Granule pointer - first layer" for "granule_pnt_1", "Granule pointer - additional layers, full" for "granule_pnt_f", or "Granule pointer - additional layers, compact" for "granule_pnt_c". =========================================================================== Name Data Dimensions Type nadd_obs_row INT32 "DataRows" metadata value Description: The number of additional observations in each row in the compact storage form of the L2G grid. This field is only stored if "L2GStorageFormat" is "compact". HDF Attributes: Number of Values or Max. Attribute Data String Value Type Length long_name STRING 41 "Number of additional observations per row" units STRING 4 "none" valid_range INT32 2 0, INT32_MAX _FillValue INT32 1 -1 ===========================================================================