HDF-EOS5 Data Model, File Format and Library
HDF-EOS5 Data Model, File Format and Library
2. Change Explanation
November, 2007 – changes made based on recommendations by the HDF Group.
3. Copyright Notice
This software is freely distributed by NASA
4. Abstract
HDF-EOS is a software library designed to support NASA Earth Observing System (EOS) science data.
HDF is the Hierarchical Data Format developed by the National Center for Supercomputing
Applications. Specific data structures which are containers for science data are: Grid, Point, Zonal
Average and Swath. These data structures are constructed from standard HDF data objects, using EOS
conventions, through the use of a software library. A key feature of HDF-EOS is a standard prescription
for associating geolocation data with science data through internal structural metadata. The relationship
between geolocation and science data is transparent to the end-user. Instrument and data type-
independent services, such as subsetting by geolocation, can be applied to files across a wide variety of
data products through the same library interface. The library is extensible and new data structures can be
added. This document describes a proposed standard for HDF-EOS5 Grid and Swath structures, which
is based on the HDF5 data model and file format, provided by the HDF Group. The HDF Group was
part of the National Center for Supercomputing Applications (NCSA) until July 2006, at which time it
began full operations as a non-profit 501(c)(3) company.
1
ESE-RFC-008v1.0 Larry Klein, Abe Taaheri
Recommended Standard 11/30/2007
Table of Contents
HDF-EOS5 Data Model, File Format and Library ......................................................................... 1
1. Status of this Memo ................................................................................................................ 1
2. Change Explanation ................................................................................................................ 1
3. Copyright Notice..................................................................................................................... 1
4. Abstract ................................................................................................................................... 1
Table of Contents........................................................................................................................ 2
5. Introduction............................................................................................................................. 4
5.1 What is HDF-EOS5?......................................................................................................... 5
5.2 Motivation for Proposing Standardization........................................................................ 5
6. HDF-EOS5 Data Model.......................................................................................................... 6
6.1 SWATH Data Model ...................................................................................................... 6
6.1.1 Data Fields .......................................................................................................... 8
6.1.2 Geolocation Fields .............................................................................................. 8
6.1.3 Dimensions ....................................................................................................... 10
6.1.4 Dimension Maps ............................................................................................... 10
6.1.5 HDF5 Objects in HDF-EOS 5 Swath Objects .................................................. 11
6.2 GRID Data Model.......................................................................................................... 12
6.2.1 Data Fields ........................................................................................................ 14
6.2.2 Dimensions ....................................................................................................... 14
6.2.3 Projections......................................................................................................... 14
6.2.4 HDF5 Objects in HDF-EOS 5 Grid Objects..................................................... 14
7. HDF-EOS5 File Format........................................................................................................ 17
7.1 Introduction.................................................................................................................... 17
7.2 HDF-EOS5 File Format................................................................................................. 18
7.2.1 Overview........................................................................................................... 18
7.2.2 Structure of an HDF-EOS5 File........................................................................ 18
7.2.3 Core Metadata................................................................................................... 18
7.2.4 Archive Metadata.............................................................................................. 18
7.2.5 Structural Metadata........................................................................................... 19
7.2.6 Swath Structure................................................................................................. 20
7.2.7 Grid Structure.................................................................................................... 22
7.2.8 Point Structure .................................................................................................. 23
7.2.9 Zonal Average (ZA) Structure .......................................................................... 23
7.2.10 Hybrid HDF-EOS5 and HDF Files................................................................... 23
8. HDF-EOS 5 Library/ Programming Model .......................................................................... 24
8.1 The Swath Data Interface............................................................................................... 24
8.1.1 SW API Routines.............................................................................................. 24
8.1.2 File Identifiers................................................................................................... 28
8.1.3 Swath Identifiers ............................................................................................... 28
8.1.4 Programming Model ......................................................................................... 28
8.2 The Grid Data Interface ................................................................................................. 31
8.2.1 GD API Routines .............................................................................................. 31
8.2.2 File Identifiers................................................................................................... 33
2
ESE-RFC-008v1.0 Larry Klein, Abe Taaheri
Recommended Standard 11/30/2007
8.2.3 Grid Identifiers.................................................................................................. 34
8.2.4 Programming Model ......................................................................................... 34
8.3 GCTP Usage .................................................................................................................. 35
8.3.1 GCTP Projection Codes.................................................................................... 35
8.3.2 UTM Zone Codes ............................................................................................. 36
8.3.3 GCTP Spheroid Codes...................................................................................... 37
8.3.4 Projection Parameters ....................................................................................... 39
8.3.5 Additional projections....................................................................................... 42
9. Implementation of HDF-EOS 5 ............................................................................................ 44
9.1 Software implementation ........................................................................................... 44
9.2 Applications ................................................................................................................ 44
10. Operational Experience....................................................................................................... 45
11. References........................................................................................................................... 45
APPENDIX A Example HDF-EOS5 Swath Output................................................................. 47
APPENDIX B Example HDF-EOS5 Swath Output................................................................. 50
APPENDIX C Example HDF-EOS5 Grid Output.................................................................... 55
3
ESE-RFC-008v1.0 Larry Klein, Abe Taaheri
Recommended Standard 11/30/2007
5. Introduction
The Hierarchical Data Format (HDF) was selected by NASA as the format of choice for standard
science product archival and distribution for the Earth Observing System (EOS) Project. HDF is a file
format and I/O library that was originally developed by the National Center for Supercomputing
Applications (NCSA) at the University of Illinois at Urbana-Champaign to provide a portable storage
mechanism for supercomputer simulation results. (HDF5 Users Guide, National Center for
Supercomputing Applications, U. of Illinois, Urbana-Champaign, 2005)
HDF5 files consist of a directory and a collection of data objects. Every data object has a directory entry,
containing a pointer to the data object location, and information defining the datatype (much more
information about HDF5 can be found in the NCSA documentation (HDF5 API Specification Reference
Manual,http://hdfgroup.org./HDF5/doc/RM_H5Front.html). Many of the NCSA defined datatypes map
well to EOS datatypes. Examples include raster images, multi-dimensional arrays, and text blocks.
There are other EOS datatypes, however, that do not map directly to NCSA datatypes, particularly in the
case of geolocated datatypes. Examples include projected grids, satellite swaths, and field campaign or
point data. Therefore, some additions to conventional HDF5 datatypes were required to fully support
these datatypes.
To bridge the gap between the needs of EOS data products and the capabilities of HDF, new EOS
specific datatypes – Point, Swath, and Grid – were defined within the HDF framework. Each of these
new datatypes was constructed using conventions for combining standard HDF datatypes and is
supported by an Application Programming Interface (API) which aids the data product user or producer
in the application of the conventions. The APIs allow data products to be created and manipulated in
ways appropriate to each datatype, without regard to or the users needing to manipulate the underlying
HDF objects.
The sum of these APIs comprise the HDF-EOS library. The Point interface is designed to support data
that has associated geolocation information, but is not organized in any well defined spatial or temporal
way. The Swath interface is tailored to support time-ordered data such as satellite swaths (which consist
of a time-ordered series of scanlines), or profilers (which consist of a time-ordered series of profiles).
The Grid interface is designed to support data that has been stored in a rectilinear array based on a well
defined and explicitly supported projection. Profile data is Swath-like data without geo-referencing
information attached.
The original HDF-EOS library was constructed beginning in 1995, using the version of HDF available at
the time, HDF4. The HDF-EOS version was called HDF-EOS2, the version number being a historical
artifact. In 2001, a completely new version of HDF was introduced, HDF5. This library was based on a
different data model (HDF5 for HDF4 Users: a short guide, National Center for Supercomputing
Applications, University of Illinois, Urbana-Champaign, December 3, 2002,
http://www.hdfgroup.uiuc.edu/papers/papers/h4toh5/HDF5forHDF4Users.pdf) and had an interface
which was very different than that of HDF4. HDF-EOS was upgraded to support HDF5 and is called
HDF-EOS5. This new version of HDF-EOS supports the same data model as does HDF-EOS2 and
maintains the HDF-EOS2 interface to the maximum extent possible. Besides the three data types
mentioned above, i.e. Grid, Swath, and Point, HDF-EOS5 also supports “Zonal Average” data type
which is basically a swath like datatype without geolocation mapping.
4
ESE-RFC-008v1.0 Larry Klein, Abe Taaheri
Recommended Standard 11/30/2007
At the present time, most EOS data products, several petabytes worth (1015), are produced and stored in
HDF-EOS2. A growing volume of data is being created in HDF-EOS5 and both libraries are supported
by NASA. Production of EOS data will continue so long as instruments continue to operate.
This document presents a proposed standard for HDF-EOS5 Grid and Swath structures. Point and Zonal
Average (ZA) structures will not be addressed.
The API implements the data model in a number of programming languages, including C, FORTRAN
and C++. This library, which is represented by an Application Programming Interface (API) is
described in Section 8.
We note several successes using the HDF-EOS standard. The EOS MODIS instrument team used Swath
and Grid formats for its' science product storage and distribution format. Science products comprised
many disciplines, including Oceanographic, Land and Atmospheric data. The team had more than thirty
Principle Investigators supplying data processing algorithms and code. A single integrator at NASA
Goddard Space Flight Center was charged with implementing the algorithms, integrating processing
code and formatting output data. Use of HDF-EOS as a team saved considerable code development and
schedule.
A second example of efficiency associated with use of the HDF-EOS standard was found in the work of
the EOS Aura team. A standard was developed and adopted for all four Aura instruments. Data
produced in HDF-EOS5, were than in common format across science data produced by platform
instruments.
5
ESE-RFC-008v1.0 Larry Klein, Abe Taaheri
Recommended Standard 11/30/2007
The EOS Atmospheric Infrared Sounder (AIRS) instrument is a facility instrument with dozens of
NASA and NOAA users. This is a profiling instrument, which stores data in a very different format
than does MODIS, which is an imaging instrument. The team comprised of many Principle
Investigators, each generating their own production algorithms and data products, successfully
packaged its’ products in the HDF-EOS format.
The next major Earth observing system, NPOESS will use HDF5 to store and distribute its data. There
will be considerable overlap in the kinds of measurements made by EOS and by NPOESS instruments.
There will be a need to compare data to develop a consistent long term data record. Community
standardization of both HDF5 and HDF-EOS5 extensions will be of great importance. (HDF5 Draft
Community Standard, ESE RFC, 2005)
EOS data stored in HDF-EOS2 and HDF-EOS5 are of fundamental importance to current and future
research on global climate change and other physical, chemical and biological processes impacting our
earth’s environment. ESE standardization of HDFEOS5 will help to accelerate its adoption among the
earth science communities, and many others as well, both through an increase in the number of
developers writing to the specification and using the API, and through an increase in the number of
those providing their data in HDFEOS5. We don’t propose an ESE standard for HDF-EOS2, but refer
the reader to numerous documents describing the format. (HDF-EOS5 Interface Based on HDF5, 2005)
We again note that the HDF-EOS2 data model for Grid and Swath data is the same as that of HDF-
EOS5. The API of HDF-EOS 5 has the same look and feel of its predecessor, but carry parameter
additions necessitated by major differences between HDF4 and HDF5.
ESE standardization will also validate HDF5 to vendors of software applications important to users of
HDF-EOS5, increasing the likelihood that these vendors will support the standard.
6
ESE-RFC-008v1.0 Larry Klein, Abe Taaheri
Recommended Standard 11/30/2007
Satellite
Along Track
Cross Track
Scan Lines
Another type of data that the Swath is equally well suited to arise from a sensor that measures a vertical
profile, instead of scanning across the ground track. The resulting data resembles a standard Swath
tipped up on its edge. Figure 6.1-2 shows how such a Swath might look.
In fact, the two approaches shown in Figures 6.1-1 and 6.1-2 can be combined to manage a profiling
instrument that scans across the ground track. The result would be a three dimensional array of
measurements where two of the dimensions correspond to the standard scanning dimensions (along the
ground track and across the ground track), and the third dimension represents a height above the Earth or
a range from the sensor. The "horizontal" dimensions can be handled as normal geographic dimensions,
while the third dimension can be handled as a special "vertical" dimension.
7
ESE-RFC-008v1.0 Larry Klein, Abe Taaheri
Recommended Standard 11/30/2007
h
at
tP
en
um
str
In
Instrument
Profiles
Along Track
A standard Swath is made up of four primary parts: data fields, geolocation fields, dimensions, and
dimension maps. An optional fifth part called an index can be added to support certain kinds of access to
Swath data. Each of the parts of a Swath is described in detail in the following subsections.
8
ESE-RFC-008v1.0 Larry Klein, Abe Taaheri
Recommended Standard 11/30/2007
field pair (“Latitude”1 and “Longitude”). Geolocation fields must be either one- or two-dimensional and
can have 32 or 64-bit types. The “Time” field is always in TAI format.(International Atomic Time, see
SDP Toolkit Users Guide for the ECS Project)
Figure 6.1-3 shows a ‘data view’ of a swath structure. Here, the track parameter can be represented by
time.
Satellite
3D Data Array
1000
ca ne
n
lo Li
tio
eo n
0
10
G Sca
60
Geolocation Array
Cross Track
Longitude
0
60
Latitude 1000
k
ac
Tr
Scan Lines
9
ESE-RFC-008v1.0 Larry Klein, Abe Taaheri
Recommended Standard 11/30/2007
6.1.3 Dimensions
Dimensions define the axes of the data and geolocation fields by giving them names and sizes. In using
the library, dimensions must be defined before they can be used to describe data or geolocation fields.
The defined dimensions are stored in the structure metadata.
Every axis of every data or geolocation field, then, must have a dimension associated with it. However,
there is no requirement that they all be unique. In other words, different data and geolocation fields may
share the same named dimension. In fact, sharing dimension names allows the Swath interface to make
some assumptions about the data and geolocation fields involved which can reduce the complexity of
the file and simplify the program creating or reading the file.
0 1 2 3 4 5 6 7 8 9 10111213141516171819
Data Dimension
Figure 6.1-4. A “Normal” Dimension Map
10
ESE-RFC-008v1.0 Larry Klein, Abe Taaheri
Recommended Standard 11/30/2007
The “data skipping” method described above works quite well if there are fewer regularly spaced
geolocation points than data points along a particular pair of mapped dimensions of a Swath. It is
conceivable, however, that the reverse is true – that there are more regularly spaced geolocation points
than data points. In that event, both the offset and increment should be expressed as negative values to
indicate the reversed relationship. The result is shown in Figure 6.1-5. Note that in the reversed
relationship, the offset and increment are applied to the geolocation dimension rather than the data
dimension.
Geolocation Dimension
0 1 2 3 4 5 6 7 8 9 10111213141516171819
Mapping
Offset: -1
0 1 2 3 4 5 6 7 8 9 Increment: -2
Data Dimension
Figure 6.1-5. A “Backwards” Dimension Map
11
ESE-RFC-008v1.0 Larry Klein, Abe Taaheri
Recommended Standard 11/30/2007
“SWATHS” group
Time Colatitude
HDF5 Group
HDF5 Attribute
Figure 6.1-6 HDF5 Objects Created by an HDF-EOS5 Program for Swath Objects
12
ESE-RFC-008v1.0 Larry Klein, Abe Taaheri
Recommended Standard 11/30/2007
compact form. A grid merely contains a set of projection equations (or references to them) along with
their relevant parameters. Together, these relatively few pieces of information define the location of all
points in the grid. The equations and parameters can then be used to compute the latitude and longitude
for any point in the grid.
In loose terms, each data field constitutes a map in a given standard projection. Although there may be
many independent Grids in a single HDF-EOS file, within each Grid only one projection may be chosen
for application to all data fields. Figures 6.2-1 and 6.2-2 show how a single data field may look in a Grid
using two common projections.
There are three important features of a Grid data set: the data fields, the dimensions, and the projection.
Each of these is discussed in detail in the following subsections.
13
ESE-RFC-008v1.0 Larry Klein, Abe Taaheri
Recommended Standard 11/30/2007
6.2.1 Data Fields
The data fields are, of course, the most important part of the Grid. Data fields in a Grid data set are
rectilinear arrays of two or more dimensions. Most commonly, they are simply two-dimensional
rectangular arrays. Generally, each field contains data of similar scientific nature which must share the
same data type. In general Grid supports all HDF5 supported datatypes. However, some Grid APIs, such
as GD_interpolate, only support a few basic datatypes such as “short integer”, “integer”, “float”, and
‘Double”. The data fields are related to each other by common geolocation. That is, a single set of
geolocation information is used for all data fields within one Grid data set.
6.2.2 Dimensions
Dimensions are used to relate data fields to each other and to the geolocation information. To be
interpreted properly, each data field must make use of the two predefined dimensions: “XDim” and
“YDim”. These two dimensions are defined when the grid is created and are used to refer to the X and Y
dimensions of the chosen projection. Like for swath objects the grid dimensions are stored in the
structure metadata. Although there is a limit of eight dimensions a data field in a Grid data set my have,
it is not likely that many fields will need more than three: the predefined dimensions “XDim” and
“YDim” and a third dimension for depth or height.
6.2.3 Projections
The projection is really the heart of the Grid structure. Without the use of a projection, the Grid would
not be substantially different from a Swath. The projection provides a convenient way to encode
geolocation information as a set of mathematical equations which are capable of transforming Earth
coordinates (latitude and longitude) to X-Y coordinates on a sheet of paper.
The choice of a projection to be used for a Grid is a critical decision for a data product designer. There
are a large number of projections that have been used throughout history. In fact, some projections date
back to ancient Greece. Many projections are supported by the HDF-EOS API, including: Geographic,
Universal Transverse Mercator, Albers Conical Equal Area, Lambert Conformal, Mercator, Polar
Stereographic, Polyconic, Transverse Mercator, Lambert Azimuthal Equal Area, Hotin Oblique
Mercator, Space Oblique, Interrupted Goode’s Homolosine, Integerized Sinusoidal, and Cylindrical
Equal area.
The HDF-EOS5 API assumes that the data producer will use to create the data the General Coordinate
Transformation Package (GCTP), a library of projection software available from the U.S. Geological
Survey. The Grid interface allows the data producer to specify the exact GCTP parameters used to
perform the projection and will provide for basic subsetting of the data fields by latitude/longitude
bounding box.
See section 8.3 below for further details on the usage of the GCTP package.
14
ESE-RFC-008v1.0 Larry Klein, Abe Taaheri
Recommended Standard 11/30/2007
the datasets contain field attributes that are local to the field. A few examples of such attributes
are units, fillvalue, etc. Figure 6.2-3 shows an example of a grid structure and a structure
metadata associated with the grid. Again, as in swath all attributes are optional except the
“_FillValue” attribute for the datasets which are created internally be HDF-EOS5 for every
dataset and are assigned values other than zero when user sets the value using Grid’s fillvalue
setting routine.
15
ESE-RFC-008v1.0 Larry Klein, Abe Taaheri
Recommended Standard 11/30/2007
Figure 6.2-3 Grid objects created in an HDF-EOS5 file. ( “GRIDS” and “Data Fields”
groups are defined internally by HDF-EOS5).
16
ESE-RFC-008v1.0 Larry Klein, Abe Taaheri
Recommended Standard 11/30/2007
Figure 6.2-5 shows a schematic of a grid structure containing two and three dimensional arrays. It also
shows part of the related structure metadata stored in “StructMetadata” dataset shown in Figure 7.2-1.
7.1 Introduction
In this Section, we present a brief introduction to the file format of HDF-EOS5. A detailed discussion, as
well as an operational description of HDF-EOS5 can be found in HDF-EOS5 Interface Based on HDF5
Project (Volume 1 and Volume 2, 2005). HDF-EOS5 is composed of HDF5 objects. The file format of
HDF-EOS, the ordering and meaning of bytes stored on disk or memory is therefore the same as the file
format of HDF5. (see HDF5 User Documentation Release, U. of Illinois, Urbana Champaign, 2004)
17
ESE-RFC-008v1.0 Larry Klein, Abe Taaheri
Recommended Standard 11/30/2007
7.2 HDF-EOS5 File Format
7.2.1 Overview
The HDF5 File Format defines the low-level objects in terms of a sequence of bytes. The HDF5
persistent objects are described in terms of the low-level objects, thus creating a mapping from the
HDF5 data model to the set of byte sequences (HDF5 File Format, NCSA, U. of Illinois, Urbana-
Champaign, 2004) HDF-EOS5 on the other hand maps HDF-EOS objects, structures, onto basic HDF5
objects such as Groups, Datasets, and Attributes. Therefore, in the following section we will see how
HDF-EOS5 objects are constructed using HDF5 objects.
18
ESE-RFC-008v1.0 Larry Klein, Abe Taaheri
Recommended Standard 11/30/2007
ECS databases. Archive metadata are also accessed via SDP Toolkit calls and are written in ODL syntax
into the “archivemetadata.X”, (X=0,...,n) family of global attributes. (see SDP Toolkit Users Guide for
the ECS Project).
19
ESE-RFC-008v1.0 Larry Klein, Abe Taaheri
Recommended Standard 11/30/2007
20
ESE-RFC-008v1.0 Larry Klein, Abe Taaheri
Recommended Standard 11/30/2007
are part of any Swath structure carry the class “SWATH”. All one-dimensional and multi-dimensional
fields are implemented as HDF5 datasets. The following limitations apply to Swath structures:
• The reserved field names for special purpose geolocation fields are “Longitude”, “Latitude”,
“Colatitude”, and “Time” (case sensitive). These fields are subject to the following requirements:
Field Name Data Type Format
These fields may be one- or two-dimensional. The HDF-EOS library can check on the validity of
geofield names and issue warnings if there are similarity between the user defined geofields and the
reserved geofield names, to avoid possibility of using invalid uppercase or lowercase letters in the
reserved geofield names (e.g. using “LATITUDE” instead of the reserved name “Latitude”).
2 The “along track” dimension is the slowest of “along track” and “cross track” dimensions in both C and Fortran.
Thus a C-order dimension list of “along track, cross track” for a geofield should have “cross track, along track ”
order in Fortran. Similarly a C-order dimension list of “Band, DataTrack, DataXtrack” for a 3-D data field
should have “DataXtrack, DataTrack, Band” order in Fortran.
21
ESE-RFC-008v1.0 Larry Klein, Abe Taaheri
Recommended Standard 11/30/2007
7.2.7 Grid Structure
Grid structures are implemented as a hierarchy of HDF5 groups containing several datasets and
attributes. All groups, datasets and attributes that are part of any Grid structure carry the class “GRID”.
Each data field within a Grid structure is implemented as a single dataset. The following limitations
apply to Grid structures:
Fields may have from 2 to 8 dimensions.
Compression is selectable at the field level within a Grid. All HDF5-supported compression methods are
available through the HDF-EOS5 library. Table 7-1 shows all supported compression methods.
The compression method is stored within the file. Subsequent use of the library will un-compress the
file. The data should be chunked before compression is applied.
Field names may be up to 64 characters in length.
Any character can be used with the exception of, ",", ";", " and "/".
22
ESE-RFC-008v1.0 Larry Klein, Abe Taaheri
Recommended Standard 11/30/2007
Names are case sensitive.
Names must be unique within a particular Grid structure. Fields with identical names are allowed in
different grids of the same file, but must be accessed using only HDF-EOS5 APIs. Otherwise, bypassing
StructMetadata by using HDF5 APIs to access such fields may result in error.
The values for the LinkField in the Parent level must be unique.
The records in Child level is not monotonic in LinkField, otherwise FWDPOINTER Linkage will
not be set (actually first one is set to (-1,-1) to indicate problem with FWDPOINTER).
23
ESE-RFC-008v1.0 Larry Klein, Abe Taaheri
Recommended Standard 11/30/2007
24
ESE-RFC-008v1.0 Larry Klein, Abe Taaheri
Recommended Standard 11/30/2007
25
ESE-RFC-008v1.0 Larry Klein, Abe Taaheri
Recommended Standard 11/30/2007
26
ESE-RFC-008v1.0 Larry Klein, Abe Taaheri
Recommended Standard 11/30/2007
HE5_PRinfo he5_prinfo Return information about profile
27
ESE-RFC-008v1.0 Larry Klein, Abe Taaheri
Recommended Standard 11/30/2007
The following is a code fragment illustrating the programming model. Appendix B shows the contents
of the output HDF-EOS5 files containing Swath objects. The file is the result of applying h5dump on the
hdf-eos5 output.
/* In this example we open an HDF-EOS file, (2) create the swath
object within the file, and define the swath field dimensions.
28
ESE-RFC-008v1.0 Larry Klein, Abe Taaheri
Recommended Standard 11/30/2007
Open a new HDF-EOS swath file, "Swath.he5". Assuming that this
file may not exist, we are using "H5F_ACC_TRUNC" access code.
The "HE5_SWopen" function returns the swath file ID, swfid,
which is used to identify the file in subsequent calls to the
HDF-EOS library functions. */
/* Once the dimensions are defined, the relationship (mapping) between the
geolocation dimensions, such as track and cross track, and the data
dimensions, must be established. This is done through the "HE5_SWdefdimmap"
function. It takes as input the swath id, the names of the dimensions
designating the geolocation and data dimensions, respectively, and the
offset and increment defining the relation.
29
ESE-RFC-008v1.0 Larry Klein, Abe Taaheri
Recommended Standard 11/30/2007
status = HE5_SWdefidxmap(SWid_index, "IndxTrack", "Res2tr_indexed ", indx);
fillvalue = -999.0;
status = HE5_SWsetfillvalue(SWid, "Temperature", H5T_NATIVE_FLOAT,
&fillvalue);
status = HE5_SWdefdatafield(SWid, "Temperature", "Res2tr,Res2xtr",
NULL,H5T_NATIVE_DOUBLE , 0);
charcount[0] = 13;
status = HE5_SWwritelocattr(SWid, "Temperature", "Unit",
H5T_NATIVE_CHAR,charcount,"Degree Kelvin");
30
ESE-RFC-008v1.0 Larry Klein, Abe Taaheri
Recommended Standard 11/30/2007
31
ESE-RFC-008v1.0 Larry Klein, Abe Taaheri
Recommended Standard 11/30/2007
HE5_GDsetfillvalue he5_gdsetfill Sets fill value for the specified field
HE5_GDgetfillvalue he5_gdgetfill Retrieves fill value for the specified field
HE5_GDinqdims he5_gdinqdims Retrieves information about dimensions
defined in grid
HE5_GDinqfields he5_gdinqdflds Retrieves information about the data fields
defined in grid
HE5_GDinqattrs he5_gdinqattrs Retrieves number and names of attributes
defined
Inquiry HE5_GDinqlocattrs he5_gdinqlattrs Retrieves information about local attributes
defined for a field
HE5_GDinqgrpattrs he5_gdinqgattrs Retrieves information about group attributes
defined in grid
HE5_GDnentries he5_gdnentries Returns number of entries and descriptive
string buffer size for a specified entity
HE5_GDaliasinfo he5_gdaliasinfo Retrieves information about aliases
32
ESE-RFC-008v1.0 Larry Klein, Abe Taaheri
Recommended Standard 11/30/2007
33
ESE-RFC-008v1.0 Larry Klein, Abe Taaheri
Recommended Standard 11/30/2007
8.2.3 Grid Identifiers
Before a grid data set is accessed, it is identified by a name which is assigned to it upon its creation. The
name is used to obtain a grid identifier. After a grid data set has been opened for access, it is uniquely
identified by its grid identifier.
In this example we open the HDF-EOS grid file, "Grid.he5". Assuming that this file may not exist, we
are using the H5F_ACC_TRUNC access code. The "HE5_GDopen" function returns the grid file ID,
gdfid which is used to identify the file in subsequent calls to the HDF-EOS library functions.
Appendix C shows how HDF-EOS 5 Grid objects are related to HDF objects.
xdim = 5;
ydim = 7;
zonecode = 0;
spherecode = 0;
projparm = (double *)calloc( 16, sizeof(double) );
for (i = 0; i < 16; i++)
{
projparm[i] = 0.0;
}
projparm[ 2 ] = 0.9996;
projparm[ 4 ] = -75000000.00;
projparm[ 6 ] = 5000000.00;
uplft[0] = 4855670.77539;
uplft[1] = 9458558.92483;
lowrgt[0] = 5201746.43983;
lowrgt[1] = -10466077.24942;
/* Define projection */
status = HE5_GDdefproj(GDid, HE5_GCTP_UTM, zonecode, spherecode,projparm);
34
ESE-RFC-008v1.0 Larry Klein, Abe Taaheri
Recommended Standard 11/30/2007
/* Define "Unlimited" Dimension */
status = HE5_GDdefdim(GDid, "Unlim", H5S_UNLIMITED);
status = HE5_GDdeffield(GDid,"Voltage","XDim,YDim",NULL,H5T_NATIVE_FLOAT,
0);
To access several files at the same time, a calling program must obtain a separate ID for each file to be
opened. Similarly, to access more than one grid object, a calling program must obtain a separate grid ID
for each object. For example, to open two objects stored in two files, a program would execute the
following series of C function calls:
35
ESE-RFC-008v1.0 Larry Klein, Abe Taaheri
Recommended Standard 11/30/2007
GCTP_GEO (0) Geographic
GCTP_UTM (1) Universal Transverse Mercator
GCTP_ALBERS (3) Albers Conical Equal Area
GCTP_LAMCC (4) Lambert Conformal Conic
GCTP_MERCAT (5) Mercator
GCTP_PS (6) Polar Stereographic
GCTP_POLYC (7) Polyconic
GCTP_TM (9) Transverse Mercator
GCTP_LAMAZ (11) Lambert Azimuthal Equal Area
GCTP_HOM (20) Hotin Oblique Mercator
GCTP_SOM (22) Space Oblique Mercator
GCTP_GOOD (24) Interrupted Goode Homolosine
GCTP_ISINUS1 (31) Integerized Sinusoidal Projection*
GCTP_ISINUS (99) Integerized Sinusoidal Projection*
GCTP_CEA (97) Cylindrical Equal-Area (for EASE grid with corners
in meters)**
GCTP_BCEA (98) Cylindrical Equal-Area (for EASE grid with grid corners
in packed degrees, DMS)**
* The Integerized Sinusoidal Projection was not part of the original GCTP package. It has been added by
ECS. See Level-3 SeaWiFS Data Products: Spatial and Temporal Binning Algorithms. Additional
references are provided in Section 2.
** The Cylindrical Equal-Area Projection was not part of the original GCTP package. It has been added
by ECS. See Notes for section 8.3.4.
In the new GCTP package the Integerized Sinusoidal Projection is included as the 31st projection. The
Code 31 was added to HDFEOS for users who wish to use 31 instead of 99 for Integerized Sinusoidal
Projection.
Note that other projections supported by GCTP will be adapted for future HDF-EOS Versions as new
user requirements are surfaced. For further details on the GCTP projection package, please refer to
Section 8.3.5 and Appendix G of the SDP Toolkit Users Guide for the ECS Project, April, 2005, (333-
EMD-001, Revision 03).
36
ESE-RFC-008v1.0 Larry Klein, Abe Taaheri
Recommended Standard 11/30/2007
09 129W 132W-126W 39 051E 048E-054E
10 123W 126W-120W 40 057E 054E-060E
11 117W 120W-114W 41 063E 060E-066E
12 111W 114W-108W 42 069E 066E-072E
13 105W 108W-102W 43 075E 072E-078E
14 099W 102W-096W 44 081E 078E-084E
15 093W 096W-090W 45 087E 084E-090E
16 087W 090W-084W 46 093E 090E-096E
17 081W 084W-078W 47 099E 096E-102E
18 075W 078W-072W 48 105E 102E-108E
19 069W 072W-066W 49 111E 108E-114E
20 063W 066W-060W 50 117E 114E-120E
21 057W 060W-054W 51 123E 120E-126E
22 051W 054W-048W 52 129E 126E-132E
23 045W 048W-042W 53 135E 132E-138E
24 039W 042W-036W 54 141E 138E-144E
25 033W 036W-030W 55 147E 144E-150E
26 027W 030W-024W 56 153E 150E-156E
27 021W 024W-018W 57 159E 156E-162E
28 015W 018W-012W 58 165E 162E-168E
29 009W 012W-006W 59 171E 168E-174E
30 003W 006W-000E 60 177E 174E-180W
37
ESE-RFC-008v1.0 Larry Klein, Abe Taaheri
Recommended Standard 11/30/2007
Sphereof Radius 6371228m (20)
Sphereof Radius 6371007.181m (21)
38
ESE-RFC-008v1.0 Larry Klein, Abe Taaheri
Recommended Standard 11/30/2007
39
ESE-RFC-008v1.0 Larry Klein, Abe Taaheri
Recommended Standard 11/30/2007
Table 8-4. Projection Transformation Package Projection Parameters Elements
Array Element
Code & Projection Id 9 10 11 12 13
0 Geographic
1UTM
3 Albers Conical Equal Area
4 Lambert Conformal C
5 Mercator
6 Polar Stereographic
7 Polyconic
9 Transverse Mercator
11 Lambert Azimuthal
20 Hotin Oblique Merc A Long1 Lat1 Long2 Lat2 zero
20 Hotin Oblique Merc B one
22 Space Oblique Merc A PSRev SRat PFlag HDF-EOS Para
zero
22 Space Oblique Merc B HDF-EOS Para
one
24 Interrupted Goode
31 & 99 Integerized Sinusoidal NZone RFlag
97 CEA utilized by EASE grid (see
Notes)
98 BCEA utilized by EASE grid (see
Notes)
Where,
Lon/Z Longitude of any point in the UTM zone or zero. If zero, a zone code must be
specified.
Lat/Z Latitude of any point in the UTM zone or zero. If zero, a zone code must be
specified.
Smajor Semi-major axis of ellipsoid. If zero, Clarke 1866 in meters is assumed. It is
recommended that explicit value, rather than zero, is used for Smajor.
Sminor Eccentricity squared of the ellipsoid if less than one, if zero, a spherical form is
assumed, or if greater than one, the semi-minor axis of ellipsoid. It should be noted
that a negative sphere code should be used in order to have user specified Smajor
and Sminor be accepted by GCTP, otherwise default ellipsoid Smajor and Sminor
will be used.
Sphere Radius of reference sphere. If zero, 6370997 meters is used. It is recommended that
explicit value, rather than zero, is used for Sphere.
STDPR1 Latitude of the first standard parallel
STDPR2 Latitude of the second standard parallel
CentMer Longitude of the central meridian
OriginLat Latitude of the projection origin
40
ESE-RFC-008v1.0 Larry Klein, Abe Taaheri
Recommended Standard 11/30/2007
FE False easting in the same units as the semi-major axis
FN False northing in the same units as the semi-major axis
TrueScale Latitude of true scale
LongPol Longitude down below pole of map
Factor Scale factor at central meridian (Transverse Mercator) or center of projection
(Hotine Oblique Mercator)
CentLon Longitude of center of projection
CenterLat Latitude of center of projection
Long1 Longitude of first point on center line (Hotine Oblique Mercator, format A)
Long2 Longitude of second point on center line (Hotine Oblique Mercator, frmt A)
Lat1 Latitude of first point on center line (Hotine Oblique Mercator, format A)
Lat2 Latitude of second point on center line (Hotine Oblique Mercator, format A)
AziAng Azimuth angle east of north of center line (Hotine Oblique Mercator, frmt B)
AzmthPt Longitude of point on central meridian where azimuth occurs (Hotine Oblique
Mercator, format B)
IncAng Inclination of orbit at ascending node, counter-clockwise from equator (SOM,
format A)
AscLong Longitude of ascending orbit at equator (SOM, format A)
PSRev Period of satellite revolution in minutes (SOM, format A)
SRat Satellite ratio to specify the start and end point of x,y values on earth surface (SOM,
format A -- for Landsat use 0.5201613)
PFlag End of path flag for Landsat: 0 = start of path, 1 = end of path (SOM, frmt A)
Satnum Landsat Satellite Number (SOM, format B)
Path Landsat Path Number (Use WRS-1 for Landsat 1, 2 and 3 and WRS-2 for Landsat 4
and 5.) (SOM, format B)
Nzone Number of equally spaced latitudinal zones (rows); must be two or larger and even
Rflag Right justify columns flag is used to indicate what to do in zones with an odd
number of columns. If it has a value of 0 or 1, it indicates the extra column is on the
right (zero) left (one) of the projection Y-axis. If the flag is set to 2 (two), the
number of columns are calculated so there are always an even number of columns
in each zone.
Notes:
• Array elements 14 and 15 are set to zero.
• All array elements with blank fields are set to zero.
All angles (latitudes, longitudes, azimuths, etc.) are entered in packed degrees/ minutes/ seconds
(DDDMMMSSS.SS) format.
The following notes apply to the Space Oblique Mercator A projection:
41
ESE-RFC-008v1.0 Larry Klein, Abe Taaheri
Recommended Standard 11/30/2007
• A portion of Landsat rows 1 and 2 may also be seen as parts of rows 246 or 247. To
place these locations at rows 246 or 247, set the end of path flag (parameter 11) to 1--end
of path. This flag defaults to zero.
• When Landsat-1,2,3 orbits are being used, use the following values for the specified
parameters:
− Parameter 4 099005031.2
− Parameter 5 128.87 degrees - (360/251 * path number) in packed DMS format
− Parameter 9 103.2669323
− Parameter 10 0.5201613
• When Landsat-4,5 orbits are being used, use the following values for the specified
parameters:
− Parameter 4 098012000.0
− Parameter 5 129.30 degrees - (360/233 * path number) in packed DMS format
− Parameter 9 98.884119
− Parameter 10 0.5201613
Grid Dimensions:
Width 1383
Height 586
Map Origin:
Column (r0) 691.0
Row (S0) 292.5
Latitude 0.0
Longitude 0.0
Grid Extent:
Minimum Latitude 86.72S
Maximum Latitude 86.72N
Minimum Longitude 180.00W
Maximum Longitude 180.00E
Actual grid cell size 25.067525km
Grid coordinates (r,s) start in the upper left corner at cell (0.0), with r increasing to the
right and s increasing downward.
Although the projection code and name (tag) kept the same, BCEA projection was generalized to
accept Latitude of True Scales other than 30 degrees, Central Meridian other than zero, and
ellipsoid earth model besides the spherical one with user supplied radius. This generalization
along with the removal of hard coded grid parameters will allow users not only subsetting, but
42
ESE-RFC-008v1.0 Larry Klein, Abe Taaheri
Recommended Standard 11/30/2007
also creating other grids besides the 25 km global EASE grid and having freedom to use different
appropriate projection parameters. With the current version one can create the above mentioned
25 km global EASE grid of previous versions using:
Grid Dimensions:
Width 1383
Height 586
Grid Extent:
UpLeft Latitude 86.72
LowRight Latitude -86.72
UpLeft Longitude -180.00
LowRight Longitude 180.00
Projection Parameters:
1) 6371.2280/25.067525 = 254.16263
2) 6371.2280/25.067525 = 254.16263
5) 0.0
6) 30000000.0
7) 691.0
8) –292.5
Grid Dimensions:
Width 2766
Height 1171
Grid Extent:
UpLeft Latitude 85.95
LowRight Latitude –85.95
UpLeft Longitude –179.93
LowRight Longitude 180.07
Projection Parameters:
1) 6371.2280/(25.067525/2) = 508.325253
2) 6371.2280/(25.067525/2) = 508.325253
5) 0.0
6) 30000000.0
7) 1382.0
8) –585.0
Any other grids (normalized pixel or not) with generalized BCEA projection can be created
using appropriate grid corners, dimension sizes, and projection parameters. Please note that like
other projections Semi-major and Semi-minor axes will default to Clarke 1866 values (in meters)
if they are set
A new projection CEA (97) was added to GCTP. This projection is the same as the generalized
BCEA, except that the EASE grid produced will have its corners in meters rather than packed
degrees, which is the case with EASE grid produced by BCEA.
43
ESE-RFC-008v1.0 Larry Klein, Abe Taaheri
Recommended Standard 11/30/2007
9. Implementation of HDF-EOS 5
Operating Systems: Solaris (8, 9, 10), Irix6.5, HP 11, AIX, DEC, Windows NT/98/2000/XP,
Linux (including 64-bit Opteron and Itanium), Mac OS X
Compilers: FORTRAN 77/90 & g77/pgf90 , C, C++, gcc, g++
http://newsroom.gsfc.nasa.gov/sdptoolkit/toolkit.html
http://newsroom.gsfc.nasa.gov/sdptoolkit/HEG/HEGHome.html
[email protected]
[email protected]
[email protected]
9.2 Applications
Over the past 10 years, dozens of applications have been written to access, browse, process and
analyze data written in HDF-EOS2 and HDF-EOS 5 formats. Many of these applications have
been converted to read and process HDF-EOS 5. Applications that have been provided and are
supported by the EMD Program are:
The commercial data analysis tools, IDL and Matlab also support HDF-EOS 5 files.
44
ESE-RFC-008v1.0 Larry Klein, Abe Taaheri
Recommended Standard 11/30/2007
Other applications that provide specialized functionality to data products written in HDF-EOS 5
can be found at:
http://daac.gsfc.nasa.gov/
http://eosweb.larc.nasa.gov/
http://hdf.ncsa.uiuc.edu/hdfeoss.html
The instrument represented at GSFC are: MLS, OMI and HRDLS. Currently the DAAC holds
about 56,000 data granules and about 3.5 Terabytes of data volume. About 12 GBytes per day
are ingested into the archives. So far total of 35 data products are available. The data are
distributed electronically by user request.
Data from the TES instrument ate archived at the Langley Research Center DAAC. Detailed
information can be found at: http://eosweb.larc.nasa.gov/. There are currently about 5000 data
granules stored in about 2 Terabytes. 36 data products are available.
The MODIS and AIRS instrument teams from the EOS Terra and Aqua missions have produced
data in the earlier HDF-EOS 2 format. Both teams have studied the costs and process of
conversion of HDF-EOS 2 to HDF-EOS 5 format. At this time no decision has been made by
either team on whether to proceed with this conversion during a future re-processing of data.
This process could potentially put Petabytes of data into HDF-EOS 5 format.
Since introduction, more than 400 users have downloaded HDF-EOS and associated application
software and on average 5 to 15 new users request passwords for downloading every month.
These users will be supported by NASA for the indefinite future.
11. References
1. Release 7 SDP Toolkit Users Guide for the EMD Project for Toolkit Version 5.2.13,
Document 333-EMD-001, Revision 03, April 2005,
http://newsroom.gsfc.nasa.gov/sdptoolkit/userguide.html
45
ESE-RFC-008v1.0 Larry Klein, Abe Taaheri
Recommended Standard 11/30/2007
3. HDF-EOS Interface Based on HDF5, Version 1.6.9, Volume 2: Function Reference
Guide, Document 175-EMD-002, Revision 03, April 2005,
http://newsroom.gsfc.nasa.gov/sdptoolkit/userguide.html
5. HDF5 for HDF4 Users: a short guide, National Center for Supercomputing Applications,
University of Illinois, Urbana-Champaign, December 3, 2002,
http://www.hdfgroup.uiuc.edu/papers/papers/h4toh5/HDF5forHDF4Users.pdf )
46
ESE-RFC-008v1.0 Larry Klein, Abe Taaheri
Recommended Standard 11/30/2007
Swath
SwathName Name of swath structure String
Dimension_X Defined dimmension # X, with the
name and size given by:
DimensionName String
Size Integer
DimensionMap_X Defined dimension map # X,
showing mapping between
dimensions with the names
specified in "GeoDimension" and
"DataDimension". The positive
"Offset" value shows how far
along the data dimension one
must travel to find the first point to
have corresponding entry along
the geolocation dimension. The
negative "Offset" value shows
how far along the geolocation
dimension one must travel to find
the first point to have
corresponding entry along the
data dimension. The "Increment"
shows how many point to travel
along the data dimension before
the next point is found for which
there is a corresponding entry
along the geolocation dimension.
GeoDimension String
DataDimension String
Offset Integer
Increment Integer
47
ESE-RFC-008v1.0 Larry Klein, Abe Taaheri
Recommended Standard 11/30/2007
Table A-1. Summary of Structural Metadata Attributes(continued)
IndexDimensionMap_ Shows index mapping between
X fields given by GeoDimension
and DataDimension. The
indicies will be in a dataset with
the name :
_INDXMAP:geodim/datadim
GeoDimension String
DataDimension String
GeoField_X Geo filed # X with the name,
datatype and comma separated
list of dimensions given by:
GeoFieldName String
DataType Code
DimList String
MaxDimList String
See Table 7.1 for compression CompressionType Code
codes.
Level of compression when the DefelateLevel Integer
compression type is
HE5_HDFE_COMP_DEFLATE.
Compression parameter is in
the range of 1 to 9.
Pixels per block size and used BlockSize Integer
for SZIP compression, an even
number with typical values of 8,
10, 16, 32.
Compression parameters for CompressionParams Integer
NBIT compression. Array
DataField_X Data filed # X with the name,
datatype and comma-
separated list of dimensions,
given by:
DataFieldName String
HDF5 datatype codes (See DataType Code
Appendix B of HDF5 Draft
Community Standard, ESE
RFC 007)
DimList String
MaxDimList String
See above for Geofields. CompressionType Code
See above for Geofields. DefelateLevel Integer
See above for Geofields. BlockSize Integer
48
ESE-RFC-008v1.0 Larry Klein, Abe Taaheri
Recommended Standard 11/30/2007
Table A-1. Summary of Structural Metadata Attributes(continued)
Grid
GridName Name of grid structure. The grid String
is identified by:
Number of columns Xdim Long
Integer
Number of rows Ydim Long
Integer
Upper left coordinates of the UpperLeftPointMtrs Double
grid: The unit is meters for all
projections except the
"Geographic" projection. For the
"Geographic" projection it is in
packed
degree/minutes/seconds
(DDDMMMSSS.SS) format.
Lower right coordinates of the LowerRightMtrs Double
grid: The unit is meters for all
projections except the
"Geographic" projection. For the
"Geographic" projection it is in
packed
degree/minutes/seconds
(DDDMMMSSS.SS) format.
The pojection code for the Projection Code
defined projection. The code is
constructed as HE5_<name>,
where name is the projection
name given in section 8.3.1,
such as HE5_GCTP_TM for the
Transverse Mercator projection.
Projection parameters for the ProjParams Double
specified projection. See Table
8.3 for the elements in the
array.
When the pixel registration is GridOrigin Code
HE5_HDFE_CORNER the
GridOrigin indicates which pixel
corner represents the pixel
location; The values can be
HE5_HDFE_GD_UL,
HE5_HDFE_GD_UR,
HE5_HDFE_GD_LL, or
HE5_HDFE_GD_LR. Any
values in this attribute will be
irrelevent if the pixel registration
is defined as
HE5_HDFE_CENTER.
GCTP Sphere code (see 8.3.3) SphereCode Integer
The pixel registration: PixelRegistration Code
HE5_HDFE_CENTER or
HE5_HDFE_CORNER
depending on the location in
pixel that represents the pixel
(see also GridOrigin above)
49
ESE-RFC-008v1.0 Larry Klein, Abe Taaheri
Recommended Standard 11/30/2007
Table A-1. Summary of Structural Metadata Attributes(continued)
Zone code for the Universal ZoneCode Integer
Transverse Mercator (UTM)
projection. See section 8.3.2.for
the defined zone codes.
DataField_X Data filed # X with the name,
datatype and comma separated
list of dimensions given by:
DataFieldName String
HDF5 datatype codes (See DataType Code
Appendix B of HDF5 Draft
Community Standard, ESE
RFC 007)
DimList String
MaxDimList String
See above for swath Geofields. CompressionType Code
See above for swath Geofields. DefelateLevel Integer
See above for swath Geofields. BlockSize Integer
See above for swath Geofields. CompressionParams Integer
Array
Dimension_X Defined dimmension # X, with
the name and size:
DimensionName String
Size Integer
Point
PointName Name of the Point Structure. String
LevelName Name of the level within the String
point structure.
PointField_X Point Field # X identified by
PointFieldName, DataType,
and Order of the field.
PointFieldName String
DataType Code
The dimension of the field. The Order Long
order for numerical scaler Integer
variables can be either 0 or 1.
LevelLink_X LevelLink # X identified by
Parent and Child level names
and the field name that links
the levels together.
Parent String
Child String
LinkField String
This structure is similar to
Swath structure except that it
does not have geofields and,
therefore, any type of geofield-
ZA datafield mapping
ZaName Name of ZA structure. String
50
ESE-RFC-008v1.0 Larry Klein, Abe Taaheri
Recommended Standard 11/30/2007
HDF5 "Swath.he5" {
GROUP "/" {
GROUP "HDFEOS" {
GROUP "ADDITIONAL" {
GROUP "FILE_ATTRIBUTES" {
}
}
GROUP "SWATHS" {
GROUP "Swath1" {
GROUP "Data Fields" {
DATASET "Temperature" {
DATATYPE H5T_IEEE_F64BE
DATASPACE SIMPLE { ( 40, 20 ) / ( 40, 20 ) }
DATA {
(0,0): -999,-999,-999,-999,-999,-999,-999,-999,
(0,8): -999,-999,-999,-999,-999,-999,-999,-999,
(0,16): -999,-999,-999,-999,
(1,0): -999,-999,-999,-999,-999,-999,-999,-999,
(1,8): -999,-999,-999,-999,-999,-999,-999,-999,
(1,16): -999,-999,-999,-999,
............
............
............
(38,0): -999,-999,-999,-999,-999,-999,-999,-999,
(38,8): -999,-999,-999,-999,-999,-999,-999,-999,
(38,16): -999,-999,-999,-999,
(39,0): -999,-999,-999,-999,-999,-999,-999,-999,
(39,8): -999,-999,-999,-999,-999,-999,-999,-999,
(39,16): -999,-999,-999,-999
}
ATTRIBUTE "_FillValue" {
DATATYPE H5T_IEEE_F64BE
DATASPACE SIMPLE { ( 1 ) / ( 1 ) }
DATA {
(0): -999
}
}
ATTRIBUTE "Unit" {
DATATYPE H5T_STRING {
STRSIZE 13;
STRPAD H5T_STR_NULLTERM;
CSET H5T_CSET_ASCII;
CTYPE H5T_C_S1;
}
DATASPACE SCALAR
DATA {
(0): "Degree Kelvin"
}
}
}
}
51
ESE-RFC-008v1.0 Larry Klein, Abe Taaheri
Recommended Standard 11/30/2007
GROUP "Geolocation Fields" {
DATASET "Time" {
DATATYPE H5T_IEEE_F64BE
DATASPACE SIMPLE { ( 20 ) / ( 20 ) }
DATA {
(0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0,
(18): 0, 0
}
ATTRIBUTE "_FillValue" {
DATATYPE H5T_IEEE_F64BE
DATASPACE SIMPLE { ( 1 ) / ( 1 ) }
DATA {
(0): 0
}
}
}
}
}
GROUP "Swath2" {
GROUP "Data Fields" {
}
GROUP "Geolocation Fields" {
}
DATASET "_INDEXMAP:IndexTrack,Res2tr_indexed" {
DATATYPE H5T_STD_I32BE
DATASPACE SIMPLE { ( 6 ) / ( 6 ) }
DATA {
(0): 1, 5, 8, 12, 17, 20
}
}
}
}
}
GROUP "HDFEOS INFORMATION" {
ATTRIBUTE "HDFEOSVersion" {
DATATYPE H5T_STRING {
STRSIZE 32;
STRPAD H5T_STR_NULLTERM;
CSET H5T_CSET_ASCII;
CTYPE H5T_C_S1;
}
DATASPACE SCALAR
DATA {
(0): "HDFEOS_5.1.10"
}
}
DATASET "StructMetadata.0" {
DATATYPE H5T_STRING {
STRSIZE 32000;
STRPAD H5T_STR_NULLTERM;
CSET H5T_CSET_ASCII;
CTYPE H5T_C_S1;
}
DATASPACE SCALAR
DATA {
(0): "GROUP=SwathStructure
52
ESE-RFC-008v1.0 Larry Klein, Abe Taaheri
Recommended Standard 11/30/2007
GROUP=SWATH_1
SwathName="Swath1"
GROUP=Dimension
OBJECT=Dimension_1
DimensionName="GeoTrack"
Size=20
END_OBJECT=Dimension_1
OBJECT=Dimension_2
DimensionName="GeoXTrack"
Size=10
END_OBJECT=Dimension_2
OBJECT=Dimension_3
DimensionName="Res2tr"
Size=40
END_OBJECT=Dimension_3
OBJECT=Dimension_4
DimensionName="Res2xtr"
Size=20
END_OBJECT=Dimension_4
OBJECT=Dimension_5
DimensionName="Bands"
Size=15
END_OBJECT=Dimension_5
OBJECT=Dimension_6
DimensionName="ProfDim"
Size=4
END_OBJECT=Dimension_6
OBJECT=Dimension_7
DimensionName="Unlim"
Size=-1
END_OBJECT=Dimension_7
END_GROUP=Dimension
GROUP=DimensionMap
OBJECT=DimensionMap_1
GeoDimension="GeoTrack"
DataDimension="Res2tr"
Offset=0
Increment=2
END_OBJECT=DimensionMap_1
OBJECT=DimensionMap_2
GeoDimension="GeoXTrack"
DataDimension="Res2xtr"
Offset=1
Increment=2
END_OBJECT=DimensionMap_2
END_GROUP=DimensionMap
GROUP=IndexDimensionMap
END_GROUP=IndexDimensionMap
GROUP=GeoField
OBJECT=GeoField_1
GeoFieldName="Time"
DataType=H5T_NATIVE_DOUBLE
DimList=("GeoTrack")
MaxdimList=("GeoTrack")
END_OBJECT=GeoField_1
END_GROUP=GeoField
GROUP=DataField
53
ESE-RFC-008v1.0 Larry Klein, Abe Taaheri
Recommended Standard 11/30/2007
OBJECT=DataField_1
DataFieldName="Temperature"
DataType=H5T_NATIVE_DOUBLE
DimList=("Res2tr","Res2xtr")
MaxdimList=("Res2tr","Res2xtr")
END_OBJECT=DataField_1
END_GROUP=DataField
GROUP=ProfileField
END_GROUP=ProfileField
GROUP=MergedFields
END_GROUP=MergedFields
END_GROUP=SWATH_1
GROUP=SWATH_2
SwathName="Swath2"
GROUP=Dimension
OBJECT=Dimension_1
DimensionName="Res2tr_indexed"
Size=40
END_OBJECT=Dimension_1
OBJECT=Dimension_2
DimensionName="IndexTrack"
Size=6
END_OBJECT=Dimension_2
END_GROUP=Dimension
GROUP=DimensionMap
END_GROUP=DimensionMap
GROUP=IndexDimensionMap
OBJECT=IndexDimensionMap_1
GeoDimension="IndexTrack"
DataDimension="Res2tr_indexed"
END_OBJECT=IndexDimensionMap_1
END_GROUP=IndexDimensionMap
GROUP=GeoField
END_GROUP=GeoField
GROUP=DataField
END_GROUP=DataField
GROUP=ProfileField
END_GROUP=ProfileField
GROUP=MergedFields
END_GROUP=MergedFields
END_GROUP=SWATH_2
END_GROUP=SwathStructure
GROUP=GridStructure
END_GROUP=GridStructure
GROUP=PointStructure
END_GROUP=PointStructure
GROUP=ZaStructure
END_GROUP=ZaStructure
END
"
}
}
}
}
}
54
ESE-RFC-008v1.0 Larry Klein, Abe Taaheri
Recommended Standard 11/30/2007
HDF5 "Grid.he5" {
GROUP "/" {
GROUP "HDFEOS" {
GROUP "ADDITIONAL" {
GROUP "FILE_ATTRIBUTES" {
}
}
GROUP "GRIDS" {
GROUP "TMGrid" {
GROUP "Data Fields" {
DATASET "Voltage" {
DATATYPE H5T_IEEE_F32BE
DATASPACE SIMPLE { ( 5, 7 ) / ( 5, 7 ) }
DATA {
(0,0): -1.11111,-1.11111,-1.11111,-1.11111,-1.11111,
(0,5): -1.11111,-1.11111,
(1,0): -1.11111,-1.11111,-1.11111,-1.11111,-1.11111,
(1,5): -1.11111,-1.11111,
(2,0): -1.11111,-1.11111,-1.11111,-1.11111,-1.11111,
(2,5): -1.11111,-1.11111,
(3,0): -1.11111,-1.11111,-1.11111,-1.11111,-1.11111,
(3,5): -1.11111,-1.11111,
(4,0): -1.11111,-1.11111,-1.11111,-1.11111,-1.11111,
(4,5): -1.11111,-1.11111
}
ATTRIBUTE "_FillValue" {
DATATYPE H5T_IEEE_F32BE
DATASPACE SIMPLE { ( 1 ) / ( 1 ) }
DATA {
(0): -1.11111
}
}
}
}
}
}
}
GROUP "HDFEOS INFORMATION" {
ATTRIBUTE "HDFEOSVersion" {
DATATYPE H5T_STRING {
STRSIZE 32;
STRPAD H5T_STR_NULLTERM;
CSET H5T_CSET_ASCII;
CTYPE H5T_C_S1;
}
DATASPACE SCALAR
DATA {
(0): "HDFEOS_5.1.10"
}
}
DATASET "StructMetadata.0" {
55
ESE-RFC-008v1.0 Larry Klein, Abe Taaheri
Recommended Standard 11/30/2007
DATATYPE H5T_STRING {
STRSIZE 32000;
STRPAD H5T_STR_NULLTERM;
CSET H5T_CSET_ASCII;
CTYPE H5T_C_S1;
}
DATASPACE SCALAR
DATA {
(0): "GROUP=SwathStructure
END_GROUP=SwathStructure
GROUP=GridStructure
GROUP=GRID_1
GridName="TMGrid"
XDim=5
YDim=7
UpperLeftPointMtrs=(4855670.775390,9458558.924830)
LowerRightMtrs=(5201746.439830,-10466077.249420)
Projection=HE5_GCTP_TM
ProjParams=(0,0,0.999600,0,-75000000,0,5000000,
0,0,0,0,0,0)
SphereCode=0
GROUP=Dimension
OBJECT=Dimension_1
DimensionName="Time"
Size=10
END_OBJECT=Dimension_1
OBJECT=Dimension_2
DimensionName="Unlim"
Size=-1
END_OBJECT=Dimension_2
END_GROUP=Dimension
GROUP=DataField
OBJECT=DataField_1
DataFieldName="Voltage"
DataType=H5T_NATIVE_FLOAT
DimList=("XDim","YDim")
MaxdimList=("XDim","YDim")
END_OBJECT=DataField_1
END_GROUP=DataField
GROUP=MergedFields
END_GROUP=MergedFields
END_GROUP=GRID_1
END_GROUP=GridStructure
GROUP=PointStructure
END_GROUP=PointStructure
GROUP=ZaStructure
END_GROUP=ZaStructure
END
"
}
}
}
}
}
56