Optimisation du temps d'exécution des scripts du moteur Google Earth
Google Earth Engine (GEE) est une plateforme puissante pour analyser des données géospatiales à grande échelle. Cependant, les utilisateurs rencontrent souvent des problèmes de temps d’exécution, même lorsque leurs scripts semblent basiques. Un script dont l'exécution prend plusieurs minutes peut avoir un impact sur la productivité et retarder l'obtention d'informations.
Dans ce cas, un utilisateur a créé un script simple pour traiter les données Sentinel et Landsat 8. Malgré sa simplicité, l'exécution du script prend environ 3 à 5 minutes. Comprendre pourquoi cela se produit et comment optimiser le script est essentiel pour un traitement efficace des données.
Les performances d'un script GEE dépendent de plusieurs facteurs, notamment la taille des données, le filtrage et la complexité des calculs. Réduire le temps d'exécution implique d'identifier les goulots d'étranglement au sein du script, tels que les opérations inutiles ou les grands ensembles de données qui ralentissent le traitement.
Cet article explorera les causes possibles des temps d'exécution lents dans GEE et fournira des conseils pratiques pour optimiser le script donné. En mettant en œuvre ces stratégies, les utilisateurs peuvent améliorer considérablement la vitesse et les performances de leurs tâches d'analyse de données géospatiales.
Commande | Exemple d'utilisation |
---|---|
normalizedDifference() | Cette fonction est utilisée pour calculer des indices tels que NDVI, NDWI et NDSI en calculant la différence entre deux bandes, divisée par leur somme. C'est spécifique à l'analyse par télédétection où des indices de végétation, d'eau et de neige sont nécessaires. |
filterBounds() | Filtre une collection d'images pour inclure uniquement les images qui croisent une géométrie donnée. Dans ce cas, il limite les données satellite à la zone autour du point d'intérêt défini, ce qui rend le traitement plus efficace en excluant les données non pertinentes. |
filterDate() | Cette commande limite la collection d'images à une plage de dates spécifique. Pour notre problème, il est crucial d'analyser les différences entre la même période de temps pour les ensembles de données Sentinel et Landsat. |
addBands() | Ajoute de nouvelles bandes calculées (comme NDVI, NDWI et NDSI) à chaque image de la collection. Ceci est essentiel pour appliquer plusieurs indices à la même collection d’images sans créer d’ensembles de données distincts. |
unmask() | Remplit les pixels masqués avec une valeur spécifiée. Dans notre script, il est utilisé pour démasquer les zones d'eau permanentes, garantissant ainsi que les données sont traitées de manière cohérente dans toute la région. |
reduce() | Réduit une collection d'images à l'aide d'une fonction de réduction spécifiée, telle que ee.Reducer.percentile(). Ici, il est utilisé pour calculer le 30e percentile des valeurs de pixels, optimisant ainsi la génération d'images composites. |
clip() | Découpe une image aux limites de la région d’intérêt spécifiée. Cela garantit que seules les données pertinentes pour la zone sont traitées, ce qui accélère l'exécution. |
gt() | Cette commande signifie « supérieur à » et est utilisée pour créer des images binaires basées sur un seuil. Dans ce cas, il identifie les zones avec une présence d'eau supérieure à 80 %. |
map() | Applique une fonction à chaque image de la collection. Dans notre exemple, il applique la fonction addIndices pour calculer le NDVI, le NDWI et le NDSI sur toutes les images de la collection, rationalisant ainsi le flux de travail. |
Optimisation des scripts GEE pour une efficacité améliorée
Dans le script fourni, l'objectif est d'extraire et de traiter des images satellite provenant de deux sources différentes : Sentinel et Landsat. Le La plate-forme permet aux utilisateurs d'accéder à de grandes quantités de données satellite et d'appliquer diverses opérations telles que le filtrage, l'indexation et la visualisation. L'une des fonctionnalités clés utilisées dans ce script est la fonction, qui est utilisée pour calculer des indices importants tels que NDVI, NDWI et NDSI. Ces indices sont cruciaux pour analyser la végétation, l’eau et la couverture neigeuse dans la région spécifiée. Le script commence par définir un point d'intérêt et centre la carte dessus en utilisant les coordonnées fournies.
Le script applique plusieurs filtres, tels que et , pour réduire la quantité de données traitées, améliorant ainsi le temps d'exécution. Par exemple, filtreBounds() garantit que seules les images coupant la zone d'intérêt sont incluses, tandis que filtreDate() limite les images à une plage de dates spécifique. Ceci est essentiel pour traiter de grands ensembles de données comme les images Sentinel et Landsat, car cela minimise la charge de calcul. De plus, le La couverture nuageuse permet d’éliminer les images trop nuageuses, garantissant ainsi une analyse de meilleure qualité.
Un aspect important du scénario est le fonction, qui ajoute des indices calculés (NDVI, NDWI, NDSI) à l'imagerie, les rendant accessibles pour une analyse plus approfondie. Le script intègre également un masque d'eau permanent utilisant les données de l'ensemble de données du JRC Global Surface Water. Le masque d'eau permet d'exclure les zones à forte présence d'eau (supérieure à 80 %), ce qui pourrait autrement fausser les résultats de l'analyse de la végétation et de la neige. Cela se fait à travers le et fonctions, qui permettent au script d'isoler des zones en fonction des valeurs de pixels.
Enfin, le script utilise le fonctionne avec le réducteur de centile pour générer une image composite qui représente le 30e centile des valeurs de pixels sélectionnées. Cette image composite est ensuite découpée sur la région d'intérêt et visualisée sur la carte à l'aide du fonction. Les paramètres visuels sont définis pour les composites Sentinel et Landsat, permettant à l'utilisateur de les visualiser avec les paramètres de couleur appropriés. En combinant diverses étapes de traitement d'image telles que le filtrage, le masquage et la génération composite, ce script fournit un moyen efficace d'analyser les images satellite, bien qu'une optimisation supplémentaire puisse être appliquée pour réduire les temps d'exécution.
Optimisation de l'exécution des scripts du moteur Google Earth pour un traitement plus rapide
Cette solution utilise Google Earth Engine (GEE) en mettant l'accent sur l'optimisation des performances en réduisant les temps de récupération des données et en simplifiant les opérations. JavaScript est utilisé comme langage de script.
var pointJSP = ee.Geometry.Point([86.465263, 20.168076]);
Map.centerObject(pointJSP, 14);
// Combine date variables for flexibility
var startDate = '2024-02-01';
var endDate = '2024-03-01';
// Function to add NDVI, NDWI, NDSI
var addIndices = function(image) {
var ndvi = image.normalizedDifference(['NIR', 'RED']).rename('NDVI');
var ndwi = image.normalizedDifference(['NIR', 'SWIR1']).rename('NDWI');
var ndsi = image.normalizedDifference(['SWIR1', 'SWIR2']).rename('NDSI');
return image.addBands(ndvi).addBands(ndwi).addBands(ndsi);
};
// Use fewer data points by filtering for cloud-free pixels only once
var sentinel = ee.ImageCollection('COPERNICUS/S2_SR')
.filterBounds(pointJSP)
.filterDate(startDate, endDate)
.filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 30));
Utilisation d'un traitement de données efficace pour GEE afin de minimiser les retards de script
Cette solution intègre un traitement optimisé des données en combinant calculs d'indices et de seuils. JavaScript est appliqué pour le traitement de Google Earth Engine.
var landsat8 = ee.ImageCollection('LANDSAT/LC08/C01/T1_SR')
.filterBounds(pointJSP)
.filterDate(startDate, endDate)
.filter(ee.Filter.lt('CLOUD_COVER', 30));
// Apply water mask for permanent water areas
var waterMask = ee.Image('JRC/GSW1_4/GlobalSurfaceWater').select('occurrence').gt(80).unmask();
// Add indices to Landsat 8 imagery
var landsatIndices = landsat8.map(addIndices);
var composite = landsatIndices.reduce(ee.Reducer.percentile([30])).clip(pointJSP).mask(waterMask.eq(0));
Map.addLayer(composite, {bands: ['RED', 'GREEN', 'BLUE'], min: 0, max: 3000}, 'Landsat Composite');
Map.addLayer(waterMask, {min: 0, max: 1, palette: ['white', 'blue']}, 'Water Mask', false);
Améliorer l'efficacité des scripts de télédétection
Lorsque vous travaillez avec des scripts Google Earth Engine (GEE), l'un des éléments clés à prendre en compte est de garantir que les opérations sont gérées efficacement. Bien que l’utilisation de grands ensembles de données tels que Sentinel et Landsat soit courante dans l’analyse environnementale, le volume considérable de données peut ralentir l’exécution des scripts. Une méthode pour améliorer les performances consiste à garantir que seules les données nécessaires sont traitées. Utiliser des commandes comme et minimise la taille de l'ensemble de données, ce qui permet de rationaliser les calculs. La sélection de plages de dates et de régions géographiques spécifiques peut réduire considérablement le temps d'exécution.
Un autre aspect qui a un impact sur les performances des scripts GEE est la manière dont les données sont traitées. L'exemple de script utilise une fonction pour calculer des indices importants tels que NDVI, NDWI et NDSI. Ces indices sont ajoutés sous forme de bandes aux collections d'images, ce qui permet une analyse plus approfondie. Cependant, une erreur courante consiste à appliquer de telles fonctions à un ensemble de données entier sans filtrer au préalable. Il est crucial d'appliquer de telles opérations après le filtrage pour éviter des calculs inutiles sur des données non pertinentes.
La visualisation est un autre élément du script qui peut être optimisé. L’ajout de trop de couches ou de visualisations complexes peut ralentir le temps de traitement. Le script utilise des paramètres visuels prédéfinis pour restituer les composites, mais les performances peuvent être améliorées en désactivant certaines couches, sauf si elles sont explicitement nécessaires. Cela permet de garder le script léger tout en conservant ses fonctionnalités. En utilisant Les commandes garantissent également que seule la zone nécessaire est rendue, réduisant ainsi la charge globale de traitement.
- Comment améliorer les performances de mes scripts GEE ?
- Optimiser l'utilisation de , , et réduisez la taille de votre ensemble de données avant le traitement.
- Pourquoi mon script GEE prend-il autant de temps à s'exécuter ?
- Des ensembles de données volumineux et des calculs complexes peuvent ralentir l’exécution. Utiliser et limiter le traitement aux zones concernées.
- Puis-je réduire le nombre d’images traitées dans GEE ?
- Oui, en postulant pour la couverture nuageuse et se concentrer sur des périodes précises.
- Comment puis-je simplifier les calculs d’index dans mon script ?
- Utilisez une fonction comme pour rationaliser l'ajout de plusieurs indices (par exemple, NDVI, NDWI) en une seule étape.
- Est-il possible de visualiser uniquement les couches essentielles ?
- Oui, désactivez les calques inutiles et utilisez des paramètres de visualisation simplifiés avec pour de meilleures performances.
L'optimisation des scripts Google Earth Engine implique la gestion efficace de grands ensembles de données, l'application précoce de filtres et la réduction des opérations de données inutiles. Se concentrer sur les domaines essentiels comme le filtrage par et l'emplacement peuvent réduire considérablement le temps de traitement.
En intégrant des fonctions telles que et en utilisant des masques de seuil pour éliminer les données non pertinentes, les performances des scripts peuvent être encore améliorées. Ces techniques peuvent rationaliser l'exécution, offrant des résultats plus rapides et une meilleure utilisation de la plate-forme Google Earth Engine.
- Cet article a été créé à partir d'un contenu basé sur la documentation officielle de Google Earth Engine, qui fournit des informations sur les techniques d'optimisation des scripts. Guides du moteur Google Earth
- Des informations supplémentaires ont été recueillies sur le forum de la communauté GEE, proposant des discussions et des solutions pour améliorer les performances dans les scripts complexes. Communauté Google Earth Engine
- Les meilleures pratiques pour gérer de grands ensembles de données ont été référencées dans la littérature sur la télédétection et dans les didacticiels disponibles sur le lien suivant. Observatoire de la Terre de la NASA