Существует ли функция R для построения отдельных слоев растровых слоев? - PullRequest
0 голосов
/ 28 марта 2019

У меня есть следующий растровый слой:

> 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 МБ)» в Глобальной среде. Каждый элемент patK имеет тип list [10], а каждый из этих элементов имеет тип S4 [640 x 960 x 1] (raster::RasterLayer).

Ответы [ 2 ]

1 голос
/ 30 марта 2019

Вот воспроизводимый пример со списком списка объектов 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 голосов
/ 28 марта 2019
library(raster)
r <- system.file("external/test.grd", package="raster")
s <- stack(r, r, r)
plot(s[[1]])

в вашем случае попробуйте:

plot(patk[[1]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...