Tôi muốn che giấu một raster dựa trên các giá trị của đa giác: tức là, đặt thành NA tất cả các giá trị của raster không được bao phủ bởi các đa giác. Tuy nhiên, dường như raster::mask()
che dấu các tế bào (tức là đặt chúng thành NA) ngay cả khi chúng được che phủ một phần?
Điều này tương tự với câu hỏi: Cắt một raster bởi một đa giác - các ô bị thiếu một phần bên ngoài đa giác , nhưng không giống như crop()
, mask()
không có snap="out"
tùy chọn.
Kiểm tra: ở đây điểm bên phải của hình tam giác chạm vào một ô, tuy nhiên các ô đó bị che đi.
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)