Il bucket GCS gs://alphaearth_foundations contiene file COG (Cloud Optimized
GeoTIFF) che insieme compongono il set di dati annuale AlphaEarth Foundations
Satellite
Embedding. Contiene gli incorporamenti annuali per gli anni dal 2017 al 2025, inclusi.
Google si impegna a produrre continuamente i livelli di incorporamento satellitare annuali e fornirà un preavviso di almeno un anno in caso di modifiche previste alla pubblicazione, a condizione che i flussi di dati di input di USGS ed ESA su cui si basa la produzione del set di dati siano sempre disponibili.
Licenza
Questo set di dati è concesso in licenza ai sensi del CC-BY 4.0 e richiede il seguente testo di attribuzione: "Il set di dati AlphaEarth Foundations Satellite Embedding è prodotto da Google e Google DeepMind."
A partire da luglio 2026, questo bucket è configurato come "il fornitore paga".
Struttura delle directory
Sono suddivisi in directory per anno; la directory di ogni anno è suddivisa in 120 sottodirectory, una per zona UTM, i cui nomi riflettono il numero della zona e l'emisfero (N o S).
All'interno di ogni directory sono presenti diversi file COG. Questi file contengono tutti i dati dei pixel per quella zona UTM.
Struttura dei file
Ogni file è di 8192 x 8192 pixel, con 64 canali. La magnitudine di ogni pixel, dopo l'applicazione della mappatura di dequantizzazione (vedi sotto), è stata normalizzata in modo che abbia una lunghezza euclidea di 1.
I file contengono livelli di panoramica a 4096 x 4096 pixel, 2048 x 2048 pixel e così via, fino a un livello di panoramica di primo livello di 1 x 1. Questi livelli di panoramica sono costruiti in modo che ogni pixel di panoramica sia la media dei pixel a risoluzione più alta sotto quel pixel di panoramica, dove la magnitudine della media è stata normalizzata per avere una lunghezza di 1.
I canali corrispondono, in ordine, agli assi da A00 a A63 del set di dati di incorporamento satellitare. I COG contengono anche questa denominazione per i canali.
Il valore di ogni pixel per ogni canale è un intero a 8 bit con segno. La modalità di mappatura di questi valori ai valori nativi (nell'intervallo [-1, 1]) degli incorporamenti è spiegata in Dequantizzazione.
Il valore -128 corrisponde a un pixel mascherato. Se è presente in un canale, sarà presente in tutti i canali. I COG riflettono questo (ovvero hanno il valore NoData impostato su -128).
Anche il nome di ogni file contiene alcune informazioni. Ad esempio, considera il file denominato gs://alphaearth_foundations/satellite_embedding/v1/annual/2019/1S/x8qqwcsisbgygl2ry-0000008192-0000000000.tiff.
Come si evince dal nome del file, questo file fa parte dell'incorporamento annuale del 2019, per la zona UTM 1S (zona 1, emisfero meridionale). Il nome del file di base, x8qqwcsisbgygl2ry-0000008192-0000000000, serve a collegare questo file al nome dell'immagine di incorporamento satellitare di Earth Engine corrispondente. In questo esempio, questo file corrisponde a una parte dell'immagine di Earth Engine GOOGLE/SATELLITE_EMBEDDING/V1/ANNUAL/x8qqwcsisbgygl2ry. Le due parti decimali del nome del file specificano la posizione dei valori di questo COG rispetto all'immagine di Earth Engine, come offset in Y seguito da un offset in X. In questo caso, l'origine dei pixel del COG è in (0, 8192) rispetto all'origine dell'immagine di Earth Engine.
Questo perché è stato necessario suddividere ogni immagine di Earth Engine (che sono di 16384 x 16384 pixel) in modo che i COG risultanti non fossero troppo ingombranti.
Dequantizzazione
Per trasformare il valore a 8 bit con segno non elaborato (che sarà compreso tra -127 e 127 inclusi, poiché -128 è riservato come valore "nessun dato") in ogni canale di ogni pixel nel valore a virgola mobile pronto per l'analisi (che sarà compreso tra -1 e 1), la mappatura da eseguire è
- Dividi per 127,5
- Quadrato
- Moltiplica per il segno del valore originale
In NumPy, l'operazione corrispondente sarebbe
# values is a NumPy array of raw pixel values
de_quantized_values = ((values / 127.5) ** 2) * np.sign(values)
In Earth Engine, l'operazione corrispondente sarebbe
var de_quantized_values = values.divide(127.5).pow(2).multiply(values.signum());
Creazione di piramidi con sottocampionamento
Se intendi creare le tue versioni con sottocampionamento o panoramiche esterne dal livello di risoluzione di base di questi COG (ad esempio, dopo aver unito più file), devi seguire la seguente procedura. Le tecniche standard di piramidi raster (ad es. l'utilizzo di gdaladdo con -r average sui valori interi non elaborati) non produrranno risultati corretti.
- Dequantizza: converti gli interi a 8 bit non elaborati in valori float utilizzando il metodo descritto in Dequantizzazione.
- Somma vettori: esegui una somma elemento per elemento dei vettori dequantizzati.
- Normalizza: calcola la norma euclidea del vettore di somma risultante e dividila per la norma per normalizzarla nuovamente alla lunghezza unitaria.
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.
I livelli di panoramica nei COG sono stati generati utilizzando questa procedura; se soddisfano le tue esigenze, puoi utilizzarli immediatamente senza ulteriori calcoli.
Manifest e indice
Un elenco dei file in questo set di dati è disponibile in gs://alphaearth_foundations/satellite_embedding/v1/annual/manifest.txt.
Poiché non è possibile determinare dalle denominazioni dei file l'area del mondo che coprono, è stato fornito anche un indice, in tre formati (GeoParquet, GeoPackage e CSV) nei file gs://alphaearth_foundations/satellite_embedding/v1/annual/aef_index.parquet, gs://alphaearth_foundations/satellite_embedding/v1/annual/aef_index.gpkg e gs://alphaearth_foundations/satellite_embedding/v1/annual/aef_index.csv. Questo indice contiene una voce per ogni file nel set di dati. Le informazioni fornite per ogni file sono
- La geometria del file come poligono WGS84 (ovvero EPSG:4326). Nel formato CSV, questo si trova nella colonna
WKT. Per i dettagli sul calcolo, consulta Elaborazione della geometria. crs: il CRS della zona UTM a cui appartiene l'immagine come codice EPSG, ad esempioEPSG:32610.year: l'anno coperto dall'immagine.utm_zone: la zona UTM dell'immagine, ad esempio10N.utm_west,utm_south,utm_east,utm_north: i limiti UTM dell'array di pixel non elaborati. Non riflette l'elaborazione della geometria e include tutti i pixel, indipendentemente dal fatto che siano validi o meno.wgs84_west,wgs84_south,wgs84_east,wgs84_north: la longitudine e la latitudine minime e massime della geometria WGS84.
Elaborazione della geometria
L'array di pixel è nativamente in una zona UTM, quindi in quella zona UTM il riquadro di delimitazione dell'array di pixel è un semplice rettangolo. Questo riquadro di delimitazione viene trasformato in un poligono in WGS84. Questo poligono include una serie di punti aggiuntivi in modo che i suoi bordi seguano da vicino le linee curve in WGS84 in cui si trasformano le linee rette in UTM. Questo poligono non tiene conto della validità dei pixel nell'immagine, ma solo dei limiti dell'array di pixel dell'immagine.
Il poligono viene quindi ritagliato alla longitudine minima e massima della zona UTM dell'immagine. In pratica, ciò potrebbe comportare l'esclusione di alcuni pixel validi che si estendono oltre il bordo della zona UTM. L'omissione di questi pixel dall'indice non dovrebbe causare problemi: una parte dell'immagine della zona UTM adiacente dovrebbe coprire l'area.
Tieni presente che il ritaglio alla longitudine minima e massima della zona UTM significa che nessun poligono attraversa l'antimeridiano, il che dovrebbe semplificare un po' l'elaborazione di questo file.