Los datos utiliazamos provienen de una imagen landsat 8 que contiene 3 bandas (bandas 2, 3 y 4). La función raster nos permite leer tan solo una banda. La función stack nos permite hacer una coleccion de rasters que posean la extensión y resolución espacial.

#Cargar libreria
library(raster)
## Loading required package: sp
# ubicacion del directorio de trabajo
setwd("D:\\maestria\\percepcion remota avanzada\\ejerciciosR")

Subimos las bandas 2, 3 y 4 utilizando la función raster, asignamos a cada banda una una variiable y utilizamos la función stack para unirlas

Para guardar la imagen combianción rgb utilizamos la función WriteRaster, en este caso guardamos en formato Gtiff

#asignamos a cada banda una variable
ls8_b2 <- raster("LC08_L1TP_010062_20161120_20170318_01_T1_B2.tif")
ls8_b3 <- raster("LC08_L1TP_010062_20161120_20170318_01_T1_B3.tif")
ls8_b4 <- raster("LC08_L1TP_010062_20161120_20170318_01_T1_B4.tif")

#unimos las 3 bandas 
ls8_rgb <-stack(ls8_b2,ls8_b3,ls8_b4) 
ls8_rgb # podemos ver las caracteristicas del RasterSatck  
## class       : RasterStack 
## dimensions  : 7751, 7601, 58915351, 3  (nrow, ncol, ncell, nlayers)
## resolution  : 30, 30  (x, y)
## extent      : 596985, 825015, -436515, -203985  (xmin, xmax, ymin, ymax)
## coord. ref. : +proj=utm +zone=17 +datum=WGS84 +units=m +no_defs +ellps=WGS84 +towgs84=0,0,0 
## names       : LC08_L1TP_010062_20161120_20170318_01_T1_B2, LC08_L1TP_010062_20161120_20170318_01_T1_B3, LC08_L1TP_010062_20161120_20170318_01_T1_B4 
## min values  :                                           0,                                           0,                                           0 
## max values  :                                       49218,                                       49391,                                       51971
#guardamos la imagen
writeRaster(ls8_rgb,"rgb","GTiff", overwrite=TRUE) 

Cremos un histograma para conocer las distribución de los datos en cada banda y ploteamos cada una.

#Crear histogramas para las tres bandas
hist(ls8_rgb,
     maxpixels = ncell(ls8_rgb))

#ploteamos las 3 bandas
# Creamos una escala de colores. En este caso una escala de grises 
grayscale_colors <- gray.colors(100, start = 0.0, end = 1.0,  gamma = 2.2, alpha = NULL) 
plot(ls8_rgb, col = grayscale_colors)

# Para importar una sola banda de un juego de bandas
b2 <- raster("rgb.tif", band=2)
# plot banda 2
par(mfrow = c(1, 1))
plot(ls8_rgb[[2]],
     main = "Green Band",
     col = grayscale_colors)

Para plotear una imagen que combinana tres bandas, usamos la función plotRGB (). La función nos permite: Identificar las bandas que queremos plotear. Ajustar el estiramiento de la imagen para aumentar o disminuir el contraste.

#ploteamos la imagen en color verdadero utilizando diferentes tipos de estiramiento
par(mfrow=c(1,2))
plotRGB(ls8_rgb,r=3,g=2,b=1, stretch = "lin")
plotRGB(ls8_rgb,r=3,g=2,b=1, stretch = "hist")

#Utilizamos la función object.size para conocer el tamaño del objeto
object.size(ls8_rgb)
## 41712 bytes