Suite

Utiliser Loop pour calculer le NDVI dans R?

Utiliser Loop pour calculer le NDVI dans R?


J'utilise maintenant MOD09Q1 et j'aimerais calculer les données de l'année entière NDVI. Un an, j'ai 46 images bande 1 et 46 images bande 2.

  1. list.files

Je crée la liste du groupe 1 et la liste du groupe 2.

Band1list <- list.files(path = ".", pattern = "*.b01.tif", all.files = FALSE, full.names = FALSE, recursive = FALSE, ignore.case = FALSE) Band2list <- list. files(path = ".", pattern = "*.b02.tif", all.files = FALSE, full.names = FALSE, recursive = FALSE, ignore.case = FALSE)
  1. raster::pile

Empiler les 46 images de la bande 1 (bande 2) dans 'StackBand1' ('StackBand2')

StackBand1 <- stack(Band1list) StackBand2 <- stack(Band2list)
  1. Calcul NDVI viapourboucle

J'essaie d'empiler des images de même date (par exemple "2012.01.01.Smb01.tif" et "2012.01.01.Smb02.tif") et calcule le NDVI

for (i in 1:length(Band1list)) { StackBand1[[i]] == i StackBand2[[i]] == i Stack <- brick(StackBand1[[i]],StackBand2[[i]]) }

Ici, je n'ai pas pu exécuter de boucle pour les 46 images. Il peut être exécuté en totalité et le résultat n'est affiché que pour le dernier couple.


Il n'y a pas besoin d'unpour(ou tout autre type de) boucle puisque ces éléments sont entièrement inclus dans le raster paquet. Si vous voulez calculer le NDVI, alors en gros, tout ce dont vous avez besoin est

## bibliothèque de packages requise (raster) ## calculer ndvi à partir du canal rouge (bande 1) et proche infrarouge (bande 2) ndvi <- overlay (StackBand1, StackBand2, fun = function(x, y) { (yx) / ( y+x) })