GTiff -- GeoTIFF File Format
Most forms of TIFF and GeoTIFF files are supported by GDAL for reading, and
somewhat less varieties can be written.
When built with internal libtiff or with libtiff >= 4.0, GDAL also supports
reading and writing BigTIFF files (evolution of the TIFF format to support files
larger than 4 GB).
Currently band types of Byte, UInt16, Int16, UInt32, Int32, Float32, Float64,
CInt16, CInt32, CFloat32 and CFloat64 are supported for
reading and writing.
Paletted images will return palette information associated with
the band. The compression formats listed below should be supported for
reading as well.
As well, one bit files, and some other unusual formulations of GeoTIFF file,
such as YCbCr color model files, are automatically translated into RGBA
(red, green, blue, alpha) form, and treated as four eight bit bands.
Georeferencing
Most GeoTIFF projections should be supported, with the caveat that in order
to translate uncommon Projected, and Geographic coordinate systems into
OGC WKT it is necessary to have the EPSG .csv files available. They must
be found at the location pointed to by the GEOTIFF_CSV environment variable.
Georeferencing from GeoTIFF is supported in the form of one tiepoint and
pixel size, a transformation matrix, or a list of GCPs.
If no georeferencing
information is available in the TIFF file itself, GDAL will also check for,
and use an ESRI world file with the
extention .tfw, .tifw/.tiffw or .wld, as well as a MapInfo .tab file (only control
points used, Coordsys ignored).
Internal nodata masks
(from GDAL 1.6.0)
TIFF files can contain internal transparency masks. The GeoTIFF driver
recognizes an internal directory as being a transparency mask when the
FILETYPE_MASK bit value is set on the TIFFTAG_SUBFILETYPE tag.
According to the TIFF specification, such internal transparency masks
contain 1 sample of 1-bit data. Although the TIFF specification allows
for higher resolutions for the internal transparency mask, the GeoTIFF
driver only supports internal transparency masks of the same dimensions
as the main image. Transparency masks of internal overviews are also
supported.
When the GDAL_TIFF_INTERNAL_MASK environment variable is set to YES and
the GeoTIFF file is opened in update mode, the CreateMaskBand() method
on a TIFF dataset or rasterband will create an internal transparency mask.
Otherwise, the default behaviour of nodata mask creation will be used,
that is to say the creation of a .msk file, as per
RFC 15
Overviews
The GeoTIFF driver supports reading, creation and update of internal overviews.
Internal overviews can be created on GeoTIFF files opened in update mode
(with gdaladdo for instance). If the GeoTIFF file is opened as read only,
the creation of overviews will be done in an external .ovr file.
Overview are only updated on request with the BuildOverviews() method.
(From GDAL 1.6.0) If a GeoTIFF file has a transparency mask and the GDAL_TIFF_INTERNAL_MASK
environment variable is set to YES and the GeoTIFF file is opened in update mode,
BuildOverviews() will automatically create overviews for the internal transparency mask.
These overviews will be refreshed by further calls to BuildOverviews() even if
GDAL_TIFF_INTERNAL_MASK is not set to YES.
Creation Issues
GeoTIFF files can be created with any GDAL defined band type, including
the complex types. Created files may have any number of bands. Files
with exactly 3 bands will be
given a photometric interpretation of RGB, files with exactly four bands
will have a photometric interpretation of RGBA, while all other combinations
will have a photometric interpretation of MIN_IS_WHITE. Files with
pseudo-color tables, or GCPs can currently only be created when creating from
an existing GDAL dataset with those objects (GDALDriver::CreateCopy()).
Note that the GeoTIFF format does not support parametric description of datums,
so TOWGS84 parameters in coordinate systems are lost in GeoTIFF format.
Creation Options
- TFW=YES: Force the generation of an associated ESRI world
file (.tfw).See a World Files section
for details.
- INTERLEAVE=[BAND,PIXEL]: By default TIFF files with pixel
interleaving (PLANARCONFIG_CONTIG in TIFF terminology) are created. These
are slightly less efficient than BAND interleaving for some purposes, but
some applications only support pixel interleaved TIFF files.
- TILED=YES: By default stripped TIFF files are created. This
option can be used to force creation of tiled TIFF files.
- BLOCKXSIZE=n: Sets tile width, defaults to 256.
- BLOCKYSIZE=n: Set tile or strip height. Tile height defaults to
256, strip height defaults to a value such that one strip is 8K or less.
- NBITS=n: Create a file with less than 8 bits per sample by passing a value from 1 to 7. The apparent pixel type should be Byte. From GDAL 1.6.0, values of n=9...15 (UInt16 type) and n=17...31 (UInt32 type) are also accepted.
- COMPRESS=[JPEG/LZW/PACKBITS/DEFLATE/CCITTRLE/CCITTFAX3/CCITTFAX4/NONE]:
Set the compression to use. JPEG should generally only be used with Byte data (8 bit per channel).
But starting with GDAL 1.7.0 and provided that GDAL is built with internal libtiff and libjpeg,
it is possible to read and write TIFF files with 12bit JPEG compressed TIFF files (seen as UInt16 bands with NBITS=12).
See the "8 and 12 bit JPEG in TIFF" wiki page for more details.
The CCITT compression should only be used with 1bit (NBITS=1) data. None is the
default.
- PREDICTOR=[1/2/3]: Set the predictor for LZW or DEFLATE compression. The default is 1 (no predictor), 2 is horizontal differencing and 3 is floating point prediction.
- SPARSE_OK=TRUE/FALSE (From GDAL 1.6.0): Should newly created files be allowed to be sparse? Sparse files have 0 tile/strip offsets for blocks never written and save space; however, most non-GDAL packages cannot read such files. The default is FALSE.
- JPEG_QUALITY=[1-100]: Set the JPEG quality when using JPEG compression. A value of 100 is best quality (least compression), and 1 is worst quality (best compression). The default is 75.
- ZLEVEL=[1-9]: Set the level of compression when using DEFLATE compression. A value of 9 is best, and 1 is least compression. The default is 6.
-
PHOTOMETRIC=[MINISBLACK/MINISWHITE/RGB/CMYK/YCBCR/CIELAB/ICCLAB/ITULAB]:
Set the photometric interpretation tag. Default is MINISBLACK, but if the
input image has 3 or 4 bands of Byte type, then RGB will be selected. You can
override default photometric using this option.
- ALPHA=YES: The first "extrasample" is marked as being alpha if
there are any extra samples. This is necessary if you want to produce
a greyscale TIFF file with an alpha band (for instance).
- PROFILE=[GDALGeoTIFF/GeoTIFF/BASELINE]: Control what non-baseline
tags are emitted by GDAL.
- With GDALGeoTIFF (the default) various GDAL custom tags may be written.
- With GeoTIFF only GeoTIFF tags will be added to the baseline.
- With BASELINE no GDAL or GeoTIFF tags will be written. BASELINE is occationally useful when writing files to
be read by applications intolerant of unrecognised tags.
- BIGTIFF=YES/NO/IF_NEEDED/IF_SAFER: Control whether the created file is a BigTIFF or a classic TIFF.
- YES forces BigTIFF.
- NO forces classic TIFF.
- IF_NEEDED will only create a BigTIFF if it is clearly needed (uncompressed, and image larger than 4GB).
- IF_SAFER will create BigTIFF if the resulting file *might* exceed 4GB.
BigTIFF is a TIFF variant which can contain more than 4GiB of data (size of classic TIFF is limited by that value). This option is available if GDAL is built with libtiff library version 4.0 or higher (which is the case of the internal libtiff version from GDAL >= 1.5.0). The default is IF_NEEDED. (IF_NEEDED and IF_SAFER are available from GDAL 1.6.0).
When creating a new GeoTIFF with no compression, GDAL computes in advance the
size of the resulting file. If that computed file size is over 4GiB, GDAL will automatically
decide to create a BigTIFF file. However, when compression is used, it is not possible in
advance to known the final size of the file, so classical TIFF will be chosen. In
that case, the user must explicitely require the creation of a BigTIFF with BIGTIFF=YES
if he anticipates the final file to be too big for classical TIFF format.
If BigTIFF creation is not explicitely asked or guessed and that the resulting file is too big for classical TIFF,
libtiff will fail with an error message like "TIFFAppendToStrip:Maximum TIFF file size exceeded".
- PIXELTYPE=[DEFAULT/SIGNEDBYTE]: By setting this to SIGNEDBYTE, a
new Byte file can be forced to be written as signed byte.
About JPEG compression of RGB images
When translating a RGB image to JPEG-In-TIFF, using PHOTOMETRIC=YCBCR can make the size
of the image typically 2 to 3 times smaller than the default photometric value (RGB).
When using PHOTOMETRIC=YCBCR, the INTERLEAVE option must be kept to its default value (PIXEL),
otherwise libtiff will fail to compress the data.
Note also that the dimensions of the tiles or strips must be a multiple of 8 for PHOTOMETRIC=RGB or 16 for PHOTOMETRIC=YCBCR
See Also: