MODIS GEOLOCATION VERSION 5 PRODUCT FORMAT Version 5.0.0 August 18, 2004 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 "1995-01-01" "YYYY-MM-DD" RANGEBEGINNINGTIME STRING "00:00:00.000000" "HH:MM:SS.SSSSSS" RANGEENDINGDATE STRING "1995-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 "1995-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 "2.2.1" PRODUCTIONDATETIME STRING "1995-01-01T00:00:00.000Z" CCSDS ASCII Time Code A REPROCESSINGACTUAL STRING "processed once" REPROCESSINGPLANNED STRING "further update anticipated" INPUTPOINTER STRING(6) {"MYD03LUT.coeff.v4.0.1.LUTv02", "MOD01.A2002182.1155.004.2003061024855.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.A2002182.1155.004.2003061024930.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.A1995001.0000.001.1995002000000.hdf" EASTBOUNDINGCOORDINATE DOUBLE 40.0 NORTHBOUNDINGCOORDINATE DOUBLE 25.0 SOUTHBOUNDINGCOORDINATE DOUBLE 10.0 WESTBOUNDINGCOORDINATE DOUBLE 15.0 DESCRREVISION STRING "1.0" Version of the ESDT description PRODUCTIONHISTORY STRING "PGE01:4.0.3" 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 2200 Dimension_2 mframes 1354 DimensionMaps: None. 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 Height DFNT_INT16 (nscans*10,mframes) DataField_2 SensorZenith DFNT_INT16 (nscans*10,mframes) DataField_3 SensorAzimuth DFNT_INT16 (nscans*10,mframes) DataField_4 Range DFNT_UINT16 (nscans*10,mframes) DataField_5 SolarZenith DFNT_INT16 (nscans*10,mframes) DataField_6 SolarAzimuth DFNT_INT16 (nscans*10,mframes) DataField_7 Land/SeaMask DFNT_UINT8 (nscans*10,mframes) DataField_8 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) 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 "2.1" Version number of the geolocation parameter file used. Maneuver List Version String "5.3" Version number of the maneuver list used. GEO_EST_RMS_ERROR float32 100 Estimated geolocation RMS error (meters). (-1 - 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) 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 int16(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 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 -------------- ------ ------- _FillValue uint8 221 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 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 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