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);
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.