[GRASS-user] WV-2 top of atmosphere reflectance calculation

Eric Goddard egoddard1010 at gmail.com
Thu Jul 11 20:38:10 PDT 2013

Hi All,

I'm working on a python script that extracts the variables necessary
to convert WorldView-2 DNs to top of atmosphere reflectance values.
The equations come from

the mapcalc function is a combination of two of the formulas from the
pdf. The first formula converts DNs to band averaged spectral

Radiance = (Absolute Calibration Factor * DN) / Effective Bandwidth   (page 9)

The second formula (page 16) incorporates some other variables to
convert to top of atmosphere reflectance:

TOA Reflectance = (Radiance * Earth Sun Distance ^2 * pi) / (Band
Averaged Solar Spectral Irradiance * cos(solar zenith angle))

The band averaged solar spectral Irradiance is eSun in the mapcalc formula.

My mapcalc function:

   grass.mapcalc("$output = ((($absCal * $input_rast) / $efb) * $esd^2
* $pi) / ($eSun * cos($solarGeom))",
       output=output, absCal=absCalFactor, input_rast=raster,
       efb=effectiveBandwidth, esd=earthSunDist, pi=math.pi, eSun=eSun,

As far as I can tell my formula looks correct, but some bands have max
values exceeding 1.0, which I don't think should happen. I was hoping
some additional eyes might be able to shed some light on where I'm
going wrong.


More information about the grass-user mailing list