GeoTIFF File and "Key" Structure Hierarchy
This gives the abstract file-format and "GeoKey" data storage mechanism used in GeoTIFF. To see graphical view of the GeoTIFF file structure please refer Fig. 2.

Fig 2.: The Geokey Concept for access to all geo-related Parameters via a few TIFF tags.
A GeoTIFF file is a TIFF 6.0 file, and inherits the file structure as described in the corresponding portion of the TIFF spec. All GeoTIFF specific information is encoded in several additional reserved TIFF tags, and contains no private Image File Directories (IFD's), binary structures or other private information invisible to standard TIFF readers.
A GeoTIFF file stores projection parameters in a set of "Keys" which are virtually identical in function to a "Tag", but has one more level of abstraction above TIFF. Effectively, it is a sort of "Meta-Tag". A Key works with formatted tag-values of a TIFF file the way that a TIFF file deals with the raw bytes of a data file. Like a tag, a Key has an ID number rangin from 0 to 65535, but unlike TIFF tags, all key ID's are available for use in GeoTIFF parameter definitions.
The Keys in GeoTIFF (also call "GeoKeys") are all referenced from the GeoKeyDirectoryTag, which defined in Table 2.
GeoKeyDirectoryTag : This tag may be used to store the GeoKeys and GeoKey directory header information. The header values consist of the following information, in order:
Header={KeyDirectoryVersion, KeyRevision, MinorRevision, NumberOfKeys}
where
"KeyDirectoryVersion" indicates the current version of Key implementation. "KeyRevision" indicates what revision of Key-Sets are used. "MinorRevision" indicates what set of Key-codes are used. The complete revision number is denoted
.. "NumberOfKeys" indicates how many Keys are defined by the rest of this Tag.
This header is immediately followed by a collection of <NumberOfKeys> KeyEntry sets, each of which is also 4-SHORTS long.
Table 2 : Additional Tags used by GeoTIFF
| TagName/Tag Value | Type | N=Variable | Alias | Owner |
| GeoKeyDirectoryTag/34735 | SHORT(2 byte unsigned) | >=4 | ProjectionInfoTag,CoordSyetemInfoTag | SPOT Image, Inc. |
| GeoDoubleParamTag/34736 | DOUBLE(IEEE Double Precion | Variable | NONE | SPOT Image, Inc. |
| GeoAsciiParamsTag/34737 | ASCII | Variable | NONE | SPOT Image, Inc. |
Each KeyEntry is modeled on the "TIFFEntry" format of the TIFF directory header, and is of the form:
KeyEntry = { KeyID, TIFFTagLocation, Count, Value_Offset }
where "KeyID" gives the key-ID value of the Key (identical in function to TIFF tag ID, but completely independent of TIFF tag-space), "TIFFTagLocation" indicates which TIFF tag contains the value(s) of the Key. "Count" indicates the number of values in this key. "Value_Offset" Value_Offset indicates the index- offset *into* the TagArray indicated by TIFFTagLocation, if it is nonzero. If TIFFTagLocation=0, then Value_Offset contains the actual (SHORT) value of the Key, and Count=1 is implied.
GeoDoubleParamsTag: This tag is used to store all of the DOUBLE valued GeoKeys, referenced by the GeoKeyDirectoryTag.
GeoAsciiParamsTag : This tag is used to store all of the ASCII valued GeoKeys, referenced by the GeoKeyDirectoryTag.