MODIS GEOLOCATION VERSION 5 PRODUCT FORMAT
		 	         Version 6.0.3
			         June 27, 2012
This document specifies the MODIS geolocation product (MOD03, MYD03) format.
The product is stored as a Hierararchical Data Format (HDF) file for
each granule of MODIS data.  It contains

	Geodetic position (latitude, longitude, and height above geoid)
		for the center of each 1 kilometer MODIS Earth View
		observation, according to the World Geodetic System of 1984.

	Sun and satellite ('sensor') bearings for each 1 kilometer
		MODIS Earth View observation.

	EOS land/sea mask values for the center of each 1 kilometer
		MODIS Earth View observation.

	Sun and Moon positions with respect to the MODIS for each
		scan.

	Instrument parameter information sufficient to permit
		geolocation for specific bands and sub-pixel ground
		location.

The specification is organized into four sections:  Global Metadata;
Processing and Geometric Parameters; Scan Data; and Vgroups.  The
Metadata are intended to satisfy both the ECS requirements for
organizing, ingesting, cataloging, and searching data products; and
the user's needs for product documentation.  In this document the global
metadata are subdivided into ECS granule core, product-specific, and
structural metadata and MODIS-specific metadata.  The Parameters section
includes, for reference purposes, instrument-related parameters which
were used in the geolocation processing.  The Scan Data include scan-
level metadata, spacecraft ephemeris, and spatial element geolocation
values.  The Vgroups organize the spatial element geolocation data into
data groups for the HDF-EOS Swath data structure.

The baseline HDF implementation of this product is as follows.  ECS
granule metadata are stored in the ECS-defined format of large PVL text
blocks in HDF global attributes.   All other global metadata are stored
in individual HDF Attributes.  The remaining file-level parameters are
stored as HDF scientific data sets (SDSs) with the dimensions specified.
Any exceptions to this baseline are noted for the individual field.

The scan data are stored as SDSs.  Multi-dimensional fields are stored
with the scan dimension varying slowest.  There are three categories of
scan data:  scan-level metadata, scan-level navigation data, and spatial
element geolocation data.  The HDF dimension names and nominal dimension
lengths used for each category are listed at the start of the section.
The spatial element geolocation fields are all defined as two-dimensional
arrays with the dimensions corresponding to the along-track and along-
scan dimensions.

The array indexing is row dominant, consistent with HDF convention.


1.  	Global Metadata

1.1  ECS Granule Metadata

These metadata elements will be stored using the ECS metadata tools as
PVL text blocks in accordance with ECS standards.  The inventory fields
will be stored in an HDF attribute named CoreMetadata.0 and the archive
fields in an attribute named ArchiveMetadata.0.  All of these fields are
defined in detail in the V2 MODIS Metadata Dictionary.  The data type
field listed below is relevant for I/O of these fields only, since each
set of metadata is stored as a single PVL text block.  The supported
data types for ECS metadata are STRING, DOUBLE, and INTEGER.


1.1.1  	ECS Granule Inventory (Core and Product) Metadata
	stored in one ECS PVL string in HDF global attribute
	"CoreMetadata.0".

 Metadata Name			Data Type       Example
 -------------         	   	--------        ---------

SHORTNAME			STRING		"MOD03" or "MYD03"

VERSIONID			INTEGER		 0

PGEVERSION			STRING		"2.1.1"

LOCALVERSIONID			STRING		"2.10.0"

RANGEBEGINNINGDATE		STRING		"2012-01-01"
				"YYYY-MM-DD"

RANGEBEGINNINGTIME		STRING		"00:00:00.000000"
				"HH:MM:SS.SSSSSS"

RANGEENDINGDATE			STRING		"2012-01-01"
				"YYYY-MM-DD"

RANGEENDINGTIME			STRING		"00:02:30.000000"
				"HH:MM:SS.SSSSSS"

DAYNIGHTFLAG			STRING		"Day", "Night", "Both", or "NA"

ORBITNUMBER.1			INTEGER		256

EQUATORCROSSINGLONGITUDE.1	DOUBLE		90.000

EQUATORCROSSINGDATE.1		STRING		"2012-01-01"
				"YYYY-MM-DD"

EQUATORCROSSINGTIME.1		STRING		"00:02:30.000000"
				"HH:MM:SS.SSSSSS"

EXCLUSIONGRINGFLAG.1            STRING          "N"

GRINGPOINTLATITUDE.1            DOUBLE(4)       (25., 20., 10., 15.)

GRINGPOINTLONGITUDE.1           DOUBLE(4)       (20., 40., 35., 15.)

GRINGPOINTSEQUENCENO.1          INTEGER(4)      (1, 2, 3, 4)

ADDITIONALATTRIBUTENAME.1	STRING		"GRANULENUMBER"

PARAMETERVALUE.1		STRING 		"1"

ADDITIONALATTRIBUTENAME.2	STRING		"SCI_STATE"

PARAMETERVALUE.2		STRING 		"0" = instrument test during one
						    or more scans
						"1" = instrument status normal
						    or unknown during all scans

ADDITIONALATTRIBUTENAME.3	STRING		"SCI_ABNORM"

PARAMETERVALUE.3		STRING 		"0" = spacecraft in unusual
						    state (i.e., maneuver)
						    during one or more scans
						"1" = spacecraft state normal or
						    unknown during all scans

ADDITIONALATTRIBUTENAME.4	STRING		"GEO_EST_RMS_ERROR"

PARAMETERVALUE.4		STRING		"100"	(meters)
						Estimated RMS error in
						geolocation (-1 indicates that
						the error size is unknown)

ADDITIONALATTRIBUTENAME.5	STRING		"PROCESSVERSION"

PARAMETERVALUE.5		STRING		"6.0.9"

ADDITIONALATTRIBUTENAME.6	STRING		"identifier_product_doi"

PARAMETERVALUE.6		STRING		"10.5067/MODIS/MOD03.006"

ADDITIONALATTRIBUTENAME.7	STRING	      "identifier_product_doi_authority"

PARAMETERVALUE.7		STRING		"http://dx.doi.org"

PRODUCTIONDATETIME		STRING		"2012-01-01T00:00:00.000Z"
				CCSDS ASCII Time Code A

REPROCESSINGACTUAL		STRING		"processed once"

REPROCESSINGPLANNED		STRING		"further update anticipated"

INPUTPOINTER			STRING(6)
       {"MYD03LUT.coeff.v6.0.14",
       "MOD01.A2012182.1155.006.2012061024855.hdf",
       "UR:10:DsShESDTUR:UR:15:DsShSciServerUR:13:[GSF:DSSDSRV]:24:SC:AM1EPHN0.001:11837245",
       "UR:10:DsShESDTUR:UR:15:DsShSciServerUR:13:[GSF:DSSDSRV]:24:SC:AM1EPHN0.001:11837253",
       "UR:10:DsShESDTUR:UR:15:DsShSciServerUR:13:[GSF:DSSDSRV]:24:SC:AM1ATTNF.001:11844671",
       "UR:10:DsShESDTUR:UR:15:DsShSciServerUR:13:[GSF:DSSDSRV]:24:SC:AM1ATTNF.001:11846223"}

LOCALGRANULEID			STRING
				     "MYD03.A2012182.1155.006.2012061024930.hdf"

SCIENCEQUALITYFLAG.1		STRING		"Not Investigated"

AUTOMATICQUALITYFLAG.1		STRING		"Failed" - if processing of the
						granule caused the process to
						exit with a FAIL status.
						"Passed" - otherwise

AUTOMATICQUALITYFLAGEXPLANATION.1
				STRING		"Set to 'Failed' if processing
						 error occurred, set to 'Passed'
						 otherwise"

PARAMETERNAME.1			STRING		"Geolocation"

QAPERCENTMISSINGDATA.1		INTEGER		The percent of pixels in the
						granule for which there was
						insufficient data to perform
						geolocation.

QAPERCENTOUTOFBOUNDSDATA.1	INTEGER		The percent of pixels in the
						granule which were determined
						to have data off of the earth.

ASSOCIATEDPLATFORMSHORTNAME.1	STRING		"Terra" for MOD03 files, and
						"Aqua" for MYD03 files.

ASSOCIATEDINSTRUMENTSHORTNAME.1 STRING		"MODIS"

ASSOCIATEDSENSORSHORTNAME.1	STRING		"MODIS"

1.2   ECS Granule Archive Metadata
	stored in one ECS PVL string in HDF global attribute
	"ArchiveMetadata.0".

 Metadata Name			Data Type       Example
 -------------         	   	--------        ---------

LOCALINPUTGRANULEID		STRING
				     "MOD01.A2012001.0000.001.2012002000000.hdf"

EASTBOUNDINGCOORDINATE		DOUBLE		40.0

NORTHBOUNDINGCOORDINATE		DOUBLE		25.0

SOUTHBOUNDINGCOORDINATE		DOUBLE		10.0

WESTBOUNDINGCOORDINATE		DOUBLE		15.0

DESCRREVISION			STRING		"6.0"
						Version of the ESDT description

PRODUCTIONHISTORY		STRING		"PGE01:6.0.14"

LONGNAME			STRING		"MODIS/Terra Geolocation Fields
						 5-min L1A Swath 1km"

PROCESSINGENVIRONMENT		STRING		The results from running the
						'uname -a' command on the
						processing host.


1.1.3   HDF-EOS Swath Structural Metadata
	stored in one ECS PVL string in HDF global attribute
	"StructMetadata.0".

SwathStructure:		SwathName
			MODIS_Swath_Type_GEO

Dimensions:
			DimensionName	Size (maximum)
	Dimension_1	nscans*10	2080
	Dimension_2	mframes		1354
	Dimension_3	nscans*20	4160
	Dimension_4	mframes*2	2708

DimensionMaps:
			GeoDimension	DataDimension	Offset	Inc.
	DimensionMap_1	nscans*10	nscans*20	   0     2
	DimensionMap_2	mframes		mframes*2	   0     2

IndexDimensionMaps:	None.

GeoFields:
	Location: internal.
			GeoFieldName	DataType	DimList
	GeoField_1	Latitude	DFNT_FLOAT32	(nscans*10,mframes)
	GeoField_2	Longitude	DFNT_FLOAT32	(nscans*10,mframes)

DataFields:
			DataFieldName	DataType	DimList
	DataField_1	Scan Offset	DFNT_INT8	(nscans*20,mframes*2)
	DataField_2	Track Offset	DFNT_INT8	(nscans*20,mframes*2)
	DataField_3	Height Offset	DFNT_INT8	(nscans*20,mframes*2)
	DataField_4	Height		DFNT_INT16	(nscans*10,mframes)
	DataField_5	SensorZenith	DFNT_INT16	(nscans*10,mframes)
	DataField_6	SensorAzimuth	DFNT_INT16	(nscans*10,mframes)
	DataField_7	Range		DFNT_UINT16	(nscans*10,mframes)
	DataField_8	SolarZenith	DFNT_INT16	(nscans*10,mframes)
	DataField_9	SolarAzimuth	DFNT_INT16	(nscans*10,mframes)
	DataField_10	Land/SeaMask	DFNT_UINT8	(nscans*10,mframes)
	DataField_12	WaterPresent	DFNT_UINT8	(nscans*10,mframes)
	DataField_13	gflags		DFNT_UINT8	(nscans*10,mframes)

MergedFields:		None.




1.2	MODIS Geolocation Specific Granule Metadata

These fields will be stored as individual HDF attributes.

Attribute Name 	        	 Format    	Example
--------------	         	 -------- 	---------

Number of Scans		    	 int32	        100

Max Earth Frames           	 int32   	1354
  (per scan)

Max SD Frames     		 int32         	50
  (per scan)

Max SV Frames     		 int32           50
  (per scan)

Incomplete Scans 		 int32		0
  (in granule)

Missing Packets			 int32		0
  (in granule)

Packets with bad CRC		 int32		0
  (in granule)

Discarded Packets		 int32		0
  (in granule)

Ephemeris/Attitude Source     	 String	 	"MODIS Packet" or "SDP Toolkit"
  (in granule)

Terrain Correction Flag		 String		"True" or "False"
  (in granule)
  
Ephemeris Input Files.1		 String(6)	(null delimited)
	"UR:10:DsShESDTUR:UR:15:DsShSciServerUR:13:[GSF:DSSDSRV]:21:
	SC:AM1ANC.001:1696687"
	"UR:10:DsShESDTUR:UR:15:DsShSciServerUR:13:[GSF:DSSDSRV]:21:
	SC:AM1ANC.001:1697514"
	"\nUR:10:DsShESDTUR:UR:15:DsShSciServerUR:13:[GSF:DSSDSRV]:21:
	SC:AM1ANC.001:1697514"
	"UR:10:DsShESDTUR:UR:15:DsShSciServerUR:13:[GSF:DSSDSRV]:23:
	SC:AM1ATTN0.001:1702751"
	"UR:10:DsShESDTUR:UR:15:DsShSciServerUR:13:[GSF:DSSDSRV]:23:
	SC:AM1EPHN0.001:1702754"

Ephemeris Input Files.2		 String(6)	may be empty

Attitude Input Files.1		 String(6)	(null delimited)
	"UR:10:DsShESDTUR:UR:15:DsShSciServerUR:13:[GSF:DSSDSRV]:21:
	SC:AM1ANC.001:1696687"
	"UR:10:DsShESDTUR:UR:15:DsShSciServerUR:13:[GSF:DSSDSRV]:21:
	SC:AM1ANC.001:1697514"
	"\nUR:10:DsShESDTUR:UR:15:DsShSciServerUR:13:[GSF:DSSDSRV]:21:
	SC:AM1ANC.001:1697514"
	"UR:10:DsShESDTUR:UR:15:DsShSciServerUR:13:[GSF:DSSDSRV]:23:
	SC:AM1ATTN0.001:1702751"
	"UR:10:DsShESDTUR:UR:15:DsShSciServerUR:13:[GSF:DSSDSRV]:23:
	SC:AM1EPHN0.001:1702754"

Attitude Input Files.2		 String(6)	may be empty

Parameter Version 		 String		"6.9"
  Version number of the geolocation parameter file used.

GEO_EST_RMS_ERROR 		 float32	100
  Estimated geolocation RMS error (meters).     (-1 means "error unknown")

Cumulated gflags		 uint32(8)	2682
  For each bit in gflags, a count of the number of pixels with that bit set.
  The least significant bit is cumulated in the first element.

utcpole File Header		 String
example:
"File updated: 1999-10-22T00:00:02Z, using USNO ser7 finals.data file of Oct 21"
						The first line of the
						utcpole.dat file

Polar Motion			 float64(3)	(0.061000, 0.51000, -0.043200)
						Polar wander and the difference
						of UT1 and UTC
						0 Pole position x (arc sec)
						1 Pole position y (arc sec)
						2 UT1-UTC (sec)

band_number			 int16		3
  The MODIS band number for which geolocation is performed.

HDFEOS_FractionalOffset_nscans*20_MODIS_Swath_Type_GE0	float32		0.5
  Fractional amount to be added to the Offset value for DimensionMap_1

HDFEOS_FractionalOffset_mframes*2_MODIS_Swath_Type_GE0	float32		0.0
  Fractional amount to be added to the Offset value for DimensionMap_2

identifier_product_doi		 String		"10.5067/MODIS/MOD03.006"

identifier_product_doi_authority String		"http://dx.doi.org"


2.0  Processing and Geometric Parameters

These are instrument model parameters which are all defined in the
MODIS Earth Location ATBD (version 2.0, April 1995).

HDF Dimension Names:

Name 		Description					Length
----		-----------					-----
vecdim		Cartesian vector dimension			  3
numbands 	MODIS bands dimension				 37
		(bands 1-36; band 0 is the 'ideal' band)



SDS Name 	  Description          			Format
--------  	  -------------         		--------
Focal_length	  Focal length for detectors 		float64(numbands)
		  SDS Attributes:
		  Attribute Name	Format    	Example
		  --------------        ------  	-------

		  units 		String		"meters"

band_position     Scan IFOV Offsets of band trailing	float64(numbands)
		  edges with respect to the Optical
		  Center
		  SDS Attributes:
		  Attribute Name	Format    	Example
		  --------------        ------  	-------

		  units 		String		"frame sample time"

detector_space	  Nominal detector spacing in the	float64(numbands)
		  cross-scan direction
		  SDS Attributes:
		  Attribute Name	Format    	Example
		  --------------        ------  	-------

		  units 		String		"meters"

detector_offsets  Offsets of detector positions from	float64(numbands,2)
		  nominal locations on the focal plane
		  (scan,track)
		  SDS Attributes:
		  Attribute Name	Format    	Example
		  --------------        ------  	-------

		  units 		String		"meters"
		  scandim  		uint32		0
		  trackdim 		uint32		1

T_offset          Offsets of the first sample for a	float64(numbands)
		  a band to time of 1km frame.
		  SDS Attributes:
		  Attribute Name	Format    	Example
		  --------------        ------  	-------

		  units 		String		"frame sample time"

num_samples	  Number of samples per frame for each	uint16(numbands)
		  band.


3.0  	Scan Data



3.1  	Scan-level Metadata

HDF Dimension Names:

Name 		Description					Length
----		-----------					-----
nscans		MODIS scans					 ~200
vecdim		Elements in a cartesian vector	    		    3
numenc		Mirror encoder data values per scan	   	   25
numqual		Quality values per scan		    		    4


SDS Name 	Description          			Format
-------- 	-------------         			--------
Scan number	Scan number in granule			int16(nscans)

EV frames	Number of Earth view frames in scan 	uint16(nscans)
		SDS Attributes:
		Attribute Name		Format    	Example
		--------------		------	  	-------

	 	valid_range		uint16(2)	 0, 1400

SD frames	Number of solar diffuser frames in scan uint16(nscans)

SV frames	Number of space view frames in scan	uint16(nscans)

EV start time	Earth view start time (TAI) 		float64(nscans)
		SDS Attributes:
		Attribute Name	      Format 	   	Example
		--------------        ------  		-------

		units	 	      String		"seconds"
		_FillValue	      float64		-2e9

SD start time	Solar diffuser view start time (TAI) 	float64(nscans)
		SDS Attributes:
		Attribute Name	      Format 	   	Example
		--------------        ------  		-------

		units	 	      String		"seconds"
		_FillValue	      float64		-2e9

SV start time	Space view start time (TAI) 		float64(nscans)
		SDS Attributes:
		Attribute Name	      Format 	   	Example
		--------------        ------  		-------

		units	 	      String		"seconds"
		_FillValue	      float64		-2e9

SD Sun zenith	Sun vector zenith angle in SD frame	float32(nscans)
		  (with respect to SD Z axis)
		SDS Attributes:
		Attribute Name	      Format 	   	Example
		--------------        ------  		-------

		units	 	      String		"radians"
		_FillValue	      float32		9.9692099683868690e+36

SD Sun azimuth	Sun vector azimuth angle in SD frame	float32(nscans)
		  (counter-clockwise rotation about SD Z axis
		   with respect to SD X axis)
		SDS Attributes:
		Attribute Name	      Format 	   	Example
		--------------        ------  		-------

		units	 	      String		"radians"
		_FillValue	      float32		9.9692099683868690e+36

Moon Vector	Moon unit vector in instrument frame	float32(nscans,vecdim)
		_FillValue	      float32		9.9692099683868690e+36

sun_ref		Unit Sun vector in ECR frame		float32(nscans,vecdim)
		 at scan center time
		SDS Attributes:
		Attribute Name	      Format 	   	Example
		--------------        ------  		-------

		valid_range 	      float32(2)	-1., 1.
		_FillValue	      float32		9.9692099683868690e+36

Mirror side	Mirror side 				uint16(nscans)
		SDS Attributes:
		Attribute Name	      Format    	Example
		--------------        ------	  	-------

	 	valid_range 	      uint16(2)		0, 1
		_FillValue	      uint16	        65535

num_impulse	Number of mirror encoder samples for 	uint8(nscans)
		 this scan
		SDS Attributes:
		Attribute Name	      Format 	   	Example
		--------------        ------  		-------

		valid_range 	      uint8(2) 		0, numenc.

impulse_enc	Mirror angles from encoder data. 	float64(nscans,numenc)
		SDS Attributes:
		Attribute Name	      Format 	   	Example
		--------------        ------  		-------

		units	 	      String		"encoder pulses"
		valid_range 	      float64(2)	0., 16384.
		_FillValue	      float64		9.9692099683868690e+36

impulse_time	Mirror encoder sample times from 	float64(nscans,numenc)
		 start of scan
		SDS Attributes:
		Attribute Name	      Format 	   	Example
		--------------        ------  		-------

		units	 	      String		"seconds"
		valid_range 	      float64(2)	0., 1.5.

L1 scan quality	 L1A scan quality flags 		int32(nscans,numqual)
		   element 0:	Scan data presence = 0, no valid data within
							scan
						   = 1, scan contains some
							valid data
		   element 1:	Missing Packets in scan
		   element 2:	Packets with bad CRC in scan
		   element 3:	Discarded Packets in scan
		SDS Attributes:
		Attribute Name	      Format 	   	Example
		--------------        ------  		-------

		_FillValue            int32             -1

Geo scan quality  Geolocation scan quality flags	int8(nscans,numqual)
  		   element 0:	= 0, valid mirror encoder data for scan
				= 1, no valid encoder data for scan
		   element 1:	= 0, spacecraft in unusual state
				= 1, spacecraft normal
				= -127, fill value for SCI_ABNORM in input file
		   element 2:	= 0, MODIS test mode
				= 1, MODIS normal
				= -127, fill value for SCI_STATE in input file
		   element 3:   = 0, spacecraft normal
		  		= 1, spacecraft in or near planned maneuver
				= -127, Fill value
		SDS Attributes:
		Attribute Name	      Format 	   	Example
		--------------        ------  		-------

		_FillValue            int8              -127

Scan Type	"Day", "Night", "Other"			char8(nscans,10)



3.2  Scan-level Navigation Data

HDF Dimension Names:

Name 		Description					Length
----		-----------					-----
nscans		MODIS scans				 	 ~200
vecdim		Elements in a cartesian vector	    		    3


SDS Name	Description          			Format
-------- 	-------------         			--------
EV center time	Earth view center frame time (TAI)	float64(nscans)
		SDS Attributes:
		Attribute Name	      Format 	   	Example
		--------------        ------  		-------

		units	 	      String		"seconds"
		_FillValue	      float64		-2e9

orb_pos		ECR orbit position at scan center time 	float64(nscans,vecdim)
		SDS Attributes:
		Attribute Name	      Format 	   	Example
		--------------        ------  		-------

		units	 	      String		"meters"
		valid_range 	      float64(2)	 -7200000., 7200000.
		_FillValue	      float64		9.9692099683868690e+36

orb_vel		ECR orbit velocity at scan center time 	float64(nscans,vecdim)
		SDS Attributes:
		Attribute Name	      Format 	   	Example
		--------------        ------  		-------

		units	 	      String		"meters per second"
		valid_range 	      float64(2)	-7600., 7600
		_FillValue	      float64		9.9692099683868690e+36

T_inst2ECR	instrument-to-ECR frame transformation  float64(nscans,vecdim,vecdim)
		 matrix at scan center time
		SDS Attributes:
		Attribute Name	      Format 	   	Example
		--------------        ------  		-------

		valid_range 	      float64(2)	-1., 1.
		_FillValue	      float64		9.9692099683868690e+36

attitude_angles Spacecraft attitude at scan center      float64(nscans,vecdim)
		 time expressed in the Orbital
		 Reference frame (roll, pitch, yaw)
		SDS Attributes:
		Attribute Name	      Format 	   	Example
		--------------        ------  		-------

		units	 	      String		"radians"
		roll_element 	      uint32		0
		pitch_element 	      uint32		1
		yaw_element   	      uint32		2
		_FillValue	      float64		9.9692099683868690e+36

thermal_correction Thermal orientation corrections	float32(nscans, vecdim)
		Roll, pitch and yaw components of corrections applied to the
		instrument orientation, based upon the solar "elevation" angle.
		units	 	      String		"degrees"
		roll_element 	      uint32		0
		pitch_element 	      uint32		1
		yaw_element   	      uint32		2
		valid_range	      uint32[2]		-180.0, 180.0
		_FillValue	      float64		-999.0

attitude_quality Quality flags for attitude data	uint32(nscans, mframes)
		valid_range	      uint32[2]		0, 0x000D4FFF (Aqua)
							0, 0x00034FFF (Terra)
		overall		      uint32		0x00000001
		data_summary	      uint32		0x00000002
		red_limit_low	      uint32		0x00000004
		yellow_limit_low      uint32		0x00000008
		yellow_limit_high     uint32		0x00000010
		red_limit_high	      uint32		0x00000020
		long_gap_follows      uint32		0x00000040
		short_gap_follows     uint32		0x00000080
		short_gap_precedes    uint32		0x00000100
		long_gap_precedes     uint32	        0x00000200
		repaired_data_point   uint32		0x00000400
		quality_flag_problem  uint32		0x00000800
		_FillValue	      uint32		0x00001000
		interpolated_point    uint32		0x00004000
		platform_fatal	      uint32		0x00010000
	Aqua Specific:
		bad_status_word	      uint32             0x00020000
		missing_status_word   uint32             0x00040000
		bad_ephemeris_data    uint32		0x00080000
	Terra Specific:
		safe_mode	      uint32		0x00020000
		
ephemeris_quality Quality flags for ephemeris data	uint32(nscans, mframes)
		valid_range	      uint32[2]		0, 0x00014FFF (Aqua)
							0, 0x00034FFF (Terra)
		overall		      uint32		0x00000001
		data_summary	      uint32		0x00000002
		red_limit_low	      uint32		0x00000004
		yellow_limit_low      uint32		0x00000008
		yellow_limit_high     uint32		0x00000010
		red_limit_high	      uint32		0x00000020
		long_gap_follows      uint32		0x00000040
		short_gap_follows     uint32		0x00000080
		short_gap_precedes    uint32		0x00000100
		long_gap_precedes     uint32	        0x00000200
		repaired_data_point   uint32		0x00000400
		quality_flag_problem  uint32		0x00000800
		_FillValue	      uint32		0x00001000
		interpolated_point    uint32		0x00004000
		platform_fatal	      uint32		0x00010000
	Terra Specific:
		safe_mode	      uint32		0x00020000
		
3.3	Spatial Element Geolocation Data

HDF Dimension Names:

Name 					Description			Length
----					-----------			-----
nscans*10:MODIS_Swath_Type_GEO		MODIS scan-lines		~2000
mframes:MODIS_Swath_Type_GEO		Earth view frames per scan	~1354


SDS Name	Description          			Format
-------- 	-------------         			--------
Longitude	Geodetic longitude 		float32
						(nscans*10:MODIS_Swath_Type_GEO,
						 mframes:MODIS_Swath_Type_GEO)
		SDS Attributes:
		Attribute Name	      Format 	   	Example
		--------------        ------  		-------

		units	 	      String		"degrees"
		valid_range 	      float32(2)	-180., 180.
		_FillValue 	      float32		-999.0

Latitude 	Geodetic latitude		float32
   						(nscans*10:MODIS_Swath_Type_GEO,
						 mframes:MODIS_Swath_Type_GEO)
		SDS Attributes:
		Attribute Name	      Format 	   	Example
		--------------        ------  		-------

		units	 	      String		"degrees"
		valid_range 	      float32(2)	-90., 90.
		_FillValue 	      float32		-999.0

Height		Height above geoid		int16
						(nscans*10:MODIS_Swath_Type_GEO,
						 mframes:MODIS_Swath_Type_GEO)
		SDS Attributes:
		Attribute Name	      Format 	   	Example
		--------------        ------  		-------

		units	 	      String		"meters"
		valid_range 	      int16(2)		-400,10000
		_FillValue 	      int16		-32767

SensorZenith	Sensor (spacecraft) zenith 	int16
		 angle.				(nscans*10:MODIS_Swath_Type_GEO,
						 mframes:MODIS_Swath_Type_GEO)
		SDS Attributes:
		Attribute Name	      Format 	   	Example
		--------------        ------  		-------

		units	 	      String		"degrees"
		scale_factor 	      float64		0.01
		valid_range 	      int16(2)		0, 18000
		_FillValue 	      int16		-32767

SensorAzimuth	Sensor (spacecraft) azimuth	int16
		angle, measured clockwise	(nscans*10:MODIS_Swath_Type_GEO,
		from North.			mframes:MODIS_Swath_Type_GEO)

		SDS Attributes:
		Attribute Name	      Format 	   	Example
		--------------        ------  		-------

		units	 	      String		"degrees"
		scale_factor 	      float64		0.01
		valid_range 	      int16(2)		-18000, 18000
		_FillValue 	      int16		-32767

Range		Slant range (to spacecraft)	uint16
						(nscans*10:MODIS_Swath_Type_GEO,
						 mframes:MODIS_Swath_Type_GEO)
		SDS Attributes:
		Attribute Name	      Format 	   	Example
		--------------        ------  		-------

		units	 	      String		"meters"
		scale_factor 	      float64		25.
		valid_range 	      uint16(2)		27000,65535
		_FillValue 	      uint16		0

SolarZenith	Solar zenith angle		int16
						(nscans*10:MODIS_Swath_Type_GEO,
						 mframes:MODIS_Swath_Type_GEO)
		SDS Attributes:
		Attribute Name	      Format 	   	Example
		--------------        ------  		-------

		units	 	      String		"degrees"
		scale_factor 	      float64		0.01
		valid_range 	      int16(2)		0, 18000
		_FillValue 	      int16		-32767

SolarAzimuth	Solar azimuth angle		int16
		Measured clockwise from North.	(nscans*10:MODIS_Swath_Type_GEO,
						 mframes:MODIS_Swath_Type_GEO)
		SDS Attributes:
		Attribute Name	      Format 	   	Example
		--------------        ------  		-------

		units	 	      String		"degrees"
		scale_factor 	      float64		0.01
		valid_range 	      int16(2)		-18000, 18000
		_FillValue 	      int16		-32767

Land/SeaMask	EOS Land/Sea Mask		uint8
						(nscans*10:MODIS_Swath_Type_GEO,
						 mframes:MODIS_Swath_Type_GEO)
		DN values:
		0:	Shallow Ocean (Ocean <5k from coast OR <50m deep).
        	1:	Land (not anything else).
        	2:	Ocean Coastlines and Lake Shorelines.
		3:	Shallow Inland Water (Inland Water < 5km from shore
				OR < 50m deep).
		4:	Ephemeral (intermittent) Water.
		5:	Deep Inland Water (Inland water > 5km from shoreline
				AND > 50m deep).
		6:	Moderate or Continental Ocean (Ocean > 5km from coast
				AND > 50m deep AND < 500m deep).
		7:	Deep Ocean (Ocean > 500m deep).

		SDS Attributes:
		Attribute Name	      Format 	   	Example
		--------------        ------  		-------

		valid_range 	      uint8(2)		0,7
		_FillValue 	      uint8		221

WaterPresent	High resolution water mask	uint8
						(nscans*10:MODIS_Swath_Type_GEO,
		The low resolution Land/Water mask is filled in by first
		extracting a Land/Water mask value for the center of each 500m
		pixel, from a source tabulated with 15 arc second resolution,
		and then aggregating those values to 1km resolution, giving the
		center two pixels doubled weight. This SDS indicates the total
		weight of all high resolution water pixels (Land/Water mask
		values 0 or 3-7) that were aggregated into the low resolution
		Land/Water mask.

		SDS Attributes:
		Attribute Name	      Format 	   	Example
		--------------        ------  		-------
		valid_range 	      uint8(2)		0, 8
		_FillValue 	      uint8		255

gflags 		Geolocation flags		uint8
						(nscans*10:MODIS_Swath_Type_GEO,
						 mframes:MODIS_Swath_Type_GEO)
		Bit 7(MSB):	1 = invalid input data
        	Bit 6:  	1 = no ellipsoid intersection
        	Bit 5:  	1 = no valid terrain data
		Bit 4:  	1 = DEM missing or of inferior quality
		Bit 3:		1 = invalid sensor range
		Bit 2:          1 = near limb of earth: sensor zenith>85 degrees

		SDS Attributes:
		Attribute Name	      Format 	   	Example
		--------------        ------  		-------

		_FillValue 	      uint8		255

Scan offsets	500m offsets, scan direction	int8
						(nscans*20:MODIS_Swath_Type_GEO,
						 mframes*2:MODIS_Swath_Type_GEO)
		SDS Attributes:
		Attribute Name	      Format 	   	Example
		--------------        ------  		-------

		units	 	      String		"km IFOV"
		scale_factor 	      float64		0.006
		valid_range 	      int8(2)		-127, 127
		_FillValue 	      int8		-128

Track offsets	500m offsets, track direction	int8
						(nscans*20:MODIS_Swath_Type_GEO,
						 mframes*2:MODIS_Swath_Type_GEO)
		SDS Attributes:
		Attribute Name	      Format 	   	Example
		--------------        ------  		-------

		units	 	      String		"km IFOV"
		scale_factor 	      float64		0.006
		valid_range 	      int8(2)		-127, 127
		_FillValue 	      int8		-128

Height offsets	500m vertical offsets		int8
						(nscans*20:MODIS_Swath_Type_GEO,
						 mframes*2:MODIS_Swath_Type_GEO)
		SDS Attributes:
		Attribute Name	      Format 	   	Example
		--------------        ------  		-------

		units	 	      String		"km"
		scale_factor 	      float64		0.006
		valid_range 	      int8(2)		-127, 127
		_FillValue 	      int8		-128


4.0	Vgroups

	In addition to the standard Vgroups automatically stored in an
	HDF-formatted file, the MODIS geolocation product has Vgroups
	deliberately created by the MOD_PR03 process.  These Vgroups are
	part of the HDF-EOS Swath structure.

Vgroup Name
-----------
MODIS_Swath_Type_GEO
	Class = "SWATH"
	Contents:
		Vgroup		Geolocation Fields
		Vgroup		Data Fields
		Vgroup		Swath Attributes

Geolocation Fields
	Class = "SWATH Vgroup"
	Contents:
		SDS		Latitude
		SDS		Longitude

Data Fields
	Class = "SWATH Vgroup"
	Contents:
		SDS		Height
		SDS		SensorZenith
		SDS		SensorAzimuth
		SDS		Range
		SDS		SolarZenith
		SDS		SolarAzimuth
		SDS		Land/SeaMask
		SDS		gflags
		SDS		Scan offsets
		SDS		Track offsets
		SDS		Height offsets

Swath Attributes
	Class = "SWATH Vgroup"
	Contents: None.

5.0	Vdatas

There will be exactly one record stored in this vdata:
	Average Temperatures
		_FillValue: -999.0
	Field Name		Type
	-------------------------------
	TA_RC_SMIR_CFPA		float32
		units: "Kelvin"
		valid_range: 50.0 to 118.0
	TP_AO_SMIR_OBJ		float32
		units: "Celsius"
		valid_range: -21.0 to 87.0
	TP_MF_CALBKHD_SR	float32
		units: "Celsius"
		valid_range: -23.0 to 87.0
	TP_MF_Z_BKHD_BB		float32
		units: "Celsius"
		valid_range: -23.0 to 87.0
	TP_SA_RCT1_MIR		float32
		units: "Celsius"
		valid_range: -21.0 to 87.0
	TP_SR_SNOUT		float32
		units: "Celsius"
		valid_range: -23.0 to 87.0