对于这个问题的基本性质,我提前道歉,但我对 mask() 函数在 R 中的 raster 包中的工作方式感到困惑。
阅读该函数的文档,如果这些单元格与掩码对象中的掩码值匹配(默认掩码值为 NA),则听起来像栅格 x 中的单元格设置为 NA(默认值)。但是, Lovelace 等人的Geocomputation with R一书中对 mask() 函数的描述。(https://geocompr.robinlovelace.net/spatial-operations.html#spatial-ras)(第 4.3.1 节)听起来好像栅格 x 中的单元格与掩码对象中的掩码值匹配,并设置NA,如果他们不这样做。他们举了这个例子:
mask(elev, rmask, maskvalue = TRUE)
"we only want to keep those values of elev which are TRUE in rmask"
因此我的困惑。如果有人能澄清哪种解释是正确的,我将不胜感激。
我想知道的原因是我想用来自包含数据质量代码的同一 MODIS 产品的栅格来掩盖包含百分比树覆盖的 MODIS 数据的栅格。我只想在“质量”栅格中保留“树覆盖”栅格中具有“优质”质量代码的那些值。澄清 mask() 函数的工作原理将帮助我确定是否需要使用代码 [1] 或代码 [2] 来实现我想要的:
[1]
good <- c(0,1,2,3,4,5...etc.) # The codes in the quality raster that represent good quality data
tree_cover_masked <- mask(tree_cover, quality, maskvalue = good, inverse = TRUE)
# i.e. set cells in tree_cover to NA if they match any value OTHER THAN the "good" values in the quality raster.
# This is the code I would use based on my interpretation of the function documentation.
[2]
tree_cover_masked <- mask(tree_cover, quality, maskvalue = good)
# i.e. keep values in tree_cover that match "good" values in the quality raster, and set all others to NA
# This is the code I would use based on my interpretation of Lovelace et al.
如果这个问题非常简单,再次道歉,但我会感谢您的帮助!