【问题标题】:How to modify a rasterlayers band in Google Earth Engine?如何修改 Google Earth Engine 中的栅格层波段?
【发布时间】:2023-02-25 10:38:15
【问题描述】:

我想根据已知的缩放因子缩放卫星图像的波段。 在 Google Earth Engine 中,我可以执行以下行:

image.select(nir).multiply(0.0000275).add(-0.2);

在这些函数的文档中,如果乘法和加法修改原始图像,我不清楚。

但是,如果我尝试以下行,则会出现右值错误,因为该属性是只读的:

image.select(nir) = image.select(nir).multiply(0.0000275).add(-0.2);

因为我可以将第一个语句分配给一个全新的图像,但那样我就会错过所有其他波段。

那么第一条语句的实际效果是什么?

【问题讨论】:

    标签: javascript google-earth-engine


    【解决方案1】:

    在这些函数的文档中,如果乘法和加法修改原始图像,我不清楚。

    在地球引擎中,几乎没有什么你可以做修改现有的东西。极少数例外是执行诸如创建或删除资产之类的功能。

    那么第一条语句的实际效果是什么?

    Earth Engine 客户端根据您的指示构造一个表达式,然后丢弃它,因为您没有对它做任何事情。

    image.select(nir) = image.select(nir).multiply(0.0000275).add(-0.2);
    

    达到这个效果的方法是

    image = image.addBands({
      srcImg: image.select("nir").multiply(0.0000275).add(-0.2)),
      overwrite: true,
    });
    

    请注意,这仍然不是修改图像。当 Earth Engine 执行此操作时,它会创建一个新的具有不同波段的图像;原始图像不变。在您的 JavaScript(客户端)中,效果是将 image 中尚未执行的 EE 表达式替换为其中包含更多算术的表达式。

    overwrite”也不意味着就地修改;它只是意味着“让输出图像中的带命名为nir,即使输入图像中已经有一个名为nir的带”,而默认行为是新图像具有两个带,新的名为nir_1

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-16
      • 1970-01-01
      • 2023-02-10
      • 2015-01-10
      • 2013-06-29
      • 1970-01-01
      相关资源
      最近更新 更多