Muchas veces queremos combinar y realizar cálculos utilizando datos rasters, que como resultado tenemos un raster nuevo de salida.

La Función overlay crea un nuevo raster basado en dos o más rasters. Para utilizar overlay se debe crear una función para establecer la forma en que se van a combinar los rasters

Como ejemplo vamos a realizar el cálculo de un índice de vegetación (NDVI), utilizando las bandas 5 y 4 de una imagen landsat 8.

# Cargar librerias
library(raster)
## Loading required package: sp
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 3.4.4
#Establecer el directorio
setwd("D:\\maestria\\percepcion remota avanzada\\ejerciciosR")

#Subir bandas y asignamos una variable a cada una
ls8_b5 <- raster("LC08_L1TP_010062_20161120_20170318_01_T1_B5.tif")
ls8_b4 <- raster("LC08_L1TP_010062_20161120_20170318_01_T1_B4.tif")

#Visualizamos cada banda
par(mfrow=c(1,2))
plot(ls8_b5)
plot(ls8_b4)

Podemos calcular el ndvi de 2 formas, La primera realizando una operación matemática simple y la segunda utilizando la función overlay

#haciendo operaciones matematicas
ndvi_1 <- (ls8_b5-ls8_b4)/(ls8_b5+ls8_b4)

#utilizando la funcion overlay la cual crea un nuevo raster basado en 2 o mas rasters
ndvi_2 <- overlay(ls8_b5, ls8_b4, fun=function(x,y){(x-y)/(x+y)})

# Ploteamos ndvi_1 y ndvi_2 y observamos que los resultados fueron iguales 
par(mfrow=c(1,2))
plot(ndvi_1)
plot(ndvi_2)

Para conocer la distribución de los datos obtenidos de ndvi, generamos un histograma

#transorfar los datos de un RasterLayer a un dataframe
df_ndvi <- as.data.frame(ndvi_1, xy= TRUE)
df_ndvi <- na.omit(df_ndvi)

ggplot(df_ndvi) +
    geom_histogram(aes(layer), bins = 50)