在 Google Earth Engine 中计算高程损失面积 类

Calculating loss area of elevation classes in Google Earth Engine

我想在 GEE 中计算某个海拔 class 的损失面积。当我 运行 下面的代码 1 时,它给出的数量与我研究区域的总损失面积相同,代码 2。我切换了 arealoss[=代码 1 中的 30=]3 也没有用。此外,elevation(1), (2), .. 所有 classes 给出相同的结果。如何计算每个海拔的损失面积 class?

代码 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(),
            scale: 30, 
            maxPixels: 1e9,
            bestEffort: true });

此外,我想对 7 个不同的海拔 class 重复此计算。是否可以在 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
  });