延後執行

用戶端與伺服器」文件說明如何在指向用戶端或伺服器端的程式碼中引用物件。完整的指令碼不僅包含您要使用的物件,還包含一組指示,告訴 Earth Engine 如何處理這些物件。本文件說明如何將這些指示傳送至 Google 進行處理,以及如何將結果傳回用戶端進行顯示。

在 Earth Engine 中編寫指令碼 (JavaScript 或 Python) 時,該程式碼並不會直接在 Google 的 Earth Engine 伺服器上執行。相反地,用戶端程式庫會將指令碼編碼為一組 JSON 物件,將物件傳送至 Google,然後等待回應。每個物件都代表一組作業,這些作業是取得特定輸出內容 (例如在用戶端顯示的圖片) 所需的作業。請考慮使用以下程式碼:

程式碼編輯器 (JavaScript)

var image = ee.Image('CGIAR/SRTM90_V4');
var operation = image.add(10);
print(operation.toString());
print(operation);

Python 設定

請參閱「 Python 環境」頁面,瞭解 Python API 和如何使用 geemap 進行互動式開發。

import ee
import geemap.core as geemap

Colab (Python)

image = ee.Image('CGIAR/SRTM90_V4')
operation = image.add(10)
print(operation)
print(operation.getInfo())

第一個列印陳述式會輸出 JSON 結構,用戶端程式庫會使用該結構向 Google 伺服器描述該圖片:

ee.Image({
  "type": "Invocation",
  "arguments": {
    "image1": {
      "type": "Invocation",
      "arguments": {
        "id": "CGIAR/SRTM90_V4"
      },
      "functionName": "Image.load"
    },
    "image2": {
      "type": "Invocation",
      "arguments": {
        "value": 10
      },
      "functionName": "Image.constant"
    }
  },
  "functionName": "Image.add"
})
    

第二個列印陳述式會將要求傳送給 Google,並輸出 Google 伺服器的 POST 回應。如要查看完整的 JSON 回應,請點選主控台右側印出物件旁的 JSON 連結:

{
  "type": "Image",
  "bands": [
    {
      "id": "elevation",
      "data_type": {
        "type": "PixelType",
        "precision": "int",
        "min": -32758,
        "max": 32777
      },
      "crs": "EPSG:4326",
      "crs_transform": [
        0.0008333333535119891,
        0,
        -180,
        0,
        -0.0008333333535119891,
        60
      ]
    }
  ]
}
    

除非有相關要求,否則系統不會將任何內容傳送給 Google 處理。在這個範例中,在伺服器物件上列印 getInfo() 呼叫的結果會觸發要求。在明確要求結果之前,伺服器不會進行任何處理。請注意,JavaScript 程式碼編輯器中的 print() 是用來包裝非同步 getInfo() 呼叫的特殊用戶端函式;對於 Python,我們會直接呼叫該函式。

另一個要求範例是將要求顯示在程式碼編輯器或 geemap 地圖元素上。當這項要求傳送至 Google 時,系統只會傳回在 Code Editor 或 geemap 地圖元素中顯示結果所需的圖塊。具體來說,地圖的位置和縮放等級會決定哪些資料會經過處理,並轉換為可在地圖上顯示的圖片。請注意,如果您拖曳或縮放,其他圖塊會以延遲方式計算。這套按需系統可進行平行處理,並且能有效處理,但這也表示地圖上顯示的圖片會根據縮放等級和地圖邊界的位置,從不同的輸入內容產生。如要進一步瞭解如何根據要求決定運算的輸入內容,請參閱 Scale 文件。