【问题标题】:Calculating loss area of elevation classes in Google Earth Engine在谷歌地球引擎中计算高程等级的损失面积
【发布时间】:2021-04-12 13:44:27
【问题描述】:

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

此外,我想对 7 个不同的高程等级重复此计算。是否可以在 GEE 中为此计算编写函数?

【问题讨论】:

    标签: google-earth-engine


    【解决方案1】:

    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
      });
    

    【讨论】:

    • 谢谢!!!我是初学者,正在学习 GEE。我会更加关注如何在代码中组合不同的方法,尤其是在ReduceRegion中。
    猜你喜欢
    • 1970-01-01
    • 2019-01-05
    • 1970-01-01
    • 1970-01-01
    • 2019-07-11
    • 2013-12-05
    • 1970-01-01
    • 2014-04-05
    • 1970-01-01
    相关资源
    最近更新 更多