GeoTIFF – A standard image file format for GIS applications

GeoTIFF – A standard image file format for GIS applications



Sk. Sazid Mahammad

R. Ramakrishnan
Data Products Software Division, Space Applications Centre, ISRO, Ahmedabad.
Tel. +91-079-6914145/4752, Fax : +91-079-6749115

TIFF format is widely accepted versatile raster data format in the world today. TIFF is a suitable format for storage, transfer, display, and printing of raster images such as clipart, logotypes, scanned documents etc.. The TIFF imagery file format can be used to store and transfer digital satellite imagery, scanned aerial photos, elevation models, and scanned maps.

Looking into popularity of TIFF, many TIFF users those who were using TIFF format to store digital satellite images felt the requirement of somehow embedding Geographic information (latitude, longitude, map projection etc.) into TIFF file so that it can be used by various GIS packages with ease. This requirement prompted the development of GeoTIFF, the TIFF file that has geographic (or cartographic) data embedded as tags within the TIFF file. The geographic data of a GeoTIFF file can be used to position the image in the correct location and geometry on the screen of a geographic information display. Since GeoTIFF is based on TIFF this paper describes TIFF for the sake of completeness.

TIFF (Tagged Image File Format)
TIFF is a tag-based file format for storing and interchanging raster images. Aldus Corporation published the first version of TIFF specification in 1986, after a series of meetings with various scanner manufactures and software developers. TIFF is to describe and store raster image data. The main advantages of TIFF is its suitability for a wide range of applications and its independence of computer’s architecture, operating system, and graphics hardware. It is reasonably compact and handles black-and-white, grayscale, and color images, allowing a user to adjust for the unique characteristics of a scanner, monitor, or printer. TIFF allows color resolution up to 48 bits (a 16-bit field each for R, G, and B), either as full RGB color or in a 64k-color palette .The TIFF 6.0 specifications, released in June 1992 is taken as reference by GeoTIFF.

Overview of TIFF File Structure
The TIFF format [1] has a three-level hierarchy as shown in Fig. 1. From highest to lowest, the levels are:

  1. A file Header.
  2. One or more directories called IFDs (Image File Directories), containing codes and their data, or pointer to the data.(Table 1)
  3. Data.

The File Header
The TIFF file begins with an 8-byte header, which gives basic information about the file such as byte order (Little Endian or Big Endian), TIFF file ID or Version Number (which is always 42) and a pointer to first IFD.

Image File Directories (IFDs)
Most Likely, the next structure in the file after the header will be the first (or only) IFD, but not necessarily. From here on, everything is found by following pointers. So, to locate the first IFD use the header’s pointer.

Fig. 1 The File Structure of a Standard TIFF File
An IFD consists of 12-byte entries, typically tagged pointers. The structure of an IFD and its entries are as follows:
Table 1: TIFF IFD Entry Structure

Offset Length Description
0 2 Tag
2 2 Type of Data
4 4 Count field
8 4 Data pointer or data field

Tag : The first two bytes are tag, which , if public , may be looked up in the specification. These codes are assigned by the TIFF administrator (Aldus Developer’s Desk), in blocks of five. This tag concept has been extended to support GeoTIFF.

Type code : The next two bytes comprise a code indicating the type of data in the pointed field.

Count field : The 4-byte field specifies the number of values in the data field, not the number of bytes.

Data pointer or data field : The final four bytes are usually a pointer to the start of a data field. Sometimes, however, this field contains not a pointer, but the actual data.

Brief Description of GeoTIFF
The GeoTIFF specification [2] defines a set of TIFF tags provided to describe all “Cartographic” information associated with TIFF imagery that originates from satellite imaging systems, scanned aerial photography, scanned maps, digital elevation models, or as a result of geographic analyses. Its aim is to allow means for tying a raster image to a known model space or map projection.

Basic Features of GeoTIFF
GeoTIFF format fully complies with the TIFF 6.0 specifications, and its extensions do not in any way go against the TIFF recommendations, nor do they limit the scope of raster data supported by TIFF.

It uses a small set of reserved TIFF tags to store a broad range of georeferencing information, catering to geographic as well as projected coordinate systems needs. Projections include Universal Transverse Mercator (UTM), US State Plane and National Grids, as well as the underlying projection types such as Transverse Mercator, Lambert Conformal Conic, etc.

It uses a “MetaTag” (GeoKey) approach to encode dozens of information elements into just six tags. These keys are designed in a manner parallel to standard TIFF tags, and closely follow the TIFF discipline in their structure and layout. New keys may be defined as needs arise, within the current framework, and without requiring the allocation of new tags from Aldus/Adobe. GeoTIFF format uses numerical codes to describe projection types, coordinate systems, datums, ellipsoids, etc. The projection, datums and ellipsoid codes are derived from the EPSG list compiled by the Petrotechnical Open Software Corporation (POSC), and mechanisms for adding further international projections, datums and ellipsoids has been established. The GeoTIFF information content is designed to be compatible with the data decomposition approach used by the National Spatial Data Infrastructure (NSDI) of the U.S. Federal Geographic Data Committee (FGDC).

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}
“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 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.

Coordinate Transformations
The purpose of Geotiff is to allow the definitive identification of georeferenced locations within a raster dataset. This is generally accomplished through tying raster space coordinates to a model space coordinate system, when no further information is required. In the GeoTIFF nomenclature, “georeferencing” refers to tying raster space to a model space M, while “geocoding” refers to defining how the model space M assigns coordinates to points on the earth. The three tags defined below may be used for defining the relationship between R and M, and the relationship may be diagrammed as:

ModelTiepointTag =(….I,J,K,X,Y,Z…)

(I,J,K) is the point at location (I,J) in raster space with pixel- value K, and (X,Y,Z) is a vector in model space. In most cases the model space is only two-dimensional, in which case both K and Z should be set to zero; this third dimension is provided in anticipation of future support for 3D digital elevation models and vertical coordinate systems.

ModelPixelScaleTag = (ScaleX, ScaleY, ScaleZ)

ScaleX and ScaleY give the horizontal and vertical spacing of raster pixels. The ScaleZ is primarily used to map the pixel value of a digital elevation model into the correct Z-scale, and so for most other purposes this value should be zero (since most model spaces are 2-D, with Z=0). A single tiepoint in the ModelTiepointTag, together with this tag, completely determine the relationship between raster and model space; thus they comprise the two tags which Baseline GeoTIFF files most often will use to place a raster image into a “standard position” in model space.

A large number of commercial GIS and Image processing packages now support GeoTIFF because of its embedded georeferencing information. The major GIS/Image Processing packages those who support GeoTIFF are:

  • MAP INFO and Python Imaging Library

GeoTIFF and IRS Data Products [3]
Since GeoTIFF has become a de-facto standard among Satellite Image data users, it has been adopted as a format of choice for IRS-1C/1D and future Indian Remote Sensing Satellites (IRS) data products. Since GeoTIFF does not have fields to describe general satellite specific information, such as Sensor, Spectral Band, Gain, Date of Pass etc., an ASCII TIFF Tag 270 (ImageDescription) has been used to give these information. Fast Format Header (1536*3 bytes) which is in ASCII is given in this field for IRS-1C/1D GeoTIFF products, so that users have added advantage. Fast Format Header have three records (each of 1536 bytes) namely Administrative Record (gives general satellite specific information like Sensor, Date of Pass etc.), Radiometric Record (gives gain, saturation radiance etc.), and Geometric Record(corner co-ordinate and projection parameters).

As almost all standard GIS and Image Processing packages support GeoTIFF, it has emerged as a standard image file format for various GIS applications worldwide. The TIFF flexibility to add new Tags and portability has given a lot of scope for GeoTIFF expansion in future. Now major GeoTIFF data providers are Department of Space (DOS) India, Space Imaging, SPOT. Since major remote sensing data providers in the world today provide data in GeoTIFF format it has high potential user base for GIS applications where spatial data is one of the major input.