2017-02-12 1 views
0

je besoin de votre petite aide dans rééchantillonnage plusieurs fichiers avec le même nom, mais dans des dossiers différents en utilisant R.rééchantillonnage plusieurs fichiers TIFF dans R

J'ai un dossier avec le nom d'image allant de 1: 172 dans reclass1. J'ai un autre dossier avec le nom de l'image allant de 1: 172 en reclass2. J'ai besoin de rééchantillonner 1.tif dans le reclass 1 avec 1.tif dans reclass2 et de manière similaire à tous les 172 fichiers. Je peux faire un seul rééchantillonnage mais je suis incapable de tout faire en boucle.

J'ai essayé:

setwd("D:/archived_121316_before_files/Reclass2") 
rlist2 = list.files(getwd(), pattern="tif$", full.names=FALSE) 
for(i in rlist2) { 
    assign(unlist(strsplit(i, "[.]"))[1], raster(i)) 
} 
setwd("D:/archived_121316_before_files/Reclass1") 
rlist1=list.files(getwd(), pattern="tif$", full.names=FALSE) 
for(j in rlist1) { 
    assign(unlist(strsplit(j, "[.]"))[1], raster(j)) 
} 
resample(i, j, method="ngb") 
+1

Pouvez-vous montrer ce que vous avez essayé? – lizzie

+0

J'ai voyagé, mais je suis très nouveau en R, donc ça peut paraître ridicule. –

+0

setwd ("D:/archived_121316_before_files/Reclass2") rlist2 = list.files (getwd(), modèle = "TIF $", full.names = FAUX) for (i in rlist2) {assign (unlist (strsplit (i, "[.]")) [1], raster (i))} setwd ("D:/archivé_121316_before_files/Reclass1") rlist1 = liste.fichiers (getwd(), pattern = "tif $ ", full.names = FALSE) pour (j dans rlist1) {assign (unlist (strsplit (j," [.] ")) [1], raster (j))}, resample (i, j, method = "ngb") –

Répondre

1

vous pouvez essayer ce code

# list all files in reclass1 folder 
    flname1 <- list.files(path = 'D:/reclass1/', pattern = '.tif') 
    nfile1 <- length(flname1) 

# list all files in reclass2 folder 
    flname2 <- list.files(path = 'D:/reclass2/', pattern = '.tif') 
    nfile2 <- length(flname2) 

# Resample reclass1 image based on reclass2 image 
    for (i in 1:nfile1) { 
    r1<-raster(flname1[[i]])  
    r2<-raster(flname2[[i]])  
    rs<-resample(r1,r2,method='bilinear') # you can choose your own method 

    # Save the ouput 
    write.Raster(rs, paste0('D:/resample/rs_',i,'.img'), overwrite=T) 
    } 
+0

Réponse très simple, mais il convient de noter que pour un nombre important de rasters, ou même quelques grands rasters, cette solution pourrait prendre un awfu Je suis longtemps. Cela semble cependant être un problème facilement parallélisé. – SeldomSeenSlim

+0

Veuillez ajouter une explication pour accompagner votre réponse. – Benjamin

+0

Merci beaucoup pour votre aide très aimable –