OceanColor Banner Image
MODIS Homepage Link SeaWiFS Homepage Link IOCCG Homepage Link Ocean Color Products Link Ocean Color News Link Link to Ocean Color Staff Ocean Color References Link Ocean Color Validation  Link FAQ Page with Ocean Color Forum

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
Privacy Policy and Important Notices

Updated: 28 September 2006
NASA logo