Я пытаюсь 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)
Может кто-нибудь сказать мне, почему я получаю эту ошибку и как ее эффективно обойти?