I am comparing two raster temperature files generated from two different sources that use different algorithms. One of them is provided as a floating point (temp(C)) and the other is integer (temp(C)*10). I generated statistics for both using QGIS Raster Layer Statstics. Both files have extensive areas of no data values (-3.402...e+38 and -9999).
When I calculate statistics, QGIS provides an apparently erroneous mean value for the integer-scaled file:
Valid cells: 153660
No-data cells: 200134
Minimum value: 141
Maximum value: 270
Mean value: 147
Standard deviation: 84.0595027347
In particular note that
36204112/153660 = 235.61, not the reported 147.
This problem appears to affect the Standard deviation as well.
The same operation appears to work for corresponding the floating point file:
Valid cells: 153773
No-data cells: 200021
Minimum value: 14.6999998093
Maximum value: 26.0
Mean value: 22.923394209
Standard deviation: 1.56633585615
In this case, the operation
3524999/153773 produces the same result as the output Mean (22.92...)
Indeed, when I convert the integer file to float
(raster calculator: * 0.1), the stats calculation seems to work as expected. And when I convert the other file that was originally in float to integer, the stats calculation becomes erroneous.
In other words, there appears to be an error in stats calculation of integer raster files.
Is this a bug or am I missing something?
Perhaps the best way to avoid is to always use float.
I am running QGIS 2.18.2 on MacOSX10.10.5.