El paquete raster soporta muchas operaciones matemáticas, estas operaciones en el campo de la percepción se aplican generalmente por pixel. En este ejercicio realizaremos algunas operaciones combinando bandas de manera personalizada se calculará el indice de vegetación noramlizada o (NDVI).
library(raster)
## Loading required package: sp
library(sp)
raslist <- paste0("C:\\Users\\yarvis\\Music\\Files\\rsdata\\rs\\LC08_044034_20170614_B", 1:11, ".tif") # Ubicacion de las bandas
landsat <- stack(raslist)# realizamosuna lista de bandas
landsatRGB <- landsat[[c(4,3,2)]] #extraemos las bandas necesarias a evaluar
landsatFCC <- landsat[[c(5,4,3)]]
El NDVI, entre otros indices es usado para estimar la cantidad, calidad y desarrollo de la vegetación con base en la medición de la intensidad de la radiación de ciertas bandas de espectro electromagnético que la vegetación
vi <- function(img,k,i) { # funcion que nos permite calcular el indice NDVI
bk <- img [[k]]
bi <- img [[i]]
vi <- (bk - bi) / (bk +bi)
return(vi)
}
ndvi <- vi(landsat, 5, 4) #renombrar la salida de la funcion
plot(ndvi, col= rev(terrain.colors(10)), main = "Landsat-NDVI")# graficando el indice
El histograma nos permite realizar un análisis exploratorio del comportamiento en este caso del índice de vegetación normalizada
hist(ndvi,
main = "Distribución de valores de NDVI ",
xlab= "NDVI",
ylab ="Frecuency",
col = "Purple",
xlim = c(-0.5, 1),
breaks = 30,
xaxt = "n")
axis(side=1,at =seq(-0.5,1,0.05), labels = seq(-0.5,1,0.05))
veg <- reclassify(ndvi, cbind(-Inf, 0.4, NA))
plot(veg, main="Vegetación")
land <- reclassify(ndvi, c(-Inf,0.25, NA, 0.25, 0.3, 1, 0.3, Inf, NA))
plot(land, main = "Qué es esto?")
plotRGB(landsatRGB, r=1, g=2, b=3, axes=TRUE, stretch="lin", main = " Composición de falso color en landsat")
vegc<- reclassify(ndvi, c(-Inf, 0.25, 1, 0.25, 0.3,2, 0.3,0.4,3, 0.4,0.5,4, 0.5, Inf, 5))
plot(vegc, col=rev(terrain.colors(4)), main = "Indice NDVI basado en umbrales")
set.seed(1)
sr <- sampleRandom(landsat,1000)
plot(sr[,c(4,5)],col = "Blue", main = "NIR-Red plot")
pca <- prcomp(sr, scale. = TRUE)
pca
## Standard deviations (1, .., p=11):
## [1] 2.49261140 1.46651294 1.08122066 0.94981704 0.53696922 0.40331771
## [7] 0.28957222 0.12594147 0.10431733 0.04898549 0.03227296
##
## Rotation (n x k) = (11 x 11):
## PC1 PC2 PC3 PC4
## LC08_044034_20170614_B1 0.2955658 -0.3836642 -0.2227649 -0.05089032
## LC08_044034_20170614_B2 0.3358950 -0.3514505 -0.1016152 -0.02392028
## LC08_044034_20170614_B3 0.3607993 -0.2588756 0.1438293 0.04156298
## LC08_044034_20170614_B4 0.3719869 -0.1478842 0.1377627 0.03988542
## LC08_044034_20170614_B5 0.1167044 0.2888162 0.7171208 0.25910182
## LC08_044034_20170614_B6 0.3438474 0.2603167 0.2126135 0.14043887
## LC08_044034_20170614_B7 0.3537575 0.2418986 -0.1450150 0.05569767
## LC08_044034_20170614_B8 0.3496181 -0.2020492 0.1166048 0.04772705
## LC08_044034_20170614_B9 0.1114189 0.1055789 0.2731106 -0.94839171
## LC08_044034_20170614_B10 0.2654413 0.4339522 -0.3398325 -0.02967050
## LC08_044034_20170614_B11 0.2629896 0.4363694 -0.3409052 -0.03091228
## PC5 PC6 PC7 PC8
## LC08_044034_20170614_B1 0.489995478 0.12672893 -0.28133417 0.246306566
## LC08_044034_20170614_B2 0.232033781 0.13081651 0.03378065 0.238214992
## LC08_044034_20170614_B3 0.114402718 0.06917759 0.29644220 -0.664095011
## LC08_044034_20170614_B4 -0.350778415 0.06290646 0.59778157 0.164459620
## LC08_044034_20170614_B5 0.500180146 -0.07995523 -0.07136110 -0.008303678
## LC08_044034_20170614_B6 -0.287846520 0.32607653 -0.10125113 0.484117896
## LC08_044034_20170614_B7 -0.238865478 0.41730918 -0.49069036 -0.419837729
## LC08_044034_20170614_B8 -0.321515851 -0.75461010 -0.38399793 0.006644620
## LC08_044034_20170614_B9 0.009469099 0.02292278 -0.04210616 0.003030274
## LC08_044034_20170614_B10 0.179233542 -0.22683359 0.19483604 0.053038128
## LC08_044034_20170614_B11 0.210361581 -0.22316591 0.17657723 -0.030795442
## PC9 PC10 PC11
## LC08_044034_20170614_B1 0.118478631 0.5407716380 0.103854687
## LC08_044034_20170614_B2 -0.022440195 -0.7738952659 -0.156530113
## LC08_044034_20170614_B3 -0.467683581 0.1125153747 0.047239959
## LC08_044034_20170614_B4 0.527001567 0.1723434004 0.019005183
## LC08_044034_20170614_B5 0.237021834 -0.0601009793 0.006588168
## LC08_044034_20170614_B6 -0.545146205 0.1325703640 -0.022669157
## LC08_044034_20170614_B7 0.364307263 -0.1046935241 0.016857695
## LC08_044034_20170614_B8 -0.024569329 -0.0096076484 -0.008083901
## LC08_044034_20170614_B9 0.001908455 -0.0006233844 0.001200079
## LC08_044034_20170614_B10 -0.046561377 -0.1348994047 0.692922696
## LC08_044034_20170614_B11 -0.011912004 0.1259042802 -0.693591802
screeplot(pca , col= "Yellow", main = "Análisis de componentes principales")
pci <- predict(landsat, pca, index = 1:2)
plot(pci[[1]])
pc2 <-reclassify(pci[[2]], c(-Inf,0,1,0,Inf,NA))
par(mfrow = c(1,2))
plotRGB(landsatFCC, r = 1, g = 2, b = 3, axes = TRUE, stretch = "lin", main = "Composición de falso color para landsat")
plotRGB(landsatFCC, r = 1, g = 2, b = 3, axes = TRUE, stretch = "lin", main = "Composición de falso color para landsat")
plot(pc2, legend = FALSE, add = TRUE)
Los índices son ayudas para la toma de desiciones o indican por dónde empezar a mirar o comprobar lo que las imágenes de satélite nos permite abordar; ya que debemos recordar que la interpretación visual y la actividad en campo deben ir de la mano.