在 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
});
我想在 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
});