Earth Engine 中的雲端最佳化 GeoTIFF (COG)

Google Earth Engine 可讓您處理儲存在 Google Cloud Storage (GCS) bucket 中的光柵資料。使用雲端最佳化 GeoTIFF (COG),即可直接在 Earth Engine 中存取及分析資料,不必將像素擷取到 Earth Engine 的資產商店。

這種雲端優先方法有許多優點,特別是管理大型資料集,或是將 Earth Engine 整合至更廣泛的 Google Cloud 工作流程或外部工具和平台時。

為什麼要使用 Cloud Storage 和 COG?

  • 彈性和互通性:將資料保存在標準 Cloud Storage bucket 中,其他工具和服務即可存取。無論是直接上傳資料,還是從 Earth Engine 匯出,Cloud Storage 都是 Earth Engine 和外部工作流程的單一事實來源。
  • 資料控制項和輸出:將資料儲存在 Cloud Storage,可提供標準物件儲存庫管理功能。這樣一來,您就能使用 Cloud Storage 功能 (例如要求者付費或公開 bucket) 下載、遷移或共用資料,並使用標準 Cloud IAM 管理存取權。
  • 彈性調度:避免 Earth Engine 儲存空間用量超出上限。Cloud Storage 提供近乎無限的自助式儲存空間擴充功能,可擴充至 PB 級。
  • 無需等待擷取:註冊 COG 的速度很快,因為 Earth Engine 只會從檔案標頭讀取中繼資料 (例如投影和維度),用於建立索引和驗證。實際的像素資料會保留在 Cloud Storage 中,並在運算期間隨選讀取,因此不需要另外執行擷取工作。

Earth Engine 中的 COG 工作流程

Earth Engine 支援 Cloud Storage 上 COG 的雙向工作流程:您可以直接從 GCS 將 COG 讀取至 Earth Engine,也可以將 Earth Engine 的運算結果直接寫入 GCS 做為 COG。

從 Cloud Storage 讀取 COG

如要將 GCS 代管的 COG 匯入 Earth Engine,有兩種做法:

  1. 直接載入 (ee.Image.loadGeoTIFF): 使用 GCS URI 直接載入單一圖片。最適合快速測試、臨時分析或暫時性資料:

    JavaScript

    var image = ee.Image.loadGeoTIFF('gs://google-sample-bucket/my_image.tif');
    

    Python

    image = ee.Image.loadGeoTIFF('gs://google-sample-bucket/my_image.tif')
    

    如需完整範例,請參閱「Cloud GeoTIFF 中的圖片」。

  2. 已註冊的資產:使用上傳資訊清單,將一或多個 COG 註冊為 Earth Engine 資產 (請參閱 COG 註冊指南)。建議您在正式版工作流程中採用這種做法,特別是建構圖片集時。

功能 直接載入 (loadGeoTIFF) 已註冊的素材資源 (資訊清單)
設定方式 無 (僅限 GCS URI) 資訊清單 (Python 用戶端、CLI 或 REST)
效能 標準 (讀取時朗讀標題) 最佳化 (建立時建立索引)
管理 未建立任何素材資源 計入資產數量配額,而非儲存空間。
用途 原型設計、臨時分析 需要快速讀取作業的正式環境工作流程。

將 COG 寫入 Cloud Storage

如要將 Earth Engine 運算結果儲存為 Cloud Storage bucket 中的 COG,請使用 Export.image.toCloudStorage 批次匯出函式 (請參閱匯出圖片),並將 formatOptions 中的 cloudOptimized 參數設為 true。這會指示 Earth Engine 編譯圖片,並直接寫入 GCS bucket,成為完全符合規範的 COG。

支援的 Cloud Storage bucket 位置

如要讓 Earth Engine 存取 Cloud Storage bucket,bucket 必須位於下列其中一個資料中心區域或多區域:

  • us 多區域
  • 包含 us-central1 的任何美國雙區域
  • us-central1 區域

如果 bucket 位於其他區域資料中心,Earth Engine 會拒絕註冊和讀取要求。Earth Engine 存取的 COG 僅儲存在 Google Cloud Storage bucket 中。系統不支援外部雲端儲存空間供應商和一般 HTTP 網址。

Earth Engine COG 匯出規格

使用 Export.image.toCloudStorage 從 Earth Engine 匯出分析結果時,Earth Engine 的內建匯出工具會自動套用下列標準:cloudOptimized: trueformatOptions

  • 檔案結構:生成具有內部分塊 (TILED=YES) 的 BigTIFF (BIGTIFF=YES),並將所有概觀複製到檔案開頭。
  • 自動總覽:如果輸出光柵尺寸為 512x512 像素或更大,Earth Engine 會自動建立五個等級的 2 的次方總覽 ([2, 4, 8, 16, 32])。Earth Engine 會根據輸出像素資料類型,動態選取總覽重新取樣方法:浮點圖片採用立方重新取樣,所有其他整數或離散圖片則採用最近鄰重新取樣。
  • 預設壓縮和圖塊:Earth Engine 匯出的 COG 採用 256x256 像素區塊圖塊和 LZW 壓縮 (COMPRESS=LZW)。在 formatOptions 中,無法自訂壓縮和圖塊尺寸。
  • 自動分片:如果匯出的點陣圖很大 (超過 4 GiB 未壓縮),Earth Engine 會自動將匯出內容分成多個名為 baseFilename-yMin-xMin 的空間圖塊 (請參閱匯出大型檔案)。
  • 覆寫 sharding 限制:如要將大型光柵 (未壓縮時上限為 16 GiB,每邊 131,072 像素) 匯出為單一檔案,不進行 sharding,請在 formatOptions 中指定 fileDimensions。每個維度都必須是圖塊大小的正整數倍數 (預設為 256,例如 [65536, 65536])。由於 fileDimensions 設定的是檔案大小上限,而非輸出定界框,因此傳遞較大的上限會強制匯出至單一檔案,而不必精確計算格線。您也可以傳遞 skipEmptyFiles: true,避免產生空白背景圖塊。
  • 最佳化取捨:設定大型匯出作業時,請評估檔案數量和匯出速度之間的取捨。指定較小的 fileDimensions 或 shardSize 會產生更多檔案片段,但可最大程度地提高後端 worker 的平行處理能力,進而縮短匯出完成時間。相反地,如果覆寫限制來產生單一大型檔案,雖然可以簡化檔案管理和資料共用作業,但由於單一檔案組合和 I/O 瓶頸,可能會增加匯出執行時間。如果匯出的單一檔案 COG 非常大,接近 16 GiB 的未壓縮限制 (尤其是壓縮效果不佳的圖片),在總覽和 COG 組合期間,也可能超過暫存空間容量。如果匯出失敗,建議您將檔案分割成較小的檔案,或在外部轉換標準 GeoTIFF 匯出檔案。

在 Earth Engine 以外自訂 COG 建立作業

雖然直接使用 cloudOptimized: true 匯出,是為大多數工作流程產生立即可用 COG 的最簡單方法,但您也可以匯出標準 GeoTIFF (cloudOptimized: false,預設),並使用 GDAL 等外部工具自行轉換為 COG。如果需要執行下列操作,兩步驟匯出和轉換工作流程就非常實用:

  • 自訂壓縮和版面配置:根據資料集調整區塊大小 (例如 512x512)、預測器、總覽重新取樣方法或壓縮轉碼器 (例如 ZSTD) (請參閱「準備 COG」)。
  • 避免大量匯出單一檔案時發生容量錯誤:匯出時略過產生總覽和重寫 COG 版面配置,可減少記憶體和暫時儲存空間的負擔,因此大量匯出單一檔案時,較不容易達到容量上限。
  • 縮短 Earth Engine 匯出執行時間:將總覽建構和 COG 格式設定作業卸載至自己的運算環境,即可縮短 Earth Engine 匯出階段的時間。

費用考量事項和儲存空間類別

分析已註冊的 COG 資產時,從 Earth Engine 讀取資料不會產生 Cloud Storage 讀取作業費用,也不會產生 Google Cloud 專案的資料擷取費用。

Cloud Storage 的計費項目主要為標準每月靜態資料儲存空間 (GB/月),以及任何外部用戶端資料移轉或網路輸出費用 (取決於 bucket 位置和用戶端網路設定)。

儲存空間級別建議

  • 標準儲存空間 (建議):標準儲存空間最適合用於進行中的 Earth Engine 工作流程。由於沒有最短儲存時間規則,您可以自由覆寫、更新或刪除暫時性 COG,不會產生提前刪除罰款。此外,如果您或協作者使用桌面 GIS 軟體、GDAL 指令碼或 Earth Engine 以外的機器學習筆記本存取 bucket,Standard Storage 不會產生零售檢索附加費用。
  • Nearline、Coldline 和 Archive Storage:所有 Cloud Storage 級別都提供與 Standard Storage 相同的低延遲存取和處理量,因此在 Earth Engine 中使用較冷的儲存空間級別時,不會影響讀取效能。雖然 Earth Engine 運算作業也可以讀取這些級別,且不會收取零售資料擷取費用,但 Cloud Storage 零售規則會強制執行嚴格的最短儲存時間 (Nearline 為 30 天、Coldline 為 90 天、Archive 為 365 天)。如果在最短保留期限前修改或刪除檔案,系統會收取提前刪除附加費用。此外,從任何外部用戶端工具存取冷儲存物件,都會產生高昂的資料擷取附加費用。

如需詳細的零售定價和最短時間政策,請參閱「Google Cloud Storage 定價指南」。

高階工作流程

在 Earth Engine 中使用 COG 的一般工作流程包含下列步驟:

匯入外部資料:

  • 最佳化:使用外部工具 (例如 GDAL、本機工作站指令碼或雲端處理管道),將光柵檔案轉換為 COG 格式。
  • 上傳:將 COG 上傳至位於 us-central1 或美國多區域的支援 Cloud Storage bucket。
  • 權限:確認您和所有專案協作者都具備 Cloud Storage 檔案讀取權限 (請參閱 COG 權限)。
  • 註冊:使用 Python 用戶端程式庫、earthengine 指令列工具或 REST API,將 COG 註冊為 Earth Engine 資產 (請參閱 COG 註冊)。

匯出結果:

  • 匯出:從 Earth Engine 批次匯出至 Cloud Storage,並將 cloudOptimized 設為 true (請參閱匯出圖片)。
  • 註冊 (選用):將匯出的 COG 重新註冊至 Earth Engine,做為新資產,以便進一步分析 (請參閱 COG 註冊)。

準備好了嗎?請按照詳細的 COG 註冊指南,註冊第一個資產。