GEE中质量评估(QA)波段——去云、云量统计

目录

QA波段

MODIS去云

云量统计


QA波段

MOD09用户指南官方文档:

https://lpdaac.usgs.gov/documents/925/MOD09_User_Guide_V61.pdfhttps://lpdaac.usgs.gov/documents/925/MOD09_User_Guide_V61.pdf

Note that bit 0 is the Least Significant Bit (LSB)GEE中质量评估(QA)波段——去云、云量统计_第1张图片

QA(data product quality assessment)是数据质量评估波段的简称,在不同的产品中有不同的名称,

在MOD09GA称为state_1km,在MOD09A1叫做StateQA等等。

QA波段中存储的值显示为十进制,但是该十进制数值得转换成二进制数值使用,二进制数值的不同的位表示不同的含义。

第十位为1表示为有云,为0表示无云

1033        —— 0000 0100 0000 1001        ——        有云

72            —— 0000 0000 0100 1000        ——        无云

76            —— 0000 0000 0100 1100        ——        无云,但又云阴影

位数         ——              98 7654 3210

1              —— 0000 0000 0000 0001

1>>10      —— 0000 0100 0000 0000

bitwiseAnd : 1&1=1,1&0=0,0&1=0,0&0=0

GEE中质量评估(QA)波段——去云、云量统计_第2张图片

云不仅仅影响被云遮蔽的像元,也会一定程度上影响周围的像元(例如:云的阴影会影响附近的像元;如果云是亮色的,有云阴影的像元比无云无阴影的像元暗)。

要根据实验数据要求,对数据进行处理;如果对数据要求严格,仅去云即可;如果想要最好的效果,把cloud、choud shadow、pixel adjacent to cloud都去掉。同时,一般去云的时候,还会把雪去除。

cloud(10)→ cloud shadow(2)→ pixel is adjacent to cloud(13) 

MODIS去云

var table = ee.FeatureCollection("users/gis418670826/province_ALL");
 
var dataset = ee.ImageCollection('MODIS/061/MOD09GA')
                  .filter(ee.Filter.date('2018-04-01', '2018-06-01'));
                  
var state = dataset.select('state_1km');
 
Map.centerObject(table, 4)
Map.addLayer(state.first().clip(table),{},'state_1km');
 
 
var trueColor143 =
    dataset.select(['sur_refl_b01', 'sur_refl_b04', 'sur_refl_b03']);
var trueColor143Vis = {
  min: -100.0,
  max: 8000.0,
};
 
Map.addLayer(trueColor143.first().clip(table), trueColor143Vis, 'True Color (143)');
 
function maskclouds(image) {
  var qa = image.select('state_1km');
  // 去云 cloud
  var cloudBitMask = 1 << 10;
  var mask = qa.bitwiseAnd(cloudBitMask).eq(0)
  // 去云阴影 cloud shadow
  var shadowBitMask = 1 << 2;
  var shadowMask = qa.bitwiseAnd(shadowBitMask).eq(0);
  mask = mask.and(shadowMask);
  // 去云附近的像素 Pixel is adacent to cloud
  var adjacentBitMask = 1 << 13;
  var adjacentMask = qa.bitwiseAnd(adjacentBitMask).eq(0);
  mask = mask.and(adjacentMask);
  // 去雪 show
  var snowBitMask = 1 << 15;
  var snowMask = qa.bitwiseAnd(snowBitMask).eq(0);
  mask = mask.and(snowMask);
  return image.updateMask(mask);
}


var NoCloud = dataset.map(maskclouds)
                     .select(['sur_refl_b01', 'sur_refl_b04', 'sur_refl_b03']);
 
Map.centerObject(table, 4)
Map.addLayer(NoCloud.first().clip(table),trueColor143Vis,'NoCloud');

云量统计

var table = ee.FeatureCollection("users/gis418670826/shandong_province");
var dataset = ee.ImageCollection('MODIS/061/MOD09GA')
                  .filter(ee.Filter.date('2018-04-01', '2018-06-01'));
var totalPixel = dataset.first().reduceRegion({
    crs: 'EPSG:4326',
    reducer: ee.Reducer.count(),
    geometry : table,
    scale : 1000,
  }).get('sur_refl_b01').getInfo()
print('totalPixel', totalPixel)
function maskclouds(image) {
  var qa = image.select('state_1km');
  var cloudBitMask = 1 << 10;
  var mask = qa.bitwiseAnd(cloudBitMask).eq(0)
  return image.updateMask(mask);
}
function computeCloudPixel(image) {
  var data = image.reduceRegion({
    crs: 'EPSG:4326',
    reducer: ee.Reducer.count(),
    geometry : table,
    scale : 1000,
  })
  var NoCloudPixel_Sum = data.get('sur_refl_b01').getInfo()
  var time =  image.id().getInfo();
  print(time, '无云像素数量:',NoCloudPixel_Sum, '无云像素占比:', NoCloudPixel_Sum/totalPixel)
}


             
var NoCloud = dataset.map(maskclouds)
                     .select(['sur_refl_b01', 'sur_refl_b04', 'sur_refl_b03'])
                     
var trueColor143Vis = {
  min: -100.0,
  max: 8000.0,
};

Map.centerObject(table, 4)
//Map.addLayer(NoCloud.first().clip(table),trueColor143Vis,'NoCloud');


var num = 3
// 把ImageCollection转化为List
var list = NoCloud.toList(num); 
print(list); 
 
for (var i=0; i

你可能感兴趣的:(gee,云量统计,QA,MODIS去云)