HDF-EOS V2 MODIS L2G Thermal Bands File Specification Revision 1.0 (06/01/05) Product ID(s): MODIS Thermal Band L2G Daily 1km Night (MODTBGN) NOTE: Currently cannot be made since thermal bands are read from MOD09 and MOD09 granules are made only for day granules. Description: The MODIS 1km Resolution Level 2G (L2G) Thermal Band file contains the restructured Level 2 (L2) thermal band data from band 20, 31 and 32 which intersects a geographic area, a tile in the Level 3 (L3) grid. The actual data stored is based on a set of pointers to observations which intersect each cell (pixel) in the corresponding L2G 1km Observation Pointer file. A single 1km thermal band observation consist of observations from Bands 20, 31, and 32. Nominally, a entire data-day's (24 hours GMT) worth of data, which intersects the tile, is stored in the file. L2 thermal bands observations are read from L2 MOD09 product. 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.). For each pixel in the output tile, the 1km observation pointer is used to find the location of the spatial element in each of the L2 product files The value for each observation is extracted from the corresponding locations in the L2 file. A one-to-one correspondence is kept between the information in the observation pointer file and the surface reflectance file. One additional data set is stored in the output file, the orbit and coverage data set. The orbit number and scan half field are intended to be used to allow a user to find the corresponding geolocation angle information for a given observation. The observation coverage field gives a coarse estimate of the area of intersection between the observation and the cell (relative to the observation area). Both of these fields are primarily meant to be used in the absence of the corresponding observation pointer files. 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 metadatum. 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. Only the full format is meant for distribution. In addition, for initial production after launch, the user may specify that only the first layer be stored, in which case the additional arrays are not stored. Point of Contact: Sadashiva Devadiga (301) 614-5449 Kai Yang Science Systems and Applications Inc. NASA's Goddard Space Flight Center, Code 922 Greenbelt, MD 20771 (301) 614-5452 kyang@ltpmail.gsfc.nasa.gov Robert Wolfe Hughes STX NASA's Goddard Space Flight Center, Code 922 Greenbelt, MD 20771 (301) 614-5508 robert.wolfe@gsfc.nasa.gov Principal Investigator: Eric Vermote University of Maryland, College Park NASA's Goddard Space Flight Center, Code 923 Greenbelt, MD 20771 (301) 286-6232 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 "MODTBGD" VERSIONID STRING 1 Variable END_GROUP = CollectionDescriptionClass GROUP = ECSDataGranule REPROCESSINGPLANNED STRING 1 "no further update anticipated" REPROCESSINGACTUAL STRING 1 "processed once" LOCALGRANULEID STRING 1 Variable DAYNIGHTFLAG STRING 1 Variable PRODUCTIONDATETIME D/T 1 Variable LOCALVERSIONID STRING 1 Variable SIZEMBECSDATAGRANULE FLOAT 1 Variable END_GROUP = ECSDataGranule GROUP = PGEVersionClass PGEVERSION STRING 1 "5.0.0" 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 = OrbitCalculatedSpatialDomain ORBITNUMBER INTEGER "NumberofGranules" Variable EQUATORCROSSINGLONGITUDE DOUBLE "NumberofGranules" Variable EQUATORCROSSINGDATE DATE "NumberofGranules" Variable EQUATORCROSSINGTIME TIME "NumberofGranules" Variable END_GROUP = OrbitCalculatedSpatialDomain GROUP = MeasuredParameter PARAMETERNAME STRING FR (A) Variable GROUP = QAFlags AUTOMATICQUALITYFLAG STRING 1 Variable AUTOMATICQUALITYFLAGEXPLANATION STRING 1 Variable OPERATIONALQUALITYFLAG STRING 1 Variable OPERATIONALQUALITYFLAGEXPLANATION STRING 1 Variable SCIENCEQUALITYFLAG STRING 1 Variable SCIENCEQUALITYFLAGEXPLANATION STRING 1 Variable END_GROUP = QAFlags GROUP = QAStats QAPERCENTMISSINGDATA INTEGER 1 Variable END_GROUP = QAStats END_GROUP = MeasuredParameter ****************************************************************** * Note that MeasuredParameter group has * Class = "M" (see sample MCF file). * Basically one needs to put DataField (SDS) names to PARAMETERNAME * and put corresponding QA metadata to QAFlags and QAStats. * If one has only QA metadata for whole product, instead for each * and individual DatFiels (SDS), it's suggested to put product * name to PARAMETERNAME. ******************************************************************* GROUP = AssociatedPlatformInstrumentSensor ASSOCIATEDPLATFORMSHORTNAME STRING 1 "AM-1" ASSOCIATEDINSTRUMENTSHORTNAME STRING 1 "MODIS" ASSOCIATEDSENSORSHORTNAME STRING 1 "CCD" 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 = "QAPERCENTPOOROUTPUT500MBAND3" ADDITIONALATTRIBUTENAME.9 = "QAPERCENTPOOROUTPUT500MBAND4" ADDITIONALATTRIBUTENAME.10 = "QAPERCENTPOOROUTPUT500MBAND5" ADDITIONALATTRIBUTENAME.11 = "QAPERCENTPOOROUTPUT500MBAND6" ADDITIONALATTRIBUTENAME.12 = "QAPERCENTPOOROUTPUT500MBAND7" ******************************************************* * Other SCF defined PSA attributes: ******************************************************* 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 ALGORITHMPACKAGEACCEPTANCEDATE STRING 1 "TBD" ALGORITHMPACKAGEMATURITYCODE STRING 1 "Preliminary" ALGORITHMPACKAGENAME STRING 1 "MOD_PRMGR" ALGORITHMPACKAGEVERSION STRING 1 "2.1" GEOANYABNORMAL STRING 1 Variable GEOESTMAXRMSERROR DOUBLE 1 Variable LONGNAME STRING 1 "MODIS/Terra Thermal Bands Daily L2G Global 1km SIN Grid Night" SPSOPARAMETERS STRING 1 Variable PROCESSINGCENTER STRING 1 "GSFC" NUMBEROFOVERLAPGRANULES INTEGER 1 Variable NUMBEROFINPUTGRANULES INTEGER 1 Variable GRANULENUMBERARRAY INTEGER "NumberofGranules" Variable ORBITNUMBERARRAY INTEGER "NumberofGranules" Variable GRANULEBEGINNINGDATETIME STRING "NumberofGranules" Variable GRANULEENDINGDATETIME STRING "NumberofGranules" Variable GRANULEDAYNIGHTFLAG STRING "NumberofGranules" Variable MINIMUMLINEINDEX INTEGER "NumberofGranules" Variable MAXIMUMLINEINDEX INTEGER "NumberofGranules" Variable MINIMUMSAMPLEINDEX INTEGER "NumberofGranules" Variable MAXIMUMSAMPLEINDEX INTEGER "NumberofGranules" Variable GRANULEPOINTERARRAY INTEGER "NumberofGranules" 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 REFERENCEORBITNUMBER INTEGER 1 Variable ****************************************************************** * 1. The field "L2GStorageFormat" is either "full", * "compact" or "one layer only". * 2. The field "CoverageCalculationMethod" is either * "area" or "simple PSF". * 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: MOD_Grid_L2g_2d Dimensions: Dimension Name Value YDim:MOD_Grid_L2g_2d "Data Rows" XDim:MOD_Grid_L2g_2d "Data Columns" Corner Locations: Corner Values UpperLeftPointMtrs (Variable, Variable) LowerRightPointMtrs (Variable, Variable) Geographic Grid Projection Parameters: Note that all grid parameters are currently under development and may need to be revised prior to V2.0 code delivery. Supported Grids: Integerized Sinusoidal (GCTP_ISINUS) 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_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: MOD_Grid_L2g_3d Dimensions: Dimension Name Value Additional Layers:MOD_Grid_L2g_3d "Additional Layers" YDim:MOD_Grid_L2g_3d "Data Rows" XDim:MOD_Grid_L2g_3d "Data Columns" Corner Locations: (same as MOD_Grid_L2g_2d) Geographic Grid Projection: (same as MOD_Grid_L2g_2d) =========================================================================== DataFields: The following datafields are always in this file: num_observations BAND20_1 BAND31_1 BAND32_1 orb_cov_1 If the metadatum "L2GStorageFormat" is "full", the following datafields are also present: BAND20_f BAND31_f BAND32_f orb_cov_f If the metadatum "L2GStorageFormat" is "compact", the following datafields are also present: BAND20_c BAND31_c BAND32_c orb_cov_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) =========================================================================== Name Data Dimensions Type num_observations INT8 "YDim:MOD_Grid_L2g_2d", "XDim:MOD_Grid_L2g_2d" Description: The number of 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:MOD_Grid_L2g_2d", "XDim:MOD_Grid_L2g_2d" BAND20_f UINT16 "Additional Layers:MOD_Grid_L2g_3d", "YDim:MOD_Grid_L2g_3d", "XDim:MOD_Grid_L2g_3d" BAND20_c UINT16 metadatum "TotalAdditionalObservations" Description: MODIS Thermal Band 20. "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 the metadatum "L2GStorageFormat" is "full". "BAND20_c" is for the compact format and is stored only if the metadatum "L2GStorageFormat" is "compact". HDF Attributes: Number of Values or Max. Attribute Data String Value Type Length long_name STRING 60 Variable units STRING 11 K valid_range INT16 2 0, 32236 _FillValue INT16 1 0 Nadir Data Resolution STRING 4 1km scale_factor FLOAT64 1 100 add_offset FLOAT64 1 0 scale_factor_err FLOAT64 1 0 add_offset_err FLOAT64 1 0 calibrated_nt INT32 1 5 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:MOD_Grid_L2g_2d", "XDim:MOD_Grid_L2g_2d" BAND31_f UINT16 "Additional Layers:MOD_Grid_L2g_3d", "YDim:MOD_Grid_L2g_3d", "XDim:MOD_Grid_L2g_3d" BAND31_c UINT16 metadatum "TotalAdditionalObservations" Description: MODIS Thermal Band 31. "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 the metadatum "L2GStorageFormat" is "full". "BAND31_c" is for the compact format and is stored only if the metadatum "L2GStorageFormat" is "compact". HDF Attributes: Number of Values or Max. Attribute Data String Value Type Length long_name STRING 60 Variable units STRING 11 K valid_range INT16 2 0, 32236 _FillValue INT16 1 0 Nadir Data Resolution STRING 4 1km scale_factor FLOAT64 1 100 add_offset FLOAT64 1 0 scale_factor_err FLOAT64 1 0 add_offset_err FLOAT64 1 0 calibrated_nt INT32 1 5 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:MOD_Grid_L2g_2d", "XDim:MOD_Grid_L2g_2d" BAND32_f UINT16 "Additional Layers:MOD_Grid_L2g_3d", "YDim:MOD_Grid_L2g_3d", "XDim:MOD_Grid_L2g_3d" BAND32_c UINT16 metadatum "TotalAdditionalObservations" Description: MODIS Thermal Band 32. "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 the metadatum "L2GStorageFormat" is "full". "BAND32_c" is for the compact format and is stored only if the metadatum "L2GStorageFormat" is "compact". HDF Attributes: Number of Values or Max. Attribute Data String Value Type Length long_name STRING 60 Variable units STRING 11 K valid_range INT16 2 0, 32236 _FillValue INT16 1 0 Nadir Data Resolution STRING 4 1km scale_factor FLOAT64 1 100 add_offset FLOAT64 1 0 scale_factor_err FLOAT64 1 0 add_offset_err FLOAT64 1 0 calibrated_nt INT32 1 5 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 orb_cov_1 UINT8 "YDim:MOD_Grid_L2g_2d", "XDim:MOD_Grid_L2g_2d" orb_cov_f UINT8 "Additional Layers:MOD_Grid_L2g_3d", "YDim:MOD_Grid_L2g_3d", "XDim:MOD_Grid_L2g_3d" orb_cov_c UINT8 metadatum "TotalAdditionalObservations" Description: Orbit and coverage: the orbit the observation came from and the observation coverage. The orbit number is not the absolute orbit number but a relative orbit number in the file. In addition a flag is stored which distinguishes between observations which are in the top half of the scan (the first 5 1km scan lines in the along track direction) and the bottom half of the scan (the last 5 1km scan lines). The observation coverage is the area of intersection of observation footprint and cell divided by the area of the observation. Bit Description 0-3 Orbit number: 4 bit unsigned integer; range 0 to 13 key: 0000 ( 0) to 1011 (13) 4 Scan half flag; which half of the scan the observation came from: key: 0 - top half 1 - bottom half 5-7 Observation coverage: 3 bit unsigned integer; range 0 to 7 key: 000 (0) - 0.0 to 12.5% 001 (1) - 12.5 to 25.0% 010 (2) - 25.0 to 37.5% 011 (3) - 37.5 to 50.0% 100 (4) - 50.0 to 62.5% 101 (5) - 62.5 to 75.0% 110 (6) - 75.0 to 87.5% 111 (7) - 87.5 to 100.0% "orb_cov_1" is for storing the first layer of observations and is always stored. "orb_cov_f" and "orb_cov_c" are for storing the additional layers of observations. "orb_cov_f" is for the full format and is stored only if the metadatum "L2GStorageFormat" is "full". "orb_cov_c" is for the compact format and is stored only if the metadatum "L2GStorageFormat" is "compact". HDF Attributes: Number of Values or Max. Attribute Data String Value Type Length long_name STRING 49 Variable units STRING 9 bit field valid_range UINT8 2 0, 255 _FillValue UINT8 1 15 Note: The attribute "long_name" is "Orbit and coverage - first layer" for "orb_cov_1", "Orbit and coverage - additional layers, full" for "orb_cov_f", or "Orbit and coverage - additional layers, compact" for "orb_cov_c". =========================================================================== Name Data Dimensions Type nadd_obs_row INT32 metadatum "DataRows" Description: The number of additional observations in each row in the compact storage form of the L2G grid. This field is only stored if the metadatum "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 =========================================================================