Change null values raster values to 0 in QGIS?

beside @R.K. answer, you can use r.null in grass too.

r.null - Manages NULL-values of given raster map.


Set specific values of a classified map to NULL:

r.null map=landcover.30m setnull=21,22

Set NULL-values of a map to a specific value:

 r.null map=fields null=99

i hope it helps you...

I think the RasterCalc plugin should be able to solve your problem. Once you've installed it, you can use the following query (assuming that NULL values corresponds to -9999; you can check this value in Transparency tab of the Layer Properties):

eq( [your_raster]@1, -9999, 0 )

eq means equal to. This tells RasterCalc that all pixels in your raster with NULL values should have their values set to 0. I'm assuming you have a single band raster.

I don't know if you solved this? There may be a more streamlined way but this works fine for me in the latest QGIS (v2.8.1):

  1. Create a new polygon with an attribute column for height/level. draw a polygon shape with a larger extent than the raster extent you want to change.
  2. rasterise this polygon using raster > conversion > rasterise tool.
  3. using GDAL Analysis tools > fill no data > and the rasterised polygon as the validity layer.
  4. The resultant raster file should now have values where previously there was no data. These will either be some random value below 0 (-9999 for example) or 0. If it is 0 then great you've got what you wanted. If it is not, carry out step 5.
  5. using SAGA > Grid -Tools > Mosaick Raster Layers input the filled raster layer and the rasterised polygon. in overlapping areas select [3] Maximum and set the output extent to your original raster. This should result in a new raster that retains all of your values over 0 while giving your previous no data values a new value of 0.