2017-02-12 14 views
0

Ich brauche deine kleine Hilfe in mehrere Dateien mit dem gleichen Namen Resampling aber in verschiedenen Ordnern mit R.Resampling mehrere TIFF-Dateien in R

Ich habe einen Ordner mit dem Namen Bild im Bereich von 1: 172 in reclass1. Ich habe einen anderen Ordner mit Bildname von 1: 172 in reclass2. Ich muss 1.tif neu reklassifizieren 1 mit 1.tif in reclass2 und ähnlich wie alle 172 Dateien. Ich kann Single Resampling durchführen, aber nicht alles in einer Schleife machen.

Ich habe versucht:

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

Sie zeigen, was Sie versucht haben? – lizzie

+0

Ich treid das, aber ich bin sehr neu in R so könnte es lächerlich aussehen. –

+0

setwd ("D:/archived_121316_before_files/Reclass2") rlist2 = list.files (getwd(), Pattern = "$ Tif", full.names = FALSE) for (i in rlist2) {zuordnen (fehlende oder (strsplit (i, "[.]")) [1], raster (i))} setwd ("D:/archived_121316_before_files/Reclass1") rlist1 = Liste.Files (getwd(), pattern = "tif $ ", full.names = FALSE) für (j in rlist1) {zuweisen (unlist (strsplit (j," [.] ")) [1], raster (j))}, resample (ich, j, method = "ngb") –

Antwort

1

Sie diesen Code versuchen

# 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

Sehr einfache Antwort, aber es sollte angemerkt werden, dass für eine erhebliche Anzahl von Rastern oder sogar ein paar große Raster, diese Lösung eine awfu dauern könnte l lange Zeit. Es scheint jedoch ein leicht parallelisiertes Problem zu sein. – SeldomSeenSlim

+0

Bitte fügen Sie eine Erklärung hinzu, um mit Ihrer Antwort zu gehen. – Benjamin

+0

Vielen Dank für Ihre freundliche Hilfe –