【问题标题】:Create a RasterStack from a list从列表创建 RasterStack
【发布时间】:2019-08-21 05:11:44
【问题描述】:

我将图像数据存储在列表中。该文件包含 1000 个列表(对应于像素),每个列表包含 44 个实体的向量。现在我想创建一个 RasterStack 数据类型,以便将此数据用于 mesma 函数。堆栈数据应该有 44 层。

example_data = replicate(1000, rnorm(44, 8, 1),simplify = FALSE)
stack(example_data, bands = 44) 

我收到以下错误消息。

Error in (function (classes, fdef, mtable)  : 
  unable to find an inherited method for function ‘raster’ for signature ‘"numeric"’

【问题讨论】:

    标签: r image stack layer


    【解决方案1】:

    我不知道您所说的“列表文件”是什么意思。我想您的意思是“列表”(如您的示例中所示)。

    让我们做一个更简单的例子。每个单元格有一个元素的列表(总共 4 个单元格)。每个元素都有一个向量(每层一个值;有 3 层)

    d <- replicate(4, 1:3,simplify = FALSE)
    d
    #[[1]]
    #[1] 1 2 3
    #[[2]]
    #[1] 1 2 3
    # etc
    

    将其更改为矩阵,每个单元格对应一行

    m <- matrix(unlist(d), nrow=4, byrow=TRUE)
    m
    #     [,1] [,2] [,3]
    #[1,]    1    2    3
    #[2,]    1    2    3
    #[3,]    1    2    3
    #[4,]    1    2    3
    

    创建适当的 Raster* 对象

    library(raster)
    b <- brick(nrow=2, ncol=2, nl=3)
    

    并赋值

    values(b) <- m 
    b
    #class      : RasterBrick 
    #dimensions : 2, 2, 4, 3  (nrow, ncol, ncell, nlayers)
    #resolution : 180, 90  (x, y)
    #extent     : -180, 180, -90, 90  (xmin, xmax, ymin, ymax)
    #crs        : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0 
    #source     : memory
    #names      : layer.1, layer.2, layer.3 
    #min values :       1,       2,       3 
    #max values :       1,       2,       3 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-08
      • 1970-01-01
      • 1970-01-01
      • 2013-04-18
      • 1970-01-01
      • 2022-01-13
      • 2018-12-17
      相关资源
      最近更新 更多