在GEE中使用不同位的QA
我在选择MCD64A1燃烧区产品的高质量数据时遇到了一个问题。 ,是对QA波段的描述,但我真的对不同的比特感到困惑 我要做的是选择所有 在陆地上进行高质量的观测,并根据这些观测掩盖采集。我有以下几点,但这不是正确的方法 谢谢你的帮助在GEE中使用不同位的QA,qa,masking,google-earth-engine,Qa,Masking,Google Earth Engine,我在选择MCD64A1燃烧区产品的高质量数据时遇到了一个问题。 ,是对QA波段的描述,但我真的对不同的比特感到困惑 我要做的是选择所有 在陆地上进行高质量的观测,并根据这些观测掩盖采集。我有以下几点,但这不是正确的方法 谢谢你的帮助 var geometry = /* color: #d63000 */ee.Geometry.Polygon( [[[23.821277851635955, 46.07285332090363], [23.
var geometry = /* color: #d63000 */ee.Geometry.Polygon(
[[[23.821277851635955, 46.07285332090363],
[23.274708027417205, 45.952681148559265],
[24.11378883796408, 45.554067690813184],
[24.89381813483908, 45.84372892769175],
[24.17146706062033, 46.25167241706428]]]);
var dataset = ee.ImageCollection('MODIS/006/MCD64A1')
.filterBounds(geometry)
.map(function(image){return image.clip(geometry)})
.filter(ee.Filter.calendarRange(7,7,'month'));
var burnedArea = dataset.select('BurnDate','QA');
//good quality observations
var good= (function(img) {
var goodQA = img.select("QA").eq(1);
return img.updateMask(burnedArea .and(goodQA));
});
编辑
此外,我尝试了以下方法,没有错误,也没有数据
var good= function(img){
var qa = img.select(['QA']);
var mask = qa.bitwiseAnd(0).eq(1).and(
qa.bitwiseAnd(1).eq(1)).and(
qa.bitwiseAnd(2).eq(1));
return img.updateMask(mask);
};
我认为此代码可能适合您的需要:
var good = function(img) {
var qa = img.select(['QA']);
var mask = qa.bitwiseAnd(3).eq(3);
return img.updateMask(mask);
}
burnedArea = burnedArea.map(good);
基本上,这段代码只是修改编辑代码中的行var mask=…
。行后burnedArea=burnedArea.map(良好)
,您的burnedArea
变量将仅显示QA
波段中具有“位0值1和位1值1”的像素
由于数字3
具有二进制形式的11
(位0值1和位1值1),qa.bitwiseAnd(3)
所做的是将qa
波段中的任何像素转换为四个值中的一个:
- 如果
像素具有“位0值1和位1值1”(例如3、7、11、15等),则QA
的值3
- 如果
像素具有“位0值0和位1值1”(例如2、6、10等),则QA
2的值
- 如果
像素具有“位0值1和位1值0”(例如1、5、9等),则QA
1的值
- 如果
像素具有“位0值0和位1值0”(例如0、4、8等),则QA
0的值
.eq(3)
部分将值为3
的像素转换为1
,其余部分转换为0
希望这能消除您对“bits”内容的困惑。您所说的“陆地上的高质量观测”是什么意思?它们是位0处“QA”值为1(即陆地网格单元)、位1处“QA”值为1(即足够的有效数据)和位2处“QA”值为1(映射周期缩短)的像素吗?你想隐藏还是显示这些像素?嗨,凯文。嗨,凯文,我想要陆地网格单元(位0,值1),有足够的数据(位1,值1),如果观测不可靠(位2,值1),则缩短映射周期。这些是我想要保留的像素。如果我理解正确,您想要保留具有(位0值1和位1值1)或(位0值1、位1值0和位2值1)的像素。是这样吗?嗨@Kevin,从你的通讯录,我想保留位0值1和位1值1的像素dear@Kevin,谢谢你的回答。解释得很好。尽管如此,我仍然对如何选择给定值感到困惑,因为您的代码使用了值3。选择该值的逻辑是什么?你能扩展你之前的答案,这样这个价值选择就被纳入了吗?嗨,菲利普,我相信你想要得到什么将决定你选择哪个价值。3的值是@geo_dd在其评论中告诉我的@geo_dd位于具有“陆地网格单元”(对应于位0处的值1)和“足够有效数据”(位1处的值1)的像素之后。您可以在代码编辑器中找到有关
MODIS/006/MCD64A1
集合的QA
波段的每一位含义的更多信息。