Google EarthEngineのLARGEリージョンの要約統計量

Aug 18 2020

南米のNDVI値を下げる問題に取り組んでいます。ピクセルスケールを非常に大きな数に増やして解像度を失うことなく、この大陸の平均NDVI(単一値)を知りたいと思っています。私の考えは、より小さな領域を作成し、辞書を作成してグリッドから平均をとることができるある種のグリッドを配置しようとしていました。私の論理がここで完全に健全であるかどうかはわかりませんが、私は大丈夫な軌道に乗っていることを望んでいます。GEEはこれを行うことができますか?もしそうなら、このタスクを単純化する関数を作成する方法はありますか?

このコードは明らかな理由で機能しません...システムのタイムアウトとメモリの制限。

var sam_mean = fit_year_ndvi.clip(sam).reduceRegion({
  reducer: ee.Reducer.mean(),
  geometry: sam,
  scale: 1000,
  maxPixels: 1e12
});

これが私のリンクです: https://code.earthengine.google.com/b8486d4ef347cde7555614254b143ec7

これが私のアセットリンクです: https://code.earthengine.google.com/?asset=users/anna_odell/continents

回答

1 KevinReid Aug 19 2020 at 03:05

私の考えは、より小さな領域を作成し、辞書を作成してグリッドから平均をとることができるある種のグリッドを配置しようとしていました。

これは必要ないはずです— Earth EngineはreduceRegion、効率的に計算するために操作をすでに細分化しています。ただし、完了するまでにさらに時間がかかる場合があります。これに対する解決策は、操作をバッチ(エクスポート)ジョブとして実行することです。最終結果が数値だけで、より複雑なデータではない場合は、それをフィーチャ内に配置してエクスポート可能にすることができます。

var collection_for_export = ee.FeatureCollection([
  ee.Feature(null, {'sam_mean': sam_mean})
]);
Export.table.toDrive({
  collection: collection_for_export,
  fileFormat: 'CSV',
});

私はあなたが持っていることにも気づきます:

var sam_mean = fit_year_ndvi.clip(sam).reduceRegion({
  geometry: sam,
  ...

すでに指定された領域でのみ動作する.clip(sam)ため、は不要reduceRegionです。個別にクリッピングすると、追加の計算が行われ、メリットはありません。