Une collection d'images fait référence à un ensemble d'images Earth Engine. Par exemple, la collection de toutes les images Landsat 8 est un ee.ImageCollection. Comme l'image SRTM que vous avez utilisée, les collections d'images ont également un ID. Comme pour les images uniques, vous pouvez découvrir l'ID d'une collection d'images en recherchant le Data Catalog Earth Engine dans 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 doit 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 Import (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
Notez que cette collection représente chaque scène Landsat 8 collectée, partout sur Terre. Il est souvent utile d'extraire une seule image ou un sous-ensemble d'images sur lequel tester les algorithmes. Pour limiter la collection par temps ou par espace, vous devez la filtrer. Par exemple, pour filtrer la collection afin d'obtenir des images couvrant 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. Accédez à la zone qui vous intéresse, pointez sur Geometry Imports (Importations de géométries) (si vous avez déjà défini une ou plusieurs géométries), puis cliquez sur +new layer (+nouveau calque) (si vous n'avez pas d'importations, passez à l'étape suivante). Sélectionnez l'outil de dessin de point (
) et placez un point dans votre zone d'intérêt. Nommez l'importation point. À présent, 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 de raccourci pour la méthode filter() plus générale sur les collections d'images, qui prend un ee.Filter() comme argument. Pour en savoir plus sur ces méthodes, consultez l'onglet Docs de l'éditeur de code. 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 bouton de développement (), 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. C'est l'un des moyens de découvrir l'ID d'une image individuelle. Une autre méthode plus programmatique pour obtenir des images individuelles à analyser 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 d'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 en 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 par défaut en rouge, vert et bleu, 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 au niveau de zoom 9. L'image s'affiche ensuite avec un objet vide ({}) pour le paramètre visParams (pour en savoir plus, consultez la documentation de Map.addLayer()). Par conséquent, l'image s'affiche 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], car 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. Pour en savoir plus sur les bandes Landsat, consultez cette référence.
Vous devez également fournir des valeurs min et max adaptées à l'affichage de la réflectance des cibles de surface terrestre typiques. 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 utilisation ultérieure possible. Comme vous le découvrirez bientôt, cet objet vous sera utile lorsque vous visualiserez des collections d'images.
Essayez de visualiser différentes bandes. Une autre combinaison appréciée est "B5", "B4" et "B3", appelée "composite en fausses couleurs". D'autres composites en fausses couleurs intéressants sont décrits ici.
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.
Affichage des collections d'images
L'ajout d'une collection d'images à une carte est semblable à l'ajout d'une image à une carte. Par exemple, en utilisant les images de 2016 de 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 là où les images Landsat sont collectées (c'est-à-dire sur la terre ferme). Notez également que lorsque vous utilisez l'onglet Inspecteur et que vous cliquez sur l'image, une liste de valeurs de pixels (ou un graphique) s'affiche dans la section Pixels, ainsi qu'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 valeurs récentes, ce qui signifie que seuls les pixels les plus récents sont affichés (comme l'appel de mosaic() sur la collection). C'est pourquoi vous pouvez voir des discontinuités entre les chemins qui ont été acquis à des moments différents. C'est également la raison pour laquelle de nombreuses zones peuvent apparaître 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 gênants.