Instalação do Python

Suporte ao Python

A biblioteca de cliente Python do Earth Engine é compatível com as versões do Python com suporte do Google Cloud. O suporte é atualizado anualmente de acordo com o cronograma de lançamentos do Python (PEP 602; Status das versões do Python). O uso de versões do Python sem suporte pode causar falhas de autenticação, comportamento inesperado ou falha em determinadas operações.

Opções de instalação

Se você estiver usando o Google Colab, a versão mais recente da biblioteca de cliente Python do Earth Engine já estará instalada (pelo pip). Teste o notebook a seguir para começar a usar o Earth Engine e o Colab:

Se você não usa o Colab, a biblioteca de cliente do Earth Engine pode ser instalada e atualizada manualmente no seu sistema usando o conda (recomendado) ou o pip:


Instale a API em um ambiente Python arbitrário usando o pip. Em um terminal ou prompt de comando:

pip install earthengine-api

Depois de instalar, você pode importar, autenticar e inicializar a API Earth Engine conforme descrito aqui.

Atualize a API:

pip install earthengine-api --upgrade

Importação de pacotes

O pacote da API Python é chamado de ee. Ele precisa ser importado e inicializado para cada nova sessão e script do Python:

import ee

Autenticação e inicialização

Antes de usar a biblioteca de cliente Python do Earth Engine, é necessário autenticar e usar as credenciais resultantes para inicializar o cliente Python. Execute:

ee.Authenticate()

Isso vai selecionar o melhor modo de autenticação para seu ambiente e solicitar que você confirme o acesso aos scripts. Para inicializar, você precisa fornecer um projeto que seja seu ou que tenha permissões para usar. Esse projeto será usado para executar todas as operações do Earth Engine:

ee.Initialize(project='my-project')

Consulte o guia de autenticação para resolver problemas e saber mais sobre os modos de autenticação e os projetos do Cloud.

Olá, mundo!

Confira um script curto para testar se você está pronto para trabalhar com o Earth Engine.

import ee
ee.Authenticate()
ee.Initialize(project='my-project')
print(ee.String('Hello from the Earth Engine servers!').getInfo())

Sintaxe

As APIs Python e JavaScript acessam a mesma funcionalidade do lado do servidor, mas as expressões do lado do cliente (saiba mais sobre o cliente e o servidor) podem variar devido a diferenças na sintaxe do idioma. A tabela a seguir inclui uma lista das diferenças de sintaxe comuns que você vai encontrar ao trabalhar com a API Python em relação à API JavaScript.

Diferenças comuns de sintaxe entre JavaScript e Python
Propriedade JavaScript Python
Definição de função
function myFun(arg) {
  return arg;
}

var myFun = function(arg) {
  return arg;
};
def my_fun(arg):
  return arg
Mapeamento de função anônima
var foo = col.map(function(arg) {
  return arg;
});
foo = col.map(lambda arg: arg)
Definição da variável
var myVar = 'var';
my_var = 'var'
Operadores lógicos
var match = such.and(that);
var match = such.or(that);
var match = such.not(that);
match = such.And(that)
match = such.Or(that)
match = such.Not(that)
Cadeia de método de várias linhas
var foo = my.really()
              .reallyLong()
              .methodChain();
foo = (my.really()
       .reallyLong()
       .methodChain())
Chaves do dicionário
var dic = {'key': value};
var dic = {key: value};
dic = {'key': value}
Acesso a objetos de dicionário
var value = dic.key;
var value = dic['key'];
value = dic['key']
Definição do argumento da função
// Positional arguments.
var foo = fun(argX, argY, argZ);
// Keyword arguments object.
var foo = fun({y: argY});
# Positional arguments.
foo = fun(arg_x, arg_y, arg_z)
# Keyword arguments dictionary.
foo = fun(**{'y': arg_y})
# Keyword arguments.
foo = fun(x=arg_x, z=arg_z)
Booleano
var t = true;
var f = false;
t = True
f = False
Valores nulos
var na = null;
na = None
Comentário
//
#

Objetos de data

Defina e manipule objetos de data do lado do cliente com o módulo datetime. Inclua o módulo no script:

import datetime

Converta ee.Date em data do lado do cliente:

ee_date = ee.Date('2020-01-01')
py_date = datetime.datetime.utcfromtimestamp(ee_date.getInfo()['value']/1000.0)

Converter a data do lado do cliente em ee.Date:

py_date = datetime.datetime.utcnow()
ee_date = ee.Date(py_date)

Exportação de dados

A exportação de dados com a API Python requer o uso do módulo ee.batch, que fornece uma interface para as funções Export. Transmita argumentos de parâmetro como faria com a API JavaScript, observando as diferenças indicadas na tabela de sintaxe acima. As tarefas de exportação precisam ser iniciadas chamando o método start() em uma tarefa definida. Consulte o status de uma tarefa chamando o método status() nela. O exemplo a seguir demonstra como exportar um objeto ee.Image.

Crie uma tarefa de exportação:

task = ee.batch.Export.image.toDrive(image=my_image,  # an ee.Image object.
                                     region=my_geometry,  # an ee.Geometry object.
                                     description='mock_export',
                                     folder='gdrive_folder',
                                     fileNamePrefix='mock_export',
                                     scale=1000,
                                     crs='EPSG:4326')

Inicie uma tarefa de exportação:

task.start()

Verificar o status da tarefa de exportação:

task.status()

O resultado de task.status() é um dicionário que contém informações como o estado da tarefa e o ID dela.

{
  'state': 'READY',
  'description': 'my_export_task',
  'creation_timestamp_ms': 1647567508236,
  'update_timestamp_ms': 1647567508236,
  'start_timestamp_ms': 0,
  'task_type': 'EXPORT_IMAGE',
  'id': '56TVJIZABUMTD5CJ5YHTMYK4',
  'name': 'projects/earthengine-legacy/operations/56TVJIZABUMTX5CJ5HHTMYK4'
}

É possível monitorar o progresso da tarefa usando o campo state. Consulte a página Ambientes de processamento para conferir uma listagem de valores de state e mais informações sobre o ciclo de vida da tarefa.

Como imprimir objetos

A impressão de um objeto do Earth Engine no Python imprime a solicitação serializada para o objeto, não o objeto em si. Consulte a página Cliente x servidor para entender o motivo.

Chame getInfo() nos objetos do Earth Engine para transferir o objeto desejado do servidor para o cliente:

# Load a Landsat image.
img = ee.Image('LANDSAT/LT05/C02/T1_L2/LT05_034033_20000913')

# Print image object WITHOUT call to getInfo(); prints serialized request instructions.
print(img)

# Print image object WITH call to getInfo(); prints image metadata.
print(img.getInfo())
getInfo() é uma operação síncrona, ou seja, a execução de expressões após a chamada getInfo() é bloqueada até que o resultado seja retornado ao cliente. Além disso, solicitações para muitos dados ou cálculos caros podem retornar um erro e/ou travar. Em geral, a prática recomendada é exportar seus resultados e, depois, importá-los para um novo script para análise posterior.

Objetos da interface

O módulo ui do Earth Engine só está disponível pelo editor de código da API JavaScript. Use bibliotecas de terceiros para elementos da interface em Python. Bibliotecas como geemap, Folium e ipyleaflet fornecem a exibição de mapas interativos, enquanto a criação de gráficos pode ser feita com Matplotlib, Altair ou seaborn, para citar alguns. Confira exemplos no notebook de configuração do Earth Engine no Colab para usar o geemap e o Matplotlib.

Python no guia para desenvolvedores

O código Python está incluído em todo o Guia do desenvolvedor do Earth Engine. Quando disponíveis, os exemplos de código podem ser visualizados clicando na guia "Colab (Python)" na parte de cima dos blocos de código. As páginas de guia também podem incluir botões na parte de cima para executar a página como um notebook do Colab ou visualizá-la no GitHub. Os exemplos de código Python devem ser executados usando o Google Colab. A exploração de mapas e objetos interativos é processada pela biblioteca geemap. A biblioteca de cliente Python da Earth Engine e o geemap são pré-instalados no Colab.

Configuração do Earth Engine

Para executar o código Python, é necessário importar, autenticar e inicializar a biblioteca do Earth Engine. Os comandos a seguir são usados nos exemplos. Consulte a página Autenticação e inicialização para conferir alternativas.

import ee
ee.Authenticate()
ee.Initialize(project='my-project')

Análise interativa com geemap

A biblioteca geemap é usada para mostrar blocos de mapa e imprimir representações ricas de objetos do Earth Engine. A biblioteca depende respectivamente de ipyleaflet e eerepr para esses recursos. A biblioteca geemap e as dependências dela são pré-instaladas no Google Colab. Importe-a para cada sessão.

import geemap.core as geemap

As classes de dados geográficos do Earth Engine, como ee.Image e ee.FeatureCollection, podem ser visualizadas usando o objeto geemap.Map. Primeiro, defina o objeto do mapa. Em seguida, adicione camadas ou altere a janela de visualização.

# Initialize a map object.
m = geemap.Map()

# Define an example image.
img = ee.Image.random()

# Add the image to the map.
m.add_layer(img, None, 'Random image')

# Display the map (you can call the object directly if it is the final line).
display(m)