【发布时间】:2018-06-12 17:00:01
【问题描述】:
对于这个问题的基本性质,我提前道歉,但我对 mask() 函数在 R 中的 raster 包中的工作方式感到困惑。
如果这些单元格与掩码对象中的掩码值匹配(默认掩码值为 NA),则阅读该函数的文档时,听起来像栅格 x 中的单元格设置为 NA(默认值)。但是,Lovelace 等人的 Geocomputation with R 一书中对 mask() 函数的描述。 (https://geocompr.robinlovelace.net/spatial-operations.html#spatial-ras)(第 4.3.1 节)听起来好像栅格 x 中的单元格如果匹配掩码对象中的掩码值则为 KEPT,如果不匹配则设置为 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.
如果这个问题过于简单,再次道歉,但我会感谢您的帮助!
【问题讨论】:
-
help(mask)对此非常清楚:"创建一个新的 Raster* 对象,该对象具有与 x 相同的值,但 ' 中的单元格为 NA(或其他掩码值)除外掩码'。这些单元格变为 NA(或其他更新值)。“ - 混乱在哪里? -
是的,混淆只是因为我提到的书中对函数的描述似乎不同。我知道我可能应该只了解我对文档的理解,这可能只是书中的一个错字,但我不想在这本书是由学科专家写的时候就忽略它,以防我误解了以某种方式的文档。我是在 R 中处理地理空间数据的新手,我想我只是没有足够的信心自己在两者之间做出决定!
标签: r gis geospatial raster r-raster