命令列工具

earthengine 工具是公用程式,可讓您透過指令列管理 Earth Engine 資產和工作。安裝 Python API 時,系統會自動安裝這個套件。如要檢查工具是否已安裝且正常運作,請在指令列中輸入下列指令:

    earthengine

如果工具已正確安裝,系統會列印可用指令的簡短摘要。如要取得特定指令的說明,請使用:

    earthengine command -h

首次安裝 Python API 時,您需要使用下方所述的 authenticate 指令登入。以下各節將詳細說明可用的指令。

服務帳戶憑證

如要搭配服務帳戶憑證使用 CLI,請使用 service_account_file 旗標指向含有服務帳戶金鑰的 JSON 檔案。

    earthengine --service_account_file=service_account_creds.json

在 Colab 中使用

Earth Engine 指令列工具已預先安裝,可在 Google Colab 中使用。

驗證

每次啟動新的 Colab 工作階段,或虛擬機器因閒置而過期時,都必須進行驗證 (憑證不會跨工作階段儲存)。

匯入 Python 用戶端程式庫,並呼叫 ee.Authenticate() 觸發驗證流程。按照提示完成驗證。Colab 中的預設 auth_mode 為 colab,如需其他選項,請參閱驗證指南。

import ee
ee.Authenticate()

執行指令

如要執行 Earth Engine CLI 等指令列公用程式,請在指令呼叫前加上驚嘆號。

!earthengine -h

設定雲端專案

使用 --project 選項,為每個 earthengine 指令設定雲端專案。

!earthengine --project my-project <command>

或者,您也可以使用 set_project 指令,設定所有 earthengine 呼叫使用的預設專案。專案會新增至憑證檔案 (~/.config/earthengine/credentials),並用於後續指令,除非由 --project 選項覆寫。為每個新的 Colab 工作階段設定預設專案,或在虛擬機器因閒置而過期時設定 (憑證不會跨工作階段儲存)。

!earthengine set_project my-project

指令參考資料

驗證

驗證指令列工具和 Python 用戶端程式庫,以便存取 Earth Engine。範例:

    earthengine authenticate

Earth Engine 使用 OAuth 2.0 通訊協定驗證用戶端。earthengine authenticate 指令會提示您使用網路瀏覽器完成驗證程序。

如果使用預設 gcloud 驗證模式,則需要安裝 gcloud。如要瞭解可透過 auth_mode 參數使用的其他驗證模式,請參閱驗證指南。

acl

列印或更新 Earth Engine 資產的存取控管清單 (ACL)。ACL 可控管誰能讀取或寫入資產。範例:

    earthengine acl get projects/my-project/assets/asset_id
    earthengine acl set public projects/my-project/assets/asset_id
    earthengine acl ch -u username@gmail.com:R projects/my-project/assets/asset_id

get 子指令會輸出 ACL 的 JSON 說明。set 子指令會設定檔案中提供的 ACL,格式同樣為 JSON。您可以將 ACL 從一個資產複製到其他資產,方法是儲存 get 的輸出內容,並提供給 set。

set 子指令也接受兩個特殊 ACL 名稱:

  • private:移除擁有者以外所有人的權限。
  • public:將讀取權限授予所有使用者。

ch 子指令可讓您個別變更 ACL。如要授予讀取的權限,請指定 -u username@gmail.com:R;如要授予寫入權限,請指定 -u username@gmail.com:W;如要移除使用者的權限,請指定 -d username@gmail.com。特殊使用者 ID AllUsers 可用於授予或撤銷所有使用者的讀取的權限。(請注意,撤銷 AllUsers 權限「不會」撤銷您可能也授予個別使用者的任何其他權限)。

資產

列印或更新與 Earth Engine 資產相關聯的中繼資料。範例:

    earthengine asset info projects/my-project/assets/asset_id
    earthengine asset set -p name=value projects/my-project/assets/asset_id
    earthengine asset setbands projects/my-project/assets/asset_id band1 band2

info 子指令會以 JSON 格式輸出資產的詳細資訊,包括中繼資料。set 子指令會設定資產的個別中繼資料屬性。setbands 子指令會更新資產的波段名稱。

您設定的中繼資料屬性值可以是數字或字串。使用 --property 或 -p 旗標設定屬性名稱時,請以等號分隔屬性名稱和值。系統會自動偵測資料類型,您也可以在屬性名稱前加上 (string)、(number) 或 (date),明確指定資料類型。舉例來說,以下程式碼會將字串值屬性設為 "42":

    earthengine asset set -p '(string)name=42' projects/my-project/assets/asset_id

(本範例中的引號可防止殼層解譯括號。視殼層和平台而定,這些引號不一定必要。

如要為分類帶視覺化建立特殊屬性,可以將值和顏色清單儲存為以半形逗號分隔的字串。舉例來說,如要為名為 landcover 的波段設定調色盤和類別值,請按照下列步驟操作:

    earthengine asset set -p 'landcover_class_palette=ff0000,00ff00,0000ff' projects/my-project/assets/asset_id
    earthengine asset set -p 'landcover_class_values=1,2,3' projects/my-project/assets/asset_id

如要刪除屬性,請將其設為 null,不指定類型:

    earthengine asset set -p name=null projects/my-project/assets/asset_id

日期屬性只是代表自 Unix 紀元 (即 1970 年 1 月 1 日午夜) 起經過的毫秒數,可以直接指定為數字,也可以採用下列其中一種格式:

    YYYY-MM-DD
    YYYY-MM-DDThh:mm:ss
    YYYY-MM-DDThh:mm:ss.f

時區預設為世界標準時間。您可以使用 --time_start 和 --time_end 旗標,設定特殊的開始和結束時間屬性:

    earthengine asset set --time_start 1978-10-15T12:34:56 projects/my-project/assets/asset_id

cp

複製資產。範例:

    earthengine cp projects/my-project/assets/asset_id projects/my-project/assets/new_asset_id

create

建立新資料夾和圖片集合。範例:

    earthengine create folder projects/my-project/assets/folder_id
    earthengine create collection projects/my-project/assets/collection_id

使用 folder 子指令建立資料夾,並使用 collection 建立圖片集合。您可以指定 -p 選項,視需要遞迴建立上層資料夾。根據預設,新建立的資料夾和圖片具有私人 ACL。

ls

列出一或多個資料夾或集合的內容。範例:

    earthengine ls users/username

-l 選項會要求長格式,其中包含各項資產的詳細資訊 (目前僅限類型)。您可以指定 --max_items number (或簡寫為 -m),限制列出的每個資料夾或集合中的項目數量:

    earthengine ls -m 10 projects/my-project/assets/my_large_collection

執行不含引數的 ls 指令,會列出您擁有的頂層資料夾。

模型

用於操控 TensorFlow 儲存模型的工具。

model prepare

準備已儲存的模型,以便在 Earth Engine 中提供。具體來說,這會將 SavedModel 轉換為適合處理 Earth Engine 要求的形式。(進一步瞭解SavedModel)。

    earthengine model prepare my_source_dir my_dest_dir '{"Conv2D:0":"my_input_band"}' '{"Sigmoid:0":"my_output_band"}'

如要進一步瞭解 AI 平台模型,請按這裡。如需完整範例,請參閱這裡。

mv

移動或重新命名資產。範例:

    earthengine mv projects/my-project/assets/asset_id projects/my-project/assets/new_asset_id

project_config

設定專案設定值。使用這個指令前,請務必使用 set_project 設定專案。

get

如要查看專案設定,請使用 get 子指令:

    earthengine alpha project_config get

如果您有查看專案批次工作設定的權限,輸出內容會包含:

  • maxConcurrentExports:這個數字代表在指定專案中,所有使用者可同時執行的批次工作數量上限。根據預設,這項設定會設為相關聯帳單帳戶訂閱方案允許的最大值。

此外,如果您有查看方案設定的權限,輸出內容會包含:

  • planMaxConcurrentExports:這個數字代表使用帳單帳戶的所有使用者和專案,可同時執行的批次工作數量上限。

set

如要更新專案設定,請使用 set 子指令。可設定的項目如下:

舉例來說,如要設定專案,只允許指定專案同時執行 10 項工作,請按照下列步驟操作:

    earthengine alpha project_config set --max_concurrent_exports=10

輸出內容會顯示更新後的專案設定,與 get 傳回的內容相同。

如要進一步瞭解批次工作平行處理,請參閱「Earth Engine 配額」頁面。

rm

刪除一或多項資產。範例:

    earthengine rm projects/my-project/assets/asset_id
    earthengine rm -r projects/my-project/assets/folder_id

您可以使用 -r 旗標,以遞迴方式刪除資料夾或集合的內容。為安全起見,刪除多項資產時,您可以使用 --dry_run 旗標,確認要刪除的項目,而不實際刪除任何項目。

set_project

設定用於轉送運算要求的 Google Cloud 專案。

    earthengine set_project foo-project

執行需要 Cloud 功能的指令 (例如 model) 之前,必須先執行這個指令。

任務

列印長時間執行工作的相關資訊,或管理這類工作。範例:

    earthengine task list
    earthengine task list -l
    earthengine task info TASK_ID
    earthengine task cancel TASK_ID

list 子指令會列出您最近提交的工作基本資訊。-l 選項會要求長格式,提供每項工作的詳細資訊。info 子指令會輸出個別工作的詳細資訊。cancel 子指令會取消一或多項執行中的工作。

upload

將 Google Cloud Storage 中的圖片或表格上傳至 Earth Engine,或將 Cloud Storage 中的雲端最佳化 GeoTIFF (COG) 註冊為 COG 支援的資產 (外部圖片)。

圖片

如要使用預設設定上傳圖片素材資源,請按照下列步驟操作:

    earthengine upload image --asset_id=projects/my-project/assets/asset_id gs://bucket/image.tif

如果指定多個輸入圖片檔,系統會將這些檔案解讀為單一圖片素材資源的圖塊。如要進一步瞭解將圖片上傳至 Earth Engine 的選項,請參閱「上傳圖片素材資源:進階選項」。

您可以使用 --pyramiding_policy 旗標指定金字塔縮減政策,該旗標可設為 mean (預設)、sample、mode、min 或 max。這會控制 Earth Engine 如何產生圖片的低解析度版本金字塔:

    earthengine upload image --asset_id=projects/my-project/assets/asset_id --pyramiding_policy=sample gs://bucket/image.tif

您可以使用 --last_band_alpha,指出應從最後一個頻帶的 Alpha 色板擷取圖片遮罩:

    earthengine upload image --asset_id=projects/my-project/assets/asset_id --last_band_alpha gs://bucket/image.tif

您可以使用 --nodata_value 旗標指定無資料值。這會遮蓋圖像中具有該值的任何像素:

    earthengine upload image --asset_id=users/myuser/asset --nodata_value=255 gs://bucket/image.tif

您也可以使用 asset set 指令接受的相同旗標,指定要在資產上設定的中繼資料屬性,如上文所述。映像檔資訊清單指南中也說明瞭這些選項。

桌子

如要將 Shapefile、CSV 或 TFRecord 從 Google Cloud Storage 上傳至 Earth Engine 表格資產,可以使用下列任一方法:

    earthengine upload table --asset_id=projects/my-project/assets/myUploadedShapefile gs://bucket/foo.shp
    earthengine upload table --asset_id=projects/my-project/assets/myUploadedCSV gs://bucket/foo.csv
    earthengine upload table --asset_id=projects/my-project/assets/myUploadedTFRecord gs://bucket/foo.tfrecord

解讀 CSV 和 TFRecord 檔案的方式有很多種。如要查看表格上傳選項的完整清單,請參閱表格資訊清單指南,或使用以下指令:

    earthengine upload table -h

external_image

如要將 Cloud Storage 中的雲端最佳化 GeoTIFF (COG) 註冊為 COG 支援的資產 (在 API 中稱為外部圖片),請使用資訊清單執行 upload external_image 指令:

earthengine upload external_image --manifest /tmp/foo.json

新增 --force 即可覆寫現有資產,例如將資產指向新版檔案 (請參閱「更新 COG 支援的資產」)。

資訊清單範例如下:

{
  "name": "projects/{project}/assets/cogdemo1",
  "tilesets": [
    { "id": "0", "sources": [{ "uris": ["gs://ee-docs-demos/COG_demo.tif"] }] }
  ],
  "properties": {
    "source": "https://code.earthengine.google.com/d541cf8b268b2f9d8f834c255698201d"
  },
  "startTime": "2016-01-01T00:00:00.000000000Z",
  "endTime": "2016-12-31T15:01:23.000000000Z"
}

如要進一步瞭解如何建構資訊清單,請參閱 COG 註冊指南和圖片資訊清單指南。