TransWikia.com

Earth Engine modis QA and charting

Geographic Information Systems Asked on March 4, 2021

I have to mask all the cloudy pixels, and because the QA info is stored in bits I am trying to decode them using this code. However when I chart the masked timeseries, I get an error: Error generating chart: Data column(s) for axis #0 cannot be of type string. Is this code robust for masking modis cloudy pixels?

var M = ee.ImageCollection("MODIS/006/MOD09GA"),
geometry1 = /* color: #d63000 */ee.Geometry.Point([10.644168108701706, 64.4188479841206]),
single = ee.Image("MODIS/006/MOD09GA/2012_10_11");

 var getQABits = function(single, start, end, newName) {
// Compute the bits we need to extract.
var pattern = 0;
for (var i = start; i <= end; i++) {
   pattern += Math.pow(2, i);
}
return single.select([0], [newName])
              .bitwiseAnd(pattern)
              .rightShift(start);
 };

// Select the QA band
var QA = single.select('state_1km');

// Get the cloud_state bits and find cloudy areas.
var cloud = getQABits(QA, 0, 1, 'cloud_state')
                .expression("b(0) == 0 || b(0) == 2 ");

// Get the land_water_flag bits.
var landWaterFlag = getQABits(QA, 3, 5, 'land_water_flag');

// Create a mask that filters out deep ocean and cloudy areas.
//var mask = landWaterFlag.neq(7).and(cloud.not());

var filter = function(image){ 
var mask = landWaterFlag.neq(7).and(cloud.not())
return ee.Image(image).updateMask(mask)
};

var B1= M.filterDate('2010-04-01', '2014-10-31').select('sur_refl_b01')
var gooddata = B1.map(filter)


 // chart b1 all quality data
 var chartb1 = ui.Chart.image.seriesByRegion({
 imageCollection: B1, 
 regions: geometry1, 
 reducer: ee.Reducer.mean(),
  scale: 1000,
  band: 'sur_refl_b01',
 })
 print(chartb1,'chartb1')

// chart b1 masked quality data
var chartb1mask = ui.Chart.image.seriesByRegion({
imageCollection: gooddata, 
regions: geometry1, 
reducer: ee.Reducer.mean(),
scale: 1000,
band: 'sur_refl_b01',
})
print(chartb1mask,'chartb1mask')

One Answer

You get an error when charting because you don't have any unmasked data. Your cloud expression is incorrect. According to the data catalog, values that are 0 and 3 are assumed to not be clouds. So your cloud expression should probably be something like this:

b(0) != 0 && b(0) != 3

https://code.earthengine.google.com/e97e12fc7d5f6e6a783017385d378c3a

Answered by Daniel Wiell on March 4, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP