reduceRegion
如要取得 ee.Image
區域中像素值的統計資料,請使用 image.reduceRegion()
。這會將區域中的所有像素縮減為統計資料,或其他簡潔的區域像素資料表示法 (例如直方圖)。該區域會以 Geometry
表示,可能是多邊形,包含許多像素,也可能是單一點,在這種情況下,該區域中只有一個像素。無論是哪種情況,如圖 1 所示,輸出內容都是從該區域的像素衍生而來的統計資料。

ee.Reducer
套用至圖片和區域。如要使用 reduceRegion()
取得圖片區域內的像素統計資料,建議您在內華達山脈針葉林的邊界內,找出 5 年 Landsat 合成影像的平均光譜值 (如圖 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);
如要強制執行運算,只要輸出結果即可,程式碼編輯器會在控制台中以 Dictionary
顯示結果。輸出內容應如下所示:
B1: 25.406029716816853 B2: 23.971497014238988 B3: 22.91059593763103 B4: 54.83164133293403 B5: 38.07655472573677 B6_VCID_2: 198.93216428012906 B7: 24.063261634961563

請注意,在本例中,系統會透過提供 reducer
(ee.Reducer.mean()
)、geometry
(region.geometry()
)、scale
(30 公尺) 和 maxPixels
來指定縮減作業,以便將最多像素數量輸入至縮減器。請務必在 reduceRegion()
呼叫中指定比例。這是因為在複雜的處理流程中,可能會涉及不同來源的資料,且這些資料的比例不同,因此無法從輸入內容明確判斷輸出的比例。在這種情況下,比例預設為 1 度,通常會產生不理想的結果。如要進一步瞭解 Earth Engine 如何處理比例,請參閱這個頁面。
您可以透過兩種方式設定比例:指定 scale
參數,或指定 CRS 和 CRS 轉換。(如要進一步瞭解 CRS 和 CRS 轉換,請參閱詞彙表)。舉例來說,上述 meanDictionary
縮減運算相當於以下運算:
// 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 }));
一般來說,只要指定比例即可,這樣就能產生更易讀的程式碼。Earth Engine 會先將區域進行掃描,進而判斷要將哪些像素輸入至縮減器。如果指定比例而未指定 CRS,系統會以圖片的原生投影方式將區域轉為指定解析度的點陣圖。如果同時指定 CRS 和比例,系統會根據這些值將區域轉為點陣圖。
該區域的像素
系統會根據下列規則,判斷像素是否位於區域內 (並計算權重),並套用指定的比例和投影方式:
- 未加權的縮減器 (例如
ee.Reducer.count()
或ee.Reducer.mean().unweighted()
):如果像素的中心點位於區域內,且圖片的遮罩值非零,則會納入該像素。 - 加權縮減器 (例如
ee.Reducer.mean()
):如果像素中至少有 (約) 0.5% 位於區域內,且圖片遮罩值不為零,則會納入像素;其權重為圖片遮罩值和區域所涵蓋的像素 (約) 小數位。
您必須使用 maxPixels
參數,才能讓運算成功。如果在示例中省略這個參數,系統會傳回錯誤,如下所示:
您可以透過多種方式解決這些錯誤:增加 maxPixels
(如範例所示)、增加 scale
,或是將 bestEffort
設為 true,系統就會自動計算新的 (較大) 比例,以免超過 maxPixels
。如未指定 maxPixels
,系統會使用預設值。