2017-02-12 40 views
0

мне нужна ваша небольшая помощь в передискретизации несколько файлов с одинаковыми именами, но в разных папках, используя R.Ресамплинг Множественные TIFF файлы в R

У меня есть папка с именем изображения в диапазоне от 1: 172 в reclass1. У меня есть другая папка с именем изображения от 1: 172 в reclass2. Мне нужно пересчитать 1.tif в reclass 1 с 1.tif в reclass2 и аналогично всем 172 файлам. Я могу сделать одну повторную выборку, но не могу сделать все в цикле.

Я пробовал:

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

Можете ли вы показать, что вы пробовали? – lizzie

+0

Я делаю это, но я очень новичок в R, поэтому это может показаться смешным. –

+0

setwd ("D:/archived_121316_before_files/Reclass2") rlist2 = list.files (getwd(), шаблон = "TIF $", full.names = FALSE) для (я в rlist2) {назначить (unlist (strsplit (i, "[.]")) [1], растровый (i))} setwd ("D:/archived_121316_before_files/Reclass1") rlist1 = list.files (getwd(), pattern = "tif $ ", full.names = FALSE) для (j in rlist1) {assign (unlist (strsplit (j," [.] ")) [1], растровый (j))}, resample (i, j, method = "ngb") –

ответ

1

вы можете попробовать этот код

# 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

Очень простой ответ, но следует отметить, что для значительного количества растров или даже нескольких больших растров это решение может принимать awfu Я долгое время. Однако это похоже на легко распараллеливаемую проблему. – SeldomSeenSlim

+0

Пожалуйста, добавьте объяснение, чтобы согласиться с вашим ответом. – Benjamin

+0

Благодарим вас за помощь –

 Смежные вопросы

  • Нет связанных вопросов^_^