是否有用于绘制单个光栅层的R函数?

问题描述 投票:0回答:2

我有以下rasterLayer:

> patK[["199006"]][[1]]
class       : RasterLayer 
dimensions  : 640, 960, 614400  (nrow, ncol, ncell)
resolution  : 1, 1  (x, y)
extent      : 0, 960, 0, 640  (xmin, xmax, ymin, ymax)
coord. ref. : NA 
data source : in memory
names       : layer 
values      : 1, 1  (min, max)

当我尝试绘制它时,我收到以下错误:

> plot(patK[["199006"]][[1]])
Error in as.double(y) : 
  cannot coerce type 'S4' to vector of type 'double'

这是什么意思?我是否正确使用该功能或​​是否应该使用其他功能?

编辑:有关patK的详细信息:

> names(patK)
 [1] "199006" "199007" "199008" "199009" "199010" "199011" "199013" "199014" "199015" "199016"

> rapply(patK, class)
      1990061       1990062       1990063       1990064       1990065       1990066       1990067       1990068 
"RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" 
      1990069      19900610       1990071       1990072       1990073       1990074       1990075       1990076 
"RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" 
      1990077       1990078       1990079      19900710       1990081       1990082       1990083       1990084 
"RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" 
      1990085       1990086       1990087       1990088       1990089      19900810       1990091       1990092 
"RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" 
      1990093       1990094       1990095       1990096       1990097       1990098       1990099      19900910 
"RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" 
      1990101       1990102       1990103       1990104       1990105       1990106       1990107       1990108 
"RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" 
      1990109      19901010       1990111       1990112       1990113       1990114       1990115       1990116 
"RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" 
      1990117       1990118       1990119      19901110       1990131       1990132       1990133       1990134 
"RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" 
      1990135       1990136       1990137       1990138       1990139      19901310       1990141       1990142 
"RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" 
      1990143       1990144       1990145       1990146       1990147       1990148       1990149      19901410 
"RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" 
      1990151       1990152       1990153       1990154       1990155       1990156       1990157       1990158 
"RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" 
      1990159      19901510       1990161       1990162       1990163       1990164       1990165       1990166 
"RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" 
      1990167       1990168       1990169      19901610 
"RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" 

RStudio将patK描述为全球环境中的“大型列表(10个元素,235.6 mb)”。 patK的每个元素都是list [10]类型,每个元素都是S4 [640 x 960 x 1] (raster::RasterLayer)类型。

r r-raster
2个回答
1
投票

这是一个重现示例,其中包含RasterLayer对象列表

library(raster)
r <- raster(system.file("external/test.grd", package="raster"))
s <- list(r, r, r)
x <- list(s, s, s)
names(x) <- c("A", "B", "C")

你可以做

plot(x[["A"]][[1]])

要么

rr <- x[["A"]][[1]]
plot(rr)

所以patK还有其他的事情发生了 - 但我猜不出它是什么。即使你不能展示str(patK),你也可以展示names(patK)rapply(patK, class)

此外,当你这样做时会发生什么

x <- patK[["199006"]][[1]]
x
plot(x)

也许另一个包正在创造一个问题。你可以在干净的环境中尝试这个,没有加载包,除了raster。并尝试raster::plot(),也许看看showMethods("plot")(是否有一个方法为某个包定义的方法?)


0
投票
library(raster)
r <- system.file("external/test.grd", package="raster")
s <- stack(r, r, r)
plot(s[[1]])

在你的情况下,尝试:

plot(patk[[1]])
© www.soinside.com 2019 - 2024. All rights reserved.