mask - 哪个函数适用于云掩蔽

标签 mask google-earth-engine

我正在编写一个函数来屏蔽 Sentinel-2 数据的混浊像素。

函数一:

function cloudMask(image) {
  var qa = image.select('QA60');
  var cloudBitMask = 1 << 10; ###
  var cirrusBitMask = 1 << 11; ###
  var mask = qa.bitwiseAnd(cloudBitMask).eq(0).and(
             qa.bitwiseAnd(cirrusBitMask).eq(0));
  return image.updateMask(mask).divide(10000);
}

功能二:

function cloudMask(image) {
  var qa = image.select('QA60');
  var cloudBitMask = Math.pow(2, 10); ###
  var cirrusBitMask = Math.pow(2, 11); ###
  var mask = qa.bitwiseAnd(cloudBitMask).eq(0).and(
             qa.bitwiseAnd(cirrusBitMask).eq(0));
  return image.updateMask(mask).divide(10000);
}

哪个函数是正确的? 两个函数的区别在于 cloudBitMaskcirrusBitMask 是如何定义的。

最佳答案

这两个函数都是正确的,因为它们做的是完全相同的事情。 1 << 10Math.pow(2, 10)将产生一个值为 1024 的数字.

由于我们通常同时使用不透明云和卷云来进行云掩蔽,因此我建议保持代码简短明了,如下所示:

function cloudMask(image) {
    var qa = image.select('QA60');
    var allCloudBitMask = (1 << 10) + (1 << 11);
    var mask = qa.bitwiseAnd(allCloudBitMask).eq(0);
    return image.updateMask(mask);
}

关于mask - 哪个函数适用于云掩蔽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54192530/

相关文章:

load - 将 loadMask() 应用于 extjs 中的单个元素?

javascript - 从 Google Earth Engine 上的 NEX-GDPDP 产品导出每日气候数据

javascript - 在 Earth Engine Javascript API 中按 ID 加入两个要素集合

javascript - 谷歌地球引擎: Region of Landsat Image

c++ - 如何 "zero"OpenCV 中图像蒙版部分内的所有内容

python - OpenCV/Python : Mask on fftimage - Why do we need two channels?

html - CSS:Firefox 上的 -webkit-mask-image

python - 从 numpy 数组中获取给定半径内的值

python - 异常 : Server returned HTTP code: 404 --- testing app with Google App Engine and Google Earth Engine

javascript - 将 Google Earth Engine 应用程序嵌入到网页中