Mit Earth Engine in BigQuery mit Rasterdaten arbeiten
In diesem Dokument wird beschrieben, wie Sie Raster- und Vektordaten mithilfe der Funktion ST_REGIONSTATS
kombinieren, die Google Earth Engine aufruft, um raumbezogene Analysen in BigQuery durchzuführen.
Übersicht
Ein Raster ist ein zweidimensionales Raster aus Pixeln, denen jeweils ein oder mehrere Werte zugewiesen sind, die als Bänder bezeichnet werden. So könnte jedes Pixel beispielsweise einem bestimmten Quadratkilometer auf der Erdoberfläche entsprechen und Farbbänder für die durchschnittliche Temperatur und den durchschnittlichen Niederschlag enthalten. Rasterdaten umfassen Satellitenbilder und andere kontinuierliche, gitterbasierte Daten wie Wettervorhersagen und Bodenbedeckung. Viele gängige Bildformate wie PNG- oder JPEG-Dateien sind als Rasterdaten formatiert.
Rasterdaten werden oft mit Vektordaten verglichen, bei denen die Daten nicht durch ein festes rechteckiges Raster, sondern durch Linien oder Kurven beschrieben werden. Mit dem Datentyp GEOGRAPHY
in BigQuery können Sie beispielsweise die Grenzen von Ländern, Städten oder anderen Regionen beschreiben.
Georeferenzierte Raster- und Vektordaten werden häufig mithilfe einer zonal statistics-Operation kombiniert, bei der eine Gesamtheit aller Rasterwerte innerhalb einer bestimmten Vektorregion berechnet wird. Sie können beispielsweise Folgendes berechnen:
- Die durchschnittliche Luftqualität in jedem Landkreis in Ihrem Bundesland.
- Solarpotenzial für eine Sammlung von Gebäudepolygonen.
- Zusammenfassung des Brandrisikos entlang von Stromleitungskorridoren in bewaldeten Gebieten.
BigQuery eignet sich hervorragend für die Verarbeitung von Vektordaten und Google Earth Engine für die Verarbeitung von Rasterdaten. Mit der geografischen Funktion ST_REGIONSTATS
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, aktivieren Sie die Earth Engine API.Optional: Wenn Sie Daten abonnieren und mithilfe der Funktion
ST_REGIONSTATS
verwenden möchten, die in BigQuery Sharing (früher Analytics Hub) 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:
-
Earth Engine-Ressourcen-Betrachter (
roles/earthengine.viewer
) -
Service Usage Consumer (
roles/serviceusage.serviceUsageConsumer
) -
Datasets in BigQuery 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 die erforderlichen Berechtigungen haben, um Einträge aufzurufen und zu abonnieren.
In der Google Earth Engine werden öffentlich verfügbare Datasets mit Rasterdaten veröffentlicht. So abonnieren Sie einen Earth Engine-Datensatz mit Rasterdaten:
Rufen Sie die Seite Teilen auf.
Klicken Sie auf
Einträge suchen.Geben Sie im Feld Nach Einträgen suchen
"Google Earth Engine"
ein.Klicken Sie auf einen Datensatz, den Sie abonnieren möchten.
Klicken Sie auf Abonnieren.
Optional: Aktualisieren Sie die Felder Projekt oder Name des verknüpften Datensatzes.
Klicken Sie auf Speichern. Das verknüpfte Dataset wird Ihrem Projekt hinzugefügt.
Der Datensatz enthält eine Tabelle, die manchmal als Bildtabelle bezeichnet wird und Metadaten für eine Sammlung von Rasterbildern gemäß der STAC-Artikelspezifikation speichert. Eine Bildtabelle ist analog zu einer Earth Engine-Bildersammlung (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 möchten, können Sie in der Spalte properties
nach Bildeigenschaften filtern. Informationen zu den Bändern finden Sie in der Tabellenbeschreibung.
Der Datensatz „ERA5-Land“ enthält beispielsweise tägliche Statistiken zu Klimavariablen und ist öffentlich verfügbar. Die Tabelle climate
enthält mehrere Raster-IDs. In der folgenden Abfrage wird die Bildtabelle anhand der Spalte properties.start_datetime
gefiltert, um die Raster-ID für das Bild vom 1. Januar 2025 abzurufen. Anschließend wird mithilfe des Bandes temperature_2m
die durchschnittliche Temperatur für jedes Land 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 geospatialen Rasterdaten. Die Funktion ST_REGIONSTATS
unterstützt Rasterdaten, die im GeoTIFF-Format in Cloud Storage-Buckets in den Regionen US
oder us-central1
gespeichert sind. 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 das Übergeben eines Earth Engine-Bild-Asset-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 Datensatz.
Klicken Sie auf den Namen des Datensatzes, um die Beschreibungsseite für diesen Eintrag zu öffnen. Das Earth Engine-Snippet beschreibt entweder ein einzelnes Bild oder eine Sammlung von Bildern.
Wenn das Earth Engine-Snippet das Format
ee.Image('IMAGE_PATH')
hat, ist'ee://IMAGE_PATH'
die Raster-ID.Wenn das Earth Engine-Snippet das Format
ee.ImageCollection('IMAGE_COLLECTION_PATH')
hat, können Sie mit dem Earth Engine-Code-Editor die Bildersammlung auf ein einzelnes Bild filtern. Verwenden Sie die Methodeee.Image.get('system:id')
, um denIMAGE_PATH
-Wert für dieses Bild in der Konsole auszugeben. Die Raster-ID lautet'ee://IMAGE_PATH'
.
Pixelgewichte
Sie können für den Parameter include
in der Funktion ST_REGIONSTATS
einen Gewichtswert angeben, der auch als Maskenwert bezeichnet wird. Damit wird festgelegt, wie stark jedes Pixel bei den Berechnungen gewichtet wird. Die Gewichtung muss zwischen 0 und 1 liegen.
Gewichte außerhalb dieses Bereichs werden auf den nächstgelegenen Grenzwert gesetzt, also entweder auf 0 oder 1.
Ein Pixel gilt als gültig, wenn es eine Gewichtung von mehr als 0 hat. Ein Wert von 0 gibt ein ungültiges Pixel an. Ungültige Pixel stehen in der Regel für fehlende oder unzuverlässige Daten, z. B. von Wolken verdeckten Bereichen, Sensoranomalien, Verarbeitungsfehlern oder Orten außerhalb einer definierten Grenze.
Wenn Sie kein Gewicht angeben, wird jedes Pixel automatisch nach dem Anteil gewichtet, der in die Geometrie fällt. So können sie proportional in zonalen Statistiken berücksichtigt werden.
Wenn ein teilweise überschneidendes Pixel ein Gewicht vom Argument include
bis ST_REGIONSTATS
hat, verwendet BigQuery das Minimum aus diesem Gewicht und dem Anteil des Pixels, der sich mit der Region überschneidet.
Gewichtswerte haben nicht dieselbe Genauigkeit wie FLOAT64
-Werte. In der Praxis kann der tatsächliche Wert um bis zu 1/256 (ca.0,4%) vom Wert abweichen, der in Berechnungen verwendet wird.
Sie können in Ihrem include
-Argument einen Ausdruck mit der Syntax für Earth Engine-Bildausdrücke angeben, um Pixel basierend auf bestimmten Kriterien innerhalb von Rasterbändern dynamisch zu gewichten. Mit dem folgenden Ausdruck werden Berechnungen beispielsweise auf Pixel beschränkt, bei denen der probability
-Bereich 70 % überschreitet:
include => 'probability > 0.7'
Wenn der Datensatz einen Bereich für den Gewichtsfaktor enthält, können Sie ihn mit der folgenden Syntax verwenden:
include => 'weight_factor_band_name'
Pixelgröße und Analyseumfang
Ein geospatiales Rasterbild ist ein Raster aus Pixeln, das einem bestimmten 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 angegebene Pixelgröße kann zwischen den Datensätzen stark variieren, von weniger als 1 Meter bis über 20 Kilometer.
Wenn Sie die Funktion ST_REGIONSTATS
zum Berechnen zonaler Statistiken verwenden, ist die Pixelgröße der Rasterdaten entscheidend. Die Aggregation hochauflösender Rasterdaten für die Region eines Landes kann beispielsweise sehr rechenintensiv und unnötig detailliert sein. Umgekehrt liefern Daten mit niedriger Auflösung, z. B. für Stadtparzellen, möglicherweise nicht genügend Details.
Um aussagekräftige und effiziente Ergebnisse aus Ihrer Analyse zu erhalten, empfehlen wir Ihnen, eine Pixelgröße auszuwählen, die der Größe Ihrer Polygone und dem Ziel Ihrer Analyse entspricht. Die Pixelgröße für jedes Raster-Dataset finden Sie im Beschreibungsbereich der Bildtabellen in der BigQuery-Freigabe.
Wenn Sie die Pixelgröße ändern, ändert sich die Anzahl der Pixel, die eine bestimmte Region überschneiden. Das wirkt sich auf die Ergebnisse und ihre Interpretation aus. Wir empfehlen nicht, die Pixelgröße für Produktionsanalysen zu ändern. Wenn Sie jedoch einen Abfrageprototyp erstellen, kann eine Erhöhung der Pixelgröße die Abfragelaufzeit und die Kosten senken, insbesondere bei Daten mit hoher Auflösung.
Wenn Sie die Pixelgröße ändern möchten, legen Sie die scale
im options
-Argument der ST_REGIONSTATS
-Funktion fest. Wenn Sie beispielsweise Statistiken für Pixel mit einer Größe von über 1.000 Metern berechnen möchten, verwenden Sie options => JSON '{"scale":1000}'
Abrechnung
Wenn Sie eine Abfrage ausführen, wird die Nutzung der ST_REGIONSTATS
-Funktion separat vom Rest der Abfrage abgerechnet, da Earth Engine die Ergebnisse des Funktionsaufrufs berechnet. Diese Nutzung wird Ihnen in Slotstunden unter der SKU für BigQuery-Dienste in Rechnung gestellt, unabhängig davon, ob Sie die On-Demand-Abrechnung oder Reservierungen verwenden. Wenn Sie den in Rechnung gestellten Betrag für BigQuery-Aufrufe in Earth Engine sehen möchten, rufen Sie Ihren Abrechnungsbericht auf und filtern Sie mithilfe von Labels nach dem Labelschlüssel goog-bq-feature-type
mit dem Wert EARTH_ENGINE
.
Kostenfaktoren
Die folgenden Faktoren wirken sich auf die Rechennutzung aus, wenn Sie die ST_REGIONSTATS
-Funktion ausführen:
- Die Anzahl der Eingabezeilen.
- Das verwendete Rasterbild. Einige Raster sind Komposite, die aus Bildsammlungen im Earth Engine-Datenkatalog erstellt wurden. Die Rechenressourcen, die für die Erstellung des Kompositergebnisses erforderlich sind, variieren.
- Die Auflösung des Bildes.
- Die Größe und Komplexität der Eingabegeografie, die Anzahl der Pixel, die die Geografie schneiden, und die Anzahl der Bildkacheln und Byte, die von Earth Engine gelesen werden.
Der Standort der Eingabegeografie auf der Erde relativ zu den Quellbildern sowie die Projektion und Auflösung des Bilds.
- Bildprojektionen können Pixel verzerren, insbesondere Pixel in hohen Breitengraden oder weit außerhalb des vorgesehenen Abdeckungsbereichs des Bildes.
- Bei zusammengesetzten Rastern kann die Anzahl der Quellbilder, die sich mit der Eingabegeografie überschneiden, regional und im Zeitverlauf variieren. So produzieren einige Satelliten je nach Umlaufbahn und Datenerhebungsparametern beispielsweise mehr Bilder in niedrigen oder hohen Breiten oder lassen Bilder je nach wechselnden atmosphärischen Bedingungen aus.
Die Verwendung von Formeln in den
include
- oderband_name
-Argumenten und die Anzahl der Bänder, die sie betreffen.Das Zwischenspeichern früherer Ergebnisse.
Kosten kontrollieren
Wenn Sie die mit der ST_REGIONSTATS
-Funktion verbundenen Kosten steuern möchten, können Sie das Kontingent anpassen, das die Slotzeit steuert, die die Funktion verbrauchen darf. Wenn Sie sich Ihre Kontingente ansehen, filtern Sie die Liste Messwert auf earthengine.googleapis.com/bigquery_slot_usage_time
, um das Earth Engine-Kontingent für Aufrufe aus BigQuery aufzurufen. 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
- In dieser Anleitung erfahren Sie, wie Sie Rasterdaten zur Analyse der Temperatur verwenden.
- Weitere Informationen zu geografischen Funktionen in BigQuery
- Weitere Informationen zur Arbeit mit raumbezogenen Daten