Earth Engine 是強大的分析工具,但您可能需要匯出分析結果,才能將圖表、圖片、地圖等內容嵌入報表或出版品。在本節中,您將瞭解如何建立圖表和圖片,以便匯出並在其他軟體中查看。回想一下,在前一節中,您使用下列程式碼將 NDVI 頻帶新增至集合中的每張圖片,其中 l8
變數參照 Landsat 8 TOA 反射率集合:
程式碼編輯器 (JavaScript)
// Import the Landsat 8 TOA image collection. var l8 = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA'); // Map a function over the Landsat 8 TOA collection to add an NDVI band. var withNDVI = l8.map(function(image) { var ndvi = image.normalizedDifference(['B5', 'B4']).rename('NDVI'); return image.addBands(ndvi); });
製作圖表
假設您想取得特定位置的 NDVI 隨時間變化的圖表,如要製作這類圖表,第一步是選擇感興趣的位置。取得點繪圖工具 (),在感興趣的區域中建立單一點幾何圖形,即可建立點。(如果已有匯入項目,請先將滑鼠游標懸停在「幾何匯入」上,然後按一下「+ 新增圖層」)。
在農業、落葉林、一年生草地或其他土地覆蓋的區域中,找出具有年度週期性的點。為匯入作業命名
roi
。(如要瞭解如何透過程式建立幾何圖形,請參閱這個頁面)。
現在,我們來使用 roi
點,在該點下方的像素中製作 NDVI 隨時間變化的圖表。如要在 Earth Engine 中製作圖表,請使用 ui.Chart
套件。(進一步瞭解如何在 Earth Engine 中製作圖表)。
具體來說,如要製作一段時間內的圖表,可以使用 ui.Chart.image.series()
方法:
程式碼編輯器 (JavaScript)
// Create a chart. var chart = ui.Chart.image.series({ imageCollection: withNDVI.select('NDVI'), region: roi, reducer: ee.Reducer.first(), scale: 30 }).setOptions({title: 'NDVI over time'}); // Display the chart in the console. print(chart);
我們為 roi
幾何選取農業區中的某個點,因此產生的圖表類似於圖 10。請注意,圖表建構函式的參數包含縮減器和比例,例如 reduceRegion()
。由於我們提供的點做為區域時,只能與一個像素相交,因此使用「first」縮減器就足夠了。如果區域較大,您應使用「平均值」或其他縮減器,指定如何匯總像素。另請注意,如要查看圖表,只要列印即可。

離題:Landsat 的簡單雲層遮罩
您可能會注意到,這個圖表中的 NDVI 值時間序列有點雜亂。這可能是因為雲層。為改善這項影響,Earth Engine 針對具備熱感應帶的 Landsat 感應器,提供雲層遮罩演算法:ee.Algorithms.Landsat.simpleCloudScore()
。這項函式會以 Landsat TOA 反射率影像做為輸入內容,並新增名為 cloud
的波段,這是像素中雲量的指數,範圍從 0 到 100,分別代表雲量最少到最多。修改您對集合對應的函式,即可在雲端索引上使用任意門檻 (20),稍微清理圖表:
程式碼編輯器 (JavaScript)
var cloudlessNDVI = l8.map(function(image) { // Get a cloud score in [0, 100]. var cloud = ee.Algorithms.Landsat.simpleCloudScore(image).select('cloud'); // Create a mask of cloudy pixels from an arbitrary threshold. var mask = cloud.lte(20); // Compute NDVI. var ndvi = image.normalizedDifference(['B5', 'B4']).rename('NDVI'); // Return the masked image with an NDVI band. return image.addBands(ndvi).updateMask(mask); }); print(ui.Chart.image.series({ imageCollection: cloudlessNDVI.select('NDVI'), region: roi, reducer: ee.Reducer.first(), scale: 30 }).setOptions({title: 'Cloud-masked NDVI over time'}));
圖 11 顯示經過雲層遮蓋的結果。請注意,時間序列看起來較為平滑,但仍可能包含受雲層影響的像素。調整雲端索引的門檻,並觀察圖表中的時間序列,瞭解這個門檻對結果的影響。

匯出圖片
您已瞭解如何匯出 Earth Engine 計算的資料圖表,但要如何匯出整張圖片呢?舉例來說,假設您已建構最綠的像素合成項目,如上一節所述:
程式碼編輯器 (JavaScript)
var greenest = cloudlessNDVI.qualityMosaic('NDVI');
這段程式碼與您先前執行的程式碼唯一不同之處,在於現在我們使用的是雲端遮蓋的集合。您可以使用 Export
套件,匯出這個檔案的子集 (由區域定義)。(進一步瞭解如何從 Earth Engine 匯出點陣和向量資料)。舉例來說,如要匯出可輕鬆嵌入其他文件的圖片,請按照先前的做法建立視覺化圖片,然後匯出至 Google 雲端硬碟資料夾:
程式碼編輯器 (JavaScript)
// Create a 3-band, 8-bit, color-IR composite to export. var visualization = greenest.visualize({ bands: ['B5', 'B4', 'B3'], max: 0.4 }); // Create a task that you can launch from the Tasks tab. Export.image.toDrive({ image: visualization, description: 'Greenest_pixel_composite', scale: 30 });
執行這段程式碼時,請注意「Tasks」(工作) 分頁中會建立新工作。 如要啟動匯出設定對話方塊,請按一下「Tasks」分頁中的「RUN」按鈕。設定完工作後,請按一下對話方塊中的「執行」按鈕,開始匯出。但請注意,這麼做會導致下列情況:
如果您在匯出時未提供 region
引數,請務必謹慎操作,因為如果為 scale
設定相對較小的值,且地圖縮放比例涵蓋大範圍區域,您可能會將非常大的圖片匯出至雲端硬碟資料夾。如需更多詳細資料和可能的設定參數清單,請參閱「Docs」分頁中的 Export.image.toDrive()
說明文件。
以上是 Earth Engine API 的簡介!您現在已瞭解許多最常見的 Earth Engine 功能,應該可以自信地進行更複雜的分析。請務必閱讀說明文件,並在論壇中搜尋其他問題的解答。祝您編寫程式一切順利!