Проблема с добавлением объектов в список в цикле - PullRequest
0 голосов
/ 13 апреля 2019

Извините, если это неуместно.Я проверил все остальные сообщения, но не смог решить.

Я пытаюсь разделить сложенный растровый объект на каждую группу и добавить их в список, как показано ниже:

library(rgdal)
satImage <- "pla18_rgbn_ndvi_7stack_16bit.img"


x <- vector("list", 35)

for (i in 1:35) {

  psi <- raster(satImage, band = i)
  x[[i]] <- psi

}

Однако этосоздает список, как показано ниже:

> View(x)
> x
[[1]]
NULL

[[2]]
NULL

[[3]]
NULL

...

[[34]]
NULL

[[35]]
class       : RasterLayer 
band        : 35  (of  35  bands)
dimensions  : 13084, 18025, 235839100  (nrow, ncol, ncell)
resolution  : 3, 3  (x, y)
extent      : 581337, 635412, 4425114, 4464366  (xmin, xmax, ymin, ymax)
coord. ref. : +proj=utm +zone=35 +ellps=WGS84 +towgs84=0,0,0,-0,-0,-0,0 +units=m +no_defs 
data source : E:/betul/35bantli/pla18_rgbn_ndvi_7stack_16bit.img 
names       : pla18_rgbn_ndvi_7stack_16bit 
values      : 55, 65535  (min, max)

Я хочу все остальные 34 группы в списке.Как я могу решить эту проблему?

Ответы [ 2 ]

1 голос
/ 21 апреля 2019

Я думаю, что вы ищете это

library(raster)
satImage <- "pla18_rgbn_ndvi_7stack_16bit.img"
s <- stack(satImage)
x <- as.list(s)

Теперь с примерами данных (пожалуйста, всегда используйте примеры данных, которые поставляются с R, когда задаете вопрос):

f <- system.file("external/rlogo.grd", package="raster") 
s <- stack(f)
x <- as.list(s)

Проверка номера "полосы"

sapply(x, bandnr)
#[1] 1 2 3

Если вы знаете количество полос (в данном случае 3), то то, что вы делали, должно работать (но приведенное выше более элегантно):

f <- system.file("external/rlogo.grd", package="raster")
n <- 3    
x <- vector("list", n)
for (i in 1:n) {
    x[[i]] <- raster(f, band = i)
}

Наконец: вы не предоставляете контекст, но вам, вероятно, будет лучше, если вы создадите RasterStack (как я покажу выше) или, что еще лучше, RasterBrick вместо списка RasterLayer объектов

0 голосов
/ 21 апреля 2019

Проблема была решена, когда я использовал файл 'tif'.

...