# PCRaster -- PCRaster raster file format

Driver short name

PCRaster

Build dependencies

(internal libcf provided)

GDAL includes support for reading and writing PCRaster raster files. PCRaster is a dynamic modeling system for distributed simulation models. The main applications of PCRaster are found in environmental modeling: geography, hydrology, ecology to name a few. Examples include models for research on global hydrology, vegetation competition models, slope stability models and land use change 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 following 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).

Although the de-facto file extension of a PCRaster raster file is .map, the PCRaster software does not require a standardized file extension.

NOTE: Implemented as pcrasterdataset.cpp.

See also: PCRaster website at Utrecht University.

## Driver capabilities

Supports CreateCopy()

This driver supports the `GDALDriver::CreateCopy()` operation

Supports Create()

This driver supports the `GDALDriver::Create()` operation

Supports Georeferencing

This driver supports georeferencing

Supports VirtualIO

This driver supports virtual I/O operations (/vsimem/, etc.)