# LibrerĆas a cargar para el ejercio.
library(sp)
library(raster)
library(ggplot2)
library(rgdal)
## rgdal: version: 1.4-8, (SVN revision 845)
## Geospatial Data Abstraction Library extensions to R successfully loaded
## Loaded GDAL runtime: GDAL 2.2.3, released 2017/11/20
## Path to GDAL shared files: C:/Users/Usuario/Documents/R/win-library/3.6/rgdal/gdal
## GDAL binary built with GEOS: TRUE
## Loaded PROJ.4 runtime: Rel. 4.9.3, 15 August 2016, [PJ_VERSION: 493]
## Path to PROJ.4 shared files: C:/Users/Usuario/Documents/R/win-library/3.6/rgdal/proj
## Linking to sp version: 1.4-1
library(RStoolbox)
############################################################
# Importamos las bandas a la plataforma RStudio.
#E:/Imagenes CBERS4A/ParaR
setwd("E:/Imagenes CBERS4A/ParaR")
files <- list.files(pattern='.sdat')
files
## [1] "CBERS_4A_BAND0.sdat" "CBERS_4A_BAND0.sdat.aux.xml"
## [3] "CBERS_4A_BAND1.sdat" "CBERS_4A_BAND1.sdat.aux.xml"
## [5] "CBERS_4A_BAND2.sdat" "CBERS_4A_BAND2.sdat.aux.xml"
## [7] "CBERS_4A_BAND3.sdat" "CBERS_4A_BAND3.sdat.aux.xml"
## [9] "CBERS_4A_BAND4.sdat" "CBERS_4A_BAND4.sdat.aux.xml"
b0 <- raster("E:/Imagenes CBERS4A/ParaR/CBERS_4A_BAND0.sdat")
b1 <- raster("E:/Imagenes CBERS4A/ParaR/CBERS_4A_BAND1.sdat")
b2 <- raster("E:/Imagenes CBERS4A/ParaR/CBERS_4A_BAND2.sdat")
b3 <- raster("E:/Imagenes CBERS4A/ParaR/CBERS_4A_BAND3.sdat")
b4 <- raster("E:/Imagenes CBERS4A/ParaR/CBERS_4A_BAND4.sdat")
#CaracterĆsticas de los datos de las bandas multiespectrales, tamaƱo de pixel 8 metros.
b1
## class : RasterLayer
## dimensions : 633, 762, 482346 (nrow, ncol, ncell)
## resolution : 8, 8 (x, y)
## extent : 423838, 429934, 8428570, 8433634 (xmin, xmax, ymin, ymax)
## crs : +proj=utm +zone=18 +south +datum=WGS84 +units=m +no_defs +ellps=WGS84 +towgs84=0,0,0
## source : E:/Imagenes CBERS4A/ParaR/CBERS_4A_BAND1.sdat
## names : CBERS_4A_BAND1
## values : -32768, 32767 (min, max)
# CaracterĆsticas de la banda PancromĆ”tica tamaƱo de pixel 2 metros.
b0
## class : RasterLayer
## dimensions : 2533, 3049, 7723117 (nrow, ncol, ncell)
## resolution : 2, 2 (x, y)
## extent : 423838, 429936, 8428570, 8433636 (xmin, xmax, ymin, ymax)
## crs : +proj=utm +zone=18 +south +datum=WGS84 +units=m +no_defs +ellps=WGS84 +towgs84=0,0,0
## source : E:/Imagenes CBERS4A/ParaR/CBERS_4A_BAND0.sdat
## names : CBERS_4A_BAND0
## values : -32768, 32767 (min, max)
#Integramos las bandas.
bandas <- addLayer(b1,b2,b3,b4)
bandas
## class : RasterStack
## dimensions : 633, 762, 482346, 4 (nrow, ncol, ncell, nlayers)
## resolution : 8, 8 (x, y)
## extent : 423838, 429934, 8428570, 8433634 (xmin, xmax, ymin, ymax)
## crs : +proj=utm +zone=18 +south +datum=WGS84 +units=m +no_defs +ellps=WGS84 +towgs84=0,0,0
## names : CBERS_4A_BAND1, CBERS_4A_BAND2, CBERS_4A_BAND3, CBERS_4A_BAND4
## min values : -32768, -32768, -32768, -32768
## max values : 32767, 32767, 32767, 32767
# Presentamos la banda en la ventana.
ggRGB(bandas,r=3,g=2,b=1,stretch = "lin") + ggtitle("Combinacion bandas 321")

# Generamos la extensión, primero en el eje "X" y luego en el eje "y".
ventana <-extent(427000, 428500,8430250,8431000)
ventana
## class : Extent
## xmin : 427000
## xmax : 428500
## ymin : 8430250
## ymax : 8431000
#Presentamos la imagen en función de la ventana seleccionada.
x11()
ggRGB(bandas,r=3,g=2,b=1,stretch = "lin", ext= ventana)

#Proceso de Panshapen (Fusión de bandas)
#Consiste en corroborar cual de los mƩtodos son los que revelan mejor desempeƱo la identificacion de objetos,
#despues del proceso de panshapening mediante la viualización.
# Convertir en bandas pancromaticas Utlizando el mƩtodo de Broyey
#panSharpen(img, pan, r, g, b, pc = 1, method = "brovey", norm = TRUE),
fbrovey <- panSharpen(bandas, b0, r = 3, g = 2, b = 1, method = "brovey")
fbrovey
## class : RasterBrick
## dimensions : 2533, 3049, 7723117, 3 (nrow, ncol, ncell, nlayers)
## resolution : 2, 2 (x, y)
## extent : 423838, 429936, 8428570, 8433636 (xmin, xmax, ymin, ymax)
## crs : +proj=utm +zone=18 +south +datum=WGS84 +units=m +no_defs +ellps=WGS84 +towgs84=0,0,0
## source : memory
## names : CBERS_4A_BAND1_pan, CBERS_4A_BAND2_pan, CBERS_4A_BAND3_pan
## min values : 59.70486, 51.26966, 36.81037
## max values : 375.9842, 371.5016, 428.5106
# Presentamos la imagen en la ventana seleccionada.
ggRGB(fbrovey, r=3,g=2,b=1, stretch = "lin")

# Presentamos la imagen en la ventana seleccionada.
ggRGB(fbrovey, r=3,g=2,b=1, stretch = "lin", ext = ventana) + ggtitle("Pansharpening brovey")

# Convertir en bandas pancromaticas Utlizando el mƩtodo de pca
#panSharpen(img, pan, r, g, b, pc = 1, method = "pca", norm = TRUE),
fpca <- panSharpen(bandas, b0, r = 4, g = 3, b = 2, method = "pca")
fpca
## class : RasterBrick
## dimensions : 2533, 3049, 7723117, 4 (nrow, ncol, ncell, nlayers)
## resolution : 2, 2 (x, y)
## extent : 423838, 429936, 8428570, 8433636 (xmin, xmax, ymin, ymax)
## crs : +proj=utm +zone=18 +south +datum=WGS84 +units=m +no_defs +ellps=WGS84 +towgs84=0,0,0
## source : memory
## names : CBERS_4A_BAND1_pan, CBERS_4A_BAND2_pan, CBERS_4A_BAND3_pan, CBERS_4A_BAND4_pan
## min values : 419.1262, 380.2678, 488.7827, 17.4108
## max values : 765.5492, 733.6358, 740.4909, 1118.5740
#Toda la imagen en la ventana
ggRGB(fpca, r=3,g=2,b=1,stretch = "lin")

# Presentamos la imagen en la ventana seleccionada.
ggRGB(fpca, r=3,g=2,b=1, stretch = "lin",ext = ventana) + ggtitle("Pansharpening PCA")

######
# Convertir en bandas pancromaticas Utlizando el mƩtodo de ihs
#panSharpen(img, pan, r, g, b, pc = 1, method = "pca", norm = TRUE),
fihs <- panSharpen(bandas, b0, r = 3, g = 2, b = 1, method = "ihs")
fihs
## class : RasterBrick
## dimensions : 2533, 3049, 7723117, 3 (nrow, ncol, ncell, nlayers)
## resolution : 2, 2 (x, y)
## extent : 423838, 429936, 8428570, 8433636 (xmin, xmax, ymin, ymax)
## crs : +proj=utm +zone=18 +south +datum=WGS84 +units=m +no_defs +ellps=WGS84 +towgs84=0,0,0
## source : memory
## names : CBERS_4A_BAND1_pan, CBERS_4A_BAND2_pan, CBERS_4A_BAND3_pan
## min values : 118.0938, 136.1094, 160.9323
## max values : 1136.667, 1071.797, 1046.417
#Toda la imagen en la ventana
ggRGB(fihs,r=3,g=2,b=1,stretch = "lin")

# Presentamos la imagen en la ventana seleccionada.
ggRGB(fihs, r=3,g=2,b=1, stretch = "lin", ext = ventana) + ggtitle("Pansharpening ihs")
