Execução adiada

O documento Cliente x servidor descreve como os objetos referenciados no script podem ser do lado do cliente ou do servidor. O script completo contém não apenas os objetos que você quer usar, mas também um conjunto de instruções que informam ao Earth Engine o que fazer com eles. Este documento descreve como essas instruções são enviadas ao Google para processamento e como os resultados são enviados de volta ao cliente para exibição.

Quando você escreve um script no Earth Engine (JavaScript ou Python), esse código NÃO é executado diretamente nos servidores do Earth Engine no Google. Em vez disso, a biblioteca de cliente codifica o script em um conjunto de objetos JSON, envia os objetos ao Google e aguarda uma resposta. Cada objeto representa um conjunto de operações necessárias para gerar uma saída específica, como uma imagem a ser exibida no cliente. Pense no seguinte código:

Editor de código (JavaScript)

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

Configuração do Python

Consulte a página Ambiente Python para informações sobre a API Python e o uso de geemap para desenvolvimento interativo.

import ee
import geemap.core as geemap

Colab (Python)

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

A primeira instrução de impressão vai gerar a estrutura JSON que a biblioteca de cliente usa para descrever essa imagem ao servidor do 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"
})
    

A segunda instrução de impressão vai enviar a solicitação ao Google e gerar a resposta POST dos servidores do Google. Para conferir a resposta em todo o JSON, clique no link JSON no lado direito do console, ao lado do objeto impresso:

{
  "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
      ]
    }
  ]
}
    

Nada é enviado ao Google para processamento até que haja uma solicitação. Neste exemplo, a impressão do resultado de uma chamada getInfo() em um objeto do servidor aciona uma solicitação. Nenhum processamento é feito no servidor até que esse resultado seja explicitamente solicitado. print() no editor de código JavaScript é uma função especial do lado do cliente que envolve uma chamada getInfo() assíncrona. Para Python, ela é chamada diretamente.

Outro exemplo de solicitação é mostrar algo no elemento do mapa do editor de código ou do geemap. Quando essa solicitação é enviada ao Google, apenas os blocos necessários para mostrar o resultado no Code Editor ou no elemento de mapa geemap são retornados. Especificamente, a posição do mapa e o nível de zoom determinam quais dados são processados e transformados em imagens que podem ser exibidas no mapa. Se você mover ou aumentar o zoom, outros blocos serão calculados de forma lenta. Esse sistema sob demanda permite paralelização e processamento eficiente, mas também significa que a imagem exibida no mapa é produzida a partir de diferentes entradas, dependendo do nível de zoom e da localização dos limites do mapa. Saiba mais sobre como as entradas de uma computação são determinadas a partir da solicitação no documento Escala.