#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)