我有一个光栅和一个形状文件:
library(cartography)
library(sf)
library(raster)
r <- raster(matrix(rnorm(10*12), nrow=10), xmn = -180, xmx= 180, ymn = -90, ymx= 90)
mtq <- st_read(system.file("gpkg/mtq.gpkg", package="cartography"), quiet = TRUE)我想将光栅r与shapefile mtq相交,并将相应的像素作为NA (用NA替换光栅中像素的值)并返回光栅。
发布于 2022-03-02 15:46:17
您可能正在寻找mask;它既生活在陈旧的{raster}中,也生活在闪亮的新{terra}中。
请注意,我必须重写您的r对象,因为它与{地图}中的马提尼克矢量对象不完全兼容。
编辑:如果,如注释中所示,您正在寻找用NAs替换多边形(而不是外部)内的值,我的答案仍然是raster::mask(),只是稍微调整一下掩蔽对象(您需要在栅格范围上反多边形)。
library(cartography)
library(sf)
library(raster)
mtq <- st_read(system.file("gpkg/mtq.gpkg", package="cartography"), quiet = TRUE) %>%
dplyr::summarise() # dissolve internal boundaries
r <- raster(matrix(rnorm(10*12), nrow=10),
xmn = st_bbox(mtq)["xmin"],
xmx= st_bbox(mtq)["xmax"],
ymn = st_bbox(mtq)["ymin"],
ymx= st_bbox(mtq)["ymax"],
crs = st_crs(mtq))
plot(r) # original raster - full extent + range

# the masking object:
mask <- st_bbox(r) %>% # take extent of your raster...
st_as_sfc() %>% # make it a sf object
st_set_crs(st_crs(mtq)) %>% # in CRS of your polygon
st_difference(mtq) %>% # intersect with the polygon object
st_as_sf() # interpret as sf (and not sfc) object
result <- r %>%
mask(mask)
plot(result)
plot(st_geometry(mtq), add = T)

https://stackoverflow.com/questions/71325088
复制相似问题