如要解讀從 Earth Engine 取得的科學結果,就必須瞭解 Earth Engine 如何處理比例。這裡的「比例」指的是像素解析度。與其他 GIS 和影像處理平台不同,分析規模取決於輸出內容,而非輸入內容。具體來說,當您要求結果、要顯示的圖片或統計資料時,您會指定資料輸入分析的比例。如圖 1 所示。

圖片金字塔
Earth Engine 中的圖像資產會以圖像金字塔的形式,以多種比例存在。金字塔政策 (圖 1 中以虛線表示) 會決定如何根據下一個較低層級的 2x2 像素區塊匯總結果,計算金字塔中特定層級的每個像素。對於連續值圖像,金字塔上層的像素值是下一層次像素的平均值。對於離散值圖片,金字塔上層的像素值是下一層次圖片的取樣值 (通常是左上方像素)。
圖像金字塔的最低層級代表擷取至 Earth Engine 時,原始解析度的圖像資料。在擷取期間,系統會根據金字塔政策匯總資料,以建立更高層級的金字塔。系統會匯總資料,直到整個圖片可放入 256x256 像素的圖塊為止。當您在程式碼中使用圖片時,Earth Engine 會選擇金字塔的某個層級,其縮放比例最接近且小於或等於分析作業指定的縮放比例,並視需要重新取樣 (預設使用最近鄰法)。
分析規模
Earth Engine 的分析規模取決於「拉取」的基礎。系統會根據輸出內容,決定要求運算作業輸入內容的規模。舉例來說,如果您在程式碼編輯器或 geemap 地圖元素中新增圖片,地圖的縮放等級會決定從圖片金字塔要求輸入內容的比例。如要執行其他運算,請將 scale
指定為引數。例如,使用 Landsat 圖像的 NIR 波段,其原始解析度為 30 公尺:
var image = ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_044034_20140318').select('B4'); var printAtScale = function(scale) { print('Pixel value at '+scale+' meters scale', image.reduceRegion({ reducer: ee.Reducer.first(), geometry: image.geometry().centroid(), // The scale determines the pyramid level from which to pull the input scale: scale }).get('B4')); }; printAtScale(10); // 0.10394100844860077 printAtScale(30); // 0.10394100844860077 printAtScale(50); // 0.09130698442459106 printAtScale(70); // 0.1150854229927063 printAtScale(200); // 0.102478988468647 printAtScale(500); // 0.09072770178318024
import ee import geemap.core as geemap
image = ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_044034_20140318').select('B4') def print_at_scale(scale): display( f'Pixel value at {scale} meters scale', image.reduceRegion( reducer=ee.Reducer.first(), geometry=image.geometry().centroid(), # The scale determines the pyramid level from which to pull the input scale=scale, ).get('B4'), ) print_at_scale(10) # 0.10394100844860077 print_at_scale(30) # 0.10394100844860077 print_at_scale(50) # 0.09130698442459106 print_at_scale(70) # 0.1150854229927063 print_at_scale(200) # 0.102478988468647 print_at_scale(500) # 0.09072770178318024
請注意,在本例中,固定位置 (圖片重心) 的像素值會因比例而異。這是因為不同比例會選取不同的金字塔層級。對於相似的比例,最鄰近重採樣結果會傳回相同的像素值。重要的是,變更比例時會要求不同的圖片輸入內容。
當您將圖片新增至地圖以進行視覺化時,Earth Engine 會根據縮放等級決定比例。請參考以下簡單範例,該範例只會顯示 Landsat 圖像:
var image = ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_044034_20140318'); Map.centerObject(image, 17); Map.addLayer(image, {bands: ['B4', 'B3', 'B2'], max: 0.35}, 'image');
import ee import geemap.core as geemap
image = ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_044034_20140318') m = geemap.Map() m.center_object(image, 17) m.add_layer(image, {'bands': ['B4', 'B3', 'B2'], 'max': 0.35}, 'image') m
地圖會從最靠近原始解析度的縮放開始,讓您清楚看到原始解析度的像素。若縮放到足夠遠的距離,系統不會顯示相同的像素,而是會顯示圖像金字塔的較高層級。另外值得一提的是,程式碼編輯器和 geemap 地圖使用的是 maps mercator (EPSG:3857) 投影法,因此在顯示圖像金字塔之前,也需要重新投影。如要進一步瞭解 Earth Engine 如何處理投影,請參閱投影文件。