Dane GCS AlphaEarth Foundations

Zasobnik GCS gs://alphaearth_foundations zawiera pliki COG (Cloud Optimized GeoTIFF), które razem tworzą roczny zbiór danych AlphaEarth Foundations annual Satellite Embedding dataset. Zawiera on roczne wektory dystrybucyjne z lat 2017–2025 włącznie.

Google zobowiązuje się do ciągłego tworzenia rocznych warstw wektorów dystrybucyjnych z satelity i będzie informować z co najmniej rocznym wyprzedzeniem o wszelkich przewidywanych zmianach w dostarczaniu danych. Zależy to jednak od ciągłej dostępności strumieni danych wejściowych z USGS i ESA, na których opiera się tworzenie zbioru danych.

Licencja

Ten zbiór danych jest udostępniany na licencji CC-BY 4.0 i wymaga podania tego tekstu przypisania: „Zbiór danych AlphaEarth Foundations Satellite Embedding został utworzony przez Google i Google DeepMind”.

Od lipca 2026 r. ten zasobnik będzie skonfigurowany jako „płatność dostawcy”.

Struktura katalogu

Są one podzielone na katalogi według roku. Każdy katalog roku jest podzielony na 120 podkatalogów, po jednym na każdą strefę UTM. Ich nazwy odzwierciedlają numer strefy i półkulę (N lub S).

W każdym katalogu znajduje się kilka plików COG. Zawierają one wszystkie dane pikseli dla danej strefy UTM.

Struktura pliku

Każdy plik ma wymiary 8192 x 8192 pikseli i 64 kanały. Wartość każdego piksela po zastosowaniu mapowania dekwantyzacji (patrz poniżej) została znormalizowana tak, aby miała długość euklidesową równą 1.

Pliki zawierają warstwy przeglądowe o wymiarach 4096 x 4096 pikseli, 2048 x 2048 pikseli itd., aż do warstwy przeglądowej najwyższego poziomu o wymiarach 1 x 1 piksel. Te warstwy przeglądowe są tworzone w taki sposób, że każdy piksel przeglądowy jest średnią pikseli o najwyższej rozdzielczości pod tym pikselem przeglądowym, a wielkość średniej została znormalizowana do długości 1.

Kanały odpowiadają w kolejności osiom A00A63 zbioru danych Satellite Embedding. Pliki COG zawierają też te nazwy kanałów.

Wartość każdego piksela w każdym kanale jest 8-bitową liczbą całkowitą ze znakiem. Sposób mapowania tych wartości na wartości natywne (w zakresie [-1, 1]) wektorów dystrybucyjnych jest opisany w sekcji Dekwantyzacja.

Wartość -128 odpowiada zamaskowanemu pikselowi. Jeśli występuje w jednym kanale, będzie występować we wszystkich kanałach. Pliki COG odzwierciedlają to (tzn. mają wartość NoData ustawioną na -128).

Nazwa każdego pliku zawiera też pewne informacje. Na przykład plik o nazwie gs://alphaearth_foundations/satellite_embedding/v1/annual/2019/1S/x8qqwcsisbgygl2ry-0000008192-0000000000.tiff. Jak widać w nazwie pliku, jest on częścią rocznego wektora dystrybucyjnego z 2019 r. dla strefy UTM 1S (strefa 1, półkula południowa). Podstawowa nazwa pliku x8qqwcsisbgygl2ry-0000008192-0000000000 służy do powiązania tego pliku z odpowiednią nazwą obrazu wektorów dystrybucyjnych z satelity w Earth Engine. W tym przykładzie ten plik odpowiada części obrazu Earth Engine GOOGLE/SATELLITE_EMBEDDING/V1/ANNUAL/x8qqwcsisbgygl2ry. Dwie części dziesiętne nazwy pliku określają, gdzie znajdują się wartości tego pliku COG w stosunku do obrazu Earth Engine, jako przesunięcie w osi Y, a następnie przesunięcie w osi X. W tym przypadku początek piksela COG znajduje się w punkcie (0, 8192) względem początku obrazu Earth Engine. Wynika to z tego, że konieczne było podzielenie każdego obrazu Earth Engine (o wymiarach 16384 x 16384 pikseli), aby powstałe pliki COG nie były zbyt duże.

Dekwantyzacja

Aby przekształcić surową 8-bitową wartość ze znakiem (która będzie się mieścić w zakresie od -127 do 127 włącznie, ponieważ -128 jest zarezerwowane jako wartość „brak danych”) w każdym kanale każdego piksela na wartość zmiennoprzecinkową gotową do analizy (która będzie się mieścić w zakresie od -1 do 1), należy zastosować to mapowanie:

  • podziel przez 127,5,
  • podnieś do kwadratu,
  • pomnóż przez znak oryginalnej wartości.

W NumPy wyglądałoby to tak:

  # values is a NumPy array of raw pixel values
  de_quantized_values = ((values / 127.5) ** 2) * np.sign(values)

W Earth Engine odpowiednia operacja wyglądałaby tak:

  var de_quantized_values = values.divide(127.5).pow(2).multiply(values.signum());

Tworzenie piramid z próbkowaniem w dół

Jeśli zamierzasz utworzyć własne wersje z próbkowaniem w dół lub zewnętrzne warstwy przeglądowe z warstwy o podstawowej rozdzielczości tych plików COG (na przykład po połączeniu kilku plików), musisz wykonać te czynności. Standardowe techniki tworzenia piramid rastrowych (np. użycie gdaladdo z opcją -r average na surowych wartościach całkowitych) nie dadzą prawidłowych wyników.

  1. Dekwantyzacja: przekształć surowe 8-bitowe liczby całkowite na liczby zmiennoprzecinkowe za pomocą metody opisanej w sekcji Dekwantyzacja.
  2. Sumowanie wektorów: wykonaj sumowanie wektorów dekwantyzowanych element po elemencie.
  3. Normalizacja: oblicz normę euklidesową wynikowego wektora sumy i podziel ją przez normę, aby ponownie znormalizować wektor do długości jednostki.
import numpy as np

# Assuming 'raw_values' is a NumPy array of shape (N, 64)
# containing the raw signed 8-bit integers from N pixels.
# N = 4 for a 2x2 aggregation, for example.

# 1. De-quantize
de_quantized_values = ((raw_values / 127.5) ** 2) * np.sign(raw_values)

# 2. Sum the de-quantized vectors
sum_vec = np.sum(de_quantized_values, axis=0)  # Shape (64,)

# 3. Normalize the sum vector
norm = np.linalg.norm(sum_vec)
# Add epsilon to prevent division by zero
pyramided_vec = sum_vec / (norm + 1e-9)

# 'pyramided_vec' is the correctly downsampled 64-dimensional unit vector.

Warstwy przeglądowe w plikach COG zostały wygenerowane za pomocą tej procedury. Jeśli odpowiadają Twoim potrzebom, możesz od razu ich użyć bez dodatkowych obliczeń.

Manifest i indeks

Listę plików w tym zbiorze danych znajdziesz w pliku gs://alphaearth_foundations/satellite_embedding/v1/annual/manifest.txt.

Ponieważ na podstawie nazw plików nie można określić, jaki obszar świata obejmują, udostępniliśmy też indeks w 3 postaciach (GeoParquet, GeoPackage i CSV) w plikach gs://alphaearth_foundations/satellite_embedding/v1/annual/aef_index.parquet, gs://alphaearth_foundations/satellite_embedding/v1/annual/aef_index.gpkg i gs://alphaearth_foundations/satellite_embedding/v1/annual/aef_index.csv. Ten indeks zawiera 1 wpis dla każdego pliku w zbiorze danych. Informacje podane w przypadku każdego pliku to:

  • geometria pliku jako wielokąt WGS84 (czyli EPSG:4326). W przypadku formatu CSV jest to kolumna WKT. Szczegóły obliczeń znajdziesz w sekcji Przetwarzanie geometrii.
  • crs: układ współrzędnych strefy UTM, do której należy ten obraz, jako kod EPSG, np. EPSG:32610.
  • year: rok, który obejmuje obraz.
  • utm_zone: strefa UTM obrazu, np. 10N.
  • utm_west, utm_south, utm_east, utm_north: granice UTM surowej tablicy pikseli. Nie odzwierciedla to żadnego przetwarzania geometrii i obejmuje wszystkie piksele, niezależnie od tego, czy są prawidłowe.
  • wgs84_west, wgs84_south, wgs84_east, wgs84_north: minimalna i maksymalna długość geograficzna oraz szerokość geograficzna geometrii WGS84.

Przetwarzanie geometrii

Tablica pikseli jest natywnie w pewnej strefie UTM, więc w tej strefie UTM pole ograniczające tablicy pikseli jest prostym prostokątem. To pole ograniczające jest przekształcane w wielokąt w WGS84. Ten wielokąt zawiera kilka dodatkowych punktów, dzięki czemu jego krawędzie ściśle przylegają do zakrzywionych linii w WGS84, w które przekształcają się proste linie w UTM. Ten wielokąt nie uwzględnia prawidłowości pikseli na obrazie, tylko granice tablicy pikseli obrazu.

Wielokąt jest następnie przycinany do minimalnej i maksymalnej długości geograficznej strefy UTM obrazu. W praktyce może to spowodować, że nie będzie on obejmował kilku prawidłowych pikseli, które wykraczają poza krawędź strefy UTM. Pominięcie tych pikseli w indeksie nie powinno powodować żadnych problemów: pewien obraz z sąsiedniej strefy UTM powinien obejmować ten obszar.

Pamiętaj, że przycinanie do minimalnej i maksymalnej długości geograficznej strefy UTM oznacza, że żaden wielokąt nie przecina południka 180°, co powinno nieco uprościć przetwarzanie tego pliku.