# gdal_calc.py

Command line raster calculator with numpy syntax.

## Synopsis

    gdal_calc.py --calc=expression --outfile=out_filename [-A filename]
                 [--A_band=n] [-B...-Z filename] [other_options]

DESCRIPTION

Command line raster calculator with numpy syntax. Use any basic arithmetic supported by numpy arrays such as `+`, `-`, `*`, and `\` along with logical operators such as `>`. Note that all files must have the same dimensions, but no projection checking is performed.

`--help```

  Show this help message and exit

`-h```

  The same as `--help`.

`--calc``=expression`

  Calculation in gdalnumeric syntax using `+`, `-`, `/`, `*`, or any numpy array functions (i.e. `log10()`). Multiple `--calc` options can be listed to produce a multiband file (GDAL >= 3.2).

`-A``<filename>`

  Input gdal raster file, you can use any letter (A-Z).

`--A_band``=<n>`

  Number of raster band for file A (default 1).

`--outfile``=<filename>`

  Output file to generate or fill.

`--NoDataValue``=<value>`

  Output nodata value (default datatype specific value).

`--type``=<datatype>`

  Output datatype, must be one of [`Int32`, `Int16`, `Float64`, `UInt16`, `Byte`, `UInt32`, `Float32`].

  Note

  Despite the datatype set using `--type`, when doing intermediate aritmethic operations using operands of the same type, the operation result will honor the original datatype. This may lead into unexpected results in the final result.

`--format``=<gdal_format>`

  GDAL format for output file.

`--creation-option``=<option>`

  Passes a creation option to the output format driver. Multiple options may be listed. See format specific documentation for legal creation options for each format.

`--co``=<option>`

  The same as creation-option.

`--allBands``=[A-Z]`

  Process all bands of given raster (A-Z). Requires a single calc for all bands.

`--overwrite```

  Overwrite output file if it already exists.

`--debug```

  Print debugging information.

`--quiet```

  Suppress progress messages.

## Example

Add two files together:

    gdal_calc.py -A input1.tif -B input2.tif --outfile=result.tif --calc="A+B"

Average of two layers:

    gdal_calc.py -A input.tif -B input2.tif --outfile=result.tif --calc="(A+B)/2"

Note

In the previous example, beware that if A and B inputs are of the same datatype, for example integers, you may need to force the conversion of one of the operands before the division operation.

    gdal_calc.py -A input.tif -B input2.tif --outfile=result.tif --calc="(A.astype(numpy.float64) + B) / 2"

Set values of zero and below to null:

    gdal_calc.py -A input.tif --outfile=result.tif --calc="A*(A>0)" --NoDataValue=0

Using logical operator to keep a range of values from input:

    gdal_calc.py -A input.tif --outfile=result.tif --calc="A*logical_and(A>100,A<150)"

Work with multiple bands:

    gdal_calc.py -A input.tif --A_band=1 -B input.tif --B_band=2 --outfile=result.tif --calc="(A+B)/2" --calc="B*logical_and(A>100,A<150)"