# Various Support GDAL Raster Formats

## AAIGrid -- Arc/Info ASCII Grid

Supported for read and write access, including reading of an affine georeferencing transform and some projections. This format is the ASCII interchange format for Arc/Info Grid, and takes the form of an ASCII file, plus sometimes an associated .prj file. It is normally produced with the Arc/Info ASCIIGRID command.

The projections support (read if a *.prj file is available) is quite limited. Additional sample .prj files may be sent to the maintainer, warmerdam@pobox.com.

The NODATA value for the grid read is also preserved when available. Grids are treated as signed 16bit integer unless the first scanline contains decimal values in which case the image is treated as 32bit floating point.

The AIG driver is also available for Arc/Info Binary Grid format.

NOTE: Implemented as `gdal/frmts/aaigrid/aaigriddataset.cpp`.

## AIG -- Arc/Info Binary Grid

Supported by GDAL for read access. This format is the internal binary format for Arc/Info Grid, and takes the form of a coverage level directory in an Arc/Info database. To open the coverage select the coverage directory, or an .adf file (such as hdr.adf) from within it.

Support includes reading of an affine georeferencing transform, some projections, and a color table (.clr) if available.

This driver is implemented based on a reverse engineering of the format. See the format description for more details.

The projections support (read if a prj.adf file is available) is quite limited. Additional sample prj.adf files may be sent to the maintainer, warmerdam@pobox.com.

NOTE: Implemented as `gdal/frmts/aigrid/aigdataset.cpp`.

## BSB -- Maptech/NOAA BSB Nautical Chart Format

BSB Nautical Chart format is supported for read access, including reading the colour table and the reference points (as GCPs). Note that the .BSB files cannot be selected directly. Instead select the .KAP files. Versions 1.1, 2.0 and 3.0 have been tested successfully.

This driver should also support GEO/NOS format as supplied by Softchart. These files normally have the extension .nos with associated .geo files containing georeferencing ... the .geo files are currently ignored.

This driver is based on work by Mike Higgins. See the frmts/bsb/bsb_read.c files for details on patents affecting BSB format.

NOTE: Implemented as `gdal/frmts/bsb/bsbdataset.cpp`.

## BT -- VTP .bt Binary Terrain Format

The .bt format is used for elevation data in the VTP software. The driver includes support for reading and writing .bt 1.3 format including support for Int16, Int32 and Float32 pixel data types.

The driver does not support reading or writting gzipped (.bt.gz) .bt files even though this is supported by the VTP software. Please unpack the files before using with GDAL using the "gzip -d file.bt.gz".

Projections in external .prj files are read and written, and support for most internally defined coordinate systems is also available.

Read/write imagery access with the GDAL .bt driver is terribly slow due to a very inefficient access strategy to this column oriented data. This could be corrected, but it would be a fair effort.

NOTE: Implemented as `gdal/frmts/raw/btdataset.cpp`.

See Also: The BT file format is defined on the VTP web site.

## CEOS -- CEOS Image

This is a simple, read-only reader for ceos image files. To use, select the main imagery file. This driver reads only the image data, and does not capture any metadata, or georeferencing.

This driver is known to work with CEOS data produced by Spot Image, but will have problems with many other data sources. In particular, it will only work with eight bit unsigned data.

See the separate SAR_CEOS driver for access to SAR CEOS data products.

NOTE: Implemented as `gdal/frmts/ceos/ceosdataset.cpp`.

## DODS/OPeNDAP -- Read rasters from DODS/OPeNDAP servers

Support for read access to DODS/OPeNDAP servers. Pass the DODS/OPeNDAP URL to the driver as you would when accessing a local file. The URL specifies the remote server, data set and raster within the data set. In addition, you must tell the driver which dimensions are to be interpreted as distinct bands as well as which correspond to Latitude and Longitude. See the file README.DODS for more detailed information.

## DOQ1 -- First Generation USGS DOQ

Support for read access, including reading of an affine georeferencing transform, and capture of the projection string. This format is the old, unlabelled DOQ (Digital Ortho Quad) format from the USGS.

NOTE: Implemented as `gdal/frmts/raw/doq1dataset.cpp`.

## DOQ2 -- New Labelled USGS DOQ

Support for read access, including reading of an affine georeferencing transform, capture of the projection string and reading of other auxilary fields as metadata. This format is the new, labelled DOQ (Digital Ortho Quad) format from the USGS.

This driver was implemented by Derrick J Brashear.

NOTE: Implemented as `gdal/frmts/raw/doq2dataset.cpp`.

See Also: USGS DOQ Standards

## DTED -- Military Elevation Data

GDAL supports DTED Levels 1, and 2 elevation data for read access. Elevation data is returned as 16 bit signed integer. Appropriate projection (always WGS84) and georeferencing information is also returned. No other metadata is captured.

NOTE: Implemented as `gdal/frmts/dted/dteddataset.cpp`.

## EHdr -- ESRI .hdr Labelled

GDAL supports the ESRI .hdr labelling format for reading raw raster data (often referred to as ESRI BIL format) for read-only access. Eight, sixteen and thirty-two bit integer raster data types are supported as well as reading of the affine georeferencing transform. Reading of projection definitions is not supported. Unrecognised options in the .hdr file are ignored. To open a dataset select the file with the image file (often with the extension .bil).

This driver may be sufficient to read GTOPO30, SRTM30 + SRTM90 data and Geospot products.

NOTE: Implemented as `gdal/frmts/raw/ehdrdataset.cpp`.

See Also:

- ESRI whitepaper: + Extendable Image Formats for ArcView GIS 3.1 and 3.2 (BIL, see p. 5)

- GTOPO30 - Global Topographic Data

- GTOPO30 Documentation

## ENVI - ENVI .hdr Labelled Raster

GDAL supports some variations of raw raster files with associated ENVI style .hdr files describing the format. To select an existing ENVI raster file select the binary file containing the data (as opposed to the .hdr file), and GDAL will find the .hdr file by replacing the dataset extension with .hdr.

GDAL should support reading bil, bip and bsq interleaved formats, and most pixel types are supported, including 8, 16 and 32bit signed and unsigned integers, 32bit and 64 bit floating point, and 32bit and 64bit complex floating point. There is limited support for recognising map_info keywords with the coordinate system and georeferencing. In particular, UTM and State Plane should work.

Creation Options:

- INTERLEAVE=BSQ/BIP/BIL: Force the generation specified type of interleaving. BSQ --- band sequental (default), BIP --- data interleaved by pixel, BIL --- data interleaved by line.

- SUFFIX=REPLACE/ADD: Force adding ".hdr" suffix to supplied filename, e.g. if user selects "file.bin" name for output dataset, "file.bin.hdr" header file will be created. By default header file suffix replaces the binary file suffix, e.g. for "file.bin" name "file.hdr" header file will be created.

NOTE: Implemented as `gdal/frmts/raw/envidataset.cpp`.

## Envisat -- Envisat Image Product

GDAL supports the Envisat product format for read access. All sample types are supported. Files with two matching measurement datasets (MDS) are represented as having two bands. Currently all ASAR Level 1 and above products, and some MERIS and AATSR products are supported.

The control points of the GEOLOCATION GRID ADS dataset are read if available, generally giving a good coverage of the dataset. The GCPs are in WGS84.

Virtually all key/value pairs from the MPH and SPH (primary and secondary headers) are copied through as dataset level metadata.

NOTE: Implemented as `gdal/frmts/envisat/envisatdataset.cpp`.

See Also: Envisat Data Products at ESA.

## FITS -- Flexible Image Transport System

FITS is a format used mainly by astronomers, but it is a relatively simple format that supports arbitrary image types and multi-spectral images, and so has found its way into GDAL. FITS support is implemented in terms of the standard CFITSIO library, which you must have on your system in order for FITS support to be enabled. Both reading and writing of FITS files is supported. At the current time, no support for a georeferencing system is implemented, but WCS (World Coordinate System) support is possible in the future.

Non-standard header keywords that are present in the FITS file will be copied to the dataset's metadata when the file is opened, for access via GDAL methods. Similarly, non-standard header keywords that the user defines in the dataset's metadata will be written to the FITS file when the GDAL handle is closed.

Note to those familiar with the CFITSIO library: The automatic rescaling of data values, triggered by the presence of the BSCALE and BZERO header keywords in a FITS file, is disabled in GDAL. Those header keywords are accessible and updatable via dataset metadata, in the same was as any other header keywords, but they do not affect reading/writing of data values from/to the file.

NOTE: Implemented as `gdal/frmts/fits/fitsdataset.cpp`.

## GXF -- Grid eXchange File

This is a raster exchange format propagated by Geosoft, and made a standard in the gravity/magnetics field. The format is supported for read, and write and includes support for georeferencing information, and projections.

Details on the supporting code, and format can be found on the GXF-3 page.

NOTE: Implemented as `gdal/frmts/gxf/gxfdataset.cpp`.

## JDEM -- Japanese DEM (.mem)

GDAL includes read support for Japanese DEM files, normally having the extension .mem. These files are a product of the Japanese Geographic Survey Institute.

These files are represented as having one 32bit floating band with elevation data. The georeferencing of the files is returned as well as the coordinate system (always lat/long on the Tokyo datum).

There is no update or creation support for this format.

NOTE: Implemented as `gdal/frmts/jdem/jdemdataset.cpp`.

See Also: Geographic Survey Institute (GSI) Web Site.

## LAN -- Erdas 7.x .LAN and .GIS

GDAL supports reading Erdas 7.x .LAN and .GIS raster files. Currently 4bit, 8bit and 16bit pixel data types are supported.

GDAL does read the map extents (geotransform) from LAN/GIS files, and attempts to read the coordinate system informaton. However, this format of file does not include complete coordinate system information, so for state plane and UTM coordinate systems a LOCAL_CS definition is returned with valid linear units but no other meaningful information.

The .TRL, .PRO and worldfiles are ignored at this time.

NOTE: Implemented as `gdal/frmts/raw/landataset.cpp`

Development of this driver was financially supported by Kevin Flanders of (PeopleGIS).

## MFF -- Atlantis MFF Raster

GDAL includes read, update, and creation support for Atlantis Scientific's MFF raster format. MFF dataset consist of a header file (typically with the extension .hdr) and a set of data files with extensions like .x00, .b00 and so on. To open a dataset select the .hdr file.

Reading lat/long GCPs (TOP_LEFT_CORNER, ...) is supported but there is no support for reading affine georeferencing or projection information.

Unrecognised keywords from the .hdr file are preserved as metadata.

All data types with GDAL equivelents are supported, including 8, 16, 32 and 64 bit data precisions in integer, real and complex data types. In addition tile organized files (as produced by the Atlantis SAR Processor - APP) are supported for reading.

On creation (with a format code of MFF) a simple, ungeoreferenced raster file is created.

MFF files are not normally portable between systems with different byte orders. However GDAL honours the new BYTE_ORDER keyword which can take a value of LSB (Integer -- little endian), and MSB (Motorola -- big endian). This may be manually added to the .hdr file if required.

NOTE: Implemented as `gdal/frmts/raw/mffdataset.cpp`.

## MFF2 -- Atlantis MFF2 Image

GDAL supports MFF2 Image raster file format for read, update, and creation. This format is primarily used internally to the Atlantis Scientific InSAR processing system.

To select an MFF2 dataset select the directory containing the `attrib`, and `image_data` files for the dataset.

Currently only the UTM projection is supported (georef.projection.name = utm), with the affine transform computed from the lat/long control points. In any event, if GCPs are available in a georef file, they are returned with the dataset.

Newly created files (with a type of `MFF2`) are always just raw rasters with no georeferencing information. For read, and creation all data types (real, integer and complex in bit depths of 8, 16, 32) should be supported.

NOTE: Implemented as `gdal/frmts/raw/hkvdataset.cpp`.

## netCDF -- Network Common Data Format

GDAL has limited support for reading and writing netCDF grid files. NetCDF files that are not recognised as grids (they lack variables called dimension, and z) will be silently ignored by this driver. This driver is primarily intended to provide a mechanism for grid interchange with the GMT package; however, I am interested in correcting deficiencies in interchange with other netCDF using packages as well.

The units information in the netCDF file will be ignored, but x_range, and y_range information will be read to get georeferenced extents of the raster. All netCDF data types should be supported for reading. Newly created files (with a type of `netCDF`) will always have units of "meters" for x, y and z but the x_range, y_range and z_range should be correct. Note that netCDF does not have an unsigned byte data type, so 8bit rasters will generally need to be converted to Int16 for export to GMT.

NetCDF support in GDAL is optional, and not compiled in by default.

NOTE: Implemented as `gdal/frmts/netcdf/netcdfdataset.cpp`.

See Also: Unidata NetCDF Page

## PAux -- PCI .aux Labelled Raw Format

GDAL includes a partial implementation of the PCI .aux labelled raw raster file for read, write and creation. To open a PCI labelled file, select the raw data file itself. The .aux file (which must have a common base name) will be checked for automatically.

The format type for creating new files is `PAux`. All PCI data types (8U, 16U, 16S, and 32R) are supported. Currently georeferencing, projections, and other metadata is ignored.

NOTE: Implemented as `gdal/frmts/raw/pauxdataset.cpp`.

See Also: PCI's .aux Format Description

## PCRaster raster file format

GDAL includes support for reading and writing PCRaster raster files. PCRaster is a dynamic modelling system for distributed simulation models. The main applications of PCRaster are found in environmental modelling: geography, hydrology, ecology to name a few. Examples include rainfall-runoff models, vegetation competition models and slope stability models.

The driver reads all types of PCRaster maps: booleans, nominal, ordinals, scalar, directional and ldd. The same cell representation used to store values in the file is used to store the values in memory.

The driver detects whether the source of the GDAL raster is a PCRaster file. When such a raster is written to a file the value scale of the original raster will be used. The driver always writes values using UINT1, INT4 or REAL4 cell representations, depending on the value scale:

Value scale | Cell representation
--- | ---
VS_BOOLEAN | CR_UINT1
VS_NOMINAL | CR_INT4
VS_ORDINAL | CR_INT4
VS_SCALAR | CR_REAL4
VS_DIRECTION | CR_REAL4
VS_LDD | CR_UINT1

For rasters from other sources than a PCRaster raster file a value scale and cell representation is determined according to the folowing rules:

Source type | Target value scale | Target cell representation
--- | --- | ---
GDT_Byte | VS_BOOLEAN | CR_UINT1
GDT_Int32 | VS_NOMINAL | CR_INT4
GDT_Float32 | VS_SCALAR | CR_REAL4
GDT_Float64 | VS_SCALAR | CR_REAL4

The driver can convert values from one supported cell representation to another. It cannot convert to unsupported cell representations. For example, it is not possible to write a PCRaster raster file from values which are used as CR_INT2 (GDT_Int16).

NOTE: Implemented as `gdal/frmts/pcraster/pcrasterdataset.cpp`.

See also: PCRaster website at Utrecht University and PCRaster Environmental Software company website.

## PNG -- Portable Network Graphics

GDAL includes support for reading, and creating .png files. Greyscale, pseudo-colored, Paletted, RGB and RGBA PNG files are supported as well as precisions of eight and sixteen bits per sample.

PNG files are linearly compressed, so random reading of large PNG files can be very inefficient (resulting in many restarts of decompression from the start of the file).

Text chunks are translated into metadata, typically with multiple lines per item. World files with the extensions of .wld, .tfw or .tifw will be read. Single transparency values in greyscale files will be recognised as a nodata value in GDAL. Transparent index in paletted images are preserved when the color table is read.

PNG files can be created with a type of PNG, using the CreateCopy() method, requiring a prototype to read from. Writing includes support for the various image types, and will preserve transparency/nodata values. Georeferencing .wld files are written if option WORLFFILE setted. All pixel types other than 16bit unsigned will be written as eight bit.

Creation Options:

- WORLDFILE=YES: Force the generation of an associated ESRI world file (.wld).

NOTE: Implemented as `gdal/frmts/png/pngdataset.cpp`.

PNG support is implemented based on the libpng reference library. More information is available at http://www.libpng.org/pub/png.

## PNM -- Netpbm (.pgm, .ppm)

GDAL includes support for reading, and creating .pgm (greyscale), and .ppm (RGB color) files compatible with the Netpbm tools. Only the binary (raw) formats are supported.

Netpbm files can be created with a type of PNM.

Creation Options:

- MAXVAL=n: Force setting the maximum color value to n in the output PNM file. May be useful if you plannig use the output files with software which is not liberal to this value.

NOTE: Implemented as `gdal/frmts/raw/pnmdataset.cpp`.

## SAR_CEOS -- CEOS SAR Image

This is a read-only reader for CEOS SAR image files. To use, select the main imagery file.

This driver works with most Radarsat and ERS data products, including single look complex products; however, it is unlikely to work for non-Radar CEOS products. The simpler CEOS driver is often appropriate for these.

This driver will attempt to read 15 lat/long GCPS by sampling the per-scanline CEOS superstructure information. It also captures various pieces of metadata from various header files, including:

      CEOS_LOGICAL_VOLUME_ID=EERS-1-SAR-MLD
      CEOS_PROCESSING_FACILITY=APP
      CEOS_PROCESSING_AGENCY=CCRS
      CEOS_PROCESSING_COUNTRY=CANADA
      CEOS_SOFTWARE_ID=APP 1.62
      CEOS_ACQUISITION_TIME=19911029162818919
      CEOS_SENSOR_CLOCK_ANGLE=  90.000
      CEOS_ELLIPSOID=IUGG_75
      CEOS_SEMI_MAJOR=    6378.1400000
      CEOS_SEMI_MINOR=    6356.7550000

The SAR_CEOS driver also includes some support for SIR-C and PALSAR polarimetric data. The SIR-C format contains an image in compressed scattering matrix form, described here. GDAL decompresses the data as it is read in. The PALSAR format contains bands that correspond almost exactly to elements of the 3x3 Hermitian covariance matrix- see the ERSDAC-VX-CEOS-004A.pdf document for a complete description (pixel storage is described on page 193). GDAL converts these to complex floating point covariance matrix bands as they are read in. The convention used to represent the covariance matrix in terms of the scattering matrix elements HH, HV (=VH), and VV is indicated below. Note that the non-diagonal elements of the matrix are complex values, while the diagonal values are real (though represented as complex bands).

- Band 1: Covariance_11 (Float32) = HH*conj(HH)
- Band 2: Covariance_12 (CFloat32) = sqrt(2)*HH*conj(HV)
- Band 3: Covariance_13 (CFloat32) = HH*conj(VV)
- Band 4: Covariance_22 (Float32) = 2*HV*conj(HV)
- Band 5: Covariance_23 (CFloat32) = sqrt(2)*HV*conj(VV)
- Band 6: Covariance_33 (Float32) = VV*conj(VV)

The identities of the bands are also reflected in the metadata.

NOTE: Implemented as `gdal/frmts/ceos2/sar_ceosdataset.cpp`.

## SDTS -- USGS SDTS DEM

GDAL includes support for reading USGS SDTS formatted DEMs. USGS DEMs are always returned with a data type of signed sixteen bit integer, or 32bit float. Projection and georeferencing information is also returned.

SDTS datasets consist of a number of files. Each DEM should have one file with a name like XXXCATD.DDF. This should be selected to open the dataset.

The elevation units of DEMs may be feet or meters. The GetType() method on a band will attempt to return if the units are Feet ("ft") or Meters ("m"). NOTE: Implemented as `gdal/frmts/sdts/sdtsdataset.cpp`.

## XPM - X11 Pixmap

GDAL includes support for reading and writing XPM (X11 Pixmap Format) image files. These are colormapped one band images primarily used for simple graphics purposes in X11 applications. It has been incorporated in GDAL primarily to ease translation of GDAL images into a form useable with the GTK toolkit.

The XPM support does not support georeferecing (not available from XPM files) nor does it support XPM files with more than one character per pixel. New XPM files must be colormapped or greyscale, and colortables will be reduced to about 70 colors automatically.

NOTE: Implemented as `gdal/frmts/xpm/xpmdataset.cpp`.

Full list of GDAL Raster Formats