[QGIS-Developer] nodata and raster calc

Nyall Dawson nyall.dawson at gmail.com
Sun Feb 10 18:11:56 PST 2019


Hey all,

I'm seeking some feedback on whether our current handling of nodata
pixels in the raster calculator is correct, or (my suspicion) annoying
and limiting.

Currently, we treat nodata pixels the same as a "NULL" value in SQL --
so ANY function or operation with nodata as an input results in a
nodata output.

This means:

- nodata + 1 = nodata
- nodata * 1 = nodata
- nodata AND 1 = nodata
- nodata OR 1 = nodata

To me this is a mistake. I don't think we should treat nodata the same
as NULL, and I think for rasters then "nodata OR 1" should return 1.

The end result of the current behaviour is that ANY nodata input
blocks processing of that pixel. So you can't do something like take
two raster files, and create an output showing where either input has
a 1 value (which I would expect raster1 at 1 OR raster2 at 1 to do).

Otherwise, we need to have some concept of "coalesce" in the raster
calc. So then at least you could do:

    coalesce(raster1 at 1, 0) OR coalesce(raster at 1, 0) ....


Thoughts?

Nyall


More information about the QGIS-Developer mailing list