Instalação do Python: Colab Notebook

A API Earth Engine Python pode ser implantada em um notebook do Google Colaboratory. Os notebooks do Colab são notebooks do Jupyter executados na nuvem e altamente integrados ao Google Drive, o que facilita a configuração, o acesso e o compartilhamento. Se você não conhece os notebooks do Google Colab ou do Jupyter, confira o site de boas-vindas do Colab.

As seções a seguir descrevem como implantar o Earth Engine no Google Colab e visualizar mapas e gráficos usando pacotes Python de terceiros.

Abrir um notebook do Colab

Os notebooks podem ser abertos no Google Drive ou na interface do Colaboratory.

Novo notebook

Google Drive

Abra o Google Drive e crie um novo arquivo.

  • Novo > Mais > Colaboratory
  • Clique com o botão direito do mouse em uma pasta e selecione More > Colaboratory no menu de contexto.

Interface do Colab

Acesse o site do Colab e crie um novo arquivo.

  • File > New > New Python 3 notebook
  • Se você já interagiu com o Colab, ao acessar o site vinculado acima, você terá um explorador de arquivos em que poderá iniciar um novo arquivo usando o menu suspenso na parte de baixo da janela.

Notebook atual

Os arquivos de notebook (.ipynb) atuais podem ser abertos no Google Drive e na interface do Colab.

Google Drive

Os notebooks do Colab podem existir em várias pastas no Google Drive, dependendo de onde os arquivos de notebooks foram criados. Os notebooks criados no Google Drive vão existir na pasta em que foram criados ou movidos. Os notebooks criados na interface do Colab vão ser salvos por padrão em uma pasta chamada "Colab Notebooks", que é adicionada automaticamente à pasta "Meu Drive" do Google Drive quando você começa a trabalhar com o Colab.

Os arquivos do Colab podem ser identificados pelo símbolo amarelo "CO" e pela extensão de arquivo ".ipynb". Abra os arquivos clicando duas vezes neles e selecionando Open with > Colaboratory no botão encontrado na parte de cima da página resultante ou clicando com o botão direito do mouse em um arquivo e selecionando Open with > Colaboratory no menu de contexto do arquivo.

Interface do Colab

A abertura de notebooks na interface do Colab permite acessar arquivos do Google Drive, do GitHub e do hardware local. A visita à interface do Colab após o uso inicial faz com que um modal do File Explorer apareça. Nas guias na parte de cima do File Explorer, selecione uma origem e acesse o arquivo .ipynb que você quer abrir. O File Explorer também pode ser acessado na interface do Colab selecionando File > Open notebook ou usando a combinação de teclado Ctrl+O.

Importar a API e receber credenciais

Esta seção demonstra como importar a API Python do Earth Engine e autenticar o acesso. Este conteúdo também está disponível como um notebook do Colab:

A API Earth Engine está incluída por padrão no Google Colaboratory, portanto, só é necessário importar e autenticar. Essas etapas precisam ser concluídas para cada nova sessão do Colab ou se você reiniciar o kernel do Colab ou se a máquina virtual do Colab for reciclada devido à inatividade.

Importar a API

Execute a célula a seguir para importar a API à sua sessão.

import ee

Autenticar e inicializar

Execute a função ee.Authenticate para autenticar seu acesso aos servidores do Earth Engine e ee.Initialize para inicializá-lo. Adicione uma célula de código, insira as linhas abaixo, edite o projeto e execute a célula.

# Trigger the authentication flow.
ee.Authenticate()

# Initialize the library.
ee.Initialize(project='my-project')

Você vai precisar autorizar o acesso à sua conta do Earth Engine. Siga as instruções impressas na célula para concluir esta etapa.

Testar a API

Teste a API imprimindo a elevação do Monte Everest. Antes de usar a API, é necessário inicializá-la. Execute o script Python a seguir em uma nova célula.

# Print the elevation of Mount Everest.
dem = ee.Image('USGS/SRTMGL1_003')
xy = ee.Geometry.Point([86.9250, 27.9881])
elev = dem.sample(xy, 30).first().get('elevation').getInfo()
print('Mount Everest elevation (m):', elev)

Visualização de mapa

Os objetos ee.Image podem ser mostrados nas células de saída do notebook. Os dois exemplos a seguir demonstram como exibir uma imagem estática e um mapa interativo.

Imagem estática

O módulo IPython.display contém a função Image, que pode mostrar os resultados de um URL que representa uma imagem gerada a partir de uma chamada para a função getThumbUrl do Earth Engine. O script a seguir vai mostrar uma miniatura de um modelo de elevação global.

# Import libraries.
import ee
from IPython.display import Image

# Trigger the authentication flow.
ee.Authenticate()

# Initialize the library.
ee.Initialize(project='my-project')

# Import a DEM and display a thumbnail of it.
dem = ee.Image('USGS/SRTMGL1_003')
Image(url=dem.updateMask(dem.gt(0))
  .getThumbUrl({'min': 0, 'max': 4000, 'dimensions': 512,
                'palette': ['006633', 'E5FFCC', '662A00', 'D8D8D8', 'F5F5F5']}))

Mapa interativo

O pacote folium pode ser usado para mostrar objetos ee.Image em um mapa interativo Leaflet. O Folium não tem um método padrão para processar blocos do Earth Engine. Portanto, é necessário definir e adicionar um ao módulo folium.Map antes do uso.

O script a seguir é um exemplo de como adicionar um método para processar blocos do Earth Engine e usá-los para mostrar um modelo de elevação em um mapa do Leaflet.

# Import libraries.
import ee
import folium

# Trigger the authentication flow.
ee.Authenticate()

# Initialize the library.
ee.Initialize(project='my-project')

# Define a method for displaying Earth Engine image tiles to folium map.
def add_ee_layer(self, ee_image_object, vis_params, name):
  map_id_dict = ee.Image(ee_image_object).getMapId(vis_params)
  folium.raster_layers.TileLayer(
    tiles = map_id_dict['tile_fetcher'].url_format,
    attr = "Map Data © Google Earth Engine",
    name = name,
    overlay = True,
    control = True
  ).add_to(self)

# Add EE drawing method to folium.
folium.Map.add_ee_layer = add_ee_layer

# Fetch an elevation model.
dem = ee.Image('USGS/SRTMGL1_003')
# Set visualization parameters.
vis_params = {
  'min': 0,
  'max': 4000,
  'palette': ['006633', 'E5FFCC', '662A00', 'D8D8D8', 'F5F5F5']}

# Create a folium map object.
my_map = folium.Map(location=[20, 0], zoom_start=3)

# Add the elevation model to the map object.
my_map.add_ee_layer(dem.updateMask(dem.gt(0)), vis_params, 'DEM')

# Add a layer control panel to the map.
my_map.add_child(folium.LayerControl())

# Display the map.
display(my_map)

Visualização de gráficos

Algumas funções do Earth Engine produzem dados tabulares que podem ser plotados por pacotes de visualização de dados, como matplotlib. O exemplo a seguir demonstra a exibição de dados tabulares do Earth Engine como um gráfico de dispersão. Consulte Diagramação no Colaboratory para mais informações.

# Import libraries.
import ee
import matplotlib.pyplot as plt

# Trigger the authentication flow.
ee.Authenticate()

# Initialize the Earth Engine module.
ee.Initialize(project='my-project')

# Fetch a Landsat TOA image.
img = ee.Image('LANDSAT/LT05/C02/T1_TOA/LT05_034033_20000913')

# Select Red and NIR bands, scale them, and sample 500 points.
samp_fc = img.select(['B3','B4']).sample(scale=30, numPixels=500)

# Arrange the sample as a list of lists.
samp_dict = samp_fc.reduceColumns(ee.Reducer.toList().repeat(2), ['B3', 'B4'])
samp_list = ee.List(samp_dict.get('list'))

# Save server-side ee.List as a client-side Python list.
samp_data = samp_list.getInfo()

# Display a scatter plot of Red-NIR sample pairs using matplotlib.
plt.scatter(samp_data[0], samp_data[1], alpha=0.2)
plt.xlabel('Red', fontsize=12)
plt.ylabel('NIR', fontsize=12)
plt.show()