Grundlegendes zu tileScale in Earth Engine
In vielen Earth Engine-Funktionen wie Image.reduceRegionsoder Image.samplegibt es ein Argument namens tileScale. Die API-Dokumentation interpretiert es im Allgemeinen wie folgt:
Ein Skalierungsfaktor, der zum Reduzieren der Größe von Aggregationskacheln verwendet wird. Die Verwendung einer größeren tileScale (z. B. 2 oder 4) kann Berechnungen ermöglichen, bei denen standardmäßig nicht genügend Speicher vorhanden ist.
Obwohl dies gut dokumentiert zu sein scheint, verstehe ich die Auswirkung von tileScale auf das Endergebnis der Berechnung immer noch nicht.
- Was macht
tileScaledas - Does
tileScaleChunks das Bild vor der Berechnung durchführen? - Hat es einen Einfluss auf die Skala?
Unten finden Sie ein Codebeispiel zum Arbeiten ( Codelink ).
// Getting the image of the region of interest
var roi = ee.Geometry.Point([1.864578244475683, 14.492292970253338]);
var image = ee.ImageCollection('LANDSAT/LC08/C01/T1_TOA')
.filterDate('2019-01-01', '2019-01-31')
.filterBounds(roi)
.select(['B5', 'B4', 'B3'])
.toBands()
.rename(['B5', 'B4', 'B3']);
// Checking it out
print(image);
// Define the visualization parameters.
var vizParams = {
bands: ['B5', 'B4', 'B3'],
min: 0,
max: 0.5,
gamma: [0.95, 1.1, 1]
};
// Center the map and display the image.
Map.centerObject(image, 9);
Map.addLayer(image, vizParams, 'false color composite');
// Computing the band means at 30 meters and tileScale of 1: (Computation succeeded)
var control = image.reduceRegion({
reducer:ee.Reducer.mean(),
scale : 30,
tileScale: 1,
maxPixels:1e13
});
print(control, 'first scenario');
// Computing the band means at 5 meters and tileScale of 1: (Computation succeeded)
var scenario2 = image.reduceRegion({
reducer:ee.Reducer.mean(),
scale: 5,
tileScale: 1,
maxPixels: 1e13
});
print(scenario2, 'second scenario');
// Computing the band means at 5 meters and tileScale of 16: (Computation Error: Computation timed out.)
var scenario3 = image.reduceRegion({
reducer:ee.Reducer.mean(),
scale: 5,
tileScale: 16,
maxPixels: 1e13
});
print(scenario3, 'third scenario');
Antworten
Was macht tileScale? Zerlegt tileScale das Bild, bevor die Berechnung durchgeführt wird?
Ja.
Wenn Sie eine Operation ausführen reduceRegion, bei der Sie einen oder mehrere reduzierte Werte aus einem Bild berechnen, werden die Bildpixel, die in den Reduzierer gelangen, in Kacheln berechnet (genau wie die Kacheln, die zum Anzeigen auf einer Karte verwendet werden) wird auf diese Pixelkacheln angewendet, um Zwischenergebnisse zu erzeugen, und dann werden diese Zwischenergebnisse miteinander kombiniert.
Wenn Sie einen höheren tileScaleWert festlegen, wird die Größe dieser Kacheln verringert. Dies bedeutet, dass:
- Jede Kachel verwendet weniger Speicher (daher ist es weniger wahrscheinlich, dass der Berechnung der Speicher ausgeht).
- Es gibt mehr Kacheln, deren Einrichtung mehr Zeit in Anspruch nimmt (daher dauert die Berechnung länger).
Hat es einen Einfluss auf die Skala?
Wenn Sie die Auflösung / Pixelgröße des Bildes meinen: Nein. Wenn die Berechnung erfolgreich ist, sollte das Ergebnis unabhängig davon immer gleich sein tileScale(mit Ausnahme kleiner Unterschiede aufgrund der Reihenfolge der Gleitkommaoperationen).