Page 1 of 1

Reproducing MODISA/VIIRS chl_oc3 product

Posted: Tue Nov 06, 2018 12:19 am America/New_York
by schckngs
Hi all,
I am trying to reproduce the OC3M and OC3V chl_oc3 products using L2 Rrs bands and am not getting the exact same result.

For example, using SeaDAS bandmaths and something like the following for the VIIRS sensor (where Rrs 443,486/ Rrs 551, and coefficients 0.2228,-2.4683,1.5867,-0.4275,-0.7768) I can define:
max_br = log10(max(Rrs_443,Rrs_486)/Rrs_551)
chl_calc_log = 0.2228 + ((-2.4683)*max_br) + (1.5867*pow(max_br,2)) + ((-0.4275)*pow(max_br,3)) + ((-0.7768)*pow(max_br,4))
And then take the anti-log to return to mg m^-3. However, in general after the 2nd/3rd decimal the numbers are off from the chl_oc3 product. Is there something I am missing or doing wrong, or is it perhaps a rounding issue?

Thanks!

Reproducing MODISA/VIIRS chl_oc3 product

Posted: Wed Nov 14, 2018 11:49 am America/New_York
by OB.DAAC - SeanBailey
The Rrs values are stored in the L2 file as scaled integers.  In the l2gen code, the Rrs values are used in the chlorophyll calculation prior to this output scaling.
So, yes, likely a rounding issue.
Here's what I did (which is pretty much the same thing you did):
mbr = log10(max(Rrs_445,Rrs_489) / Rrs_556)
chl_oc3 = pow(10.0, (0.2228 + mbr * (-2.4683 + mbr * (1.5867 + mbr * (-0.4275 + mbr * -0.7768)))))

Subtracting the output of this from the l2gen-produced chl_ocx product yeilds the attached histogram.
If your output looks similar, then you're doing it right :grin:

Sean