Как я могу складывать и отображать растры?

#r #raster #rgdal

#r #растровые #rgdal

Вопрос:

У меня есть 12 растровых файлов в папке, для которых я хочу использовать levelplot Растервиса.

 kpacks <- c('tiff','rgdal','raster','sp','rasterVis')
new.packs <- kpacks[!(kpacks %in% installed.packages()[,"Package"])]
if(length(new.packs)) install.packages(new.packs)
lapply(kpacks, require, character.only=T)
remove(kpacks, new.packs)
options(max.print=5.5E5) 

#World data
wlist <- list.files(pattern = "\.tif$", include.dirs = TRUE)
s <- lapply(wlist, stack)

levelplot(s)
  

Ошибка:

 Error in UseMethod("levelplot") : 
  no applicable method for 'levelplot' applied to an object of class "list"
  

Примечание:

Я вижу цифру для отдельных файлов GeoTIFF:

 levelplot(s[[1]]), for example
  

Один из файлов: https://www.dropbox.com/s/ank4uxjbjk3chaz/new_conus.tif?dl=0

Комментарии:

1. о чем lapply(s, levelplot) ?

2. Это работает. Но я не получаю ежемесячную панель. Вместо этого он отображает каждый файл tif отдельно. Я хотел что-то вроде первого рисунка на этой странице: oscarperpinan.github.io/rastervis

Ответ №1:

Вам не нужно принудительно привязывать растры к объекту списка, что вызывает у вас проблемы, или использовать lapply для построения нескольких растров с помощью levelplot. Используйте stack или brick для чтения ваших данных, а затем просто передайте объект в levelplot.

Пример

 library(raster)
library(rasterVis)

s <- stack(system.file("external/rlogo.grd", package="raster")) 
levelplot(s, contour=TRUE)
  

С вашим кодом

 s <- stack( list.files(pattern = "\.tif$", include.dirs = TRUE) )
levelplot(s)