Collections d'images

Une collection d'images désigne un ensemble d'images Earth Engine. Par exemple, la collection de toutes les images Landsat 8 est un ee.ImageCollection. Comme l'image SRTM avec laquelle vous avez travaillé, les collections d'images ont également un ID. Comme pour les images individuelles, vous pouvez découvrir l'ID d'une collection d'images en effectuant une recherche dans le catalogue de données Earth Engine à partir de l'éditeur de code et en consultant la page d'informations de l'ensemble de données. Par exemple, recherchez "landsat 8 toa" et cliquez sur le premier résultat, qui devrait correspondre à l'ensemble de données USGS Landsat 8 Collection 1 Tier 1 TOA Reflectance. Importez cet ensemble de données à l'aide du bouton Importer et renommez-le l8, ou copiez l'ID dans le constructeur de la collection d'images :

Éditeur de code (JavaScript)

var l8 = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA');

Filtrer les collections d'images

Il est important de noter que cette collection représente toutes les scènes Landsat 8 collectées sur l'ensemble de la planète. Il est souvent utile d'extraire une seule image ou un sous-ensemble d'images sur lesquelles tester les algorithmes. Pour limiter la collecte par période ou par espace, vous devez la filtrer. Par exemple, pour filtrer la collection afin d'afficher les images qui couvrent un emplacement particulier, commencez par définir votre zone d'intérêt avec un point (ou une ligne ou un polygone) à l'aide des outils de dessin géométrique. Faites un panoramique sur la zone qui vous intéresse, pointez sur Importations de géométries (si vous avez déjà une ou plusieurs géométries définies) et cliquez sur + Nouveau calque (si vous n'avez pas d'importations, passez à l'étape suivante). Sélectionnez l'outil de dessin de points (), puis créez un point dans la zone qui vous intéresse. Nommez l'importation point. Maintenant, filtrez la collection l8 pour n'obtenir que les images qui croisent le point, puis ajoutez un deuxième filtre pour limiter la collection aux images acquises en 2015 :

Éditeur de code (JavaScript)

var spatialFiltered = l8.filterBounds(point);
print('spatialFiltered', spatialFiltered);

var temporalFiltered = spatialFiltered.filterDate('2015-01-01', '2015-12-31');
print('temporalFiltered', temporalFiltered);

Ici, filterBounds() et filterDate() sont des méthodes raccourcies pour la méthode filter() plus générale sur les collections d'images, qui prend un ee.Filter() comme argument. Explorez l'onglet Docs de l'éditeur de code pour en savoir plus sur ces méthodes. L'argument de filterBounds() est le point que vous avez numérisé, et les arguments de filterDate() sont deux dates, exprimées sous forme de chaînes.

Notez que vous pouvez print() les collections filtrées. Vous ne pouvez pas imprimer plus de 5 000 éléments à la fois. Vous ne pouvez donc pas, par exemple, imprimer l'intégralité de la collection l8. Après avoir exécuté la méthode print(), vous pouvez inspecter les collections imprimées dans la console. Notez que lorsque vous développez ImageCollection à l'aide du zippy (), puis que vous développez la liste de features, vous voyez une liste d'images, chacune pouvant également être développée et inspectée. Il s'agit d'une façon de découvrir l'ID d'une image individuelle. Une autre façon, plus programmatique, d'obtenir des images individuelles pour l'analyse consiste à trier la collection afin d'obtenir l'image la plus récente, la plus ancienne ou la plus optimale par rapport à une propriété de métadonnées. Par exemple, en inspectant les objets image dans les collections d'images imprimées, vous avez peut-être observé une propriété de métadonnées appelée CLOUD_COVER. Vous pouvez utiliser cette propriété pour obtenir l'image la moins nuageuse de 2015 dans votre zone d'intérêt :

Éditeur de code (JavaScript)

// This will sort from least to most cloudy.
var sorted = temporalFiltered.sort('CLOUD_COVER');

// Get the first (least cloudy) image.
var scene = sorted.first();

Vous êtes maintenant prêt à afficher l'image.

Digression : Afficher des images RVB

Lorsqu'une image multibande est ajoutée à une carte, Earth Engine choisit les trois premières bandes de l'image et les affiche en rouge, en vert et en bleu par défaut, en les étirant en fonction du type de données, comme décrit précédemment. En général, cela ne suffit pas. Par exemple, si vous ajoutez l'image Landsat (scene dans l'exemple précédent) à la carte, le résultat n'est pas satisfaisant :

Éditeur de code (JavaScript)

Map.centerObject(scene, 9);
Map.addLayer(scene, {}, 'default RGB');

Notez que la carte est d'abord centrée sur l'image à l'échelle de zoom 9. L'image est ensuite affichée avec un objet vide ({}) pour le paramètre visParams (pour en savoir plus, consultez la documentation Map.addLayer()). Par conséquent, l'image est affichée avec la visualisation par défaut : les trois premières bandes sont mappées respectivement sur R, G et B, et étirées sur [0, 1] puisque les bandes sont de type de données float. Cela signifie que la bande d'aérosols côtiers ("B1") est affichée en rouge, la bande bleue ("B2") en vert et la bande verte ("B3") en bleu. Pour afficher l'image sous forme de composite en couleurs réelles, vous devez indiquer à Earth Engine d'utiliser les bandes Landsat 8 "B4", "B3" et "B2" pour R, G et B, respectivement. Spécifiez les bandes à utiliser avec la propriété bands de l'objet visParams. En savoir plus sur les bandes Landsat dans cette référence

Vous devez également fournir des valeurs min et max adaptées à l'affichage de la réflectance des cibles typiques de la surface de la Terre. Bien que les listes puissent être utilisées pour spécifier différentes valeurs pour chaque bande, il suffit ici de spécifier 0.3 comme max et d'utiliser la valeur par défaut de zéro pour le paramètre min. Combinaison des paramètres de visualisation dans un seul objet et affichage :

Éditeur de code (JavaScript)

var visParams = {bands: ['B4', 'B3', 'B2'], max: 0.3};
Map.addLayer(scene, visParams, 'true-color composite');

Le résultat doit ressembler à la figure 5. Notez que ce code attribue l'objet des paramètres de visualisation à une variable pour une éventuelle utilisation ultérieure. Comme vous le découvrirez bientôt, cet objet sera utile lorsque vous visualiserez des collections d'images.

Tutorial_api_05_true_color.png
Figure 5. Image de réflectance TOA Landsat 8 sous forme de composite en vraies couleurs, étiré à [0, 0.3].

Essayez de visualiser différentes bandes. Une autre combinaison appréciée est "B5", "B4" et "B3", appelée composition fausse couleur. D'autres composites en fausses couleurs intéressants sont décrits sur cette page.

Comme Earth Engine est conçu pour effectuer des analyses à grande échelle, vous n'êtes pas limité à une seule scène. Il est maintenant temps d'afficher une collection entière sous forme de composite RVB.

Afficher des collections d'images

Ajouter une collection d'images à une carte est semblable à ajouter une image à une carte. Par exemple, en utilisant les images de 2016 dans la collection l8 et l'objet visParams défini précédemment,

Éditeur de code (JavaScript)

var l8 = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA');
var landsat2016 = l8.filterDate('2016-01-01', '2016-12-31');
Map.addLayer(landsat2016, visParams, 'l8 collection');

Notez que vous pouvez désormais faire un zoom arrière et voir une mosaïque continue où les images Landsat sont collectées (c'est-à-dire sur terre). Notez également que lorsque vous utilisez l'onglet Inspecteur et que vous cliquez sur l'image, vous verrez une liste de valeurs de pixels (ou un graphique) dans la section Pixels et une liste d'objets d'image dans la section Objets de l'inspecteur.

Si vous avez suffisamment dézoomé, vous avez probablement remarqué des nuages dans la mosaïque. Lorsque vous ajoutez un ImageCollection à la carte, il s'affiche sous la forme d'un composite de valeur récente, ce qui signifie que seuls les pixels les plus récents sont affichés (comme si vous appeliez mosaic() sur la collection). C'est pourquoi vous pouvez voir des discontinuités entre les chemins acquis à des moments différents. C'est également la raison pour laquelle de nombreuses zones peuvent sembler nuageuses. Sur la page suivante, découvrez comment modifier la façon dont les images sont composées pour vous débarrasser de ces nuages embêtants.