在 Google Earth Engine 中计算高程等级的损失面积

问题描述

我想计算 GEE 中某个高程等级的损失面积。当我运行下面的代码 1 时,它给出与我的研究区域中的总损失面积相同的数量代码 2。我也在代码 1 中切换了 arealossclass3,并没有工作。此外,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
  });