remplacer les NA par des 0 dans une matrice au format tif

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Hélène Guis
Messages : 7
Enregistré le : 10 Juil 2006, 11:56

remplacer les NA par des 0 dans une matrice au format tif

Messagepar Hélène Guis » 11 Avr 2012, 17:02

Bonjour

J'ai 10 000 fichiers (matrices) au format tif dans lesquels je dois remplacer toutes les valeurs codées en NA par des 0 (et sauver les résultats au format tif).
J'ai essayé diverses fonctions sans grand succès (is.na, replace, lapply...), (mais étant débutante, il est possible que je les aies mal utilisées...)
merci pour votre aide
Hélène
Hélène Guis
Cirad Madagascar

dicko ahmadou
Messages : 444
Enregistré le : 21 Nov 2009, 20:15

Messagepar dicko ahmadou » 11 Avr 2012, 23:22

Bonsoir,

Pour travailler plus facilement avec tes fichiers rasters.
Je te conseille vivement le package raster.

Code : Tout sélectionner

library(raster) ## ou install.packages("raster") ; # si tu ne l'a pas

## documentation
vignette("Raster", package = "raster")


Maintenant pour ton problème, j'ai créer un petit fichier raster avec des valeurs manquantes, pour illustrer l'approche.

Code : Tout sélectionner

monrast <- raster("http://dl.dropbox.com/u/8750577/raster.tif")

plot(monrast)

## valeur du raster avec valeur manquante
values(monrast)
[1]  1 NA  3  4 NA  6 NA NA  9

## remplacement valeur manquante
monrast[is.na(monrast)] <- 0

## vérification
values(monrast)
[1] 1 0 3 4 0 6 0 0 9



Maintenant si tous tes fichiers tif sont dans le même dossier, tu peux essayer un truc du genre. J'ai pas vérifier mais normalement ça devrait marcher.


Code : Tout sélectionner

## tous les fichiers "tif" dans le dossier courant
mestif <- list.files(path = "chemin_des_tifs", pattern = ".tif", full.names = TRUE)

for (j in mestif) {

   rast <- raster(j)
   rast[is.na(rast)] <- 0

## enregistrer dans le même dossier
## faire une copie de ce dossier au cas ou la manip de marche pas
writeRaster(rast, j, overwrite = TRUE)

}



En espérant que ça puisse t'aider.
N'hésite pas si y a des parties qui ne marche pas bien.
The best thing about being a statistician is that you get to play in everyone's backyard.
John Tukey

Hélène Guis
Messages : 7
Enregistré le : 10 Juil 2006, 11:56

Messagepar Hélène Guis » 12 Avr 2012, 08:56

Merci infiniment, c'est parfait!!
Hélène


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité