Visualiser des images et des bandes d'image

Maintenant que vous êtes prêt à écrire du code JavaScript Earth Engine, commencez par copier le code suivant dans l'éditeur de code :

Éditeur de code (JavaScript)

// Instantiate an image with the Image constructor.
var image = ee.Image('CGIAR/SRTM90_V4');

// Zoom to a location.
Map.setCenter(-112.8598, 36.2841, 9); // Center on the Grand Canyon.

// Display the image on the map.
Map.addLayer(image);

Cliquez sur le bouton Exécuter en haut de l'éditeur de code et observez qu'une image très grise s'affiche sur la carte. Ne vous inquiétez pas, vous l'améliorerez bientôt. Si la syntaxe d'une partie de cet exemple ne vous est pas familière, veillez à consulter le tutoriel JavaScript pour Earth Engine.

Constructeur d'images

La première nouveauté de cet exemple est le constructeur d'image ee.Image(). L'argument fourni au constructeur est l'ID de chaîne d'une image dans le catalogue de données Earth Engine. (Consultez l'onglet Docs à gauche de l'éditeur de code pour obtenir la liste complète des arguments possibles du constructeur d'image.) L'onglet Docs contient les informations les plus récentes sur les fonctionnalités d'Earth Engine.)

Pour découvrir un ID d'image, effectuez une recherche dans le catalogue de données Earth Engine à l'aide de l'outil de recherche en haut de l'éditeur de code. Par exemple, saisissez "altitude" dans le champ de recherche et notez qu'une liste de rasters est renvoyée. Cliquez sur l'entrée "SRTM Digital Elevation Data Version 4" pour afficher plus d'informations sur cet ensemble de données. Sur la droite de la description de l'ensemble de données se trouve un champ ID de l'image. Notez que l'ID d'image de l'exemple est copié à partir de l'ID d'image indiqué dans la description de l'ensemble de données.

Au lieu de copier et coller les ID d'image, vous pouvez utiliser le bouton Importer sur la description de l'ensemble de données ou le lien import à droite des résultats de recherche. Si vous cliquez sur le lien ou le bouton d'importation, une variable est automatiquement créée dans une section spéciale, nommée Imports, en haut de votre script. Vous pouvez renommer la variable en cliquant sur son nom dans la section des importations.

Configurer la carte

La deuxième nouveauté de cet exemple est l'appel Map.setCenter(). Cette méthode sur l'objet Map, qui représente l'affichage de la carte dans l'éditeur de code, centre la carte à la longitude et à la latitude données (en degrés décimaux) et au niveau de zoom, où 1 correspond à un zoom arrière tel que la carte affiche toute la surface de la Terre. Les nombres plus élevés permettent d'effectuer un zoom avant. Découvrez toutes les méthodes de l'objet Map en consultant la section "Map" dans l'onglet Docs à gauche de l'éditeur de code.

Ajouter un calque à la carte

La dernière ligne de l'exemple indique d'utiliser la méthode addLayer() de l'objet Map pour ajouter une image à l'affichage de la carte dans l'éditeur de code.

Félicitations ! Vous avez créé votre premier script Earth Engine. Dans la section suivante, vous apprendrez à améliorer l'apparence de cette image.

Digression : images dans Earth Engine

Les images dans Earth Engine (pour en savoir plus, consultez cette page) sont composées d'une ou plusieurs bandes. Chaque bande d'une image possède son propre nom, ses valeurs de pixels, sa résolution de pixels et sa projection. Comme vous le verrez bientôt, l'image SRTM comporte une bande : "elevation".

Lorsque vous ajoutez une image à une carte à l'aide de Map.addLayer(), Earth Engine doit déterminer comment mapper les valeurs des bandes d'image aux couleurs affichées. Si une image monobande est ajoutée à une carte, Earth Engine affiche par défaut la bande en niveaux de gris, où la valeur minimale est attribuée au noir et la valeur maximale au blanc. Si vous ne spécifiez pas les valeurs minimales et maximales, Earth Engine utilisera les valeurs par défaut. Par exemple, l'image que vous venez d'ajouter à la carte s'affiche sous la forme d'une image en niveaux de gris étirée sur toute la plage de données, ou d'un entier signé de 16 bits [-32768, 32767]. (Les bandes float sont étendues à [0, 1] et les bandes byte sont étendues à [0, 255] par défaut.)

Vous pouvez découvrir le type de données de l'image en l'imprimant et en inspectant l'objet image dans l'onglet Console. Par exemple, collez le code suivant après le code précédent :

Éditeur de code (JavaScript)

print('SRTM image', image);

Lorsque vous cliquez sur "Exécuter", notez qu'un objet apparaît dans la console. Pour examiner les propriétés de l'objet, développez-le en cliquant sur le zippy () à gauche de l'objet ou de la propriété. Développez l'objet image, la propriété "bands", la bande "elevation" à l'index "0" et la propriété "data_type" de la bande "elevation" pour découvrir qu'il s'agit d'un type de données signed int16.

Personnaliser la visualisation des calques

Pour modifier la façon dont les données sont étirées, vous pouvez fournir un autre paramètre à l'appel Map.addLayer(). Plus précisément, le deuxième paramètre, visParams, vous permet de spécifier les valeurs minimales et maximales à afficher. Pour découvrir les valeurs à utiliser, activez l'onglet Inspecteur et cliquez sur la carte pour avoir une idée de la plage de valeurs de pixels. Vous pouvez également utiliser le gestionnaire de calques pour étirer les données de manière interactive, puis observer les valeurs minimale et maximale correspondant aux étirements des percentiles ou de l'écart-type. Supposons que, grâce à ces tests, vous déterminiez que les données doivent être étirées à [0, 3000]. Pour afficher l'image à l'aide de cette plage, utilisez :

Éditeur de code (JavaScript)

Map.addLayer(image, {min: 0, max: 3000}, 'custom visualization');

Notez que le paramètre visParams est un objet dont les propriétés spécifient le min et le max. (Pour en savoir plus sur les objets JavaScript, consultez le tutoriel JavaScript ou cette référence externe.) Notez que le troisième paramètre de Map.addLayer() est le nom du calque qui s'affiche dans le gestionnaire de calques. Le résultat doit ressembler à la figure 1. Pointez sur la zone Calques à droite pour voir l'effet du changement de nom de ce calque.

Tutorial_api_01_elevation.png
Figure 1. Image d'altitude en niveaux de gris, étirée à [0, 3000].

Pour afficher une seule bande à l'aide d'une palette de couleurs, ajoutez une propriété palette à l'objet visParams :

Éditeur de code (JavaScript)

Map.addLayer(image, {min: 0, max: 3000, palette: ['blue', 'green', 'red']},
    'custom palette');

Le résultat doit ressembler à la figure 2.

Tutorial_api_02_palette.png
Figure 2. Image d'altitude sous forme de dégradé de couleurs allant du bleu au rouge, étiré à [0, 3000].

Digression : Palettes

Les palettes vous permettent de définir le jeu de couleurs pour les images monobandes. Une palette est une liste de chaînes de couleur délimitée par des virgules, qui sont interpolées de manière linéaire entre les valeurs maximale et minimale des paramètres de visualisation (ou les valeurs par défaut en fonction du type de bande, comme décrit précédemment). Par exemple, les pixels inférieurs ou égaux à la valeur minimale seront affichés avec la première couleur de la liste, tandis que ceux supérieurs ou égaux à la valeur maximale seront affichés avec la dernière couleur de la liste. Les couleurs intermédiaires sont étirées de manière linéaire vers les valeurs de pixels intermédiaires.

Les couleurs sont définies à l'aide du schéma de valeurs de couleur CSS standard sur le Web (pour en savoir plus, consultez cette référence externe). Les couleurs peuvent être spécifiées par leur nom ou sous forme de chaînes hexadécimales indiquant la combinaison de rouge, de vert et de bleu. La valeur la plus basse dans l'une des trois positions est 00 (représentant le nombre décimal 0), tandis que la plus élevée est FF (représentant le nombre décimal 255). La chaîne "000000" représente la couleur noire, "FFFFFF" le blanc, "FF0000" le rouge, "00FF00" le vert et "0000FF" le bleu. Pour en savoir plus, consultez la section Palettes de couleurs. D'autres étirements sont possibles à l'aide des Styled Layer Descriptors, comme décrit dans cette section.

Plus loin dans ce tutoriel, vous apprendrez à afficher des images multibandes. Mais avant cela, consultez la page suivante pour découvrir comment effectuer des calculs avec des images.