OceanColor Banner Image

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;
}

Curator: OceanColor Webmaster

Authorized by: gene carl feldman

NASA logo

Privacy Policy and Important Notices

Updated: Monday, 10-Nov-2008 13:10:41 EST