Statistiche di riepilogo su una GRANDE regione in Google Earth Engine
Sono alle prese con un problema di riduzione dei valori NDVI per il Sud America. Sono interessato a sapere qual è la media NDVI per questo continente (valore singolo), senza dover perdere la risoluzione aumentando la mia scala di pixel a un numero molto grande. Il mio pensiero stava cercando di posizionare un tipo di griglia che potesse creare regioni più piccole e quindi creare un dizionario e prendere la media dei mezzi dalla griglia. Non sono sicuro che la mia logica sia del tutto sana qui, ma spero di essere su una buona pista. GEE sarebbe in grado di farlo e, in tal caso, esiste un modo per creare una funzione per semplificare questo compito?
Questo codice non funziona per ovvi motivi ... timeout del sistema e limiti di memoria.
var sam_mean = fit_year_ndvi.clip(sam).reduceRegion({
reducer: ee.Reducer.mean(),
geometry: sam,
scale: 1000,
maxPixels: 1e12
});
Ecco il mio link: https://code.earthengine.google.com/b8486d4ef347cde7555614254b143ec7
Ecco il mio collegamento alla risorsa: https://code.earthengine.google.com/?asset=users/anna_odell/continents
Risposte
Il mio pensiero stava cercando di posizionare un tipo di griglia che potesse creare regioni più piccole e quindi creare un dizionario e prendere la media dei mezzi dalla griglia.
Questo non dovrebbe essere necessario: Earth Engine suddividerà già la tua reduceRegion
operazione per calcolarla in modo efficiente. Tuttavia, potrebbe essere necessario più tempo per completarlo. La soluzione a questo problema è eseguire l'operazione come lavoro batch (esportazione). Se il risultato finale è solo il numero e non qualche dato più complesso, puoi inserirlo in una funzionalità per renderlo esportabile:
var collection_for_export = ee.FeatureCollection([
ee.Feature(null, {'sam_mean': sam_mean})
]);
Export.table.toDrive({
collection: collection_for_export,
fileFormat: 'CSV',
});
Noto anche che hai:
var sam_mean = fit_year_ndvi.clip(sam).reduceRegion({
geometry: sam,
...
Non .clip(sam)
è necessario perché reduceRegion
opera già solo sulla regione specificata e il ritaglio separato farà calcoli extra senza alcun vantaggio.