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

  1. Wenn Sie die Funktion ST_REGIONSTATS in Ihren Abfragen verwenden möchten, aktivieren Sie die Earth Engine API.

    API aktivieren

  2. 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.

    API aktivieren

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:

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:

  1. Rufen Sie die Seite Teilen auf.

    Zu „Teilen“

  2. Klicken Sie auf Einträge suchen.

  3. Geben Sie im Feld Nach Einträgen suchen "Google Earth Engine" ein.

  4. Klicken Sie auf einen Datensatz, den Sie abonnieren möchten.

  5. Klicken Sie auf Abonnieren.

  6. Optional: Aktualisieren Sie die Felder Projekt oder Name des verknüpften Datensatzes.

  7. 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:

  1. Suchen Sie im Earth Engine-Datenkatalog nach dem gewünschten Datensatz.
  2. 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 Methode ee.Image.get('system:id'), um den IMAGE_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}'. Dadurch wird das Bild in Earth Engine im angeforderten Maßstab neu abgerastert. Weitere Informationen dazu, wie in Earth Engine die Neuberechnung von Skalen erfolgt, finden Sie in der Google Earth Engine-Dokumentation unter Maßstab.

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- oder band_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