javascript 如何在Google Earth引擎中修改栅格图层波段?

p4rjhz4m  于 2023-02-28  发布在  Java
关注(0)|答案(1)|浏览(165)

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

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

在这些函数的文档中,我不清楚乘法和加法是否修改了原始图像。
但是,如果我尝试下面的行,我会得到一个右值错误,因为该属性是只读的:

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

当然,我可以将第一个语句分配给一个全新的图像,但这样我将错过所有其他波段。
那么,第一个语句的实际效果是什么呢?

z9smfwbn

z9smfwbn1#

在这些函数的文档中,我不清楚乘法和加法是否修改了原始图像。
在地球引擎中,你几乎不能做任何事情来修改现有的东西。很少有例外,比如创建或删除资源的函数。
那么,第一个语句的实际效果是什么呢?
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,
});

注意,这仍然不是修改图像,当地球引擎执行这个命令时,它会创建一个具有不同波段的新图像;在JavaScript(客户端)中,效果是用一个包含更多算术运算的表达式替换image中尚未执行的EE表达式。
"overwrite"也不意味着就地修改;其简单地表示"即使在输入图像中已经存在名为nir的波段,也让输出图像中的波段取名称nir",而默认行为将是新图像具有两个波段,新的波段命名为nir_1

相关问题