问题描述
我想计算 GEE 中某个高程等级的损失面积。当我运行下面的代码 1 时,它给出与我的研究区域中的总损失面积相同的数量,代码 2。我也在代码 1 中切换了 arealoss 和 class3,并没有工作。此外,elevation(1),(2),.. 所有类都给出相同的结果。如何计算每个高程等级的损失面积?
代码 1:
var class3 = elevation.eq(3).selfMask();
var stats1 = arealoss.reduceRegion({ reducer:
ee.Reducer.sum(),geometry: class3.geometry(),scale: 30,maxPixels: 1e9,bestEffort: true });
代码 2:
var stats2 = arealoss.reduceRegion({
reducer: ee.Reducer.sum(),geometry: peru.geometry(),bestEffort: true });
此外,我想对 7 个不同的高程等级重复此计算。是否可以在 GEE 中为此计算编写函数?
解决方法
class3.geometry()
只是为您提供图像的足迹 - 已知有数据的区域。它根本不关心掩码或像素的值。
您需要的是根据您的分类掩盖您正在减少的图像。当您这样做时,reducer(在每个像素的基础上工作)将忽略所有被屏蔽的像素。
var class3 = elevation.eq(3);
var stats1 = arealoss
.updateMask(class3) // This hides all non-class-3 pixels in arealoss
.reduceRegion({
reducer: ee.Reducer.sum(),geometry: peru.geometry(),// This only needs to be big enough,not exact
scale: 30,maxPixels: 1e9,bestEffort: true
});