HDF-EOS V2 MODIS L2G-lite Land Snow Cover File Specification
Revision 1.0 (12/21/2015)

Product ID(s): MOD10 L2G 1DY 500M (MOD10GA)

Description:

The MODIS 500m Resolution Level 2G (L2G) Daily Snow Cover  
file contains the restructured Level 2 (L2) Snow Fraction data 
(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 500m.

A single 500m (L2) MOD10_L2 snow cover observation consist of the NDSI Snow Cover,
and the general and bit level QA flags.  The observation coverage, which is obtained
from the MODPTHKM files gives an estimate of the intersection between the observation
and the grid cell (relative to the observation area).  

The 500m 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 have
been used in the MODIS collection 5 version of MOD10A1, using a scoring function
depending on the local noon, distance from nadir and observation coverage. 
The observation with the highest score is pulled up to the first layer and stored.  

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. The final output also has a orbit and granule pointer layer which
taken with the orbit and granule archive metadata array, can 
show the relevant orbits and granules that forms the part of the first and all
subsequent layers. Snow albedo is also calculated for all cells that are mapped
as snow covered.

This new format reduces the number of 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:

    MOD10_L2 - all SDSs
    MODPTHKM - only the obscov and the granulepnt

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    "MOD10GA"
      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.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 Snow Product Daily L2G Global 500m 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
      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_500m		INT8
	total_additional_observations_500m	INT32
	l2g_storage_format_500m			STRING
        NumberLandWater1km                      INT32
        identifier_product_doi                  STRING
        identifier_product_doi_authority        STRING
===========================================================================

  DataFields:

The following datafields are always in this file:

      num_observations
      NDSI_Snow_Cover_1
      NDSI_Snow_Cover_Basic_QA_1
      NDSI_Snow_Cover_Algorithm_Flags_QA_1
	  NDSI_1
      SnowAlbedo_1
      obscov_1
      orbit_pnt_1
      granule_pnt_1

If the "L2GStorageFormat" metadata value is "full", the following
datafields are also present:

      NDSI_Snow_Cover_f
      NDSI_Snow_Cover_Basic_QA_f
      NDSI_Snow_Cover_Algorithm_Flags_QA_f
	  NDSI_f
      SnowAlbedo_f
      obscov_f
      orbit_pnt_f
      granule_pnt_f

If the "L2GStorageFormat" metadata value is "compact", the following
datafields are also present:

      NDSI_Snow_Cover_c
      NDSI_Snow_Cover_Basic_QA_c
      NDSI_Snow_Cover_Algorithm_Flags_QA_c
	  NDSI_c
      SnowAlbedo_c
      obscov_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 - "500m")
      Key (STRING)
      

===========================================================================

	Name                    Data      Dimensions
	                        Type

        num_observations    INT8      "YDim:MODIS_Grid_2D",
	                              "XDim:MODIS_Grid_2D"

	Description:

	The number of 500m 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

	NDSI_Snow_Cover_1	 UINT8   "YDim:MODIS_Grid_2D",
								 "XDim:MODIS_Grid_2D"

	NDSI_Snow_Cover_f	UINT8   "Additional Layers:MODIS_Grid_3D",
						"YDim:MODIS_Grid_3D",
						"XDim:MODIS_Grid_3D"

	NDSI_Snow_Cover_c	UINT8   "TotalAdditionalObservations"
						metadata value

        Description:
  
	500m NDSI Snow Cover
		
	"NDSI_Snow_Cover_1" is for storing the first layer of observations
	and is always stored.
		
	"NDSI_Snow_Cover_f" and "NDSI_Snow_Cover_c" are for storing the
	additional layers of observations.  "NDSI_Snow_Cover_f" is for the
	full format and is stored only if "L2GStorageFormat" is "full". 
	"NDSI_Snow_Cover_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      29      Variable
	units            STRING      4       "none"
	valid_range      UINT8       2       0, 100
	_FillValue       UINT8       1       255
	Nadir Data Resolution
	                 STRING      5       "500 m"
	Key	 	 STRING     135      "0-100=ndsi snow, 200=missing data, 201=no decision, 211=night, 237=inland water, 239=ocean, 250=cloud, 254=detector saturated, 255=fill"

	Note: The attribute "long_name" is 
           "NDSI_snow_cover  - first layer" for "NDSI_Snow_Cover_1", 
	   "NDSI_snow_cover  - additional layers, full" 
	      for "NDSI_Snow_Cover_f", or 
	   "NDSI_snow_cover  - additional layers, compact" 
	      for "NDSI_Snow_Cover_c".

===========================================================================

	Name                    Data      Dimensions
	                        Type

	NDSI_Snow_Cover_Basic_QA_1	UINT8   "YDim:MODIS_Grid_2D",
										"XDim:MODIS_Grid_2D"

	NDSI_Snow_Cover_Basic_QA_f	UINT8   "Additional Layers:MODIS_Grid_3D",
						"YDim:MODIS_Grid_3D",
						"XDim:MODIS_Grid_3D"

	NDSI_Snow_Cover_Basic_QA_c	UINT8   "TotalAdditionalObservations"
						metadata value

        Description:
  
	500m NDSI snow cover general quality values
		
	"NDSI_Snow_Cover_Basic_QA_1" is for storing the first layer of observations
	and is always stored.
		
	"NDSI_Snow_Cover_Basic_QA_f" and "NDSI_Snow_Cover_Basic_QA_c" are for storing the
	additional layers of observations.  "NDSI_Snow_Cover_Basic_QA_f" is for the
	full format and is stored only if "L2GStorageFormat" is "full". 
	"NDSI_Snow_Cover_Basic_QA_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      51      Variable
	valid_range      UINT8       2       0, 4
	_FillValue       UINT8       1       255
	Key	 	 STRING     111      "0=best, 1=good, 2=ok, 3=poor, 4=other-not used, 211=night, 239=ocean, 255=unusable L1B data or no data"

	Note: The attribute "long_name" is 
           "NDSI snow cover general quality value  - first layer" for "NDSI_Snow_Cover_Basic_QA_1", 
	   "NDSI snow cover general quality value  - additional layers, full" 
	      for "NDSI_Snow_Cover_Basic_QA_f", or 
	   "NDSI snow cover general quality value  - additional layers, compact" 
	      for "NDSI_Snow_Cover_Basic_QA_c".
===========================================================================

	Name                    Data      Dimensions
	                        Type

	NDSI_Snow_Cover_Algorithm_Flags_QA_1		UINT8   "YDim:MODIS_Grid_2D",
									"XDim:MODIS_Grid_2D"

	NDSI_Snow_Cover_Algorithm_Flags_QA_f		UINT8   "Additional Layers:MODIS_Grid_3D",
									"YDim:MODIS_Grid_3D",
									"XDim:MODIS_Grid_3D"

	NDSI_Snow_Cover_Algorithm_Flags_QA_c		UINT8   "TotalAdditionalObservations"
									 metadata value

        Description:
  
	500m NDSI snow cover bit level quality flags
		
	"NDSI_Snow_Cover_Algorithm_Flags_QA_1" is for storing the first layer of observations
	and is always stored.
		
	"NDSI_Snow_Cover_Algorithm_Flags_QA_f" and "NDSI_Snow_Cover_Algorithm_Flags_QA_c" are for storing the
	additional layers of observations.  "NDSI_Snow_Cover_Algorithm_Flags_QA_f" is for the
	full format and is stored only if "L2GStorageFormat" is "full". 
	"NDSI_Snow_Cover_Algorithm_Flags_QA_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      45      Variable
	units	         STRING      4       "none"
	valid_range      UINT8       2       0, 254
	_FillValue       UINT8       1       255
	Key	 	 STRING     908      "bit on means:
			bit 0: inland water flag 
            bit 1: low visible screen failed, reversed snow detection
            bit 2: low NDSI screen failed, reversed snow detection
            bit 3: combined temperature and height screen failed, snow reversed because too warm and too low
                  	 This screen is also used to flag a high elevation too warm snow detection,
                  	 in this case the snow detection is not changed but this bit is set.
            bit 4: too high swir screen and applied at two thresholds:
                   	 QA bit flag set if band6 TOA > 25% & band6 TOA <= 45%, 
                  	 indicative of unusual snow conditon, or snow commission error;
                  	 snow detection reversed if band6 TOA > 45%
            bit 5: spare
            bit 6: spare
            bit 7: solar zenith screen, indicates increased uncertainty in results"

	Note: The attribute "long_name" is 
           "NDSI Snow Cover Algorithm Flags  - first layer" for "NDSI_Snow_Cover_Algorithm_Flags_QA_1", 
	   "NDSI Snow Cover Algorithm Flags  - additional layers, full" 
	      for "NDSI_Snow_Cover_Algorithm_Flags_QA_f", or 
	   "NDSI Snow Cover Algorithm Flags  - additional layers, compact" 
	      for "NDSI_Snow_Cover_Algorithm_Flags_QA_c".

===========================================================================

		Name                    Data      Dimensions
					Type

	NDSI_1		1NT16   "YDim:MODIS_Grid_2D",
						"XDim:MODIS_Grid_2D"

	NDSI_f		1NT16   "Additional Layers:MODIS_Grid_3D",
					"YDim:MODIS_Grid_3D",
					"XDim:MODIS_Grid_3D"

	NDSI_c		1NT16   "TotalAdditionalObservations"
					metadata value

        Description:
  
	500m Raw NDSI layer
		
	"NDSI_1" is for storing the first layer of observations
	and is always stored.
		
	"NDSI_f" and "NDSI_c" are for storing the
	additional layers of observations.  "NDSI_f" is for the
	full format and is stored only if "L2GStorageFormat" is "full". 
	"NDSI_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      22      Variable
	units            STRING      4       "none"
	valid_range      INT16       2       0, 10000
	_FillValue       INT16       1       0
	scale_factor	 FLOAT32	 1		 1.0E-4

	Note: The attribute "long_name" is 
           "Raw NDSI - first layer" for "NDSI_1", 
	   "Raw NDSI  - additional layers, full" 
	      for "NDSI_f", or 
	   "Raw NDSI - additional layers, compact" 
	      for "NDSI_c".
===========================================================================

		Name                    Data      Dimensions
					Type

	SnowAlbedo_1		UINT8   "YDim:MODIS_Grid_2D",
								"XDim:MODIS_Grid_2D"

	SnowAlbedo_f		UINT8   "Additional Layers:MODIS_Grid_3D",
					"YDim:MODIS_Grid_3D",
					"XDim:MODIS_Grid_3D"

	SnowAlbedo_c		UINT8   "TotalAdditionalObservations"
					metadata value

        Description:
  
	500m Snow albedo over areas with valid snow cover
		
	"SnowAlbedo_1" is for storing the first layer of observations
	and is always stored.
		
	"SnowAlbedo_f" and "SnowAlbedo_c" are for storing the
	additional layers of observations.  "SnowAlbedo_f" is for the
	full format and is stored only if "L2GStorageFormat" is "full". 
	"SnowAlbedo_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      69      Variable
	units            STRING      4       "none"
	valid_range      UINT8       2       0, 100
	_FillValue       UINT8       1       255
	Key	 	 STRING     222      "0-100=snow albedo, 101=no_decision, 111=night, 125=land, 137=inland water, 139=ocean, 150=cloud, 151=cloud detected as snow, 250=missing, 251=self_shadowing, 252=landmask mismatch, 253=BRDF_failure, 254=non-production_mask"

	Note: The attribute "long_name" is 
           "Snow albedo of the corresponding snow cover observation  - first layer" for "SnowAlbedo_1", 
	   "Snow albedo of the corresponding snow cover observation  - additional layers, full" 
	      for "SnowAlbedo_f", or 
	   "Snow albedo of the corresponding snow cover observation  - additional layers, compact" 
	      for "SnowAlbedo_c".
	      
===========================================================================


	Name                    Data      Dimensions
	                        Type

	obscov_1		INT8      "YDim:MODIS_Grid_2D",
	                          "XDim:MODIS_Grid_2D"

	obscov_f		INT8     "Additional Layers:MODIS_Grid_3D",
	                                  "YDim:MODIS_Grid_3D",
	                                  "XDim:MODIS_Grid_3D"

	obscov_c		INT8      "TotalAdditionalObservations"
				          metadata value
        Description:
        
	Observation coverage is an estimate of the amount of intersection 
	between observation footprint and grid cell.
		
	"obscov_1" is for storing the first layer of observations
	and is always stored.
		
	"obscov_f" and "obscov_c" are for storing the
	additional layers of observations.  "obscov_f" is for the
	full format and is stored only if "L2GStorageFormat" is "full".
	"obscov_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      34      Variable
	units            STRING      7       "percent"
	valid_range      INT8        2       0, 100
	_FillValue       INT8        1       -1
	add_offset       FLOAT64     1       0.0
	add_offset_err   FLOAT64     1       0.0
	calibrated_nt    INT32       1       5 
	scale_factor     FLOAT64     1       0.01 
	scale_factor_err  FLOAT64    1       0.0
		
	Note: The attribute "long_name" is 
	  "Observation coverage - first layer" for "obscov_1", 
	  "Observation coverage - additional layers, full" for "obscov_f", or
	  "Observation coverage - additional layers, compact" for "obscov_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 500m 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      27      Variable
	units            STRING      4       "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 500m 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      29      Variable
	units            STRING      4       "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

===========================================================================