VIIRS/NPP Land Surface Temperature and Emissivity 6-Min L2 Swath 750m

Product Identifier: VNP21

Description:

The VIIRS/NPP Land Surface Temperature and Emissivity 6-Min L2 Swath 750m product (VNP21) uses a physics-based Temperature Emissivity Separation (TES) algorithm to dynamically retrieve both the LST and Emissivity simultaneously for the three VIIRS thermal infrared bands (M14, M15 and M16) at a spatial resolution of 750 m per pixel. The VNP21 algorithm is based on the ASTER Temperature Emissivity Separation (TES) algorithm, which uses full radiative transfer simulations for the atmospheric correction, and an emissivity model based on the variability in the surface radiance data to dynamically retrieve both LST and spectral emissivity. The TES algorithm is combined with an improved Water Vapor Scaling (WVS) atmospheric correction scheme to stabilize the retrieval during very warm and humid conditions. Simulations and validation results available in the ATBD have shown consistent accuracies at the 1 K level over all land surface types including vegetation, water, and deserts.

Point of Contact:
      Glynn C. Hulley (PI) 
      glynn.hulley@jpl.nasa.gov 

Principal Investigator(s):
      Glynn C. Hulley (PI) 
      MS 183-509 
      Jet Propulsion Laboratory 
      4800 Oak Grove Dr. 
      Pasadena, CA 91109 
      Email: glynn.hulley@jpl.nasa.gov 
      Office: (818) 354-2979

============================================================================
General Construct

dimensions:
	YDim:number_of_lines = 3248 ;
	XDim:number_of_pixels = 3200 ;

variables:
	float32 Latitude(YDim:number_of_lines, XDim:number_of_pixels) ;
		Latitude:long_name = "Latitude data" ;
		Latitude:scale_factor = 1.0 ;
		Latitude:add_offset = 0.0 ;
		Latitude:units = "degrees north" ;
		Latitude:_FillValue = -999.0 ;
		Latitude:valid_range = -90.0, 90.0 ;
	float32 Longitude(YDim:number_of_lines, XDim:number_of_pixels) ;
		Longitude:long_name = "Longitude data" ;
		Longitude:scale_factor = 1.0 ;
		Longitude:add_offset = 0.0 ;
		Longitude:units = "degrees east" ;
		Longitude:_FillValue = -999.0 ;
		Longitude:valid_range = -180.0, 180.0 ;
	uint8 Emis_14(YDim:number_of_lines, XDim:number_of_pixels) ;
		Emis_14:long_name = "Band 14 Emissivity" ;
		Emis_14:scale_factor = 0.002 ;
		Emis_14:add_offset = 0.49 ;
		Emis_14:units = "n/a" ;
		Emis_14:_FillValue = 0 ;
		Emis_14:valid_range = 1, 255 ;
	uint16 Emis_14_err(YDim:number_of_lines, XDim:number_of_pixels) ;
		Emis_14_err:long_name = "Band 14 Emissivity error" ;
		Emis_14_err:scale_factor = 0.0001 ;
		Emis_14_err:add_offset = 0.0 ;
		Emis_14_err:units = "n/a" ;
		Emis_14_err:_FillValue = 0 ;
		Emis_14_err:valid_range = 1, 65535 ;
	uint8 Emis_15(YDim:number_of_lines, XDim:number_of_pixels) ;
		Emis_15:long_name = "Band 15 Emissivity" ;
		Emis_15:scale_factor = 0.002 ;
		Emis_15:add_offset = 0.49 ;
		Emis_15:units = "n/a" ;
		Emis_15:_FillValue = 0 ;
		Emis_15:valid_range = 1, 255 ;
	uint16 Emis_15_err(YDim:number_of_lines, XDim:number_of_pixels) ;
		Emis_15_err:long_name = "Band 15 Emissivity error" ;
		Emis_15_err:scale_factor = 0.0001 ;
		Emis_15_err:add_offset = 0.0 ;
		Emis_15_err:units = "n/a" ;
		Emis_15_err:_FillValue = 0 ;
		Emis_15_err:valid_range = 1, 65535 ;
	uint8 Emis_16(YDim:number_of_lines, XDim:number_of_pixels) ;
		Emis_16:long_name = "Band 16 Emissivity" ;
		Emis_16:scale_factor = 0.002 ;
		Emis_16:add_offset = 0.49 ;
		Emis_16:units = "n/a" ;
		Emis_16:_FillValue = 0 ;
		Emis_16:valid_range = 1, 255 ;
	uint16 Emis_16_err(YDim:number_of_lines, XDim:number_of_pixels) ;
		Emis_16_err:long_name = "Band 16 Emissivity error" ;
		Emis_16_err:scale_factor = 0.0001 ;
		Emis_16_err:add_offset = 0.0 ;
		Emis_16_err:units = "n/a" ;
		Emis_16_err:_FillValue = 0 ;
		Emis_16_err:valid_range = 1, 65535 ;
	uint8 Emis_ASTER(YDim:number_of_lines, XDim:number_of_pixels) ;
		Emis_16:long_name = "ASTER GED Grid Mapped Emissivity ;
		Emis_16:scale_factor = 0.002 ;
		Emis_16:add_offset = 0.49 ;
		Emis_16:units = "n/a" ;
		Emis_16:_FillValue = 0 ;
		Emis_16:valid_range = 1, 255 ;
	uint16 LST(YDim:number_of_lines, XDim:number_of_pixels) ;
		LST:long_name = "Land Surface Temperature" ;
		LST:scale_factor = 0.02 ;
		LST:add_offset = 0.0 ;
		LST:units = "K" ;
		LST:_FillValue = 0 ;
		LST:valid_range = 7500, 65535 ;
	uint8 LST_err(YDim:number_of_lines, XDim:number_of_pixels) ;
		LST_err:long_name = "Land Surface Temperature error" ;
		LST_err:scale_factor = 0.04 ;
		LST_err:add_offset = 0.0 ;
		LST_err:units = "K" ;
		LST_err:_FillValue = 0 ;
		LST_err:valid_range = 1, 255 ;
	int16 PWV(YDim:number_of_lines, XDim:number_of_pixels) ;
		PWV:long_name = "Precipitable Water Vapor" ;
		PWV:scale_factor = 0.001 ;
		PWV:add_offset = 0.0 ;
		PWV:units = "cm" ;
		PWV:_FillValue = n/a ;
		PWV:valid_range = 0,65535 ;
	uint16 QC(YDim:number_of_lines, XDim:number_of_pixels) ;
		QC:long_name = "Quality control for LST and emissivity" ;
		QC:scale_factor = n/a ;
		QC:add_offset = n/a ;
		QC:units = "none" ;
		QC:_FillValue = n/a ;
		QC:valid_range = 0, 65535 ;
		QC:data description = "Quality Assurance (QA)",
    "0-1    Mandatory QA flags\n",
    "       00 --- Pixel produced, good quality, no further QA info necessary\n",
    "       01 --- Pixel produced but unreliable quality. Either one or more of the following conditions are met: emissivity in both bands 15 and 16 < 0.95, retrieval affected by nearby cloud, low transmissivity due to high water vapor loading (<0.4), sensor view angles > 55 degrees. Recommend more detailed analysis of other QC information\n",
    "       10 --- Pixel not produced due to cloud\n",
    "       11 --- Pixel not produced due to reasons other than cloud (e.g. ocean pixel, poorly calibrated input radiance, TES algorithm divergence flag) \n",
    "2-3    Data quality flag\n",
    "       00 --- Good data quality of L1B bands 14, 15, 16\n",
    "       01 --- Missing pixel\n",
    "       10 --- Fairly calibrated\n",
    "       11 --- Poorly calibrated, TES processing skipped\n",
    "4-5    Cloud flag\n",
    "       00 --- Cloud free pixel\n",
    "       01 --- Thin cirrus\n",
    "       10 --- Pixel within 2 pixels of nearest cloud (~1.5km)\n",
    "       11 --- Cloud pixel\n",
    "6-7    TES Iterations (k)\n",
    "       00 --- = >= 7 (Slow convergence)\n",
    "       01 --- = 6 (Nominal)\n",
    "       10 --- = 5 (Nominal)\n",
    "       11 --- = <5 (Fast)\n",
    "8-9    Atmospheric Opacity\n",
    "       00 --- = >= 0.3 (Warm, humid air; or cold land)\n",
    "       01 --- = 0.2 - 0.3 (Nominal value)\n",
    "       10 --- = 0.1 - 0.2 (Nominal value)\n",
    "       11 --- = <0.1 (Dry, or high altitude pixel)\n",
    "10-11  Min-Max Difference (MMD). Difference between minimum and maximum emissivity for bands 14, 15, 16\n",
    "       00 --- = >0.15 (Most silicate rocks)\n",
    "       01 --- = 0.1 - 0.15 (Rocks, sand, some soils)\n",
    "       10 --- = 0.03 - 0.1 (Mostly soils, mixed pixel)\n",
    "       11 --- = <0.03 (Vegetation, snow, water, ice)\n",
    "12-13  Emissivity accuracy\n",
    "       00 --- = >0.017 (Poor performance)\n",
    "       01 --- = 0.015 - 0.017 (Marginal performance)\n",
    "       10 --- = 0.013 - 0.015 (Good performance)\n",
    "       11 --- = <0.013 (Excellent performance)\n",
    "14-15  LST accuracy\n",
    "       00 --- = >2.5 K (Poor performance)\n",
    "       01 --- = 1.5 - 2.5 K (Marginal performance)\n",
    "       10 --- = 1 - 1.5 K (Good performance)\n",
    "       11 --- = <1 K (Excellent performance)\n",
    "" ;
	uint8 View_angle(YDim:number_of_lines, XDim:number_of_pixels) ;
		View_angle:long_name = "Sensor Zenith" ;
		View_angle:scale_factor = 0.5 ;
		View_angle:add_offset = 0.0 ;
		View_angle:units = "degrees" ;
		View_angle:_FillValue = 255 ;
		View_angle:valid_range = 0, 180 ;
	uint8 oceanpix(YDim:number_of_lines, XDim:number_of_pixels) ;
		oceanpix:long_name = "land ocean inland_water" ;
		oceanpix:scale_factor = 1.0 ;
		oceanpix:add_offset = 0.0 ;
		oceanpix:units = "n/a" ;
		oceanpix:_FillValue = n/a ;
		oceanpix:valid_range = 0, 2 ;