用聚合到较低分辨率的另一个栅格掩蔽一个栅格

Masking one raster by another that was aggregated to lower resolution

我有两个栅格:一个 ("log"),我想用它来屏蔽另一个 ("roi") 中的像素。

> log
class       : RasterLayer 
dimensions  : 11957, 13462, 160965134  (nrow, ncol, ncell)
resolution  : 30, 30  (x, y)
extent      : 621465, 1025325, 8464135, 8822845  (xmin, xmax, ymin, ymax)
coord. ref. : +proj=utm +zone=21 +south +datum=WGS84 +units=m +no_defs +ellps=WGS84 +towgs84=0,0,0 
data source : C:\Users\drappap\AppData\Local\Temp\Rtmp21P4c1\raster\r_tmp_2017-02-06_095634_10544_50628.grd 
names       : layer 
values      : 1.1, 1.1  (min, max)

> roi
class       : RasterLayer 
dimensions  : 30, 47, 1410  (nrow, ncol, ncell)
resolution  : 50, 50  (x, y)
extent      : 717330, 719680, 8641184, 8642684  (xmin, xmax, ymin, ymax)
coord. ref. : +proj=utm +zone=21 +south +datum=WGS84 +units=m +no_defs +ellps=WGS84 +towgs84=0,0,0 
data source : in memory
names       : layer 
values      : 2.132891, 14.65027  (min, max)

Log 的分辨率比 roi 高,所以在尝试屏蔽之前,我将 log 聚合到 roi 的分辨率,如下所示:

require(spatial.tools)
require(raster)
log.new<-spatial_sync_raster(log, roi, method="bilinear")
roi.new<-mask(roi, log.new, inverse=T)

我想屏蔽掉任何与对数像素有轻微重叠的 roi 像素。从下面的两张图片可以看出,情况并非如此。问题是,当我将日志像素从 30m 聚合到 50m(以匹配 roi 像素)时,一些单独的 30m 日志像素(在下图中用钢笔突出显示)在聚合到 50m 时丢失(因此未裁剪) out in the roi image) 因为它们没有占 50m 像素的足够大的比例。

如何修改代码,使任何与对数像素稍微重叠的 roi 像素都被屏蔽掉?

您需要 resample 数据集才能获得相同的分辨率(30x30 或 50x50)

rs<-resample(r1,r2,method='bilinear') # you can  choose your own method