Ich möchte ein Raster basierend auf den Werten eines Polygons ausblenden: dh alle Werte des Rasters, die nicht von den Polygonen abgedeckt werden, auf NA setzen. Es scheint jedoch, dass raster::mask()
Zellen maskiert werden (dh auf NA gesetzt werden), auch wenn sie teilweise bedeckt sind?
Dies ist vergleichbar mit der Frage: Zuschneiden eines Raster durch ein Polygon - Zellen fehlen , die teilweise außerhalb des Polygons sind , aber im Gegensatz zu crop()
, mask()
nicht über die snap="out"
Option.
Überprüfen Sie: Hier berührt der rechte Punkt des Dreiecks eine Zelle, diese Zellen werden jedoch ausgeblendet.
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)