【问题标题】:Google Earth Engine how can I return an image of each iteration [closed]Google Earth Engine如何返回每次迭代的图像[关闭]
【发布时间】:2018-03-17 20:57:41
【问题描述】:

我正在尝试使用 Google 地球引擎中的 TRMM 数据集绘制最大无雨天数。我通过遍历集合来做到这一点,如果没有下雨,则将一个添加到单元格中(下面的代码)。下雨时,该值乘以 0,因此“计数器”被重置。然后我想将每次迭代的每个结果存储在一个Image集合中,然后选择最大值以获得最长的连续干燥期。

但这就是理论。当我将其放入脚本中时,在将一次迭代的图像添加到列表时出现错误。有谁知道这是为什么以及如何解决?

代码:

var list = [];
function drylength(current, previous){
  var mask = current.remap([0], [1], 0,"precipitation").rename('precipitation');
  var sum = mask.add(previous).multiply(mask);

  list.push(sum);
  return sum;
}

var dataset = TRMM
.filterDate("2015-01-01","2015-02-01")
.sort('system:time_start:');

var totalPrecipitation = dataset.iterate(drylength, dataset.max()
.remap([0], [0], 0, "precipitation")
.rename('precipitation'));

print(list);
print(totalPrecipitation);
Map.addLayer(ee.Image(totalPrecipitation), imageVisParam);

此外,列表中似乎只存储了 3 个项目,这让我假设迭代比逐个计算所有图像的字面迭代更复杂?这是错误的图像:

如果图像不可见或搜索引擎会写入错误:

Failed to decode JSON.
Error: Field 'value' of object '{"type":"ArgumentRef","value":null}' is missing or null.
Object: {"type":"ArgumentRef","value":null}.

和:

Unknown variable references: [_MAPPING_VAR_0_0, _MAPPING_VAR_0_1].

【问题讨论】:

标签: javascript iteration google-earth-engine


【解决方案1】:

像这样使用多值结果:

function drylength(current, previous) {
  previous = ee.Dictionary(previous)
  var mask = current.remap([0], [1], 0,"precipitation").rename('precipitation');
  var sum = mask.add(previous.get('sum')).multiply(mask);

  var list = previous.get('list')
  list = list.push(sum);
  return ee.Dictionary({sum: sum, list: list})
}
...
var totalPrecipitation = dataset.iterate(drylength, {sum: max, list: ee.List([])})

【讨论】:

    【解决方案2】:

    iterate() 函数在服务器上运行,但您尝试推入的列表是客户端列表;那行不通。如果你把它做成一个ee.List,你也许可以让它工作,但你必须把它放到上一个结果中(使用previous作为字典来保存两者)。

    【讨论】:

    • 感谢您的回答!我应该在服务器端创建一个列表确实很有意义。我尝试将列表转换为 ee.List() 但显然它不是那么简单:/“您必须将其放入上一个结果中(使用以前的作为字典来保存两者)”是什么意思?那是我不完全理解的东西。
    猜你喜欢
    • 1970-01-01
    • 2019-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-21
    • 2019-03-29
    • 1970-01-01
    相关资源
    最近更新 更多