La energía recibida por el sensor es por su parte la suma de la energía reflejada por el terreno y la energía dispersada y reflejada por la atmósfera. Por otra parte la energía que llega al suelo es la energía solar por la transmisividad de la atmósfera.
Esuelo = t·E0
Esatelite = r·Esuelo + Eatmosfera
r = Esatelite - Eatmosfera / t·E0
Este esquema se complica aún más ya que sólo es válido en terreno perpendicular a los rayos solares. En caso contrario:
Esuelo = t·sin(a)·E0
Donde a es el ángulo que forman los rayos solares respecto a la superficie del terreno. Ya que la cantidad de radiación que llega a un punto del terreno depende de este ángulo.
Es necesario corregir todos estos problemas ya que de no ser así:
En aquellos casos en que no se dispone en la imagen de pixels de oceano se podrían utilizar embalses aunque los resultados son evidentemente peores ya que un embalse pude ganar reflectividad debido a la turbidez, baja profundidad, desarrollo de algas, etc.
Sabiendo la pendiente y orientación de una porción del terreno y la posición del sol puede calcularse fácilmente el ángulo que forma el sol con la superficie del terreno.
La posición del sol se obtiene a partir de la latitud del lugar el día y la hora y la pendiente y orientación del terreno a partir de un modelo digital de terreno.
r.slope.aspect elevation=name slope=name format=degrees aspect=name min_slp=5
Una vez obtenidas pendientes y orientaciones se utiliza el módulo r.sun para obtener un mapa del ángulo que formaban los rayos solares con la superficie del terreno en el día y la hora del paso del satélite
r.sun elevin=mde50M aspin=orientacion50M slopein=pendiente50M incidout=angulo latitude=38 dej=60 lum_time=10.7
Para obtener los senos de los ángulos se utiliza r.mapcalc:
r.mapcalc 'sinang=eval(pordef=sin(41.17),if(isnull(angulo),pordef,sin(angulo)))'
Los valores de radiación recibida en el sensor, descontada la radiación procedente de la atmósfera, pueden obtenerse con una simple operación de r.mapcalc. Se trata de un programa que actúa como una calculadora de mapas de propósito general. La forma general sería
r.mapcalc 'Esensorb=(+NDb-minimob+(-a0b/a1b))*a0b+a1b';
donde NDb es el mapa de niveles digitales para la banda b, minimob, a0b y a1b los valores de mínimo del histograma, a0 y a1 respectivamente para la banda b. Estos valores aparecen en la tabla 1
r.mapcalc 'albedob=eval(t=Esensorb*3.141592/(sinang*E0b),if(t>1,null(),t))'
Con esta última operación se obtiene una buena aproximación al albedo.