загрузить много файлов .tif из разархивированного или заархивированного файла в rstudio на растербрик - PullRequest
0 голосов
/ 17 апреля 2020

Простите меня, поскольку я очень плохо знаком с кодированием и использованием r. Я пытаюсь импортировать много файлов .tif в rstudio, которые я получил от WorldClim (исторические ежемесячные данные о погоде 2010-2018). В заархивированной папке 120 файлов .tif, которые я распаковал. Я попытался импортировать их в растровый кирпич, но похоже, что это всего лишь один растровый слой

brk1 <- do.call(brick, lapply(list.files(path = 
         "/Classes F2020/ES 232/tmin_tmax/wc.2.1_2.5m_tmax_2010-2018", 
         pattern = "Band*.*tif"), raster))
View(brk1)
brk

#class      : RasterBrick 
#dimensions : 180, 360, 64800, 1  (nrow, ncol, ncell, layers)
#resolution : 1, 1  (x, y)
#extent     : -180, 180, -90, 90  (xmin, xmax, ymin, ymax)
#crs        : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0 

Ответы [ 2 ]

0 голосов
/ 17 апреля 2020

При звонке на lapply вы используете raster, и это даст вам только один слой. Я думаю, что вы ищете что-то в этом направлении (и всегда лучше делать что-то шаг за шагом, чтобы вы могли проверить, что происходит на этом пути)

library(raster)
f <- list.files(pattern = "tif$")
x <- lapply(f, brick)
s <- stack(x)
0 голосов
/ 17 апреля 2020

Есть несколько способов сделать это, но вот простой метод. Это не самый эффективный, но я думаю, что для нового пользователя это довольно просто реализовать:

rb<-brick() #create an empty brick

for(i in 1:length(list.files)){
  tif.name<- list.files(pattern="*tif$", full.names=F, recursive=FALSE)
  print(tif.name) #check name of tif file
  tif<-raster(tif.name) #assign tif file to raster object
  tif.c<-tif*mask.AOI #crop layer to AOI; mask.AOI is a raster where 1 = your study area, NA is all other values

  rb<-addLayer(rb, tif.c) #add cropped tif file to brick
}
...