reduceRegion
Wenn Sie Statistiken zu Pixelwerten in einer Region eines ee.Image
abrufen möchten, verwenden Sie image.reduceRegion()
.
Dadurch werden alle Pixel in den Regionen auf eine Statistik oder eine andere kompakte Darstellung der Pixeldaten in der Region reduziert (z.B. Histogramm). Die Region wird als Geometry
dargestellt. Das kann ein Polygon mit vielen Pixeln oder ein einzelner Punkt sein. In diesem Fall gibt es nur ein Pixel in der Region. In beiden Fällen ist die Ausgabe, wie in Abbildung 1 dargestellt, eine Statistik, die aus den Pixeln in der Region abgeleitet wird.

ee.Reducer
, das auf ein Bild und eine Region angewendet wird.Ein Beispiel für die Verwendung von reduceRegion()
zum Abrufen von Pixelstatistiken in einer Region eines Bildes ist die Ermittlung der durchschnittlichen Spektralwerte eines 5-jährigen Landsat-Composites innerhalb der Grenzen des Nadelwalds der Sierra Nevada (siehe Abbildung 2):
// Load input imagery: Landsat 7 5-year composite. var image = ee.Image('LANDSAT/LE7_TOA_5YEAR/2008_2012'); // Load an input region: Sierra Nevada. var region = ee.Feature(ee.FeatureCollection('EPA/Ecoregions/2013/L3') .filter(ee.Filter.eq('us_l3name', 'Sierra Nevada')) .first()); // Reduce the region. The region parameter is the Feature geometry. var meanDictionary = image.reduceRegion({ reducer: ee.Reducer.mean(), geometry: region.geometry(), scale: 30, maxPixels: 1e9 }); // The result is a Dictionary. Print it. print(meanDictionary);
Um die Berechnung zu erzwingen, reicht es aus, das Ergebnis zu drucken, das im Code-Editor als Dictionary
in der Konsole angezeigt wird. Die Ausgabe sollte in etwa so aussehen:
B1: 25.406029716816853 B2: 23.971497014238988 B3: 22.91059593763103 B4: 54.83164133293403 B5: 38.07655472573677 B6_VCID_2: 198.93216428012906 B7: 24.063261634961563

In diesem Beispiel wird die Reduzierung durch Angabe der reducer
(ee.Reducer.mean()
), der geometry
(region.geometry()
), der scale
(30 Meter) und der maxPixels
für die maximale Anzahl von Pixeln angegeben, die in den Reduzierer eingegeben werden sollen. Bei reduceRegion()
-Aufrufen sollte immer eine Skala angegeben werden. Das liegt daran, dass bei komplexen Verarbeitungsabläufen, die Daten aus verschiedenen Quellen mit unterschiedlichen Skalen umfassen können, die Skalierung der Ausgabe nicht eindeutig anhand der Eingaben bestimmt werden kann. In diesem Fall wird die Skala standardmäßig auf 1 Grad festgelegt, was in der Regel zu unbefriedigenden Ergebnissen führt. Auf dieser Seite finden Sie weitere Informationen dazu, wie die Earth Engine mit Skalierung umgeht.
Es gibt zwei Möglichkeiten, den Maßstab festzulegen: durch Angabe des Parameters scale
oder durch Angabe eines CRS und einer CRS-Transformation. Weitere Informationen zu CRS und CRS-Transformationen finden Sie im Glossar. Die meanDictionary
-Reduktion (oben) entspricht beispielsweise Folgendem:
// As an alternative to specifying scale, specify a CRS and a CRS transform. // Make this array by constructing a 4326 projection at 30 meters, // then copying the bounds of the composite, from composite.projection(). var affine = [0.00026949458523585647, 0, -180, 0, -0.00026949458523585647, 86.0000269494563]; // Perform the reduction, print the result. print(image.reduceRegion({ reducer: ee.Reducer.mean(), geometry: region.geometry(), crs: 'EPSG:4326', crsTransform: affine, maxPixels: 1e9 }));
Im Allgemeinen reicht es aus, die Skala anzugeben, was zu einem besser lesbaren Code führt. Earth Engine bestimmt, welche Pixel in den Reduzierer eingegeben werden sollen, indem die Region zuerst gerastert wird. Wenn ein Maßstab ohne ein CRS angegeben wird, wird die Region in der nativen Projektion des Bildes gerastert und auf die angegebene Auflösung skaliert. Wenn sowohl ein CRS als auch ein Maßstab angegeben sind, wird die Region anhand dieser Informationen gerastert.
Pixel in der Region
Pixels werden gemäß den folgenden Regeln, die im angegebenen Maßstab und der angegebenen Projektion angewendet werden, als zur Region gehörend eingestuft (und gewichtet):
- Ungewichtete Reduzierer (z.B.
ee.Reducer.count()
oderee.Reducer.mean().unweighted()
): Pixel werden berücksichtigt, wenn sich ihr Schwerpunkt in der Region befindet und die Maske des Bilds nicht null ist. - Gewichtete Verringerer (z.B.
ee.Reducer.mean()
): Pixel werden berücksichtigt, wenn mindestens (ungefähr) 0,5% des Pixels in der Region liegen und die Maske des Bilds nicht null ist.Ihr Gewicht ist das Minimum aus der Maske des Bilds und dem (ungefähren) Anteil des Pixels, der von der Region abgedeckt wird.
Der Parameter maxPixels
ist erforderlich, damit die Berechnung erfolgreich durchgeführt werden kann. Wenn dieser Parameter im Beispiel fehlt, wird ein Fehler zurückgegeben, der in etwa so aussieht:
Es gibt mehrere Möglichkeiten, diese Fehler zu beheben: Sie können maxPixels
erhöhen, wie im Beispiel, scale
erhöhen oder bestEffort
auf „wahr“ setzen. Dadurch wird automatisch eine neue (größere) Skala berechnet, sodass maxPixels
nicht überschritten wird. Wenn Sie maxPixels
nicht angeben, wird der Standardwert verwendet.