Mit Rasterdaten in BigQuery mit Earth Engine arbeiten
In diesem Dokument wird beschrieben, wie Sie Raster- und Vektordaten mit der Funktion ST_REGIONSTATS
kombinieren, die Google Earth Engine aufruft, um raumbezogene Analysen in BigQuery durchzuführen.
Übersicht
Ein Raster ist ein zweidimensionales Pixelraster, dem jeweils ein oder mehrere Werte zugewiesen sind, die als Bänder bezeichnet werden. Jedes Pixel könnte beispielsweise einem bestimmten Quadratkilometer auf der Erdoberfläche entsprechen und Bänder für die Durchschnittstemperatur und den durchschnittlichen Niederschlag haben. Rasterdaten umfassen Satellitenbilder und andere kontinuierliche, rasterbasierte Daten wie Wettervorhersagen und Bodenbedeckung. Viele gängige Bildformate wie PNG- oder JPEG-Dateien sind als Rasterdaten formatiert.
Rasterdaten werden oft Vektordaten gegenübergestellt, bei denen die Daten durch Linien oder Kurven anstelle eines festen rechteckigen Rasters beschrieben werden. Mit dem Datentyp GEOGRAPHY
in BigQuery können Sie beispielsweise die Grenzen von Ländern, Städten oder anderen Regionen beschreiben.
Geografische Raster- und Vektordaten werden häufig mit einem Zonal Statistics-Vorgang kombiniert, bei dem ein Aggregat aller Rasterwerte in einer bestimmten Vektorregion berechnet wird. Sie möchten beispielsweise Folgendes berechnen:
- Durchschnittliche Luftqualität in den einzelnen Landkreisen Ihres Bundesstaats.
- Solarpotenzial für eine Sammlung von Gebäude-Polygonen.
- Zusammenfassung des Brandrisikos entlang von Stromleitungskorridoren in Waldgebieten.
BigQuery eignet sich hervorragend für die Verarbeitung von Vektordaten und Google Earth Engine für die Verarbeitung von Rasterdaten. Mit der ST_REGIONSTATS
-Geografiefunktion können Sie Rasterdaten aus Earth Engine mit Ihren in BigQuery gespeicherten Vektordaten kombinieren.
Hinweise
Wenn Sie die Funktion
ST_REGIONSTATS
in Ihren Abfragen verwenden möchten, müssen Sie die Earth Engine API aktivieren.Optional: Wenn Sie Daten abonnieren und verwenden möchten, die über BigQuery Sharing (früher Analytics Hub) mit der Funktion
ST_REGIONSTATS
veröffentlicht wurden, aktivieren Sie die Analytics Hub API.
Erforderliche Berechtigungen
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für das Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Aufrufen der Funktion ST_REGIONSTATS
benötigen:
-
Betrachter von Earth Engine-Ressourcen (
roles/earthengine.viewer
) -
Service Usage Consumer (
roles/serviceusage.serviceUsageConsumer
) -
Datasets in BigQuery-Freigabe abonnieren:
BigQuery-Datenbearbeiter (
roles/bigquery.dataEditor
)
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Diese vordefinierten Rollen enthalten die Berechtigungen, die zum Aufrufen der Funktion ST_REGIONSTATS
erforderlich sind. Erweitern Sie den Abschnitt Erforderliche Berechtigungen, um die erforderlichen Berechtigungen anzuzeigen:
Erforderliche Berechtigungen
Die folgenden Berechtigungen sind erforderlich, um die Funktion ST_REGIONSTATS
aufzurufen:
-
earthengine.computations.create
-
serviceusage.services.use
-
bigquery.datasets.create
Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.
Rasterdaten finden
Der Parameter raster_id
in der Funktion ST_REGIONSTATS
ist ein String, der die Quelle Ihrer Rasterdaten angibt. In den folgenden Abschnitten wird erläutert, wie Sie die Raster-ID finden und formatieren.
BigQuery-Bildtabellen
Mit BigQuery Sharing (früher Analytics Hub) können Sie Raster-Datasets in BigQuery finden und darauf zugreifen. Wenn Sie BigQuery Sharing verwenden möchten, müssen Sie die Analytics Hub API aktivieren und dafür sorgen, dass Sie die erforderlichen Berechtigungen haben, um Einträge aufzurufen und zu abonnieren.
Google Earth Engine veröffentlicht öffentlich verfügbare Datasets mit Rasterdaten. So abonnieren Sie ein Earth Engine-Dataset mit Rasterdaten:
Rufen Sie die Seite Freigabe (Analytics Hub) auf.
Klicken Sie auf
Einträge durchsuchen.Geben Sie im Feld Nach Einträgen suchen
"Google Earth Engine"
ein.Klicken Sie auf ein Dataset, das Sie abonnieren möchten.
Klicken Sie auf Abonnieren.
Optional: Aktualisieren Sie die Felder Projekt oder Name des verknüpften Datasets.
Klicken Sie auf Speichern. Das verknüpfte Dataset wird Ihrem Projekt hinzugefügt.
Das Dataset enthält eine Tabelle, die manchmal als Bildtabelle bezeichnet wird und Metadaten für eine Sammlung von Rasterbildern gemäß der STAC-Spezifikation für Elemente speichert. Eine Bildtabelle ist analog zu einer Earth Engine-Bildsammlung (ImageCollection
).
Jede Zeile in der Tabelle entspricht einem einzelnen Rasterbild.
Die Raster-ID für jedes Bild wird in der Spalte assets.image.href
gespeichert. Wenn Sie ein bestimmtes Bild suchen, können Sie in der Spalte properties
nach Bildeigenschaften filtern. Informationen zu den Bereichen finden Sie in der Tabellenbeschreibung.
Das ERA5-Land-Dataset enthält beispielsweise Statistiken zu täglichen Klimavariablen und ist öffentlich verfügbar. Die Tabelle climate
enthält mehrere Raster-IDs. In der folgenden Abfrage wird die Bildtabelle mit der Spalte properties.start_datetime
gefiltert, um die Raster-ID für das Bild vom 1. Januar 2025 abzurufen. Außerdem wird die Durchschnittstemperatur für jedes Land mit dem Band temperature_2m
berechnet:
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 properties.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;
Cloud Storage-GeoTIFF
GeoTIFF ist ein gängiges Dateiformat zum Speichern von raumbezogenen Rasterdaten. Die Funktion ST_REGIONSTATS
unterstützt Rasterdaten, die im GeoTIFF-Format in Cloud Storage-Buckets gespeichert sind, die sich in den Regionen US
oder us-central1
befinden. Geben Sie den Cloud Storage-URI als Raster-ID an, z. B. gs://bucket/folder/raster.tif
.
Earth Engine-Bild-Assets
Die Funktion ST_REGIONSTATS
unterstützt die Übergabe eines Earth Engine-Bildasset-Pfads für das Argument raster_id
. Earth Engine-Rasterdaten sind als einzelne Bilder oder Bildsammlungen verfügbar. So finden Sie die Raster-ID für ein Bild:
- Suchen Sie im Earth Engine-Datenkatalog nach dem gewünschten Dataset.
Klicken Sie auf den Namen des Datasets, um die Beschreibungsseite für diesen Eintrag zu öffnen. Das Earth Engine-Snippet beschreibt entweder ein einzelnes Bild oder eine Sammlung von Bildern.
Wenn der Earth Engine-Snippet das Format
ee.Image('IMAGE_PATH')
hat, ist die Raster-ID'ee://IMAGE_PATH'
.Wenn der Earth Engine-Snippet die Form
ee.ImageCollection('IMAGE_COLLECTION_PATH')
hat, können Sie den Earth Engine Code Editor verwenden, um die ImageCollection nach einem einzelnen Bild zu filtern. Mit der Methodeee.Image.get('system:id')
wird derIMAGE_PATH
-Wert für dieses Bild in der Konsole ausgegeben. Die Raster-ID lautet'ee://IMAGE_PATH'
.
Pixelgewichte
Sie können für den Parameter include
in der Funktion ST_REGIONSTATS
ein Gewicht (manchmal auch als Maskenwert bezeichnet) angeben, mit dem bestimmt wird, wie stark die einzelnen Pixel bei Berechnungen gewichtet werden. Die Gewichtungswerte müssen zwischen 0 und 1 liegen.
Gewichtungen außerhalb dieses Bereichs werden auf den nächstgelegenen Grenzwert (0 oder 1) gesetzt.
Ein Pixel gilt als gültig, wenn es eine Gewichtung größer als 0 hat. Eine Gewichtung von 0 gibt einen ungültigen Pixel an. Ungültige Pixel stehen in der Regel für fehlende oder unzuverlässige Daten, z. B. Bereiche, die von Wolken verdeckt werden, Sensoranomalien, Verarbeitungsfehler oder Orte außerhalb einer definierten Grenze.
Wenn Sie kein Gewicht angeben, wird jedes Pixel automatisch nach dem Anteil des Pixels gewichtet, der in die Geometrie fällt. So kann es proportional in die Zonenstatistiken einbezogen werden.
Wenn ein teilweise überschneidendes Pixel ein Gewicht aus dem include
-Argument für ST_REGIONSTATS
hat, verwendet BigQuery das Minimum aus diesem Gewicht und dem Bruchteil des Pixels, der sich mit der Region überschneidet.
Gewichtswerte haben nicht dieselbe Genauigkeit wie FLOAT64
-Werte. In der Praxis kann ihr tatsächlicher Wert um bis zu 1/256 (etwa 0,4%) vom Wert abweichen, der in Berechnungen verwendet wird.
Sie können im Argument include
einen Ausdruck mit der Bildausdruckssyntax von Earth Engine angeben, um Pixel basierend auf bestimmten Kriterien in Rasterbändern dynamisch zu gewichten. Mit dem folgenden Ausdruck werden Berechnungen beispielsweise auf Pixel beschränkt, bei denen der probability
-Bandwert 70 % überschreitet:
include => 'probability > 0.7'
Wenn das Dataset ein Gewichtungsfaktorband enthält, können Sie es mit der folgenden Syntax verwenden:
include => 'weight_factor_band_name'
Pixelgröße und Analyseumfang
Ein raumbezogenes Rasterbild ist ein Raster aus Pixeln, das einem Ort auf der Erdoberfläche entspricht. Die Pixelgröße eines Rasters, manchmal auch als Maßstab bezeichnet, ist die nominelle Größe einer Kante eines Pixels im Koordinatenreferenzsystem des Rasters. Ein Raster mit einer Auflösung von 10 Metern hat beispielsweise Pixel mit einer Größe von 10 × 10 Metern. Die ursprünglich gemeldete Pixelgröße kann zwischen Datasets erheblich variieren, von weniger als 1 Meter bis zu mehr als 20 Kilometern.
Wenn Sie die Funktion ST_REGIONSTATS
zum Berechnen von Zonenstatistiken verwenden, ist die Pixelgröße der Rasterdaten ein wichtiger Faktor. Beispielsweise kann die Aggregation von hochauflösenden Rasterdaten für die Region eines Landes rechenintensiv und unnötig detailliert sein. Wenn Sie Daten mit niedriger Auflösung über die Region hinweg aggregieren, z. B. Stadtteile, sind die Details möglicherweise nicht ausreichend.
Damit Sie aussagekräftige und effiziente Ergebnisse aus Ihrer Analyse erhalten, empfehlen wir, eine Pixelgröße zu wählen, die der Größe Ihrer Polygone und dem Ziel Ihrer Analyse entspricht. Die Pixelgröße für jedes Raster-Dataset finden Sie im Beschreibungsabschnitt von Bildtabellen in BigQuery Sharing.
Wenn Sie die Pixelgröße ändern, ändert sich die Anzahl der Pixel, die sich mit einer bestimmten geografischen Einheit überschneiden. Das wirkt sich auf die Ergebnisse und deren Interpretation aus. Wir empfehlen nicht, die Pixelgröße für Produktionsanalysen zu ändern. Wenn Sie jedoch eine Abfrage prototypisieren, kann durch Erhöhen der Pixelgröße die Ausführungszeit und der Preis der Abfrage gesenkt werden, insbesondere bei Daten mit hoher Auflösung.
Wenn Sie die Pixelgröße ändern möchten, legen Sie die scale
im options
-Argument für die Funktion ST_REGIONSTATS
fest. Wenn Sie beispielsweise Statistiken für 1.000-Meter-Pixel berechnen möchten, verwenden Sie options => JSON '{"scale":1000}'
Abrechnung
Wenn Sie eine Abfrage ausführen, wird die Verwendung der Funktion ST_REGIONSTATS
separat vom Rest der Abfrage abgerechnet, da Earth Engine die Ergebnisse des Funktionsaufrufs berechnet. Diese Nutzung wird Ihnen in Slotstunden unter der SKU „BigQuery Services“ in Rechnung gestellt, unabhängig davon, ob Sie die On-Demand-Abrechnung oder Reservierungen verwenden. Wenn Sie den Betrag sehen möchten, der für BigQuery-Aufrufe an Earth Engine in Rechnung gestellt wird, rufen Sie Ihren Abrechnungsbericht auf und filtern Sie mit Labels nach dem Label-Schlüssel goog-bq-feature-type
mit dem Wert EARTH_ENGINE
.
Kostenfaktoren
Die folgenden Faktoren wirken sich auf die Compute-Nutzung aus, wenn Sie die ST_REGIONSTATS
-Funktion ausführen:
- Die Anzahl der Eingabezeilen.
- Das verwendete Rasterbild. Einige Raster sind Composites, die aus Quellbildsammlungen im Earth Engine-Datenkatalog erstellt wurden. Die Rechenressourcen, die für die Erstellung des Composite-Ergebnisses erforderlich sind, variieren.
- Die Auflösung des Bildes.
- Die Größe und Komplexität der Eingabe-Geografie, die Anzahl der Pixel, die sich mit der Geografie überschneiden, sowie die Anzahl der Bildkacheln und Byte, die von Earth Engine gelesen werden.
Die Position der Eingabegeografie auf der Erde relativ zu den Quellbildern sowie die Projektion und Auflösung des Bildes.
- Bei Bildprojektionen können Pixel verzerrt werden, insbesondere Pixel in hohen Breitengraden oder weit außerhalb des beabsichtigten Abdeckungsbereichs des Bildes.
- Bei zusammengesetzten Rastern kann die Anzahl der Quellbilder, die sich mit der Eingabegeografie überschneiden, je nach Region und im Zeitverlauf variieren. So liefern einige Satelliten je nach Umlaufbahn und Datenerfassungsparametern mehr Bilder bei niedrigen oder hohen Breitengraden oder lassen Bilder je nach sich ändernden atmosphärischen Bedingungen aus.
Die Verwendung von Formeln in den Argumenten
include
oderband_name
und die Anzahl der Bänder, die sie umfassen.Das Zwischenspeichern früherer Ergebnisse.
Kosten kontrollieren
Um die Kosten für die Funktion ST_REGIONSTATS
zu steuern, können Sie das Kontingent anpassen, das die Menge an Slot-Zeit steuert, die die Funktion nutzen darf. Der Standardwert beträgt 350 Slotstunden pro Tag.
Wenn Sie Ihre Kontingente ansehen, filtern Sie die Liste Messwert nach earthengine.googleapis.com/bigquery_slot_usage_time
, um das Earth Engine-Kontingent für Aufrufe aus BigQuery zu sehen. Weitere Informationen finden Sie in der Google Earth Engine-Dokumentation unter Kontingente für BigQuery-Rasterfunktionen.
Beschränkungen
Abfragen, die die Funktion ST_REGIONSTATS
aufrufen, müssen in einer der folgenden Regionen ausgeführt werden:
US
us-central1
us-central2
Nächste Schritte
- Anleitung zum Analysieren von Temperatur mithilfe von Rasterdaten
- Weitere Informationen zu geografischen Funktionen in BigQuery
- Weitere Informationen zur Arbeit mit raumbezogenen Daten