Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
Google Earth Engine (GEE) est une plate-forme basée sur le cloud pour l'analyse à grande échelle de
données géospatiales. GEE permet aux utilisateurs d'accéder à une archive à l'échelle d'un pétaoctet
d'images télédétectées, de données auxiliaires et d'outils informatiques accessibles au public pour
accomplir une multitude de tâches de télédétection et géospatiales à des vitesses et à des échelles sans
précédent. GEE est gratuit pour un usage non commercial à condition que les utilisateurs s'inscrivent
pour un compte GEE. Depuis sa sortie en 2010, il s'est progressivement développé pour devenir un
outil confirmé pour l'analyse géospatiale à grande échelle. Dans ce module, vous vous concentrerez
sur l'acquisition et la préparation des données pour les analyser géospatialement. Vous apprendrez à
utiliser GEE pour acquérir et préparer des données des images Landsat, Sentinel et MODIS à utiliser
dans le flux de travail (workflows) de cartographie de la couverture terrestre et du changement.
EXERCICE 1: EXPLORER LES ARCHIVES DE DONNEES
Introduction
Earth Engine est disponible via les Interfaces de Programme d’Application (API) Python et JavaScript.
L'API JavaScript est accessible via un Environnement de Développement Intégré (IDE) basé sur le
Web appelé l'Editeur de Code. Cette plate-forme est l'endroit où les utilisateurs peuvent écrire et
exécuter des scripts pour partager et répéter l'analyse géospatiale et le traitement des flux de travail
(workflows). L'Editeur de Code offre un accès à la pleine puissance de l’Earth Engine. Dans cet
exercice, vous découvrirez la plate-forme de l'Editeur de Code et explorez des concepts de base de la
programmation, en JavaScript. Certaines connaissances de base de codage et JavaScript sont
nécessaires pour utiliser l'Editeur de Code de l’Earth Engine.
Matériaux nécessaires
- Un compte Google Earth Engine approuvé
- suggéré: Google Chrome installé sur votre ordinateur
i. Lorsque / si vous y êtes invité, laissez l'éditeur de code EE accéder à votre compte Google.
ii. Cela devrait vous amener à l'interface de l'Editeur de Code indiqué ci-dessous.
2. Utilisez le graphique ci-dessus pour vous guider et cliquer sur les onglets dans le panneau de la
main supérieure gauche, les Scripts et le panneau de Documentation (Docs).
i. Sous l'onglet Scripts, notez la grande variété de scripts d'exemple préchargés qui
démontrent des capacités et de l'offre de code que vous pouvez utiliser pour vos analyses.
Vous pouvez jeter un coup d'œil à ceux-ci pour commencer à apprendre à quels types de
choses que Earth Engine peut faire. Après avoir créé et enregistré un script plus tard dans la
journée, il sera disponible ici dans votre référentiel privé.
ii. Dans le cadre de l'onglet Docs, il existe une liste interrogeable de documentation pour les
types d'objets et méthodes prédéfinis GEE. Notez ceux-ci sont regroupés et organisés par type.
Explorez brièvement quels types de méthodes (fonctions) sont disponibles dans GEE pour
différents types d'objets.
(a) Sélectionnez l'un qui vous intéresse et cliquez dessus pour voir la fenêtre
d'informations avec une description des méthodes et des arguments associés
(obligatoire et facultatif). Tous les arguments facultatifs sont en italique. (Les
exemples de scripts incluent des exemples de nombreuses méthodes, essayez d'obtenir
d'abord la recherche d'eux à l'aide de la barre de recherche des scripts.)
3. Utilisation du graphique au-dessus de l'écran dans les onglets dans le panneau de la main supérieure
droite où les onglets Inspecteur, Console et Tasks (Tâches) sont situés.
i. Nous utiliserons l'Inspecteur (similaire à l'outil Identifier dans ArcMap) afin d'obtenir
facilement des informations sur les couches sur la carte à des points spécifiés (spécifiés en
cliquant sur le panneau de la carte).
ii. La Console est utilisée pour renvoyer des messages en fonction des scripts exécutant et
d'imprimer (afficher) des informations sur les données, les produits intermédiaires et les
résultats. Il enregistre également tous les messages de diagnostic, tels que des informations sur
les erreurs d'exécution.
iii. L'onglet Tasks est utilisé pour gérer l'exportation de données et de résultats.
4. Cliquez sur le bouton (?) /aide (Guide user) dans la partie supérieure droite et sélectionnez une
visite de fonctionnalité pour en savoir plus sur chaque composant de l'API.
i. Cliquez sur les options de la visite de fonctionnalités pour se familiariser avec chaque
composant de l'Editeur de Code.
2. Cela vous permettra de dessiner une géométrie qui représente le domaine d'étude qui vous intéresse.
Cliquez dans la fenêtre d'affichage de la carte pour créer un polygone autour d'une zone qui vous
intéresse (par exemple, la partie sud de la ville de Kénitra-Forêt de la Maamora). Rappelez-vous que
vous pouvez utiliser une couche de base (dans le coin supérieur à droite) sous forme de plan ou une
image satellite de type Google Earth. Double-cliquez pour fermer le polygone.
3. Après avoir fermé votre polygone, il y aura un enregistrement d'importation en haut du panneau de
l'éditeur de code. Reportez-vous à la flèche et la case rouges dans l'image ci-dessous.
4. Cliquez sur la flèche à côté de la ligne var studyArea pour voir les détails de la géométrie que vous
avez créée (voir l'image précédente illustrant un exemple).
i. Vous pouvez afficher le code généré en cliquant sur la case bleue à côté de la ligne Imports. Ce
code peut être copié et collé dans la fenêtre de l’Editeur du Code pour l’utiliser dans n’importe
quel script.
ii. Cliquez sur le mot géométry. Changez le nom de la géométrie en studyArea.
var studyarea =
/* color: #d63000 */
/* displayProperties: [
{
"type": "rectangle"
}
] */
ee.Geometry.Polygon(
[[[-6.6017445769855385, 34.25052633418923],
[-6.6017445769855385, 34.2232785364399],
[-6.5564259734699135, 34.2232785364399],
[-6.5564259734699135, 34.25052633418923]]], null, false);
5. Si vous pointez sur la ligne Geomtry, une icône de corbeille apparaît à gauche. Cela peut être utilisé
pour supprimer cette géométrie dans la fenêtre d’importation.
Cliquez sur le bouton SELECT et accédez à votre fichier Shapefile ou à une archive Zip contenant le
fichier Shapefile sur votre système ou support de fichiers local.
Lorsque vous sélectionnez un fichier .shp, veillez à sélectionner les fichiers .dbf, .shx et .prj
correspondants. Earth Engine utilisera par défaut les coordonnées WGS84 (longitude, latitude) si un
fichier .prj n'est pas fourni. Votre fichier doit être projeté en coordonnées WGS84.
Si vous téléchargez une archive Zip, assurez-vous qu'elle ne contient qu'un seul fichier Shapefile
(ensemble de .shp, .dbf, .shx, .prj, etc.) et aucun nom de fichier en double. Assurez-vous que les noms
de fichiers ne comportent pas de points ou de points supplémentaires. (Les noms de fichiers
comprendront un seul point avant l'extension).
Donnez à la table un ID d'actif approprié (qui n'existe pas déjà) dans votre dossier utilisateur. Cliquez
sur UPLOAD pour lancer le téléchargement
Après avoir lancé le téléchargement d'une table, une tâche d' " Asset ingestion " est ajoutée au
gestionnaire de tâches, qui se trouve sous l'onglet Tâches (Tasks) à droite de l'éditeur de code. Vérifiez
l'état du téléchargement en cliquant sur le bouton ? qui apparaît lorsque l'on passe la souris sur la
tâche. Pour annuler un téléchargement, cliquez sur l'icône en forme de spirale à côté de la tâche. Une
fois l'ingestion terminée, la cellule de la tâche devient bleue et la ressource apparaît dans votre dossier
utilisateur sous l'onglet Ressources (Assets ).
Exemple : télécharger les limites du canton A de la forêt de la Mamora sous format Shapefile
PARTIE 1 : TRAVAILLER AVEC DES IMAGES
A. Ouvrez un nouveau script
1. Ouvrez la page Web de l'éditeur de code dans Google Chrome, s'il n'est pas déjà ouvert:
https://code.earthengine.google.com/
2. Cliquez sur la flèche déroulante adjacente au bouton de Reset (réinitialisation) et sélectionnez Clear
15 (Effacer le script).
Il y a beaucoup de choses en deux lignes. Regardez de plus près les pièces de cette déclaration que vous êtes en
train de charger dans.
1) Double Forwer Slashes, //, sont des caractères de commentaire en JavaScript. Rappelez-vous que ceux-ci
empêchent le texte sur cette ligne d'être exécuté et sont utiles pour créer des notes ou des commentaires dans
votre code.
2) var qu est le mot-clé pour déclarer des variables en JavaScript. Rappelez-vous que les variables peuvent être des
chiffres, des chaînes, des objets, des collections d'objets, etc. et que les variables sont utilisées pour stocker des
informations à utiliser plus tard dans le script. Dans le cas de l'instruction ci-dessus, vous nommez la variable
lc8_image et l'utilisez pour faire référence à l'ensemble de données raster que vous souhaitez analyser.
3) ee.Image () est une fonction GEE qui indique à GEE que vous souhaitez charger une image en tant qu'objet (et
dans ce cas, enregistrez-la sous la forme d'une variable appelée "Lc8_Image"). En JavaScript, les fonctions
commencent par une lettre et ont une paire de parenthèses à la fin. Les fonctions incluent souvent des entrées
(inputs) ou des paramètres, qui indiquent à la fonction quoi faire, et sont spécifiés à l'intérieur des parenthèses.
Dans ce cas, le paramètre que vous spécifiez à l'intérieur des parenthèses est l'ID de l'image.
Une version généralisée de la déclaration ci-dessus est la suivante: ee.Image ('image_id'). "Image_ID" est l'image
que vous souhaitez charger ('LANDSAT/LC08/C01/T1_RT/LC08_201036_20210418') et référencer avec la variable
(lc8_image).
4) La syntaxe pour spécifier l'ID d'image dans cette fonction (ee.Image) est d'entourer la chaîne de caractères (l'ID
de l'image, 'LANDSAT/LC08/C01/T1_RT/LC08_201036_20210418') entre guillemets. L'identifiant de l'image ID est
entre guillemets car la collection et le nom de l'image sont des chaînes de caractères (string). Les chaînes sont des
ensembles de caractères qui, dans cet exemple, nomment l'ensemble de données spécifique.
a. Les ID d'image Landsat pour les scènes de Landsat individuelles sont disponibles chez glovis.usgs.gov.
Vous travaillerez avec cela plus dans l'exercice 3.
LC08_L1TP_201036_20200501_20200509_01_T1
'LANDSAT/LC08/C01/T1_RT/LC08_201036_20210418'
C. Ajouter l'image à la carte de la rédaction de code
1. Copiez et collez ou tapez le code ci-dessous dans votre script. Ces lignes supplémentaires ajouteront
l'image LandSat sur le panneau de la carte. Ajoutez ces lignes sous le code de l'étape précédente. GEE
exécutera le code (lignes) séquentiellement lorsque vous appuyez sur Run.
ii. Utilisez votre curseur pour naviguer (clic gauche et glisser) dans la vue Carte pour trouver
l'image que vous avez appelée. Ce serait bien si le script l'a fait cela pour nous, c’est ce que va
faire l’instruction suivante qui permet de faire le zoom sur la carte si elle est ajoutée au script.
2. Pour effectuer un zoom arrière, réduisez la deuxième entrée à un nombre inférieur à 8. Pour
effectuer un zoom avant plus important, augmentez le deuxième paramètre d'entrée (essayez 10).
Modifiez votre déclaration pour qu'elle ressemble aux deux lignes ci-dessous et cliquez sur Exécuter.
Que s'est-il passé ?
3. Dans le panneau en haut à gauche, passez de l'onglet Scripts à l'onglet Docs. Tapez
Map.centerObject() dans la barre de recherche de Docs. Quelle est la portée du paramètre de zoom ?
iii. Faites glisser le levier de transparence (la barre coulissante à droite du nom de la couche
dans l'image précédente). Cela rendra la "Layer 1" transparente, révélant la carte de base
(basemap) en dessous.
2. Examiner la documentation qui apparaît (indiquée ci-dessus). Ceci fournit des informations sur
l'utilisation et les arguments de cette fonction.
i. Notez que certaines options de saisie (telle que vis) sont en italique dans la documentation.
Cela signifie que ce sont des paramètres facultatifs (optionel) pouvant être spécifiés ou
délaissés. Si vous souhaitez sauter un paramètre facultatif, utilisez «undefined» comme
support de lieu. Voir la déclaration ci-dessous pour un exemple.
Il existe un certain nombre d'options disponibles pour ajuster la manière dont les images sont affichées. Les
entrées les plus couramment utilisées pour modifier les paramètres d'affichage sont les suivantes:
Bands: Permet à l'utilisateur de spécifier les bandes à rendre en rouge, de vert et de bleu.
Min and max: définit la plage d'étirement des couleurs. La plage dépend du type de données. Par exemple,
l'imagerie 16 bits non signée a une plage totale de 0 à 65 536. Cette option vous permet de définir l'affichage sur
un sous-ensemble de cette plage.
Palette: Spécifie la palette de couleurs utilisée pour afficher des informations. Vous verrez comment utiliser cette
option plus tard dans le didacticiel.
Naming convention (in the Layers Legend): (Convention de dénomination (dans la légende des couches
(calque))): Vous pouvez également spécifier le nom qui apparaît dans la légende des couches. Dans le code ci -
dessus, vous avez nommé la couche "Landsat 8scene".
Syntax: la plupart de ces paramètres optionnels sont entrés dans l'objet dictionnaire en tant que paires de valeurs
clés.
La syntaxe est:
{vis_param1: number, number, number
vis_param2: 'string, string, string',
1. Modifiez la fonction Map.addLayer() dans notre script pour afficher l'image sous forme de faux
composite de couleurs et appliquez un étirement pour améliorer l'affichage. Modifiez l'instruction
Map.addLayer() à partir des étapes précédentes pour ressembler au code ci-dessous. La déclaration ci-
dessous inclut les paramètres facultatifs suivants : afficher les bandes B6, B5et B4 (bands: ['B6', 'B5',
'B4']), spécifier un étirement pour améliorer la visualisation (min: 5136, max: 31261, gamma: 1.6) et
donner enfin à l'image un nom d'affichage.
2. Cliquez sur Exécuter et utiliser les outils de la carte pour explorer le résultat. Notez que le nom sous
les couches (légende) est maintenant Landsat8scene.
3. Copiez et collez l'instruction suivante dans votre éditeur de code. Puis cliquez sur Run.
4. Maintenant, dans l'onglet Console, cliquez sur la flèche à côté de l’Image LANDSAT/... pour
afficher les propriétés de l'image. Cliquez ensuite sur la flèche à côté de bandes: pour afficher les
propriétés de la bande. Cela révélera que la première bande (indexée à 0) est appelée “B1”, la seconde
(indexée à 1) est appelée “B2”, etc. La figure suivante illustre un exemple.
Note: Pour en savoir plus sur les combinaisons de bandes pour la visualisation les images Landsat 8
et Landsat 5 ou 7, consultez la comparaison des bandes Landsat dans le site:
www.usgs.gov/landsat.
6. Cliquez sur le bouton Enregistrer (Save) dans la partie supérieure droite du panneau Editeur de
Code pour enregistrer votre script pour une référence future.
i. Nommez ce script : Visualisez une image LandSat 8.
Note: il existe de nombreuses autres options de visualisation des données dans la fenêtre de la
carte, telles que la définition d'un masque ou la mosaïque de deux ensembles de données.
3. Sélectionnez le script Normalized Difference (différence normalisé) dans la liste des scripts (stockés
dans le sous-groupe Image). Ceci copiera le script dans votre panneau de Code Editor.
4. La figure ci-dessous montre le script qui devrait apparaître dans le panneau Code Editor (panneau
central supérieur).
5. Lisez le script de Normalized Difference, ligne par ligne (ou déclaration par déclaration) pour voir
ce qu'il fait:
i. Les lignes 1 à 6 sont des notes, ou des commentaires, que le développeur a inclus pour
décrire le script. Les commentaires de ligne sont désignés par le //, les doubles barres obliques
au début de la ligne. Les commentaires sont ignorés par l'éditeur de code lorsque le script
s'exécute.
ii. La ligne 8 accomplit deux choses. Il déclare une variable, appelée img. Il attribue ensuite
une valeur à cette variable. La valeur est une image MODIS
ee.Image('MOD09GA/MOD09GA_005_2012_03_09').
iii. La ligne 9 fait plusieurs choses. Il déclare et attribue une valeur à une variable, appelée
ndvi. Il appelle également la méthode NormalizedDifference d’Earth Engine et l'applique à la
variable "img" définie au niveau de la ligne précédente. Les bandes "sur_refl_b02" et
"sur_refl_b01" sont spécifiées comme entrées de ce calcul (arguments de la méthode). Ces
deux bandes sont les bandes NIR (Proche-infrarouges) et RED (rouges), de sorte que le
résultat du calcul est une image de l'Indice de Végétation par Différence Normalisée (NDVI).
Cette image ndvi calculée est celle qui est assignée à la variable ndvi. Plus précisément, c'est
une image qui représente le calcul
(sur_refl_b02 - sur_refl_b01) / (sur_refl_b02 + sur_refl_b01)
iv. Les lignes 10-12 déclarent une variable ‘palette’, et l'affectation d'une matrice qui spécifie
une palette de codes de couleur hexadécimale pour afficher l'image ndvi résultante. Les
couleurs hexadécimales sont : blanc (FFFFFFF), brun (CE7E45), jaune (FCD163), verts
(529400) et sombre (011301).
Note: vous pouvez en savoir plus sur les codes de couleur hexadécimale ici
http://www.colorhexa.com/.
v. La ligne 14 centre la carte sur la zone d’intérêt. Les arguments, les valeurs entre crochets,
sont les valeurs de longitude et de latitude pour Kansas City, États-Unis; la troisième valeur
définit le niveau de zoom.
vi. Les lignes 15 à 17 ajoutent des données à la fenêtre en sortie de la carte (panneau
inférieur). Deux images sont affichées : la variable img, qui pointe vers l’image MODIS
d’origine, et la variable ndvi, qui pointe vers l’image de Différence Normalisée créée à la
ligne 9.
6. Cliquez sur le bouton Run en haut à droite de l'éditeur de code pour exécuter le script de
Normalized Difference.
i. Vous devriez voir une image MODIS et l'image NDVI résultante apparaissent dans la
fenêtre de sortie de carte en bas de votre écran.
ii. Dans la ligne 14, changer les valeurs de longitude et de latitude comme suit :
Map.setCenter(-5, 35, 8) pour zoomer sur la Maroc; réexécuter le script pour voir le
résultat.
7. Examinez visuellement les résultats dans la fenêtre de sortie de la carte à l'aide des outils de la
visionneuse de la carte.
i. Cliquez ou passez la souris sur le bouton Layers dans le coin supérieur droit du panneau de
sortie de carte en bas de votre écran (illustré dans la figure suivante).
ii. Activez et désactivez la couche NDVI en décochant et en cochant la case à coté de la
couche NDVI.
iii. Cliquez et faites glisser le curseur en avant et en arrière pour ajuster la transparence de
la couche NDVI et visualiser l'image MODIS sous l'image NDVI (voir la figure,
montrant la boîte de paramètres de visualisation)
8. Utilisez le panneau de l’Inspector pour explorer les valeurs de l'image NDVI résultante.
i. Cliquez sur l'onglet Inspecteur dans le panneau à droite.
(a) Survolez votre curseur sur la carte. Notez que votre curseur est devenu une croix.
ii. Cliquez sur n'importe où sur la carte et observez les valeurs qui apparaissent dans la fenêtre
sous l'onglet Inspecteur.
(a) Ce sont les valeurs du pixel à cet endroit pour:
(i) Les valeurs des bandes de l'image MODIS.
(ii) la valeurs NDVI calculée.
Introduction
Le Code Editor offre l'accès à toute la puissance du Earth Engine; cependant, une compréhension de
base des principes fondamentaux du codage et du JavaScript est requise. Dans cet exercice, vous
apprendrez la syntaxe JavaScript et plusieurs concepts clés de données spatiales Earth Engine. Cet
exercice se concentre sur les propriétés et méthodes, ou fonctions, associées à des images raster
uniques dans Earth Engine. Cependant, vous obtiendrez également une brève introduction à d'autres
types d'objets spatiaux Earth Engine. Cet exercice vous permettra d'écrire un script JavaScript simple.
Vous en apprendrez également sur les tables Fusion (Fusion Tables).
// Créez une image NDVI à l'aide de bandes les bandes NIR et Red (5 et 4).
var NDVI = lc8_image.normalizedDifference(['B5', 'B4']);
// Affiche l'image NDVI avec un stretch en niveaux de gris.
Map.addLayer(NDVI, {min: -0.2, max: 0.5, palette: ['FFFFFF', '339900']}, "NDVI");
B. masquer les nuages
1. Effacez votre script de la partie 2 A, sauf pour les lignes ci-dessous.
2. Exécutez le script. Remarquez les nuages qui sont présents sur la moitié nord de l'image ?
Ultérieurement, vous allez construire un processus pour les retirer de l'imagerie.
3. Premièrement, vous allez créer une variable, cloud_thresh. Cela permettra de stocker la valeur du
seuil de probabilité du nuage. Après avoir rédigé le script, vous pouvez facilement modifier la valeur
de cette variable. Changez la valeur et réexécutez le script pour déterminer la valeur de seuil de nuage
appropriée pour la région d'étude.
Ensuite, vous utiliserez un algorithme de Earth Engine qui calculera un score simple de probabilité
de nuages en combinant la luminosité, la température et l'indice de neige normalisé (NDSI). Cette
probabilité est représentée par une bande ajouté à l’image ‘cloud’ sur une échelle de 0 à 100, les
valeurs les plus élevées indiquant une plus grande probabilité qu'un pixel soit obscurci. Vous
pouvez en savoir plus à ce sujet dans l'onglet Docs (ou consulter l'image ci-dessous)..
4. Copiez les lignes ci-dessous et collez-les en bas de votre script. Cela générera et une couche raster
dont les valeurs des pixels varient de 0 à 100, les pixels d'une valeur plus élevée sont plus susceptibles
d'être des nuages.
5. (Facultatif) Ajoutez la couche de nuages à la carte en copiant les lignes ci-dessous et en les ajoutant
au bas de votre script. Cliquez sur Exécuter.
i. Quelles valeurs sont attribuées aux zones nuageuses ? (Indice : utiliser l'inspecteur pour
rechercher des valeurs à différents endroits de la carte)
ii. Remarquez-vous la différence entre les résultats des deux instructions Map.addLayer() ?
(Indice : utilisez l'onglet inspecteur et activez et désactivez les couches pour comparer)
iii. Après avoir inspecté le raster cloudscore, supprimez (ou commentez -en ajoutant double
slaches) les lignes suivantes de votre script.
// Etant intéressé seulement par la seule couche de nuage, spécifique juste cette bande à afficher
dans les Paramètres de la déclaration de Map.addLayer.
Map.addLayer(cloudscore, {bands: 'cloud'}, 'Cloud Likelihood');
"
Cloud " est alors placée dans une variable appelée "cloudLikelihood"..
1. Copiez les lignes ci-dessous et collez-les au bas de votre script. Ce code utilise la méthode lt() pour
créer un raster binaire qui attribue une valeur à chaque pixel :
i. Un (1) si la probabilité du nuage, variable de qualité, est inférieure à la valeur seuil du
nuage;
ii. Zéro (0) si la probabilité du nuage, variable de qualité, est supérieure à la valeur seuil du
nuage.
2. Exécutez le code et inspectez les valeurs à différents endroits (indice: utilisez l'Inspector).
3. Copiez les lignes ci-dessous et collez-les au bas de votre script.
i. Vous utilisez la méthode updateMask() pour supprimer de l'image Landsat les valeurs dont
la probabilité de nuages est élevée. La méthode updateMask() supprime les pixels de l'image
Landsat là où l'image d'entrée, CloudPixels, a une valeur de zéro.
ii. Exécutez le code et inspectez la sortie.
// Créez un masque indiquant quels pixels sont susceptibles d'être des nuages.
var lc8_imagenoclouds = lc8_image.updateMask (cloudPixels);
// revoir le résultat.
Map.addLayer(lc8_imagenoclouds, {bands: ['B6', 'B5', 'B4'], min: 0.1, max: 0.5},
'Landsat8scene_cloudmasked');
3. Utilisez les outils de visualisation pour explorer les images et essayez d'autres seuils si vous le
souhaitez.
// Get an image.
var lc8_image = ee.Image('LANDSAT/LC08/C01/T1_RT/LC08_201036_20210504');
//Add the image to the map as a false color composite.
Map.addLayer(lc8_image, {bands: ['B6', 'B5', 'B4'], "min":5307,"max":25723,"gamma":1.6},
'Landsat8scene');
// Center the map on the image.
Map.centerObject(lc8_image, 9);
// Retrieve information about the bands as an Earth Engine list.
var bandNames = lc8_image.bandNames();
print('Band names: ', bandNames);
// Get projection information from band 1.
var b1proj = lc8_image.select('B1').projection(); print('Band 1 projection: ', b1proj);
// Get scale (in meters) information from band 1.
var b1scale = lc8_image.select('B1').projection().nominalScale(); print('Band 1 scale: ', b1scale);
// Note that different bands can have different projections and scale.
var b8scale = lc8_image.select('B8').projection().nominalScale();
print('Band 8 scale: ', b8scale);
// Get a list of all metadata properties.
var properties = lc8_image.propertyNames();
print('Metadata properties: ', properties);
// Get a specific metadata property.
var cloudiness = lc8_image.get('CLOUD_COVER'); print('CLOUD_COVER: ', cloudiness);
// Get the timestamp and convert it to a date.
var date = ee.Date(lc8_image.get('system:time_start'));
print('Timestamp: ', date);
ou ici:
http://eloquentjavascript.net/06_Object.html.
Il y a aussi des objets d’Earth Engine. Ce sont des objets qui ont une signification dans Earth Engine,
mais pas des applications JavaScript générales. Des exemples d'objets d’Earth Engine incluent des
images (par exemple, et une scène Landsat) et des collections d'images (une collection de scènes
Landsat). Ici, l'accent est mis sur les objets d’Earth Engine et leurs méthodes de géotraitement
associées. Cependant, il est important de distinguer les objets d’Earth Engine et des objets javascript
afin de ne pas appliquer à tort de méthodes d'un type d'objet à l'autre.
Methods: Les fonctions qui sont spécifiques aux types d'objets sont appelées méthodes. Ils peuvent
récupérer des données, trier des données, mettre à jour les valeurs des propriétés d'un objet, etc. Par
exemple, la méthode NormalizedDifference, est une méthode d'objet d'image.
Image: les données raster sont représentées sous forme d'objets images dans Earth Engine. Un objet
image représente une image raster unique, telle qu'une seule scène Landsat collectée un jour donné, un
composite médian Landsat ou un jeu de données topographiques (DEM). Les images sont composées
de zéro ou plusieurs bandes, où chaque bande a un nom, un type de données, une résolution de pixel et
une projection. Chaque image a également des métadonnées stockées sous forme de dictionnaire de
propriétés. En savoir plus ici - https://developers.google.com/earth-engine/image_info
Image collection: un ensemble d'images. Par exemple, la collection Landsat 8 TOA Reflectance
(LANDSAT/LC8_L1T_TOA) comprend toutes les images Landsat 8 recueillies depuis le 11 avril
2013, orthorectifiées et corrigées en fonction de la réflectance au sommet de l'atmosphère. Les
collections sont utiles pour l'analyse temporelle, ou pour créer des composites sans nuages qui incluent
des images provenant de plusieurs acquisitions.
Introduction
Dans cet exercice, vous continuerez à découvrir la syntaxe JavaScript et certains nouveaux concepts
de données spatiales Earth Engine. Vous vous appuierez sur ce que vous avez appris dans l’exercice 2
sur les objets image; toutefois, vous allez maintenant vous concentrer sur l’utilisation de collections
d’images ou de piles d’objets image similaires. Dans cet exercice, vous allez vous concentrer sur les
concepts et méthodes de base associés aux collections d’images dans Earth Engine.
Objectifs
Pratiquez l'écriture et l'exécution de code dans l'éditeur de code du Earth Engine pour accéder à la
collection d'images raster, filtrer dans le temps (par plage de date) et dans l'espace (par zone d'étude,
par exemple), utiliser la géométrie, et explorer certaines fonctionnalités de traitement d'image
2. Pour ajouter cette collection à la carte, copiez le code ci-dessous et collez-le dans l'éditeur de code.
Cliquez ensuite sur Run pour exécuter toutes les lignes.
I. Qu'est-ce qui est cartographié ici ? La collection d'images comporte un certain nombre d'images,
mais toutes ne sont pas cartographiées. Lorsque vous utilisez la fonction Map.addLayer pour ajouter
une collection d'images à la fenêtre de la carte, le pixel le plus récent s'affiche par défaut.
3. (Facultatif) Si vous ajoutez une déclaration d'impression, vous pouvez déterminer combien d'images
se trouvent dans la collection. Copiez et collez les lignes suivantes dans le bas de votre script.
i. Cependant, comme la collection d'images est assez importante, un message d'erreur est
renvoyé dans la console « Collection query aborted after accumulating over 5,000 elements.
La requête d'impression de la collection a échoué après avoir accumulé les métadonnées de
plus de 5 000 éléments. Ensuite, vous filtrerez la collection en fonction de paramètres spatiaux
et temporels et apprendrez une meilleure façon d'obtenir un compte du nombre d'images dans
la collection d'images.
ii. Mettez en commentaire l'instruction print. Vous y reviendrez plus tard.
// print(landsat8_collection);
1. Dessiner une géométrie qui représente le domaine d'étude qui vous intéresse. Cliquez dans la
fenêtre d'affichage de la carte pour créer un polygone autour d'une zone qui vous intéresse (par
exemple, partie sud de la ville de Kénitra-voir exercice1). Rappelez-vous que vous pouvez
activer et désactiver l'image Landsat pour voir la couche de base en dessous. Double-cliquez
pour fermer le polygone.
4. Cliquez sur la flèche à côté de la ligne var studyArea pour voir les détails de la géométrie que vous
avez créée.
// Affiche l'image.
Map.addLayer(landsat8_studyArea,
{min: 0.05, max: 0.8, bands: ['B6', 'B5', 'B4']},'Landsat 8 in study region');
3. Cliquez à nouveau sur Exécuter. Maintenant, la collection d'images sera filtrée pour inclure
uniquement les images qui coupent le polygone que vous avez dessiné.
4. (Facultatif) Modifiez la déclaration d'impression pour imprimer les détails de votre nouvelle
collection d'images, landsat8_studyArea (assurez-vous de déplacer cette instruction dessous de la
création de la variable landsat8_studyArea). Si votre collection d'images a moins de 5000 images, des
informations sur la collection sont imprimées sur la console. La taille de votre collection d'images
varie en fonction de la taille de la géométrie que vous avez digues.
5. Nous pouvons également utiliser la méthode de la taille (size()) de la collection d'images pour
déterminer le nombre d'images dans la collection. Copiez les affirmations suivantes et collez-les en
bas de votre script. Puis exécutez le script.
3. (Facultatif) Voici quelques méthodes supplémentaires que vous pouvez utiliser pour explorer votre
collection d'images. Celles-ci sont extraites de la page suivante de la documentation utilisateur:
https://developers.google.com/earth-engine/ic_info
// Trier par une propriété de couverture nuageuse, obtenir l'image la moins nuageuse.
var LoCloudimage = ee.Image(landsat8_studyArea.sort('CLOUD_COVER').first());
print('Least cloudy image: ', LoCloudimage);
// Limiter la collection aux 10 images les plus récentes.
var recent = landsat8_studyArea.sort('system:time_start', false).limit(10);
print('Recent images: ', recent);
PARTIE 8: INTRODUCTION AUX REDUCTEURS
1. Commencez avec une fenêtre de script vide et copiez les lignes ci-dessous dans l'éditeur de code -
assurez-vous simplement de redessiner votre région d'étude (il s’agit des mêmes instructions
modifiées du script avec lequel vous avez travaillé). Exécutez le script.
// Get a collection.
var landsat8_collection = ee.ImageCollection('LANDSAT/LC08/C01/T1_TOA');
// Filter to scenes that intersect your boundary.
var landsat8_studyArea = landsat8_collection.filterBounds(studyArea);
// Filter to scenes for time period of interest.
var landsat8_SA_2021 = landsat8_studyArea.filterDate('2021-01-01', '2021-12-31');
print(landsat8_SA_2021, 'landsat8_SA_2021');
2. Ajoutez maintenant les instructions ci-dessous pour créer et afficher un composite médian. Dans
ces instruction on utilise la méthode de réduction de la collection d'images median(). Cela créera
un objet Image (image unique) représentant la valeur médiane dans chaque bande de toutes les
images de votre collection filtrée.
iv. L'image est également relativement exempte de nuages puisque vous visualisez la valeur
médiane des pixels pour toutes les images de la collection. Y a-t-il encore des nuages ?
Même en utilisant un réducteur de médiane, il peut y avoir des pixels qui ressemblent à des nuages. Il
est préférable de masquer les nuages dans chaque image de la collection d'images avant d'exécuter le
réducteur médian. Pour ce faire, vous allez appliquer une fonction sur la collection d'image.
4. Enregistrez votre script, nommez-le 'Exercice 3 Image Collection Part 8'. Vous pourrez y revenir
plus tard dans l'exercice.
En effet, au fur et à mesure que vous développez votre script, il peut commencer à devenir assez long.
Pour le garder organisé et créer un code plus efficace, vous pouvez réutiliser les pièces que vous avez
construites en tirant parti des fonctions. Les fonctions divisent votre code en morceaux séparés,
enveloppent ces morceaux et leur donnent un nom que vous pouvez appeler pour l'appliquer plus tard
en cas de besoin. Les fonctions sont essentiellement des morceaux modulaires de code réutilisables.
Par exemple, vous pouvez avoir une fonction pour obtenir le ou les ensembles de données d'intérêt,
une pour les analyser et enfin une autre pour les exporter. Vous pouvez diviser le code en trois parties
– chacune enveloppée comme une fonction.
Les fonctions sont également très utiles lorsque vous avez une série d'instructions que vous souhaitez
répéter plusieurs fois dans le code. Par exemple, supposons que vous vouliez calculer la moyenne des
données ou l'indice de végétation de différence normalisée (NDVI) d'une série de rasters. Vous pouvez
créer une fonction que vous pouvez appeler chaque fois que vous souhaitez exécuter l'un de ses
éléments dans votre code, plutôt que d'avoir à réécrire ces éléments à chaque fois.
A. Structure
Voici comment les fonctions sont construites:
i. var: déclare une variable dans laquelle stocker la fonction.
ii. functionName: Le mot fonction est suivi du nom que vous souhaitez donner à la fonction. Vous
pouvez nommer la fonction comme vous le souhaitez, les mêmes règles et suggestions de style sur la
façon de nommer les variables s'appliquent à la dénomination des fonctions (le nom ne peut pas
commencer par un nombre, il doit être descriptif de ce que la fonction fait, etc). Faites-le suivre d'un
signe égal.
iii. = function: Indiquez que la nouvelle variable est un objet de fonction. Écrivez le mot function
JavaScript, le tout en lettres minuscules.
iv. Input parameters: Après le mot fouction, ajoutez une parenthèse ouverte et une parenthèse
fermée. Ils seront remplis avec l'ensemble des paramètres d'entrée que l'utilisateur passe à la fonction,
ou laissés vides pour les fonctions qui n'ont pas de paramètres. Un paramètre d'entrée est un élément
d'information (il peut être stocké dans une variable) qui est transmis à la fonction lorsqu'elle est
appelée. Si vous souhaitez inclure plusieurs paramètres, séparez-les par des virgules. Par exemple,
pour créer une fonction permettant de calculer le NDVI d'une image, on doit définir l'image sur
laquelle vous calculez le NDVI comme paramètre d'entrée.
v. Curly brackets (Accolades): après les parenthèses contenant les paramètres d'entrée, ajoutez une
accolade ouverte et une accolade fermée.
vi. Code: Écrivez le code ou plusieurs codes que vous souhaitez exécuter dans votre fonction (une
instruction ou des centaines de lignes) entre les accolades ouvertes et fermées.
vi. Call the function (Appeler la fonction): Une fois que vous avez créé une fonction, elle ne
s'exécute que si vous l'appelez. Pour utiliser la fonction dans votre code, écrivez le nom de la fonction,
suivi de parenthèses à l'intérieur desquelles insérer les paramètres d'entrée requis, et terminez la
déclaration par un point-virgule.
Il s'agit de la structure de base d'une fonction. Si cela vous semble compliqué, ne vous inquiétez pas,
tout prendra sens lorsque vous en écrirez une vous-même. Ci-dessous, vous allez vous entraîner en
créant une simple fonction calculate_sum.
Note : La convention commune déclare et spécifie (toutes) les fonctions en premier, puis les appelle
plus tard dans le script. Ce n'est pas obligatoire, mais cela rend le code plus facile à lire.
5. Une fois qu'une fonction a été créée, vous pouvez l'appeler autant de fois que vous le souhaitez.
Appelez-la à nouveau avec de nouveaux paramètres. Donc, il suffit d’ajouter les deux chiffres de votre
choix et imprimez le résultat.
Rappelez-vous dans l’exercice 2, vous avez appris à masquer les nuages. Maintenant, vous allez
l’écrire comme une fonction que vous pouvez appeler plus tard dans le script.
A. Ajouter des instructions de masquage des nuages à partir de l’exercice 2
1. Copiez et collez les lignes ci-dessous dans une fenêtre d'éditeur de code vide.
i. Le contenu devrait sembler familier, car c'est le processus que vous avez appris à l'exercice
2 pour masquer les nuages.
ii. nommer la fonction : le mot var et le nom de la variable enregistrent la fonction en tant
qu'objet auquel vous pouvez vous référer plus tard, « maskclouds ».
iii. function () indique que la variable maskClouds est un type d'objet function.
iv. Mettez en retrait toutes les lignes (le ou les codes à exécuter) de la fonction pour faciliter la
lecture.
v. l’instruction "return" va permettre à travers la méthode updateMask (cloudPixels) de
renvoyer l’image d’entrée (image) après l’avoir masquée par l’image cloudPixels qui constitue
le masque (non valide = 0, valide = 1).
// Get an image.
var lc8_image = ee.Image('LANDSAT/LC08/C01/T1_TOA/LC08_201036_20210520');
// Specify the cloud likelihood threshold.
var cloud_thresh = 40;
// Create the cloud masking function.
var maskClouds = function(image){
// Add the cloud likelihood band to the image.
var cloudScore = ee.Algorithms.Landsat.simpleCloudScore(image);
// Isolate the cloud likelihood band.
var cloudLikelihood = cloudScore.select('cloud');
// Compute a mask in which pixels below the threshold are 1. (Calculer un masque dans lequel les
pixels inférieurs au seuil sont 1)
var cloudPixels = cloudLikelihood.lt(cloud_thresh);
// Mask these pixels from the input image. ( Masquer ces pixels à partir de l’image d’entrée)
// Return the masked input image. (Renvoyer l’image d’entrée masquée par cloudPixels)
Enregistrez votre script sous "exercice 3_cloudmaskfunction".
// Get a collection.
var landsat8_collection = ee.ImageCollection('LANDSAT/LC08/C01/T1_TOA');
// Filter to scenes that intersect your boundary.
var landsat8_studyArea = landsat8_collection.filterBounds(studyArea);
// Filter to scenes for time period of interest.
var landsat8_SA_2021 = landsat8_studyArea.filterDate('2021-01-01', '2021-12-31');
// Specify the cloud likelihood threshold.
var cloud_thresh = 40;
// Create the cloud masking function.
var maskClouds = function(image){
// Add the cloud likelihood band to the image.
var cloudScore = ee.Algorithms.Landsat.simpleCloudScore(image);
// Isolate the cloud likelihood band.
var cloudLikelihood = cloudScore.select('cloud');
// Compute a mask in which pixels below the threshold are 1.
var cloudPixels = cloudLikelihood.lt(cloud_thresh);
// Mask these pixels from the input image.
// Return the masked input image.
return image.updateMask(cloudPixels);
};
2. Ajoutez maintenant une instruction qui fait correspondre la fonction à la collection d'images.
Ajoutez ensuite la collection d'images avec les nuages masqués à l'affichage de la carte. Voir
l'exemple de déclaration de carte ci-dessous.
3. Utilisez un réducteur médian sur la collection d'images landsat8_sa_2021noclouds que vous venez
de créer pour agréger les informations de toutes les images de la collection. Voir l'exemple de code ci-
dessous.
Introduction
Dans les exercices précédents, vous avez travaillé avec des données et généré de nouvelles sorties
entièrement via l'éditeur de code GEE. Un avantage majeur du cloud computing est la possibilité
d'accomplir des tâches complexes avec la charge de calcul et le stockage de données déplacés vers le
cloud; cependant, pour de nombreuses applications, vous voudrez exporter et enregistrer vos résultats
à un moment donné. Dans cet exercice, vous apprendrez à utiliser l'éditeur de code pour exporter des
résultats que vous pouvez enregistrer, partager et utiliser dans vos analyses SIG sur votre bureau.
Objectifs
Apprenez à exporter des résultats et des images,
Exportez des données à partir d'un script de traitement d'image complet pour obtenir des données
utiles.
1. Copiez et collez les instructions suivantes dans un panneau d'éditeur de code vide. Cliquez sur Run
pour explorer l'ensemble de données.
2. Ensuite, utilisez les outils de dessin pour dessiner un petit polygone qui représente la région pour
laquelle vous souhaitez extraire les données de hauteur de canopée. Reportez-vous à l'exercice 3,
partie 2 si vous avez besoin d'un rappel sur comment numériser une géométrie. N'oubliez pas : plus le
polygone est petit, plus le temps de téléchargement est rapide.
PARTIE2 : (FACULTATIF) GENERER UN HISTOGRAMME
1. Vous trouverez ci-dessous le script permettant de générer un histogramme de la hauteur de la
canopée sur la région d'étude que vous venez de numériser. Copiez et collez-la dans votre panneau
d'édition de code pour étudier la gamme des hauteurs de la canopée dans votre région d'étude.
région-Par défaut, la fenêtre d'affichage de l'éditeur de code est exportée, mais vous pouvez
également spécifier une géométrie pour modifier l'étendue de l'exportation.
crs - Le système de référence de coordonnées pour l'image de sortie. Ceci est spécifié à l'aide du
code EPSG. Vous pouvez rechercher le code EPSG pour vos projections spatiales souhaitées à
http://spatialreference.org.
scale-La résolution en mètres par pixel. La résolution native de l'ensemble de données sur la
hauteur de la canopée est de 30 secondes d'arc, soit environ un kilomètre.
E. Exécutez la tâche pour exporter une image sur Google Drive Google Drive
Note: Google Drive est un lieu de maintien temporaire pour toutes les données que vous pouvez
télécharger.
1. Exécutez le script. Après un moment, l'onglet Tasks dans le coin supérieur droit de l'éditeur de code
doit être mis en évidence.
2. Cliquez sur l'onglet Tâches. Cliquez ensuite sur le bouton Blue Run (affiché ci-dessous) pour
exporter les données sur votre Google Drive..
3. Passez en revue les informations dans la fenêtre d'initiation d'exportation qui apparaît (ci-dessous).
Puis cliquez sur Run pour commencer.
Note: cette tâche sera exportée vers votre lecteur Google sous votre compte Google. Ce sera une
image GeoTiff de 1000 mètres de résolution avec le nom root MyFirstExport..
4. Une fois que vous avez cliqué sur Exécuter en bas de la fenêtre d'exportation initiale pour lancer
l'exportation, votre écran affiche l'exportation est en cours de traitement. La tâche dans le cadre de
l'onglet Tâches de l'éditeur de code doit maintenant avoir une icône GEE filant à côté. Cela peut
prendre un certain temps pour exporter la tâche. Lorsqu'elle est terminée, cette icône disparaîtra et le
nom de la tâche deviendra bleu. Regardez pour voir si le vôtre est devenu bleu.
Note: Si vous essayez d'exporter la scène LandSat sans premier sous-réglage de l'image pour
obtenir uniquement les bandes d'intérêt, vous obtiendrez un message d'erreur.
F. Examiner le résultat
1. Une fois l'exportation terminée, accédez à votre Google Drive en utilisant le lien ci-dessous:
https://drive.google.com/drive/my-drive/
Note-Une fois que vos données ont été exportées avec succès vers votre Google Drive, vous pouvez
les télécharger et les consulter dans votre logiciel SIG préféré. Les temps d'exportation peuvent
varier en fonction de la taille de vos données ainsi que de l'heure de la journée et de ce que les
autres utilisateurs demandent à Google Earth Engine.
Google Drive Data Management Note -Après avoir téléchargé les données de votre Google Drive,
vous pouvez envisager de les supprimer de votre Google Drive pour économiser de l'espace (en
fonction de la capacité de stockage de votre compte).
Assurez-vous qu'après les avoir placés dans la corbeille Google Drive, vous allez également et videz
votre corbeille pour vraiment libérer cet espace.
Note -L'exemple ci-dessus met en évidence une tâche qui sera exportée vers votre Google Drive
sous votre compte Google. Chaque téléchargement sera une image GeoTIFF de résolution de 30
mètres. Pour la zone composite de Palawan, chaque composite exporté sera d'environ 370 Mo.
Assurez-vous d'avoir de la place sur votre Google Drive! Si nécessaire, supprimer et vider la
corbeille pour faire plus de place.
H : Exécutez la tâche pour exporter un composite Sentinel-2 sur Google Drive Google
Drive
Earth Engine permet d'exporter des données vectorielles et matricielles pour les utiliser dans un
programme externe. Les données vectorielles peuvent être exportées sous forme de CSV ou de
Shapefile, tandis que les données raster peuvent être exportées sous forme de fichiers GeoTIFF. Nous
allons maintenant exporter le composite Sentinel-2 sous forme de fichier GeoTIFF.
var geometry = ee.FeatureCollection("users/abdelilahenfighallab/CantonA_Mamora");
var s2 = ee.ImageCollection("COPERNICUS/S2")
var rgbVis = {
min: 0.0,
max: 3000,
bands: ['B4', 'B3', 'B2'],
};
var filtered = s2.filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 30))
.filter(ee.Filter.date('2019-01-01', '2020-01-01'))
.filter(ee.Filter.bounds(geometry))
Export.image.toDrive({
image: visualized,
description: 'Mamora_Composite_Raw',
folder: 'earthengine',
fileNamePrefix: 'Mamora_Composite_Raw',
region: geometry,
scale: 20,
maxPixels: 1e9
})