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