Installation de Python - Notebook Colab

L'API Earth Engine pour Python peut être déployée dans un notebook Google Colab. Les notebooks Colab sont des notebooks Jupyter qui s'exécutent dans le cloud et sont hautement intégrés à Google Drive. Ils sont donc faciles à configurer, à accéder et à partager. Si vous ne connaissez pas Google Colab ou les notebooks Jupyter, veuillez passer un peu de temps à explorer le site d'accueil de Colab.

Les sections suivantes décrivent le déploiement d'Earth Engine dans Google Colab et la visualisation de cartes et de graphiques à l'aide de packages Python tiers.

Ouvrir un notebook Colab

Vous pouvez ouvrir les notebooks depuis Google Drive ou l'interface Colaboratory.

Nouveau notebook

Google Drive

Ouvrez Google Drive et créez un fichier.

  • Nouveau > Plus > Collaboratory
  • Effectuez un clic droit dans un dossier, puis sélectionnez Plus > Colaboratory dans le menu contextuel.

Interface Colab

Accédez au site Colab et créez un fichier.

  • File > New > New Python 3 notebook (Fichier > Nouveau > Nouveau notebook Python 3)
  • Si vous avez déjà interagi avec Colab, le site indiqué ci-dessus vous fournira un explorateur de fichiers dans lequel vous pourrez créer un fichier à l'aide du menu déroulant en bas de la fenêtre.

Notebook existant

Les fichiers de notebook existants (.ipynb) peuvent être ouverts depuis Google Drive et l'interface Colab.

Google Drive

Les notebooks Colab peuvent se trouver dans différents dossiers de Google Drive, en fonction de l'emplacement où les fichiers de notebook ont été créés. Les blocs-notes créés dans Google Drive se trouvent dans le dossier dans lequel ils ont été créés ou vers lequel ils ont été déplacés. Les notebooks créés à partir de l'interface Colab sont stockés par défaut dans un dossier appelé "Notebooks Colab", qui est automatiquement ajouté au dossier "Mon Drive" de votre compte Google Drive lorsque vous commencez à utiliser Colab.

Les fichiers Colab sont identifiables par un symbole "CO" jaune et l'extension de fichier ".ipynb". Ouvrez les fichiers en effectuant un double-clic dessus et en sélectionnant Ouvrir avec > Colaboratory dans le bouton situé en haut de la page qui s'affiche, ou en effectuant un clic droit sur un fichier et en sélectionnant Ouvrir avec > Colaboratory dans le menu contextuel du fichier.

Interface Colab

L'ouverture de notebooks à partir de l'interface Colab vous permet d'accéder aux fichiers existants à partir de Google Drive, GitHub et du matériel local. Si vous accédez à l'interface Colab après une première utilisation, une fenêtre modale de l'explorateur de fichiers s'affiche. Dans les onglets situés en haut de l'explorateur de fichiers, sélectionnez une source et accédez au fichier .ipynb que vous souhaitez ouvrir. Vous pouvez également accéder à l'explorateur de fichiers depuis l'interface Colab en sélectionnant File > Open notebook (Fichier > Ouvrir un notebook) ou en utilisant la combinaison de touches Ctrl+O.

Importer l'API et obtenir des identifiants

Cette section explique comment importer l'API Python Earth Engine et authentifier l'accès. Ce contenu est également disponible sous forme de notebook Colab:

L'API Earth Engine est incluse par défaut dans Google Colaboratory. Il vous suffit donc de l'importer et de l'authentifier. Vous devez suivre cette procédure pour chaque nouvelle session Colab, ou si vous redémarrez votre noyau Colab ou si votre machine virtuelle Colab est recyclée en raison d'inactivité.

Importer l'API

Exécutez la cellule suivante pour importer l'API dans votre session.

import ee

Authentification et initialisation

Exécutez la fonction ee.Authenticate pour authentifier votre accès aux serveurs Earth Engine et ee.Initialize pour l'initialiser. Ajoutez une cellule de code, saisissez les lignes suivantes, modifiez le projet, puis exécutez la cellule.

# Trigger the authentication flow.
ee.Authenticate()

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

Vous êtes alors invité à autoriser l'accès à votre compte Earth Engine. Suivez les instructions imprimées sur la cellule pour effectuer cette étape.

Tester l'API

Testez l'API en imprimant l'altitude du mont Everest. Notez qu'avant d'utiliser l'API, vous devez l'initialiser. Exécutez le script Python suivant dans une nouvelle cellule.

# 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)

Visualisation cartographique

Les objets ee.Image peuvent être affichés dans les cellules de sortie du notebook. Les deux exemples suivants illustrent l'affichage d'une image statique et d'une carte interactive.

Image statique

Le module IPython.display contient la fonction Image, qui peut afficher les résultats d'une URL représentant une image générée à partir d'un appel à la fonction getThumbUrl d'Earth Engine. Le script suivant affiche une vignette d'un modèle d'élévation 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']}))

Carte interactive

Le package folium permet d'afficher des objets ee.Image sur une carte Leaflet interactive. Folium ne dispose d'aucune méthode par défaut pour gérer les tuiles d'Earth Engine. Vous devez donc en définir une et l'ajouter au module folium.Map avant de l'utiliser.

Le script suivant montre comment ajouter une méthode pour gérer les tuiles Earth Engine et l'utiliser pour afficher un modèle d'élévation sur une carte 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)

Visualisation des graphiques

Certaines fonctions Earth Engine produisent des données tabulaires qui peuvent être tracées par des packages de visualisation de données tels que matplotlib. L'exemple suivant montre comment afficher des données tabulaires d'Earth Engine sous forme de graphique en nuage de points. Pour en savoir plus, consultez Créer des graphiques dans Colaboratory.

# 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()