我想在我的几何区域(称为“表格”)中绘制仅适用于农业像素(从“ lc”图像集合中获得)的modis燃烧区域产品的燃烧像素计数。我在文档中找不到任何内容来指示您可以在2个图像集合之间进行这样的查询。有人有建议吗?
我尝试过使用遮罩,但是似乎只能在单个ee.Image上使用,而不能在不同图像集合之间使用。代码如下所示:
var modba = ee.ImageCollection('MODIS/006/MCD64A1').filterDate('2017-01-
01', '2017-12-31').select('BurnDate')
var modbaN = ee.ImageCollection('MODIS/006/MCD64A1').filterDate('2017-01-
01', '2017-12-31').select('Uncertainty')
var lc = ee.ImageCollection('MODIS/006/MCD12Q1').filterDate('2017-01-01',
'2017-12-31').select('LC_Type1')
var AgOnly = lc.map(function(img) {
var ag = img.select('LC_Type1');
return ag.eq(12);
//Would also like to maybe have 2 or 3 LC types to select here
});
var mask_ba = modba.map(function(img){
return img.updateMask(AgOnly);
});
var bats =
//ui.Chart.image.seriesByRegion(modba, table, ee.Reducer.count());
ui.Chart.image.seriesByRegion(mask_ba, table, ee.Reducer.count());
print(bats);
var unts =
ui.Chart.image.seriesByRegion(modbaN, table, ee.Reducer.mean());
print(unts);
答案 0 :(得分:0)
据我了解,您要做的是用modba
图像集合中的相应图像遮盖AgOnly
图像集合中的每个图像(每月有12张图像或一个图像)(全年只有1张图片)。那完全可行。
在提供的代码中,您updateMask
使用AgOnly
(图像集合),这是GEE不允许的。
您需要做的只是制作AgOnly
的图像,然后再用于updateMask
。
尝试一下:
var AgOnly = lc.map(function(img) {
var ag = img.select('LC_Type1');
return ag.eq(12);
//Would also like to maybe have 2 or 3 LC types to select here
}).max();
max()
方法会将您的图像集合转换为图像。如果愿意,您也可以使用min()
或mean()
,它们的效果都一样,无论如何AgOnl
中只有一张图像。
答案 1 :(得分:0)
在更宽的日期范围和几种土地覆盖类型下仍然可以使用。
在这种情况下,只需保留计算AgOnly
的旧代码,然后修改计算mask_ba
的代码,如下所示:
var mask_ba = modba.map(function(img){
var img_year = img.date().format('YYYY');
var start_date = ee.Date(img_year.cat('-01-01'));
var end_date = start_day.advance(1, 'year');
var Agri_this_year = AgOnly.filterDate(start_date, end_date).max();
return img.updateMask(Agri_this_year);
});
基本上,上面的代码只是提取当前img
的年份,然后使用filterDate
方法从AgOnly
图像集中选择该年份的土地类型覆盖,最后应用updateMask
。
相同的想法可以应用于其他土地覆被类型。
希望这会有所帮助。