Reproducing MODISA/VIIRS chl_oc3 product

Use this Forum to find information on, or ask a question about, NASA Earth Science data.
Post Reply
Posts: 24
Joined: Wed Feb 03, 2021 1:43 pm America/New_York

Reproducing MODISA/VIIRS chl_oc3 product

by schckngs » Tue Nov 06, 2018 12:19 am America/New_York

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?



OB.DAAC - SeanBailey
User Services
User Services
Posts: 1279
Joined: Wed Sep 18, 2019 6:15 pm America/New_York
Answers: 1

Reproducing MODISA/VIIRS chl_oc3 product

by OB.DAAC - SeanBailey » Wed Nov 14, 2018 11:49 am America/New_York

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:


Post Reply