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
-
--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)"