# install.packages("raster")
# install.packages("sp")
# install.packages("rgdal")
library(raster)
## Loading required package: sp
library(sp)
library(rgdal)
## Please note that rgdal will be retired by the end of 2023,
## plan transition to sf/stars/terra functions using GDAL and PROJ
## at your earliest convenience.
##
## rgdal: version: 1.5-27, (SVN revision 1148)
## Geospatial Data Abstraction Library extensions to R successfully loaded
## Loaded GDAL runtime: GDAL 3.2.1, released 2020/12/29
## Path to GDAL shared files: C:/Users/NICOLAS/Documents/R/win-library/4.0/rgdal/gdal
## GDAL binary built with GEOS: TRUE
## Loaded PROJ runtime: Rel. 7.2.1, January 1st, 2021, [PJ_VERSION: 721]
## Path to PROJ shared files: C:/Users/NICOLAS/Documents/R/win-library/4.0/rgdal/proj
## PROJ CDN enabled: FALSE
## Linking to sp version:1.4-5
## To mute warnings of possible GDAL/OSR exportToProj4() degradation,
## use options("rgdal_show_exportToProj4_warnings"="none") before loading sp or rgdal.
## Overwritten PROJ_LIB was C:/Users/NICOLAS/Documents/R/win-library/4.0/rgdal/proj
setwd("D:/mis documentos/ingenieria civil/semestre 10/Electiva 2/Taller 3")
# Llamar imagines satelitales
# Azul banda 2
b2 <- raster("D:/mis documentos/ingenieria civil/semestre 10/Electiva 2/Taller 3/T18NVH_20170921T152631_B02.jp2")
# Verde banda 3
b3 <- raster("D:/mis documentos/ingenieria civil/semestre 10/Electiva 2/Taller 3/T18NVH_20170921T152631_B03.jp2")
# Rojo banda 4
b4 <- raster("D:/mis documentos/ingenieria civil/semestre 10/Electiva 2/Taller 3/T18NVH_20170921T152631_B04.jp2")
b8 <- raster("D:/mis documentos/ingenieria civil/semestre 10/Electiva 2/Taller 3/T18NVH_20170921T152631_B08.jp2")
# Informacion de la imagen
b2
## class : RasterLayer
## dimensions : 10980, 10980, 120560400 (nrow, ncol, ncell)
## resolution : 10, 10 (x, y)
## extent : 399960, 509760, 190200, 3e+05 (xmin, xmax, ymin, ymax)
## crs : +proj=utm +zone=18 +datum=WGS84 +units=m +no_defs
## source : T18NVH_20170921T152631_B02.jp2
## names : T18NVH_20170921T152631_B02
## values : 0, 65535 (min, max)
crs(b2) # consultar el sistema de referencia
## CRS arguments:
## +proj=utm +zone=18 +datum=WGS84 +units=m +no_defs
ncell(b2) # Consultar numero de celdas
## [1] 120560400
dim(b2) # Dimensiones, es decir alto x ancho
## [1] 10980 10980 1
res(b2) # Resolucion
## [1] 10 10
nlayers(b2) # Numero de capas
## [1] 1
compareRaster(b2,b3) # Comparar 2 imagenes
## [1] TRUE
s <- stack(b8,b4,b3)
s
## class : RasterStack
## dimensions : 10980, 10980, 120560400, 3 (nrow, ncol, ncell, nlayers)
## resolution : 10, 10 (x, y)
## extent : 399960, 509760, 190200, 3e+05 (xmin, xmax, ymin, ymax)
## crs : +proj=utm +zone=18 +datum=WGS84 +units=m +no_defs
## names : T18NVH_20170921T152631_B08, T18NVH_20170921T152631_B04, T18NVH_20170921T152631_B03
## min values : 0, 0, 0
## max values : 65535, 65535, 65535
par(mfrow = c(2,2))
plot(b2, main = "azul", col = gray(0:100 / 100))
plot(b3, main = "verde", col = gray(0:100 / 100))
plot(b4, main = "rojo", col = gray(0:100 / 100))
plot(b8, main = "infra rojo", col = gray(0:100 / 100))

# Combinacion para lograr el color verdadero
landsatRGB <- stack(b4,b3,b2)
plotRGB(landsatRGB, axes = TRUE, stretch = "lin", main = "Landsat color verdadero")

filenames <- paste0("D:/mis documentos/ingenieria civil/semestre 10/Electiva 2/Taller 3/T18NVH_20170921T152631_B0", 2:8,".jp2")
filenames
## [1] "D:/mis documentos/ingenieria civil/semestre 10/Electiva 2/Taller 3/T18NVH_20170921T152631_B02.jp2"
## [2] "D:/mis documentos/ingenieria civil/semestre 10/Electiva 2/Taller 3/T18NVH_20170921T152631_B03.jp2"
## [3] "D:/mis documentos/ingenieria civil/semestre 10/Electiva 2/Taller 3/T18NVH_20170921T152631_B04.jp2"
## [4] "D:/mis documentos/ingenieria civil/semestre 10/Electiva 2/Taller 3/T18NVH_20170921T152631_B05.jp2"
## [5] "D:/mis documentos/ingenieria civil/semestre 10/Electiva 2/Taller 3/T18NVH_20170921T152631_B06.jp2"
## [6] "D:/mis documentos/ingenieria civil/semestre 10/Electiva 2/Taller 3/T18NVH_20170921T152631_B07.jp2"
## [7] "D:/mis documentos/ingenieria civil/semestre 10/Electiva 2/Taller 3/T18NVH_20170921T152631_B08.jp2"
landsat <- stack(b4,b3,b2,b8)
landsat
## class : RasterStack
## dimensions : 10980, 10980, 120560400, 4 (nrow, ncol, ncell, nlayers)
## resolution : 10, 10 (x, y)
## extent : 399960, 509760, 190200, 3e+05 (xmin, xmax, ymin, ymax)
## crs : +proj=utm +zone=18 +datum=WGS84 +units=m +no_defs
## names : T18NVH_20170921T152631_B04, T18NVH_20170921T152631_B03, T18NVH_20170921T152631_B02, T18NVH_20170921T152631_B08
## min values : 0, 0, 0, 0
## max values : 65535, 65535, 65535, 65535
names(landsat)
## [1] "T18NVH_20170921T152631_B04" "T18NVH_20170921T152631_B03"
## [3] "T18NVH_20170921T152631_B02" "T18NVH_20170921T152631_B08"
# usando la funcion extent
extent(landsat)
## class : Extent
## xmin : 399960
## xmax : 509760
## ymin : 190200
## ymax : 3e+05
# limitar el recorte
recorte <- extent(399960, 469000, 238000, 3e+05)
# se realiza el recorte
landsatcortada <- crop(landsat, recorte)
plot(landsatcortada)

plotRGB(landsatcortada, axes = TRUE, stretch = "lin", main = "Landsatcortada color verdadero")

# REnombre de bandas
names(landsatcortada) <- c("rojo","verde", "azul", "NIR")
#se usa otro metodo llamando un csv
# install.packages("dplyr")
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:raster':
##
## intersect, select, union
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
puntos_de_control <- read.csv("D:/mis documentos/ingenieria civil/semestre 10/Electiva 2/Taller 3/Puntos de control 2.csv")
# usamos el paquete para manejar datos geograficos
# install.packages("sf")
library(sf)
## Linking to GEOS 3.9.1, GDAL 3.2.1, PROJ 7.2.1
puntos_de_control <- puntos_de_control %>%
st_as_sf(coords = c("x", "y"))
plot(puntos_de_control$geometry)

df <- extract(landsatcortada, puntos_de_control); df
## rojo verde azul NIR
## [1,] 658 902 1129 513
## [2,] 666 896 1124 586
## [3,] 816 980 1158 659
## [4,] 1841 1618 1602 2453
## [5,] 692 930 1147 580
## [6,] 925 1025 1193 905
## [7,] 936 1017 1193 914
## [8,] 911 998 1205 884
## [9,] 880 1016 1159 1667
## [10,] 941 1037 1179 1121
## [11,] 861 960 1061 2092
## [12,] 1145 1124 1220 1992
## [13,] 1119 1045 1155 2142
## [14,] 1180 1120 1199 1930
## [15,] 1871 1528 1496 2733
## [16,] 988 977 1174 1282
## [17,] 1090 1064 1168 2139
## [18,] 1686 1536 1568 2205
## [19,] 1313 1247 1362 2430
## [20,] 1371 1499 1531 3091
## [21,] 737 1100 1088 3974
## [22,] 965 1302 1303 1358
## [23,] 1581 1378 1456 2119
## [24,] 1720 1406 1420 2256
## [25,] 1739 1435 1401 3236
## [26,] 1060 1078 1220 1858
## [27,] 733 999 1127 3120
## [28,] 1213 1212 1304 2434
## [29,] 1908 1492 1498 3178
## [30,] 1167 1299 1340 3321
## [31,] 1278 1384 1520 2149
## [32,] 1438 1460 1573 2097
## [33,] 1807 1767 1832 2543
## [34,] 1141 1211 1267 2036
## [35,] 1523 1209 1240 2398
## [36,] 1302 1315 1319 2481
## [37,] 1950 1783 1671 2618
## [38,] 2597 2273 2311 3153
## [39,] 1350 1434 1495 1965
## [40,] 1405 1376 1605 2070
ms <- aggregate(df, list(puntos_de_control$Clase), mean)
ms
## Group.1 rojo verde azul NIR
## 1 Agua 926.6 1041.9 1208.9 1028.2
## 2 Construccion 1579.1 1521.2 1583.3 2351.0
## 3 Suelo 1262.4 1210.0 1293.4 2203.6
## 4 Vegetacion 1282.3 1270.1 1315.7 2685.4
# install.packages("writexl")
library(writexl)
# write_xlsx(ms, "D:/mis documentos/ingenieria civil/semestre 10/Electiva 2/Taller 3/Ultimo excel.xlsx")