Formation 1:

Bienvenue dans le monde merveilleux de l'imagerie satellite !

Dans ce module, nous allons examiner les principes fondamentaux de Google Earth Engine (GEE) et découvrir comment inspecter et visualiser les données stockées dans les bandes d'images satellite. Les satellites voient le monde d'une manière à la fois similaire et très différente de l'œil humain, capturant une incroyable gamme de longueurs d'onde et un champ de vision beaucoup plus large. Grâce à l'API GEE, nous pourrons afficher et analyser ces images de manière accessible et puissante. Nous apprendrons également à utiliser l'outil Inspecteur, une fonction pratique de type « pointer et cliquer » qui nous permet d'extraire des données et des informations sur des emplacements spécifiques. Nous découvrirons une collection de nouveaux éléments JavaScript qui nous donneront les outils dont nous avons besoin pour explorer notre monde fascinant, à travers les yeux des satellites..

Visualisation d'images satellites et de bandes spectrales

Cette leçon vous apprend à inspecter et à visualiser les données stockées dans les bandes d’images satellites.

Principes fondamentaux de Google Earth Engine (GEE)

Commençons par cliquer sur le lien suivant pour ajouter le référentiel de code pour ces formations (lien). La plupart des formations de ce hackathon sont des versions modifiées ou condensées des formations trouvées dans ce livre de formation gratuit sur le Web Earth Engine.

Lorsque vous cliquez sur le lien vers le référentiel de code, vous devez être redirigé vers l'éditeur de code de GEE. Il s'agit d'une API JavaScript basée sur le Web, accessible même à ceux qui ne sont pas familiers avec JavaScript. Ici, vous pouvez afficher vos résultats sur une carte, enregistrer vos scripts, accéder à la documentation, gérer les tâches, etc.

L'image ci-dessous montre l'écran de l'éditeur de code.

  • Le volet central contient l'éditeur de code - c'est simple.

  • Le volet de gauche contient l'onglet Scripts et l'onglet Docs. L'onglet scripts est l'endroit où vous trouverez tous vos différents codes (comme l'explorateur de fichiers sous Windows). L'onglet Docs est incroyablement utile pour rechercher dans les fonctions prédéfinies de GEE que vous pourrez utiliser tout au long du hackathon (un peu comme la commande « help » dans MATLAB).

  • Le volet de droite contient l'onglet Inspector et l'onglet Console. L'onglet Inspector vous permet d'interagir avec la carte elle-même pour « pointer et cliquer » qui renverra des valeurs pour chaque pixel en fonction des données que vous avez chargées - vous verrez cela en action bientôt ! Enfin, l'onglet Console est l'endroit où vous pouvez afficher les sorties de données (un peu comme la fenêtre de commande dans MATLAB)

Bandes spectrales

Une bande spectrale est une partie du spectre énergétique. L'image ci-dessous montre l'intégralité du spectre énergétique. Les ondes visibles (bleu, vert et rouge) sont celles que les humains voient, mais les satellites sont capables de surveiller bien plus encore !

Différents objets reflètent différentes longueurs d'onde d'énergie. Par exemple, la végétation (chlorophylle) réfléchit une tonne de lumière verte dans le spectre visible, c'est pourquoi les plantes apparaissent vertes aux humains. Cependant, elles réfléchissent encore plus de lumière proche infrarouge que les humains ne peuvent pas voir, mais que les satellites peuvent voir !

Dans ce hackathon, vous analyserez de nombreuses bandes spectrales que les satellites voient mais que les humains ne peuvent pas voir ! Consultez la fiche technique des bandes spectrales pour obtenir plus d'informations sur des bandes spectrales spécifiques, leurs utilisations et leurs sources de données !

Accéder à une image

Pour commencer, vous allez créer une image avec l'éditeur de code. Au fur et à mesure que vous rencontrez du code dans la leçon, continuez en créant le même code dans votre éditeur de code et en cliquant sur Exécuter/Run.

En créant la variable avec la fonction ee.Image, Earth Engine charge une image capturée par le satellite Landsat 5 le 6 juin 2000, mais vous ne verrez pas encore de résultat. La fonction print vous permet de récupérer des données sur l'image, qui seront affichées dans une liste déroulante du panneau Console.

Vous devriez pouvoir lire que cette image se compose de 19 bandes différentes. Pour chaque bande, les métadonnées répertorient quatre propriétés, mais pour l’instant, notons simplement que la première propriété est un nom, ou une étiquette, pour la bande entre guillemets de style anglais. Par exemple, le nom de la première bande est “SR_B1”.

Un capteur satellite comme Landsat 5 mesure l'amplitude du rayonnement dans différentes parties du spectre électromagnétique. Les six premières bandes de notre image (« SR_B1 » à « SR_B7 ») contiennent des mesures pour six parties différentes du spectre. Les trois premières bandes mesurent les parties visibles du spectre, ou les quantités de lumière bleue, verte et rouge. Les trois autres bandes mesurent les parties infrarouges du spectre qui ne sont pas visibles à l'œil nu.

Visualiser une image

Ajoutons maintenant l’une des bandes à la carte en tant que couche (à l’aide de la fonction Map.addLayer) afin de pouvoir la voir. Suivez l’exemple de code suivant.

Ajoutons maintenant l’une des bandes à la carte en tant que couche (à l’aide de la fonction Map.addLayer) afin de pouvoir la voir. Suivez l’exemple de code suivant.

  1. first_image : il s'agit de l'ensemble de données à afficher sur la carte. (La variable que vous avez créée précédemment !)

  2. bands : il s'agit des bandes particulières de l'ensemble de données à afficher sur la carte. Dans notre exemple, nous avons affiché une seule bande nommée « SR_B1 ».

  3. min, max : elles représentent les limites inférieure et supérieure des valeurs de « SR_B1 » à afficher à l'écran. Par défaut, la valeur minimale fournie (8 000) est mappée sur le noir et la valeur maximale fournie (17 000) est mappée sur le blanc. Les valeurs entre le minimum et le maximum sont mappées linéairement sur des niveaux de gris entre le noir et le blanc. Les valeurs inférieures à 8 000 sont dessinées en noir. Les valeurs supérieures à 17 000 sont dessinées en blanc. Ensemble, les paramètres bands, min et max définissent les instructions d'affichage des données.

  4. 'Layer 1' : il s'agit d'une étiquette pour la couche de carte à afficher dans le gestionnaire de couches. Cette étiquette apparaît dans le menu déroulant des couches en haut à droite de la carte.When you run the code, you might not notice the image displayed unless you pan around and look for it. To do this, click and drag the map towards Shanghai, China. (You can also jump there by typing “Shanghai” into the Search panel at the top of the Code Editor). Zoom to the small dark square: that's the image you just created!

Félicitations ! Vous venez d'écrire votre premier script Earth Engine et vous souhaitez peut-être l'enregistrer. Cliquez sur le bouton Enregistrer. En cliquant sur Enregistrer, vous serez invité à créer un dossier dont le nom ne pourra plus être modifié à l'avenir. Il vous sera également demandé d'ajouter le code à un référentiel. Un référentiel est un moyen pratique d'organiser et de partager votre code. Une fois votre script enregistré, il apparaîtra dans le panneau du gestionnaire de scripts sur le côté gauche de votre éditeur de code.

L'outil inspecteur

Explorons cette image avec l’outil Inspecteur. Lorsque vous cliquez sur l’onglet Inspecteur sur le côté droit de l’éditeur de code, votre curseur doit maintenant ressembler à un réticule. Lorsque vous cliquez sur un emplacement dans l’image, le panneau Inspecteur affiche les données de cet emplacement sous trois catégories comme suit :

  • Point : données sur l'emplacement sur la carte. Cela inclut l'emplacement géographique (longitude et latitude) et certaines données sur l'affichage de la carte (niveau de zoom et échelle).

  • Pixels : données sur le pixel de la couche. Si vous développez cela, vous verrez le nom de la couche de carte, une description de la source de données et un graphique à barres. Dans notre exemple, nous voyons que « Layer 1 » est tiré d'un ensemble de données d'image qui contient 19 bandes. Sous le nom de la couche, le graphique affiche la valeur en pixels à l'emplacement sur lequel vous avez cliqué pour chaque bande de l'ensemble de données. Lorsque vous passez votre curseur sur une barre, un panneau apparaît pour afficher le nom de la bande et la « valeur de la bande » (valeur en pixels). Pour trouver la valeur en pixels pour « SR_B1 », passez le curseur sur la première barre à gauche. Alternativement, en cliquant sur la petite icône bleue à droite de « Layer 1 » (zone B), vous changerez l'affichage d'un graphique à barres à un dictionnaire qui indique la valeur en pixels pour chaque bande.

  • Objets : données sur l'ensemble de données source. Vous trouverez ici des métadonnées sur l'image qui ressemblent beaucoup à celles que vous avez récupérées précédemment lorsque vous avez demandé à Earth Engine d'imprimer l'image sur la console.

var first_image = ee.Image(
  'LANDSAT/LT05/C02/T1_L2/LT05_118038_20000606');
print(first_image);
Map.addLayer(
  first_image, //dataset to display
  {
    bands: ['SR_B1'], //band to display
    min: 8000, //display range
    max: 17000
  },
  'Layer 1' //name to show in layer manager
);

Dans l'exemple ci-dessus, nous affichons simplement une image et fournissons le lien vers une image en Chine que nous avons précédemment identifiée et dont nous savons qu'elle sera nette : « LANDSAT/LT05/C02/T1_L2/LT05_118038_20000606 ». Nous utilisons une image nette dans cet exercice, mais nous n'abordons pas vraiment la recherche et l'affichage d'une nouvelle image visuelle significative.

Pour trouver une nouvelle image, deux points importants sont importants. Premièrement, dans l'exercice ci-dessus, nous utilisons des données brutes de capteurs des satellites Landsat. Nous incluons le lien direct vers une image dont je sais déjà qu'elle est nette et utile. La plupart des images Landsat ne sont pas nettes. Elles incluent très souvent une couverture nuageuse, les satellites physiques survolent le territoire à des heures aléatoires et, parfois, les images sont prises la nuit. Par conséquent, l'image visuelle obtenue peut ne pas être automatiquement exploitable. De plus, les différents satellites Landsat couvrent jusqu'à une douzaine de bandes.

Pour votre information, décomposons les informations contenues dans le lien :

LANDSAT = The general Landsat "folder" within GEE.
LT05 = Landsat 5 Thematic Mapper (TM).
C02 = Collection 2 (the newest major collection reprocessing from USGS).
T1_L2 = Tier 1, Level-2 data (usually surface reflectance, with atmospheric corrections).

Mais vous ne pouvez pas savoir à l'avance comment trouver ces informations.Ainsi, lorsque vous recherchez une image utile à partir d'un ensemble de données brutes, comme Landsat, une façon de trouver des images intéressantes est de filtrer. Dans l'éditeur de code, vous pouvez filtrer la collection d'images par métadonnées (telles que la date d'acquisition et la géographie) et même vérifier la couverture nuageuse pour vous assurer que la scène sélectionnée offre une vue claire. Vous trouverez ci-dessous un exemple de codage qui montre comment filtrer les données brutes de Landsat 8 par plage de dates, géographie et couverture nuageuse :

var landsat8 = ee.ImageCollection('LANDSAT/LC08/C02/T1_L2')
// Filter by date.
.filterDate('2020-01-01', '2020-12-31')
// filter by a region, where the region is some geometry you define.
.filterBounds(region)
// Filter by cloud cover (ie this means less than 10%).
.filter(ee.Filter.ltLinks to an external site.('CLOUD_COVER', 10));

Ceci étant dit, l'exercice suivant porte sur l'utilisation d'ensembles de données prétraités, ce que je recommande. Les données telles que la couverture nuageuse, la nuit et parfois les dates sont généralement ignorées. Il existe donc de nombreux ensembles de données facilement exploitables. Le filtrage reste néanmoins un outil très utile.

Résumer

Voici ce que nous avons appris dans ce module :

  • L'API GEE est un outil accessible et puissant pour afficher (et analyser ultérieurement) des images satellites

  • Les satellites voient le monde à travers des bandes spectrales, tout comme l'œil humain voit le monde à travers des bandes rouges, vertes et bleues. Cependant, les satellites ont le potentiel de voir encore plus de longueurs d'onde en dehors du spectre visible et dans un champ de vision beaucoup plus large qu'un humain au sol !

  • L'outil d'inspection est une méthode simple de type « pointer et cliquer » pour extraire des données/informations sur des emplacements exacts sur notre carte interactive

Nouveaux éléments de code :

  • var crée une nouvelle variable dans GEE qui est utilisée pour stocker des informations. Dans notre exercice, nous l'avons utilisée pour stocker une image

  • ee.Image est une fonction qui charge une image à partir du catalogue de données GEE, que nous pouvons ensuite utiliser dans tout notre code

  • print est une fonction qui affichera des informations sur notre variable dans l'onglet Console

  • Map.addLayer est une fonction qui permet d'ajouter l'image satellite que nous avons chargée dans la fenêtre de carte sous notre éditeur de code