растеризовать объект RasterBrick - PullRequest
0 голосов
/ 28 мая 2018

Я пытаюсь rasterize SpatialPolygon объект с помощью RasterBrick объекта.В документации по функции raster::rasterize явно сказано, что это разрешено.Вот что я делаю

# load the raster package
library("raster")

# create a raster brick object using the example from the brick function documentation
b <- brick(system.file("external/rlogo.grd", package="raster"))

# create a SpatialPolygon object using the example from the function documentation
Sr1 = Polygon(10*cbind(c(2,4,4,1,2),10*c(2,3,5,4,2)))
Sr2 = Polygon(10*cbind(c(5,4,2,5),10*c(2,3,2,2)))
Sr3 = Polygon(10*cbind(c(4,4,5,10,4),c(5,3,2,5,5)))
Sr4 = Polygon(10*cbind(c(5,6,6,5,5),c(4,4,3,3,4)), hole = TRUE)

Srs1 = Polygons(list(Sr1), "s1")
Srs2 = Polygons(list(Sr2), "s2")
Srs3 = Polygons(list(Sr3, Sr4), "s3/4")
SpP = SpatialPolygons(list(Srs1,Srs2,Srs3), 1:3)

# crop
clip1 = crop(b, extent(SpP))

# rasterize returns an error, but documentation says it should return a RasterBrick object
clip2 = rasterize(SpP, b, mask = T)
Error in v[, r] <- rrv : 
     number of items to replace is not a multiple of replacement length

# however, if I used only one layer, all would be fine
clip2 = rasterize(SpP, b[[1]], mask = T)

Конечно, я мог бы зацикливаться на слоях кирпича, но, насколько я понимаю, это побеждало бы назначение объекта кирпича.

Я хочуиспользуйте clip2, чтобы затем получить гистограмму значений пикселей в слоях.

vals = getValues(clip2)

Может кто-нибудь сказать мне, почему я получаю эту ошибку и как ее эффективно обойти?

1 Ответ

0 голосов
/ 06 июня 2018

Согласно приведенному выше комментарию @ clbieganek, это действительно ошибка в текущей версии CRAN 2.6-7.Автор Майкл Самнер говорит, что это должно быть исправлено в следующем выпуске, см. https://www.mail-archive.com/r-help@r-project.org/msg249242.html.

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