Biosmosis
Biosmosis

Reputation: 23

Is there an R function for plotting individual rasterLayers?

I have the following 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)

When I try to plot it, I get the following error:

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

What does this mean? Am I using the function incorrectly or is there another function I should use?

EDIT: Details on 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 describes patK as "Large list (10 elements, 235.6 mb)" in the Global Environment. Each element of patK is of type list [10], and each of those elements is of type S4 [640 x 960 x 1] (raster::RasterLayer).

Upvotes: 0

Views: 116

Answers (2)

Robert Hijmans
Robert Hijmans

Reputation: 47536

Here is a reproduces example with a list of list of RasterLayer objects

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

You can do

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

Or

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

So there is something else going on with patK --- but I cannot guess what it is. Even if you cannot show str(patK), you can show names(patK), rapply(patK, class)

Also, what happens when you do

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

Perhaps another package is creating a problem. Can you try this in a clean environment with no package loaded except for raster. And try raster::plot(), and perhaps look at showMethods("plot") (is there a method defined for a list by some package?)

Upvotes: 1

Geo-sp
Geo-sp

Reputation: 1704

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

in your case, try:

plot(patk[[1]])

Upvotes: 0

Related Questions