I have a raster with float number values for example: 2.544459104537964 and I want to round these up to integers. I have seen other posts on ArcGIS like this one but when I use Raster Calculator in QGIS, Int(myraster + 0.5)
only makes the first value (which is 0) to 0,5 and the last one (which is 100) to 100,5. The other pixels stay float.
4 Answers
This is a bit of a hack but it works:
The QGIS raster calculator does not support rounding as far as I know but you can use GDAL to perform float
to int
type conversions.
- Raster -> Conversion -> Translate
change the datatype from float to int by using the
-ot
optiongdal_translate -of GTiff -ot Int32 E:/float.tif E:/int.tif
edit: This answer was written while Qgis 2.0 was the latest major version - please see this answer where to find the command in QGis 3.0
-
1OMG this worked perfectly! Values such as 3,391823765 are now 3 and values like 5,912735176253 are now 6! thank you so so so much Commented May 8, 2015 at 18:03
-
Wait, so it doesn't allways round down? Am I missing something in the documentation here?– KerstenCommented May 8, 2015 at 19:21
-
To me it rounds them up as it should: 0,5 and above decimal becomes 1 and 0,4 and below becomes 0! And actually, after that I wanted the image to be grayscale. At first I typed -ot Int32 as you said, but then I had issues with the image in image processing software like Gimp. It showed as a 1 band RGBA. So I searched the documentation and I tried -ot Byte. Then it worked like a charm. Thanks again for this! Commented May 8, 2015 at 19:36
-
Perfectly! I have already read many answers and no one did correctly operation. Thank you. Commented Jul 15, 2015 at 0:40
-
Use Menu Processing / Toolbox / Round Raster
:
This algorithm rounds the cell values of a raster dataset according to the specified number of decimals.
The answer given by @Kersten is still good six years on. I didn't get it right first time though, so just to save anyone else similar problems, here are some more details for QGIS 3.10. The tool is currently in Toolbox > GDAL > Raster conversion > Translate (convert format)
. The -ot
option goes in the dialogue box, but you also need to specify the data type you want to convert to. Like so:
Other options are available:
Source - https://docs.qgis.org/3.16/en/docs/user_manual/processing_algs/gdal/rasterconversion.html#translate-convert-format
Update February 2022:
The QGIS raster calculator doesn't support rounding or data formats (which is annoying), but the gdal raster calculator does (it supports rounding, data formats and even more important in my opinion: Compression)! It is usually available in QGIS as well, but easily overlooked if you don't know it's there (Search for "calc"):
The gdal Calculator (gdal_calc) supports calculations in numpy style and also all gdal data format options. It just isn't as comfortable on the interface and limited to 6 different input rasters (as far as I can see). You have to manually select input files from a loaded layers drop down menu/file location, select the input Band and type your formula with placeholders A, B ... F
for input files (i.e. bands of files). The configurations looks as follows and results in a gdal command as shown below:
gdal_calc.bat --calc "A-B"
--format GTiff --type Int16
-A "in_file_A.tif"--A_band 1
-B "in_file_B.tif" --B_band 1
--co COMPRESS=DEFLATE --co PREDICTOR=2 --co ZLEVEL=9
--outfile "outfile.tif"