Quiero enmascarar un ráster basado en los valores de un polígono: es decir, establecer en NA todos los valores del ráster que no estén cubiertos por los polígonos. Sin embargo, parece que raster::mask()
enmascara las células (es decir, las establece en NA) incluso si están parcialmente cubiertas.
Esto es similar a la pregunta: Recortar un ráster por un polígono: faltan celdas que están parcialmente fuera del polígono , pero a diferencia crop()
, mask()
no tiene la snap="out"
opción.
Verifique: aquí el punto correcto del triángulo toca una celda, pero esas celdas están enmascaradas.
library(raster)
library(sp)
r <- raster(xmn=1, xmx=5, ymn=1, ymx=5, nrows=4, ncols=4)
r[] <- 1:length(r)
Sr1 = Polygon(cbind(c(2,4,4,1,2),c(2,3,5,4,2)))
Sr2 = Polygon(cbind(c(4.1,4,2),c(2,3,2)))
SpP = SpatialPolygons(list(Polygons(list(Sr1), "s1"), Polygons(list(Sr2), "s2")), 1:2)
plot(mask(r, SpP))
plot(SpP, add=TRUE)