3

I want to apply an algorithm to calculate the clorophyll-a concentration of a reservoir using Sentinel 2.

To do this I need to create a mask using Sentinel's 2 band 11(infrared) to separate the water pixels from pixels with larger reflectance values than the water.

This is the algorithm:

(If B11 <=0.05 then 109.17*((1/B4-1/B5)*B6+ 19.03 else 0)

but I can't use if and else in QGIS.

BERA
  • 72,339
  • 13
  • 72
  • 161
kashi
  • 33
  • 2

2 Answers2

6

Since it is a raster layer you should use the Raster Calculator. It is a bit different then the Field Calculator described by the other answer and comments. The expression should be something like this one:

("raster@11" <=0.05) * (109.17*((1/"raster@4"-1/"raster@5")*"raster@6"+ 19.03) + ("raster@11" >0.05) * 0

where "raster" is the name of your sentinel raster layer and @11 or @5 is the band number. The principe is as follows:

(condition) * value_if_true + (Else condition) * ElseValue

See also https://docs.qgis.org/3.10/en/docs/user_manual/working_with_raster/raster_analysis.html#raster-calculator

eurojam
  • 10,762
  • 1
  • 13
  • 27
4

You can use CASE...WHEN in an expression:

CASE 
 WHEN B11 <=0.05 THEN (109.17*((1/B4-1/B5)*B6+ 19.03
 ELSE 0 
END