Contenido

Introducción

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)]]

Indices de Vegetación

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

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))

Umbrales

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")

Análisis de componetes principales

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)

Conclusiones

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.

Bibliografía

  • C. Mattar,J.A Sobrino,J.P.Wigneron(2011)Estimación de la humedad del suelo a partir de índices de vegetación y microondas pasivas. Asociación Española de Teledetección.