Questions générales
J'ai un problème, j'ai besoin d'aide !
Posez une question en suivant ce guide, en fournissant autant d'informations que possible (consultez le guide Stack Overflow des bonnes questions). Cela signifie généralement que :
en envoyant un lien vers un script dans l'éditeur de code (cliquez sur le bouton "Obtenir le lien" pour l'obtenir) ;
partager les éléments nécessaires à l'exécution du script.
Pour les tâches par lot ayant échoué, indiquez l'ID de la tâche en échec. Les ID de tâche se présentent comme suit :
4C25GIJBMB52PXTEJTF4JLGL. Vous les trouverez dans l'onglet "Task" (Tâche) de l'éditeur de code. En savoir plus
Où puis-je trouver des informations sur l'architecture d'Earth Engine ?
Consultez cet article : Gorelick et al. 2017.
Existe-t-il des tutoriels Earth Engine recommandés qui n'ont pas été créés par Google ?
Consultez les pages EDU et Ressources de formation.
Existe-t-il des tutoriels recommandés sur la télédétection ?
Consultez ce cours EE sans frais d'Ujaval Gandhi, qui comprend une vidéo d'introduction à la télédétection.
Programmation Earth Engine
Quelles sont les erreurs de codage courantes ?
Consultez le guide de débogage.
Pourquoi l'erreur "... is not a function" s'affiche-t-elle ?
Cette erreur se produit lorsqu'Earth Engine ne trouve pas la méthode appelée. Vérifiez les causes courantes suivantes :
Orthographe ou sensibilité à la casse : les méthodes sont sensibles à la casse. Vérifiez l'orthographe par rapport à la documentation de référence de l'API.
Error: img.normalizedDiff(...) -> Correct: img.normalizedDifference(...)
Casts de type manquants : les valeurs renvoyées par des fonctions telles que .get() sont des instances ee.ComputedObject génériques et doivent être explicitement castées. Consultez Casting de type d'objet inconnu.
Error: dict.get('val').add(5) -> Correct: ee.Number(dict.get('val')).add(5)
Mélange de méthodes client et serveur : assurez-vous de ne pas utiliser de méthodes JavaScript ou Python standards (comme .push() ou .append()) sur les objets Earth Engine. Consultez Éviter de mélanger les fonctions client et serveur.
Error: list.push(4) or list.append(4) -> Correct: list.add(4)
Méthodes non disponibles : si l'objet est correctement typé et que la méthode existe dans la documentation ou a déjà fonctionné, mais qu'elle échoue désormais, signalez un bug.
Pourquoi ne puis-je pas utiliser des opérations mathématiques de base comme ee.Image("image") * 2 ?
Dans EE, vous ne devez pas mélanger les objets ou les opérations côté serveur et côté client. Toutes les opérations sur les objets EE sont effectuées côté serveur. Les calculs côté client ne donneront pas les résultats escomptés. Pour en savoir plus, consultez cette page.
Comment utiliser les boucles for ou les instructions if/else ?
La programmation Earth Engine s'effectue à l'aide d'un langage fonctionnel. Les boucles et les opérations conditionnelles doivent donc être exprimées à l'aide de concepts équivalents tels que map ou filter. Consultez cette page pour plus de détails.
Comment afficher des libellés textuels dans mon image ou ma vidéo ?
Il n'existe pas de compatibilité intégrée pour les étiquettes de texte, mais vous pouvez :
- Utiliser un package JS tiers. Voir un exemple
- Utilisez un package Python tiers geemap.
- Utilisez QGIS en important des images EE à l'aide du plug-in EE QGIS.
Puis-je utiliser des palettes de couleurs standards ?
Utilisez un package JS tiers ee-palettes.
Comment créer mon propre site Web qui utilise Earth Engine ?
Utilisez les applications Earth Engine pour les applications de base. Dans les cas plus complexes, vous pouvez créer des applications App Engine optimisées par EE.
Comment fonctionnent les ID de carte ?
Les ID de carte (appelés mapid dans l'API) sont des clés qui permettent aux clients de récupérer des tuiles de carte. Chaque ID est un hachage créé en fournissant une expression d'image au point de terminaison getMapId. Les ID obtenus sont des clés qui pointent à la fois vers l'expression d'image et les identifiants utilisateur qui seront utilisés pour générer des tuiles ultérieurement.
Pour demander des tuiles de carte, vous devez spécifier l'emplacement de la tuile (x, y, zoom) ainsi que la mapid (la clé de l'image et les identifiants). Le même ID peut être réutilisé pour charger de nombreuses tuiles de carte. Il n'y a pas de limite à la réutilisation des clés mapid, mais elles expirent au bout de quelques heures. Nous ne publions pas de délais spécifiques concernant leur durée de conservation, mais tout code que vous écrivez doit être résilient à l'expiration de l'ID.
La création de ces ID implique de stocker une petite quantité de données et de valider les identifiants. Il est donc préférable de les réutiliser aussi longtemps que possible. Il n'existe pas de quota d'API spécifiquement associé au point de terminaison getMapId, mais tout workflow qui implique la création d'objets mapid à un rythme proche de celui de la récupération des tuiles est probablement incorrect. Earth Engine ne dispose d'aucun point de terminaison d'API pour supprimer, lister ou gérer ces ID, car il s'agit de ressources temporaires.
Pourquoi ee.Algorithms.If() affiche-t-il à la fois le cas vrai et le cas faux ?
function a() { print("true"); }
function b() { print("false"); }
// Prints 'true' and 'false'.
ee.Algorithms.If(true, a(), b());
L'algorithme If() fonctionne comme tous les autres algorithmes d'Earth Engine, car tous ses arguments doivent être évalués avant que l'algorithme lui-même puisse s'exécuter.
L'algorithme obtient les résultats trueCase et falseCase, puis en sélectionne et en renvoie un en fonction de l'argument condition. Toutefois, les deux chemins d'accès doivent être exécutés pour que ces valeurs soient transmises à l'algorithme.
Je reçois le message d'erreur "La taille de la charge utile de la requête dépasse la limite"
Vous essayez d'envoyer une requête très volumineuse à Earth Engine. Cela se produit généralement lorsque le code utilise de nombreuses boucles "for" côté client ou construit une FeatureCollection à partir de nombreux objets géométriques. Dans ce dernier cas, au lieu de créer ces géométries dans votre script, générez un fichier CSV les contenant et importez-le dans un élément de table.
Quelle est la différence entre ee.Image.clip() et ee.Filter.bounds() ?
Consultez ce fil de discussion GIS Stack Exchange.
La fonction ee.Image.clip() masque les pixels qui ne croisent pas un ee.Geometry ou un ee.Feature donné, ce qui les rend transparents dans les visualisations et les exclut des calculs. Vous pouvez le conceptualiser comme un découpage de pixels d'une image.
La fonction ee.Filter.bounds() filtre les objets ee.Image d'un ee.ImageCollection en fonction de l'intersection de l'image avec un ee.Geometry ou un ee.Feature. Il permet de limiter le champ d'application d'une analyse aux seules images qui se croisent dans une région donnée, ce qui permet d'optimiser les expressions.
Comment convertir des pixels d'image en collections d'éléments géographiques, avec un élément géographique par pixel ?
Utilisez la fonction ee.Image.sample(). Consultez des exemples d'utilisation sur la page de référence de l'API de la fonction.
Quelle est la différence entre ee.ImageCollection.merge() et ee.ImageCollection.combine() ?
La fonction ee.ImageCollection.merge() fusionne toutes les images de deux collections en une seule, que leurs images respectives aient ou non des bandes, des métadonnées, un CRS ou une échelle coïncidents. Il s'agit de l'union de deux collections. La méthode combine() combine les bandes d'images correspondantes de deux collections en une seule collection. Les images correspondantes partagent le même ID (propriété system:index). Il s'agit d'une jointure interne de deux collections basée sur l'ID d'image, où les bandes des images correspondantes sont combinées. Pour les images correspondantes, les bandes de l'image secondaire sont ajoutées à l'image principale (l'écrasement est facultatif). Si aucune image ne correspond, une collection vide est renvoyée.
Comment filtrer des collections d'images sur plusieurs intervalles de dates ?
Consultez ce fil de discussion GIS Stack Exchange.
Vous pouvez soit merge() plusieurs collections, soit utiliser ee.Filter.or().
Comment créer un cadre de délimitation autour d'un point donné ?
// Buffer the point by a chosen radius and then get the bounding box.
var LNG = -117.298;
var LAT = 45.162;
var point = ee.Geometry.Point([LNG, LAT]);
var buffer = point.buffer(30000); // half of box width as buffer input
var box = buffer.bounds(); // draw a bounding box around the buffered point
Map.centerObject(box);
Map.addLayer(point);
Map.addLayer(box);
// Map the buffer and bounds procedure over a point feature collection.
var pointCol = ee.FeatureCollection([
ee.Feature(ee.Geometry.Point([LNG + 1, LAT])),
ee.Feature(ee.Geometry.Point([LNG - 1, LAT]))
]);
var boxCol = pointCol.map(function(feature) {
var box = feature.buffer(30000).bounds();
return feature.setGeometry(box.geometry());
});
Map.addLayer(boxCol);
Data Catalog
Peux-tu ajouter l'ensemble de données X ?
Signalez un bug de demande d'ensemble de données en suivant le guide de demande d'ensemble de données.
Vous pouvez également importer des données dans votre dossier d'accueil Earth Engine. Consultez Importer des données matricielles et Importer des données de table.
Un ensemble de données existant dispose d'une nouvelle version
Signalez un bug d'ensemble de données en suivant le guide de demande d'ensemble de données, puis indiquez que vous demandez une mise à jour de l'ensemble de données.
Un ensemble de données existant n'est pas mis à jour ou ne contient pas d'éléments
Avant de signaler un problème, vérifiez, si possible, que les éléments sélectionnés existent bien sur le site du fournisseur de l'ensemble de données. Pour en savoir plus, consultez le guide sur les images manquantes.
Si vous recherchez un asset en filtrant un ImageCollection, assurez-vous que vos filtres ne sont pas trop restrictifs.
En particulier, notez que :
Les données Sentinel-2 SR (données de niveau 2) n'ont pas été produites par l'ESA pour les premières scènes de niveau 1.
Landsat ne dispose pas d'une couverture mondiale avant 2000.
Un ensemble de données existant comporte des valeurs incorrectes
Publiez un message sur le forum des développeurs. Incluez un script qui effectue un zoom sur la résolution d'origine de l'asset et indique clairement les valeurs incorrectes. Expliquez où exactement vous avez observé la valeur alternative.
Où puis-je poser d'autres questions sur les ensembles de données ?
Pour toute question sur les ensembles de données de la NASA, consultez le forum NASA Earth Data.
Pour toute question sur les boîtes à outils fonctionnant sur les ensembles de données Copernicus, consultez les forums S1, S2 et S3.
Quelle est la taille du catalogue EE ?
En octobre 2023, le catalogue contenait plus de 1 000 ensembles de données. Sa taille sur le disque dépasse 90 pétaoctets (après prise en compte de la compression sans perte).
À quelle fréquence les données d'EE sont-elles mises à jour ?
Normalement, tous les ensembles de données en cours sont mis à jour au moins une fois par jour (bien que tous ces ensembles de données ne contiennent pas de nouvelles données tous les jours). Certains ensembles de données sont mis à jour plusieurs fois par jour. Cependant, aucune règle ne garantit la présence des éléments les plus récents dans le catalogue.
Comment afficher le contenu du catalogue EE par programmation ?
La liste des ensembles de données est exportée au format STAC vers un bucket Google Cloud Storage gs://earthengine-stac.
Le fichier d'entrée est catalog.json.
Puis-je utiliser les données ou les images Google Maps à des fins d'analyse ?
Google ne concède pas de licence ni ne vend de données de carte de base à des fins d'analyse.
Comment trouver la date d'ingestion d'un asset ?
La propriété d'élément 'system:version' est le code temporel d'ingestion, au format microsecondes depuis l'epoch Unix. Voici un exemple qui convertit le code temporel d'ingestion d'une image Landsat dans un format lisible par l'humain.
var image = ee.Image('LANDSAT/LC08/C02/T1_L2/LC08_044034_20210508');
print('Ingest date', ee.Date(image.getNumber('system:version').divide(1000)));
Le catalogue Earth Engine contient-il des métadonnées JSON-LD ?
Oui, les métadonnées JSON-LD sont intégrées aux pages HTML du catalogue. Par exemple, la page Sentinel-2 contient le bloc suivant :
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [{
"@type": "ListItem",
"position": 1,
"name": "Earth Engine Data Catalog",
"item": "https://developers.google.com/earth-engine/datasets"
},{
"@type": "ListItem",
"position": 2,
"name": "Harmonized Sentinel-2 MSI: MultiSpectral Instrument, Level-1C",
"item": "https://developers.google.com/earth-engine/datasets/catalog/COPERNICUS_S2_HARMONIZED"
}]
}
</script>
Landsat
Comment l'algorithme simpleComposite est-il implémenté ?
L'implémentation côté serveur est équivalente à ce code JavaScript.
Comment créer des composites sans nuages à partir des données de réflectance de surface Landsat ?
Les données Landsat de niveau 2 (réflectance de surface) comportent plusieurs bandes de qualité qui peuvent être utilisées pour masquer les nuages et d'autres artefacts d'image indésirables. Un exemple d'utilisation de ces bandes pour traiter des images Landsat 8 SR et créer une image composite médiane sans nuages est fourni dans ce post GIS Stack Exchange. La même procédure est utilisée pour créer une image composite sans nuages à utiliser dans les exemples de classification supervisée du guide du développeur.
L'harmonisation de la réflectance de surface Landsat entre capteurs est-elle nécessaire ?
Roy et al., 2016 incluait une analyse des différences de réflectance entre la réflectance TOA et la réflectance de surface de Landsat 7-8. Ils ont publié les coefficients OLS et RMA afin que les lecteurs puissent transformer les valeurs de réflectance des données d'un capteur en un autre. La dernière ligne de l'article indique : "Bien que les différences entre les capteurs soient assez faibles, elles peuvent avoir un impact significatif en fonction de l'application des données Landsat." Toutefois, cette analyse était basée sur des données antérieures à la collecte.
Les améliorations apportées lors du retraitement des collections 1 et 2 peuvent influencer la relation entre les capteurs, mais à notre connaissance, aucune analyse similaire à celle de Roy et al. (2016) n'a été effectuée pour les données des collections 1 ou 2. Bien qu'aucune analyse formelle n'ait été effectuée, il semble y avoir un consensus général parmi les utilisateurs influents de Landsat selon lequel aucune correction n'est nécessaire pour les données de la collection 2, niveau 2 (réflectance de surface). Par exemple, en réponse à une question concernant la nécessité d'harmoniser la collection 2, niveau 2, Mike Wulder de l'équipe scientifique Landsat a indiqué que, selon la nature de l'application d'intérêt (y compris la cartographie de la couverture terrestre et la détection des changements), les produits de réflectance de surface de la collection 2 sont très adaptés et fiables, sans qu'il soit nécessaire d'ajuster les capteurs.
Comment masquer les nuages et les ombres de nuages dans l'imagerie MSS ?
Le module msslib tiers pour l'éditeur de code JavaScript inclut une implémentation de l'algorithme MSScvm, ainsi que d'autres fonctions utiles pour explorer et préparer les données MSS.
Gestion des données
À qui appartiennent les données que j'importe ?
Conformément aux Conditions d'utilisation d'Earth Engine, les clients sont propriétaires des données qu'ils importent dans Earth Engine.
Je ne parviens pas à importer des données.
Vérifiez l'état de la tâche d'importation dans le volet "Tâches" en haut à droite de l'éditeur de code. Vous pouvez également consulter la page dédiée à la tâche.
Si aucune tâche n'est présente, vous avez probablement essayé d'importer votre fichier via l'éditeur de code, mais en raison d'un problème de réseau, l'importation du fichier n'a jamais été terminée, de sorte que la tâche n'a jamais été créée. Essayez d'utiliser un autre navigateur ou un autre ordinateur.
Si une tâche a échoué, examinez l'erreur qui s'affiche. Si aucun message d'erreur spécifique ne s'affiche, vérifiez d'abord que votre fichier n'est pas corrompu en exécutant gdalinfo pour les fichiers matriciels ou ogr2ogr pour les fichiers vectoriels.
Ces commandes tenteront de lire toutes les données des fichiers sources et afficheront des erreurs si les fichiers sont corrompus.
Exemple d'appel gdalinfo :
gdalinfo -mm -stats -checksum file.tif
Exemple d'appel ogr2ogr qui convertit in.shp en out.csv :
ogr2ogr -lco GEOMETRY=AS_WKT -f CSV out.csv in.shp
Si le fichier semble valide, publiez l'ID de la tâche ayant échoué sous forme de texte (et non de capture d'écran) sur la liste de diffusion des développeurs.
Les ID de tâche sont au format suivant : 4C25GIJBMB52PXTEJTF4JLGL. Si possible, rendez votre fichier source lisible publiquement. S'il s'agit d'un fichier privé, partagez-le uniquement avec earthengine@google.com si vous souhaitez que l'équipe Earth Engine l'examine. S'il n'est pas possible de partager le fichier source, fournissez au moins le résultat de gdalinfo -mm -stats -checksum.
Si Earth Engine n'est pas compatible avec une projection, vous devez reprojeter les données avant de les importer, par exemple à l'aide de gdalwarp.
Comment importer un fichier au format NetCDF ou dans un autre format matriciel non compatible ?
Seuls les fichiers GeoTIFF peuvent être importés dans Earth Engine. Les autres formats compatibles avec GDAL peuvent être convertis en GeoTIFF à l'aide de gdal_translate. Exemple :
gdal_translate -co COMPRESS=DEFLATE file.nc file.tif
Notez que certains fichiers NetCDF ou HDF sont constitués de plusieurs sous-ensembles de données qui peuvent être découverts avec gdalinfo. Dans ce cas, la commande gdal_translate se présentera comme suit (notez le chemin d'accès entre guillemets doubles) :
gdal_translate HDF4_EOS:EOS_GRID:"/tmp/MCD12Q1.A2001001.h00v08.005.2011055224312.hdf":MOD12Q1:Land_Cover_Type_1 file.tif
Les fichiers NetCDF ne comportent parfois pas de projection reconnue par GDAL. Dans ce cas, vous devez définir la projection et l'étendue spatiale dans la ligne de commande gdal_translate. Exemple :
gdal_translate -a_srs EPSG:4326 -a_ullr -180 90 180 -90 file.nc file.tid
Quels algorithmes de compression puis-je utiliser pour les fichiers GeoTIFF importés ?
Pour l'importation, les fichiers GeoTIFF peuvent être compressés avec DEFLATE, JPEG, JPEG-XL/JXL, LERC, LERC_DEFLATE, LERC_ZSTD, LZMA, LZW, WEBP ou ZSTD. Les COG qu'Earth Engine lit sur place (avec ee.Image.loadGeoTIFF() ou en tant qu'éléments basés sur des COG) peuvent utiliser DEFLATE, JPEG, LZW, PACKBITS, ZSTD ou aucune compression (voir les bonnes pratiques concernant les COG).
ZSTD est un bon choix global, car il est rapide à décompresser tout en offrant une bonne compression de la plupart des images.
Pour appliquer la compression ZSTD lorsque vous utilisez gdal_translate, ajoutez ces options. Si les données comportent des valeurs à virgule flottante, remplacez PREDICTOR par 3. (Pour les fichiers que vous prévoyez d'enregistrer en tant que COG au lieu de les importer, consultez le guide d'enregistrement des COG.)
gdal_translate in.tif out.tif \
-co BIGTIFF=YES \
-co TILED=YES \
-co BLOCKXSIZE=512 \
-co BLOCKYSIZE=512 \
-co COMPRESS=ZSTD \
-co PREDICTOR=2 \
-co ZSTD_LEVEL=16 \
-co INTERLEAVE=BAND \
-co NUM_THREADS=ALL_CPUS
L'ingestion de mon raster est en cours depuis plusieurs jours et n'est pas terminée.
À l'aide de gdalinfo, vérifiez si l'option GDAL suivante est définie pour votre fichier : INTERLEAVE=PIXEL. Pour les fichiers comportant cette option et de nombreuses bandes, l'ingestion peut ne jamais se terminer, car la mise en page de ces fichiers ralentit considérablement les lectures.
Essayez de convertir ces fichiers au format d'entrelacement par bande avant de les importer :
gdal_translate -co "INTERLEAVE=BAND" src.tif dst.tif
Cela s'applique à l'ingestion. Les éléments basés sur COG sont compatibles avec les deux types d'entrelacement (voir Fichiers à bande unique et fichiers multibandes).
Les rasters que j'ai importés ne correspondent pas au fond de carte.
Si les données sont légèrement décalées par rapport au fond de carte, la projection utilise probablement un datum incorrect (hypothèse sur la forme de la Terre).
Cela se produit le plus souvent avec la projection sinusoïdale, qui ne peut pas être entièrement encodée dans les métadonnées GDAL. Lorsque vous connaissez la projection cible (par exemple, SR-ORG:6974 pour les fichiers utilisant la projection sinusoïdale MODIS), définissez l'option --crs lors de l'importation en ligne de commande ou le champ crs du fichier manifeste d'importation.
Si les données semblent fortement déformées ou se trouvent au mauvais endroit, la projection ou la transformation affine est probablement incorrecte.
Mon raster ne s'affiche que sur l'hémisphère oriental.
Vous avez probablement importé un raster global qui couvre la plage de longitude [0, 360]. Cependant, Earth Engine nécessite que les rasters soient compris dans la plage [-180, 180]. Échangez les moitiés gauche et droite du raster avant l'ingestion. Consultez ces suggestions de GIS Stack Exchange.
Pourquoi mon image de classification ingérée semble-t-elle tachetée ?
Vous avez probablement utilisé la stratégie de pyramide par défaut MEAN.
Pour les images de classification, la règle de pyramide MODE doit être utilisée. Pour les images d'assurance qualité/masque de bits, la règle de pyramide SAMPLE doit être utilisée.
Le message d'erreur suivant s'affiche : "No data value -128.0 cannot be applied to band #0 of type Short<0, 255>".
GDAL ne peut pas traiter les bandes d'un octet comme contenant des entiers signés. Il les lit donc comme des entiers non signés. Cela entrerait en conflit avec les valeurs négatives sans données.
Si vos valeurs sont en fait des entiers signés, utilisez l'importation de fichier manifeste et ajoutez ceci à la section de l'ensemble de tuiles contenant votre fichier : data_type: "INT8"
Si vos valeurs sont des entiers non signés, votre fichier comporte une valeur nodata incorrecte. Vous pouvez la remplacer lors de l'importation par la valeur de données correcte (ou par une valeur qui ne se produit jamais, le cas échéant). Vous pouvez également utiliser gdal_translate -a_nodata pour modifier la valeur nodata ou gdal_edit.py -unsetnodata pour la supprimer.
Comment importer un fichier au format GeoJSON ou dans un autre format vectoriel non compatible ?
Utilisez ogr2ogr pour traduire les formats compatibles avec OGR en CSV ou SHP. Exemple :
or2ogr -f "ESRI Shapefile" file.shp file.kml
Notez que dans les importations CSV, la colonne de géométrie peut contenir du GeoJSON.
Je souhaite importer des données à l'aide de Python ou importer plusieurs fichiers à la fois.
Utilisez l'importation en ligne de commande. Ces importations nécessitent que les fichiers sources soient d'abord placés dans un bucket GCS (Google Cloud Storage). L'utilisation de GCS est sans frais si vous ne dépassez pas les limites du niveau sans frais. Pour en savoir plus, consultez la page des tarifs.
Je souhaite importer une grande mosaïque matricielle divisée en plusieurs tuiles.
Si les fichiers ont tous la même projection et la même taille de pixel, il vous suffit de les importer ensemble dans le même élément. Ils seront automatiquement mosaïqués.
Si les fichiers ont des projections ou des tailles de pixels différentes, ils ne peuvent pas être mosaïqués en un seul asset matriciel. Importez plutôt chaque tuile en tant qu'élément distinct dans le même ImageCollection qui peut être mosaïqué à l'aide de ImageCollection.mosaic().
J'essaie d'importer une mosaïque et je reçois des erreurs concernant des tuiles non concordantes.
Les tuiles des mosaïques matricielles Earth Engine doivent avoir la même projection et la même taille de pixel. De plus, les tuiles doivent s'aligner exactement sur les limites des pixels.
J'essaie d'importer un fichier depuis un bucket GCS, mais Earth Engine ne le trouve pas.
Vous avez peut-être utilisé des comptes Google différents pour l'importation GCS et pour la connexion à Earth Engine. Assurez-vous que le fichier GCS est lisible par le compte que vous utilisez pour vous connecter à Earth Engine. Si la connexion multiple au navigateur prête à confusion, connectez-vous à Earth Engine dans une fenêtre de navigation privée.
Je souhaite exporter plusieurs assets à la fois.
Vous devez exporter chaque image séparément.
Je souhaite déplacer ou supprimer un Folder ou un ImageCollection à l'aide d'une seule commande.
earthengine rm -r supprime un dossier ou une collection et tout son contenu, mais un élément à la fois. Une grande collection peut donc prendre des heures. Pour aller plus vite, supprimez les enfants en parallèle à partir d'un script, puis supprimez le parent (consultez Utiliser des collections volumineuses). La même approche fonctionne pour n'importe quelle collection ou dossier plat. Un dossier contenant d'autres dossiers ou collections doit être vidé de bas en haut, car un conteneur ne peut pas être supprimé tant qu'il n'est pas vide. Pour déplacer, utilisez mv de la même manière.
Je souhaite accéder directement aux données Earth Engine depuis l'extérieur d'EE.
QGIS dispose d'un plug-in Earth Engine.
GDAL dispose d'un pilote Earth Engine.
Les autres systèmes peuvent utiliser l'API REST d'Earth Engine.
Je souhaite mettre à jour une partie de mon asset Earth Engine sans le réingérer complètement.
Il n'est pas possible de mettre à jour les données matricielles ou vectorielles importées dans EE. Seules les propriétés des métadonnées de l'élément peuvent être mises à jour. Les éléments COG constituent une exception. Vous pouvez les faire pointer vers un fichier Cloud Storage mis à jour en les réenregistrant avec l'option d'écrasement activée.
Je perds l'accès à mon compte. Que dois-je faire de mes assets ?
Si les règles du compte d'origine autorisent le transfert de données, veuillez partager vos éléments avec un autre compte, puis copiez-les pour qu'ils appartiennent au nouveau compte. Utilisez l'utilitaire de copie en ligne de commande si vous devez déplacer de nombreux éléments.
Si un compte est supprimé, les éléments qu'il possède ne sont plus accessibles.
Mon image exportée n'est pas au bon endroit.
Pour certaines projections, telles que les projections sinusoïdales ou coniques, les fichiers GeoTIFF ne peuvent parfois pas stocker tous les paramètres de projection nécessaires. Le fichier exporté s'affiche alors au mauvais endroit lorsqu'il est affiché dans des outils SIG de bureau ou réimporté dans EE.
Pour résoudre ce problème, spécifiez un paramètre d'exportation crs qui fonctionne bien avec les fichiers GeoTIFF. Par exemple, utilisez le code EPSG pour la zone UTM contenant votre zone d'intérêt.
Les éléments de collection d'éléments géographiques exportés ne conservent pas les propriétés que j'ai définies.
Aucune fonction Export.table.* ne conserve les propriétés au niveau de la table dans le résultat.
De nombreux formats de sortie (par exemple, CSV, GeoJSON) ne sont pas compatibles avec ces métadonnées. La fonction Export.table.toAsset pourrait accepter les propriétés au niveau de la table, mais ce n'est pas le cas pour le moment.
Les tables exportées vers Drive au format CSV sont converties au format XLSX.
Selon vos paramètres Google Drive, les tables CSV que vous exportez depuis Earth Engine peuvent être converties en fichiers XLSX avec des effets inattendus, tels que des conversions de types de données. Pour modifier le comportement des exportations ultérieures, procédez comme suit :
- Dans Google Drive sur le Web, cliquez sur la roue dentée des paramètres en haut à droite.
- Cliquez sur "Paramètres".
- Faites défiler la page jusqu'à "Convertir les fichiers importés au format des éditeurs Google Docs", puis décochez cette option.
GeoTIFF optimisés pour le cloud (COG)
Pour en savoir plus, consultez la présentation des COG et le guide d'enregistrement des COG.
J'ai partagé un élément basé sur un COG, mais mes collaborateurs reçoivent une erreur d'autorisation.
Un élément basé sur un COG est un pointeur vers des fichiers de votre bucket Cloud Storage. Les collaborateurs doivent donc disposer d'un accès en lecture à la fois à l'élément Earth Engine et au bucket. Sur le bucket, attribuez-leur les rôles Lecteur d'objets Storage et Lecteur de buckets Storage. Une erreur d'autorisation sur un asset qu'ils peuvent voir signifie généralement que l'un des deux rôles est manquant. Consultez Configurer les autorisations.
Quel emplacement de bucket Cloud Storage dois-je utiliser pour stocker les éléments COG ?
Seuls quelques emplacements aux États-Unis sont acceptés, et Earth Engine refuse les demandes d'enregistrement et de lecture pour les buckets situés ailleurs. Consultez la section Emplacements de bucket compatibles.
J'ai remplacé un fichier COG dans Cloud Storage. Pourquoi le chargement de l'asset échoue-t-il ou pourquoi affiche-t-il toujours les anciennes données ?
Lorsque vous enregistrez un COG, Earth Engine épingle la génération (version) de l'objet du fichier. Par conséquent, l'écrasement du fichier ne met pas à jour l'élément. Réenregistrez l'élément avec le même nom et l'option d'écrasement activée. Vous n'avez pas besoin de le supprimer au préalable. Consultez Mettre à jour, remplacer et supprimer des éléments basés sur des COG.
Comment savoir vers quelle version d'un fichier pointe mon asset basé sur un COG ?
Les métadonnées de l'élément (ee.data.getAsset()) affichent la génération épinglée en tant que suffixe de l'URI du fichier. Consultez la section Générations d'objets.
Que se passe-t-il si je supprime un fichier COG dans Cloud Storage, mais pas l'élément Earth Engine, ou inversement ?
Ils sont indépendants. La suppression de l'élément Earth Engine ne modifie pas vos fichiers dans Cloud Storage. De même, la suppression du fichier ne modifie pas l'élément, mais rend généralement ses pixels illisibles. Voir Cycles de vie indépendants.
Quel est le moyen le plus rapide de supprimer ou de remplacer un grand ImageCollection basé sur un COG ?
Il n'existe pas de suppression par lot ou récursive dans l'API Earth Engine, et earthengine rm -r supprime un élément à la fois. Si vous remplacez des images, réenregistrez-les en activant l'écrasement au lieu de les supprimer. Si vous les supprimez, parallélisez l'opération à partir d'un script. Pour connaître l'approche et obtenir un script, consultez Utiliser des collections volumineuses.
Pourquoi mon inscription à un groupe d'intérêt n'apparaît-elle pas dans l'onglet "Tâches" ?
L'enregistrement d'un COG est un appel d'API synchrone qui n'indexe que les métadonnées du fichier, et non un job d'ingestion par lot. Il ne crée donc pas de tâche. L'élément est disponible dans l'onglet Éléments dès que l'appel est renvoyé. Consultez Envoyer la demande d'enregistrement.
Puis-je combiner plusieurs fichiers COG en un seul élément Earth Engine ?
Uniquement lorsque chaque fichier contient différentes bandes de la même scène : listez chaque fichier en tant que tileset distinct dans le fichier manifeste et mappez les bandes aux tilesets. Vous ne pouvez pas mosaïquer des fichiers spatialement adjacents dans un seul élément basé sur un COG. Enregistrez chaque fichier en tant qu'image distincte dans un ee.ImageCollection et appelez mosaic(). Consultez les restrictions du fichier manifeste.
Quels schémas de compression, tailles de tuiles et types de pixels les éléments basés sur COG peuvent-ils utiliser ?
Consultez les bonnes pratiques pour préparer des COG externes afin de connaître les schémas de compression, les tailles de tuiles et les types de données de pixels compatibles. Les fichiers dans des formats de compression qu'Earth Engine ne peut pas lire directement en tant que COG peuvent toujours être importés en tant qu'éléments standards.
Le message d'erreur "Impossible de lire les métadonnées du fichier TIFF dans les 10 000 000 premiers octets" s'affiche.
Earth Engine ne lit que le début d'un fichier lors de son chargement ou de son enregistrement. Les images volumineuses comportant de nombreuses tuiles et les fichiers tronqués dépassent cette limite. Consultez Choisir les dimensions du fichier pour connaître la limite et savoir comment ne pas la dépasser.
En quoi ee.Image.loadGeoTIFF() diffère-t-il d'un asset enregistré lorsque le fichier change ?
ee.Image.loadGeoTIFF() lit la version du fichier qui est active pour chaque calcul ou requête de tuile de carte. Il récupère donc les remplacements (de manière inégale sur une carte, car les tuiles de carte affichées restent mises en cache). Un asset enregistré épingle toujours la génération avec laquelle il a été enregistré et doit être réenregistré pour voir un nouveau fichier. En échange, son empreinte et ses métadonnées sont indexées, ce qui le rend utilisable dans de grandes collections. Consultez Lire des COG à partir de Cloud Storage.
Éditeur de code
Je ne parviens pas à me connecter à l'éditeur de code, car il m'invite à utiliser le mauvais compte.
Déconnectez-vous, sélectionnez le compte enregistré pour utiliser Earth Engine sur la page "Sélectionner un compte", puis sélectionnez à nouveau le même compte sur la deuxième page "Sélectionner un compte pour accéder à l'éditeur de code Earth Engine" (le libellé exact peut être différent).
Je souhaite faire une capture d'écran d'une carte du monde, mais je n'aime pas la projection Web Mercator.
La projection cartographique utilisée dans l'éditeur de code est Web Mercator ("EPSG:3857"). Elle gonfle la taille des objets éloignés de l'équateur, ce qui fait que les régions de haute latitude semblent beaucoup plus grandes qu'elles ne le sont en réalité, par rapport aux régions proches de l'équateur. Vous ne pouvez pas modifier la projection du canevas de carte de l'éditeur de code, mais vous pouvez "peindre" une image dans la projection de votre choix sur le canevas Web Mercator à l'aide de la méthode ee.Image.changeProj.
Consultez la documentation de référence de l'API de la méthode pour voir un exemple d'affichage d'un MNE global sur la carte de l'éditeur de code dans la projection de Robinson.
Notez que cette technique ne doit être utilisée qu'à des fins de visualisation, car l'inspecteur et les outils de dessin de l'éditeur de code fonctionnent toujours dans Web Mercator.
Mon script ne s'enregistre pas (Script error: Unknown commit).
Si vous recevez un message Script error: Unknown commit lorsque vous enregistrez un script, cela signifie probablement que le dépôt dans lequel vous l'enregistrez n'est pas synchronisé.
La cause de cet état est variable et difficile à identifier. Pour résoudre le problème, essayez d'actualiser la liste des scripts à l'aide du bouton situé dans l'angle supérieur droit de l'onglet "Scripts". Si cela ne fonctionne pas, essayez de créer un dépôt à l'aide du bouton "Nouveau" de l'onglet "Script" et d'y enregistrer votre script (vous devrez peut-être déplacer les scripts du dépôt non synchronisé vers le nouveau dépôt).
Pourquoi des erreurs 400 s'affichent-elles de manière répétée dans l'éditeur de code ?
Si vous voyez des erreurs 400 répétées dans l'éditeur de code, accédez à https://myaccount.google.com/connections, recherchez "Éditeur de code Earth Engine" dans la liste des applications et services, sélectionnez-le, puis sélectionnez "Supprimer toutes les connexions que vous avez avec l'éditeur de code Earth Engine" et confirmez. Ouvrez ensuite l'éditeur de code et authentifiez-vous à nouveau.
Comment récupérer des scripts et des dossiers supprimés ?
Si vous supprimez accidentellement un script ou un dossier dans un dépôt existant, l'historique complet des commits est conservé dans les journaux Git sur nos serveurs. Vous pouvez restaurer des scripts ou des dossiers supprimés en clonant le dépôt localement à l'aide des outils de ligne de commande Git standards.
Cependant, la suppression d'un dépôt entier (users/username/repository) supprime définitivement le dépôt et son historique de commit de earthengine.googlesource.com. Cette opération est irréversible et les données ne peuvent pas être récupérées.
Pour obtenir des instructions détaillées sur la génération d'identifiants Git, le clonage de votre dépôt et la restauration de fichiers ou de dossiers supprimés, consultez le guide Récupération de scripts et migration de dépôts.
Comment renommer la racine de mon dépôt de scripts ?
Le répertoire racine de votre script (users/username) est lié à l'enregistrement de votre compte Earth Engine d'origine. Il ne peut pas être renommé directement sur le backend, car cela endommagerait les scripts externes ou les projets de collaborateurs qui importent votre code modulaire à l'aide du chemin d'accès require('users/username/repository:...').
Si vous avez besoin d'un nouvel espace de noms, la solution consiste à migrer votre travail vers un nouveau compte :
- Enregistrez un nouveau compte Earth Engine à l'aide de votre nouvelle identité Google (qui génère une racine
users/new_usernamepropre). - Suivez les instructions de migration du dépôt pour cloner votre ancien dépôt et transférer l'intégralité de son historique vers le nouveau dépôt vide.
Remarques importantes :
- Modules publics : si vous disposez de modules publics dont d'autres personnes dépendent, nous vous recommandons vivement de conserver votre ancien compte et votre ancien dépôt actifs afin de ne pas interrompre leurs workflows.
- Scripts privés : si vos scripts sont entièrement privés, vous pouvez mettre à jour vos instructions d'importation
require()pour référencer le nouveau chemin d'accès au dépôt, puis supprimer les anciens dépôts en toute sécurité.