Utiliser des données de trame avec Earth Engine dans BigQuery
Ce document
explique comment combiner des données de trame et vectorielles à l'aide de la
ST_REGIONSTATS fonction,
qui utilise Google Earth Engine pour accéder aux données d'image et de trame
dans BigQuery.
Présentation
Une trame est une grille bidimensionnelle de pixels, chacun étant associé à une ou plusieurs valeurs appelées bandes. Par exemple, chaque pixel peut correspondre à un kilomètre carré particulier à la surface de la Terre et comporter des bandes pour la température moyenne et les précipitations moyennes. Les données de trame incluent des images satellite et d'autres données continues basées sur une grille, telles que les prévisions météorologiques et la couverture terrestre. De nombreux formats d'image courants, tels que les fichiers PNG ou JPEG, sont mis en forme en tant que données de trame.
Les données de trame sont souvent opposées aux données vectorielles, dans lesquelles les données sont décrites par des lignes ou des courbes plutôt que par une grille rectangulaire fixe. Par exemple, vous pouvez utiliser le type de données GEOGRAPHY dans BigQuery pour décrire les limites des pays, des villes ou d'autres régions.
Les données géospatiales de trame et vectorielles sont souvent combinées à l'aide d'une opération de statistiques zonales, qui calcule un agrégat de toutes les valeurs de trame dans une région vectorielle donnée. Par exemple, vous pouvez calculer les éléments suivants :
- Qualité de l'air moyenne dans un ensemble de villes.
- Potentiel solaire pour un ensemble de polygones de bâtiments.
- Risque d'incendie résumé le long des corridors de lignes électriques dans les zones boisées.
BigQuery excelle dans le traitement des données vectorielles, et Google Earth Engine dans le traitement des données de trame. Vous pouvez utiliser la
ST_REGIONSTATS fonction géographique
pour combiner des données de trame à l'aide d'Earth Engine avec vos données vectorielles stockées
dans BigQuery.

Avant de commencer
Pour utiliser la fonction
ST_REGIONSTATSdans vos requêtes, activez l'API Earth Engine.Facultatif : Pour vous abonner aux données publiées dans BigQuery Sharing (anciennement Analytics Hub) et les utiliser à l'aide de la fonction
ST_REGIONSTATS, activez l'API Analytics Hub.
Autorisations requises
Pour obtenir les autorisations nécessaires pour appeler la fonction ST_REGIONSTATS, demandez à votre administrateur de vous attribuer les rôles IAM suivants dans votre projet :
- Lecteur de ressources Earth Engine (
roles/earthengine.viewer) - Consommateur Service Usage (
roles/serviceusage.serviceUsageConsumer) -
S'abonner à des ensembles de données dans BigQuery Sharing:
Éditeur de données BigQuery (
roles/bigquery.dataEditor)
Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.
Ces rôles prédéfinis contiennent
les autorisations requises pour appeler la fonction ST_REGIONSTATS. Pour afficher les autorisations exactes requises, développez la section Autorisations requises :
Autorisations requises
Les autorisations suivantes sont requises pour appeler la fonction ST_REGIONSTATS :
-
earthengine.computations.create -
serviceusage.services.use -
bigquery.datasets.create
Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.
Rechercher des données de trame
Le paramètre raster_id de la fonction ST_REGIONSTATS est une chaîne qui spécifie la source de vos données de trame. Les sections suivantes expliquent comment trouver et mettre en forme l'ID de trame.
Tables d'images BigQuery
Vous pouvez utiliser BigQuery Sharing (anciennement Analytics Hub) pour découvrir des ensembles de données de trame dans BigQuery et y accéder. Pour utiliser BigQuery Sharing, vous devez activer l'API Analytics Hub et vous assurer que vous disposez des autorisations requises pour afficher les fiches et les échanges de données, et vous y abonner.
Google Earth Engine publie des ensembles de données accessibles au public qui contiennent des données de trame dans les multirégions US et EU. Pour vous
abonner
à un ensemble de données Earth Engine contenant des données de trame, procédez comme suit :
Accédez à la page Sharing (Analytics Hub) (Partage (Analytics Hub)).
Cliquez sur Search listings (Rechercher des fiches).
Dans le champ Search for listings (Rechercher des fiches), saisissez
"Google Earth Engine".Cliquez sur l'ensemble de données auquel vous souhaitez vous abonner.
Cliquez sur Subscribe (S'abonner).
Facultatif : Mettez à jour les champs Project (Projet) ou Linked dataset name (Nom de l'ensemble de données associé).
Cliquez sur Save (Enregistrer). L'ensemble de données associé est ajouté à votre projet.
L'ensemble de données contient une table d'images qui
stocke les métadonnées d'une collection d'images de trame suivant
la spécification des éléments STAC. Une table d'images est
analogue à une collection d'images Earth Engine
(ImageCollection).
Chaque ligne du tableau correspond à une seule image de trame, avec des colonnes contenant les propriétés et les métadonnées de l'image. L'ID de trame de chaque image est stocké dans la colonne assets.image.href. Référencez les images dans vos requêtes à l'aide de cet ID comme valeur de paramètre raster_id.
Filtrez le tableau à l'aide des colonnes de propriétés pour sélectionner des images ou des sous-ensembles d'images spécifiques qui répondent à vos critères. Pour en savoir plus sur les bandes disponibles, la taille des pixels et les définitions des propriétés, ouvrez le tableau et cliquez sur l'onglet Image details (Détails de l'image).
Chaque table d'images inclut une table *_metadata correspondante qui fournit des informations complémentaires pour la table d'images.
Par exemple, l'ensemble de données ERA5-Land fournit des statistiques quotidiennes sur les variables climatiques et est accessible au public. La table climate contient plusieurs ID de trame. La requête suivante filtre la table d'images à l'aide de la colonne start_datetime pour obtenir l'ID de trame de l'image correspondant au 1er janvier 2025 et calcule la température moyenne pour chaque pays à l'aide de la bande temperature_2m :
SQL
WITH SimplifiedCountries AS (
SELECT
ST_SIMPLIFY(geometry, 10000) AS simplified_geometry,
names.primary AS name
FROM
`bigquery-public-data.overture_maps.division_area`
WHERE
subtype = 'country'
)
SELECT
sc.simplified_geometry AS geometry,
sc.name,
ST_REGIONSTATS(
sc.simplified_geometry,
(SELECT assets.image.href
FROM `LINKED_DATASET_NAME.climate`
WHERE start_datetime = '2025-01-01 00:00:00'),
'temperature_2m'
).mean - 273.15 AS mean_temperature
FROM
SimplifiedCountries AS sc
ORDER BY
mean_temperature DESC;
BigQuery DataFrames
Avant d'essayer cet exemple, suivez les instructions de configuration pour BigQuery DataFrames du guide de démarrage rapide de BigQuery DataFrames. Pour en savoir plus, consultez la documentation de référence sur BigQuery DataFrames.
Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer les identifiants par défaut de l'application pour un environnement de développement local.
GeoTIFF Cloud Storage
GeoTIFF est un format de fichier courant pour stocker des données de trame géospatiales. La fonction
ST_REGIONSTATS est compatible avec les données de trame stockées au format
Cloud Optimized GeoTIFF
(COG) dans les buckets
Cloud Storage situés dans les régions suivantes :
- Multirégion
US us-central1- Multirégion
EU europe-west1
Fournissez l'URI Cloud Storage comme ID de trame, par exemple gs://bucket/folder/raster.tif.
Éléments d'image Earth Engine
La fonction ST_REGIONSTATS permet de transmettre un chemin d'accès à un composant Image Earth Engine pour l'argument raster_id. Les données de trame Earth Engine sont disponibles sous forme d'images individuelles ou de collections d'images. Ces données existent dans la région US et ne sont compatibles qu'avec les requêtes exécutées dans cette région.US Pour trouver l'ID de trame d'une image, procédez comme suit :
- Recherchez l' ensemble de données qui vous intéresse dans le catalogue de données Earth Engine.
Pour ouvrir la page de description de cette entrée, cliquez sur le nom de l'ensemble de données. L'extrait Earth Engine décrit une seule image ou une collection d'images.
Si l'extrait Earth Engine est au format
ee.Image('IMAGE_PATH'), l'ID de trame est'ee://IMAGE_PATH'.Si l'extrait Earth Engine est au format
ee.ImageCollection('IMAGE_COLLECTION_PATH'), vous pouvez utiliser l' éditeur de code Earth Engine pour filtrer l'ImageCollection sur une seule image. Utilisez la méthodeee.Image.get('system:id')pour imprimer la valeurIMAGE_PATHde cette image dans la console. L'ID de trame est'ee://IMAGE_PATH'.
Pondérations des pixels
Vous pouvez spécifier une pondération, parfois appelée valeur de masque,
pour le paramètre include de la fonction ST_REGIONSTATS
qui détermine le poids de chaque pixel dans les calculs. Les valeurs de pondération doivent être comprises entre 0 et 1.
Les pondérations en dehors de cette plage sont définies sur la limite la plus proche, soit 0, soit 1.
Un pixel est considéré comme valide si sa pondération est supérieure à 0. Une pondération de 0 indique un pixel non valide. Les pixels non valides représentent généralement des données manquantes ou non fiables, telles que des zones masquées par des nuages, des anomalies de capteur, des erreurs de traitement ou des emplacements en dehors d'une limite définie.
Si vous ne spécifiez pas de pondération, chaque pixel est automatiquement pondéré par la proportion du pixel qui se trouve dans la géométrie, ce qui permet une inclusion proportionnelle dans les statistiques zonales. Si la géométrie est inférieure à 1/256 de la taille du pixel, la pondération du pixel est de 0. Dans ce cas, null est renvoyé pour toutes les statistiques, à l'exception de count et area, qui sont égales à 0.
Si un pixel partiellement intersecté a une pondération de l'argument include à ST_REGIONSTATS, BigQuery utilise le minimum de cette pondération et la fraction du pixel qui intersecte la région.
Les valeurs de pondération n'ont pas la même précision que les valeurs FLOAT64. En pratique, leur valeur réelle peut différer de la valeur utilisée dans les calculs jusqu'à 1/256 (environ 0,4%).
Vous pouvez fournir une expression à l'aide de la syntaxe d'expression d'image Earth Engine
dans votre argument include pour pondérer dynamiquement
les pixels en fonction de critères spécifiques dans les bandes de trame. Par exemple, l'expression suivante limite les calculs aux pixels où la bande probability dépasse 70%:
include => 'probability > 0.7'
Si l'ensemble de données inclut une bande de facteur de pondération, vous pouvez l'utiliser avec la syntaxe suivante :
include => 'weight_factor_band_name'
Taille des pixels et échelle d'analyse
Une image de trame géospatiale est une grille de pixels qui correspond à un emplacement à la surface de la Terre. La taille des pixels d'une trame, parfois appelée l' échelle, est la taille nominale d'un bord d'un pixel dans le système de référence de coordonnées de la grille. Par exemple, une trame avec une résolution de 10 mètres comporte des pixels de 10 mètres sur 10 mètres. La taille des pixels d'origine peut varier considérablement d'un ensemble de données à l'autre, allant de moins de 1 mètre à plus de 20 kilomètres.
Lorsque vous utilisez la fonction ST_REGIONSTATS pour calculer des statistiques zonales, la taille des pixels des données de trame est un élément essentiel à prendre en compte. Par exemple, l'agrégation de données de trame haute résolution sur la région d'un pays peut être gourmande en ressources de calcul et inutilement précise. À l'inverse, l'agrégation de données basse résolution sur la région, comme les parcelles de ville, peut ne pas fournir suffisamment de détails.
Pour obtenir des résultats pertinents et efficaces de votre analyse, nous vous recommandons de choisir une taille de pixel adaptée à la taille de vos polygones et à l'objectif de votre analyse. Vous trouverez la taille des pixels pour chaque ensemble de données de trame dans la section de description des tables d'images dans BigQuery Sharing.
La modification de la taille des pixels modifie le nombre de pixels qui intersectent une géographie donnée, ce qui affecte les résultats et leur interprétation. Nous vous déconseillons de modifier la taille des pixels pour les analyses de production. Toutefois, si vous créez un prototype de requête, l'augmentation de la taille des pixels peut réduire la durée et le coût de la requête, en particulier pour les données haute résolution.
Pour modifier la taille des pixels, définissez scale dans l'argument options de la fonction ST_REGIONSTATS. Par exemple,
pour calculer des statistiques sur des pixels de 1 000 mètres, utilisez
options => JSON '{"scale":1000}'
Le calcul de statistiques pour des polygones beaucoup plus petits que les pixels de la trame peut produire des résultats inexacts ou nuls. Dans ce cas,
vous pouvez remplacer le polygone par son point centroïde à l'aide de
ST_CENTROID.
Facturation
Lorsque vous exécutez une requête, l'utilisation de la fonction ST_REGIONSTATS est facturée séparément du reste de la requête, car Earth Engine calcule les résultats de l'appel de fonction. Cette utilisation vous est facturée en heures d'emplacement sous la référence SKU des services BigQuery, que vous utilisiez la facturation à la demande ou les réservations. Pour afficher le
montant facturé pour les appels BigQuery à Earth Engine,
consultez votre rapport sur la facturation
et utilisez les étiquettes pour filtrer par
la clé d'étiquette goog-bq-feature-type, avec la valeur EARTH_ENGINE. Si la fonction ST_REGIONSTATS échoue, vous n'êtes pas facturé pour les calculs Earth Engine utilisés.
Pour chaque requête, vous pouvez utiliser la
jobs.get méthode
de l'API BigQuery pour afficher les informations suivantes :
- Le champ
slotMs, qui indique le nombre de millisecondes d'emplacement consommées par Earth Engine lorsque le champexternalServiceestEARTH_ENGINEet le champbillingMethodestSERVICES_SKU. - Le champ
totalServicesSkuSlotMs, qui indique le nombre total de millisecondes d'emplacement utilisées par tous les services externes BigQuery facturés sur la référence SKU des services BigQuery.
Vous pouvez également interroger le champ total_services_sku_slot_ms dans la vue
INFORMATION_SCHEMA.JOBS
pour trouver le nombre total de millisecondes d'emplacement consommées par les services externes facturés sur la référence SKU des services
BigQuery.
Facteurs de coût
Les facteurs suivants ont un impact sur l'utilisation du calcul lorsque vous exécutez la fonction ST_REGIONSTATS :
- Nombre de lignes d'entrée.
- Image de trame que vous utilisez. Certaines trames sont des composites créés à partir de collections d'images sources dans le catalogue de données Earth Engine. Les ressources de calcul nécessaires pour produire le résultat composite varient.
- Résolution de l'image.
- Taille et complexité de la géographie d'entrée, nombre de pixels qui intersectent la géographie, et nombre de tuiles d'image et d'octets lus par Earth Engine.
Emplacement de la géographie d'entrée sur la Terre par rapport aux images sources, ainsi que projection et résolution de l'image.
- Les projections d'image peuvent déformer les pixels, en particulier ceux situés à des latitudes élevées ou loin de la zone de couverture prévue de l'image.
- Pour les trames composites, le nombre d'images sources intersectant la géographie d'entrée peut varier selon la région et au fil du temps. Par exemple, certains satellites produisent plus d'images à des latitudes basses ou élevées, en fonction de leur orbite et de leurs paramètres de collecte de données, ou peuvent omettre des images en fonction des conditions atmosphériques changeantes.
Utilisation de formules dans les arguments
includeouband_name, et nombre de bandes impliquées.Mise en cache des résultats précédents.
Contrôler les coûts
Pour contrôler les coûts associés à la fonction ST_REGIONSTATS, vous pouvez ajuster le quota qui contrôle la quantité de temps d'emplacement que la fonction est autorisée à consommer. La valeur par défaut est de 350 heures d'emplacement par jour.
Lorsque vous affichez vos quotas,
filtrez la liste Metric sur
earthengine.googleapis.com/bigquery_slot_usage_time
pour afficher le quota Earth Engine associé aux appels de
BigQuery. Pour en savoir plus, consultez la section
Quotas des fonctions de trame BigQuery
dans la documentation Google Earth Engine.
Régions où le service est disponible
Les requêtes qui appellent la fonction ST_REGIONSTATS doivent s'exécuter dans l'une des régions suivantes :
- Multirégion
US us-central1us-central2- Multirégion
EU europe-west1
Étape suivante
- Essayez le tutoriel qui vous explique comment utiliser des données de trame pour analyser la température.
- En savoir plus sur les fonctions de géographie dans BigQuery.
- En savoir plus sur l'utilisation des données géospatiales.