【问题标题】:How can I stack and display rasters?如何堆叠和显示栅格?
【发布时间】:2016-10-11 20:32:02
【问题描述】:

我在一个文件夹中有 12 个光栅文件,我想在其上使用 RasterVis 的水平图。

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

【问题讨论】:

  • lapply(s, levelplot) 呢?
  • 这行得通。但我没有得到每月的面板。相反,它分别绘制每个 tif 文件。我想要这个页面上的第一个图:oscarperpinan.github.io/rastervis

标签: r raster rgdal


【解决方案1】:

您不需要将栅格强制为列表对象,这是导致您出现问题的原因,或者使用 lapply 使用 levelplot 绘制多个栅格。使用堆栈或砖块来读取数据,然后将对象传递给 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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-06
    • 1970-01-01
    • 1970-01-01
    • 2018-04-30
    相关资源
    最近更新 更多