OB.DAAC Logo
NASA Logo
get_rhown_nir

get_rhown_nir

Routine to estimate nLw_670 from Rrs_550

The following snippet of code is from the MSl12 source, get_rhown_nir.c:
static const float g1  = 0.0949;
static const float g2  = 0.0794;
/* ------------------------------------------------------------------- */
/* Description:                                                        */
/*  This computes the normalized water-leaving reflectances        */
/*  at the CZCS 670 channel.                                       */
/*                                                                     */
/* Outputs:                                                            */
/*  rhown(670)                                                     */
/*                                                                     */
/* Algorithm: S. Bailey, OBPG, July 2005                               */
/* Generalization:  B. A. Franz, OBPG, 25 Jan 2006    .                */
/* ------------------------------------------------------------------- */
void rhown_red_5_6(float chl, float aw[], float bbw[], float Rrs[],
float wave[], long ib_red, float rhown[])
{
static firstCall = 1;
static long ib5;
static long ib6;
float a6, aw6, ap6, adg6, bbw5, bb5;
float a, bb;
float salbedo;
float Rrs_red;
float Rrs5, Rrs6;
if (firstCall) {
if ((ib6 = bindex_get(670)) < 0) {
printf("%s line %d: can't find red band\n",__FILE__,__LINE__);
exit(1);
}
if ((ib5 = bindex_get(550)) < 0)
if ((ib5 = bindex_get(555)) < 0)
if ((ib5 = bindex_get(565)) < 0) {
printf("%s line %d: can't find green band\n",__FILE__,__LINE__);
exit(1);
}
firstCall = 0;
}
Rrs5 = Rrs[ib5];
Rrs6 = Rrs[ib6];
aw6  = aw [ib6];
bbw5 = bbw[ib5];
if (Rrs6 <= 0.0)
Rrs6 = 0.001;
if (Rrs5 <= 0.0)
Rrs5 = 0.001;
/* Compute particulate absorption at 670 (algal and non-algal) */
chl = MIN(MAX(chl,0.0),64.0);
if (chl > 0.0)
ap6 = 0.019890*pow(chl,0.817742);
else
ap6 = 0.0;
/* Compute absorption by gelbstoff and detritus at 670 */
adg6 = 0.0;
if ( Rrs5 > 0.0 && Rrs6 > 0.0 )
adg6 = 0.15 - 0.19*(Rrs5 - Rrs6)/Rrs5;
/* Compute total absorption at 670 (incl. band-pass adjustment of 0.8) */
a6 = aw6 + 0.8 * ap6 + adg6;
/* Compute backscatter at 550 from Carder/Lee */
bb5 = (-0.00182 + 2.058*Rrs5 + bbw5);
/* Translate bb to NIR wavelength using Gould */
bb = (-0.00113*wave[ib_red] + 1.62517) / (-0.00113*550.0 + 1.62517) * bb5;
/* Remote-sensing reflectance */
a = a6;
salbedo = bb / (a + bb) ;
Rrs_red = g1*salbedo + g2*salbedo*salbedo;
/* Normalized water-leaving reflectance */
rhown[ib_red] = 0.544*PI*Rrs_red;
}