Scala

Comprendere come Earth Engine gestisce la scala è fondamentale per interpretare i risultati scientifici ottenuti da Earth Engine. Per scala si intende la risoluzione in pixel. A differenza di altre piattaforme GIS e di elaborazione delle immagini, la scala di analisi viene determinata dall'output anziché dall'input. Nello specifico, quando effettui una richiesta di risultati, di un'immagine da visualizzare o di una statistica, ad esempio, specifichi la scala in cui i dati vengono inseriti nell'analisi. Questo concetto è illustrato nella Figura 1.

piramidi
Figura 1. Una rappresentazione grafica di un set di dati di immagini in Earth Engine. Le linee tratteggiate rappresentano il criterio di piramidizzazione per l'aggregazione di blocchi 2 x 2 di 4 pixel. Earth Engine utilizza la scala specificata dall'output per determinare il livello appropriato della piramide di immagini da utilizzare come input.

Piramidi di immagini

Gli asset immagine in Earth Engine esistono a più scale, in piramidi di immagini. Il criterio di piramidizzazione (rappresentato dalle linee tratteggiate nella Figura 1) determina in che modo ogni pixel a un determinato livello della piramide viene calcolato dall'aggregazione di un blocco di pixel 2x2 al livello inferiore successivo. Per le immagini con valori continui, i valori dei pixel dei livelli superiori della piramide sono la media dei pixel del livello inferiore successivo. Per le immagini con valori discreti, i valori dei pixel dei livelli superiori della piramide sono un campione (di solito il pixel in alto a sinistra) dei pixel del livello inferiore successivo.

Il livello più basso della piramide di immagini rappresenta i dati delle immagini a risoluzione nativa, quando vengono caricati in Earth Engine. Durante l'importazione, i dati vengono aggregati (in base alle norme di piramidizzazione) per creare livelli di piramide più elevati. I dati vengono aggregati finché l'intera immagine non è contenuta in un riquadro di 256 x 256 pixel. Quando utilizzi un'immagine nel codice, Earth Engine sceglie un livello della piramide con la scala più vicina inferiore o uguale a quella specificata dall'analisi e esegue il ricampionamento (utilizzando il vicino più vicino per impostazione predefinita) come necessario.

Scala di analisi

La scala di analisi in Earth Engine viene determinata in base al "pull". La scala su cui richiedere gli input per un calcolo è determinata dall'output. Ad esempio, se aggiungi un'immagine all'editor di codice o all'elemento mappa geemap, il livello di zoom della mappa determina la scala a cui vengono richiesti gli input dalla piramide di immagini. Per altri calcoli, specifica scale come argomento. Ad esempio, utilizzando la banda NIR di un'immagine Landsat con una risoluzione nativa di 30 metri:

Editor di codice (JavaScript)

var image = ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_044034_20140318').select('B4');

var printAtScale = function(scale) {
  print('Pixel value at '+scale+' meters scale',
    image.reduceRegion({
      reducer: ee.Reducer.first(),
      geometry: image.geometry().centroid(),
      // The scale determines the pyramid level from which to pull the input
      scale: scale
  }).get('B4'));
};

printAtScale(10); // 0.10394100844860077
printAtScale(30); // 0.10394100844860077
printAtScale(50); // 0.09130698442459106
printAtScale(70); // 0.1150854229927063
printAtScale(200); // 0.102478988468647
printAtScale(500); // 0.09072770178318024

Configurazione di Python

Per informazioni sull'API Python e sull'utilizzo di geemap per lo sviluppo interattivo, consulta la pagina Ambiente Python.

import ee
import geemap.core as geemap

Colab (Python)

image = ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_044034_20140318').select('B4')


def print_at_scale(scale):
  display(
      f'Pixel value at {scale} meters scale',
      image.reduceRegion(
          reducer=ee.Reducer.first(),
          geometry=image.geometry().centroid(),
          # The scale determines the pyramid level from which to pull the input
          scale=scale,
      ).get('B4'),
  )


print_at_scale(10)  # 0.10394100844860077
print_at_scale(30)  # 0.10394100844860077
print_at_scale(50)  # 0.09130698442459106
print_at_scale(70)  # 0.1150854229927063
print_at_scale(200)  # 0.102478988468647
print_at_scale(500)  # 0.09072770178318024

In questo esempio, tieni presente che il valore del pixel in una posizione costante (il centroide dell'immagine) varia in base alla scala. Ciò è dovuto al fatto che vengono selezionati diversi livelli della piramide per scale diverse. Per scale simili, il ricampionamento del vicino più vicino restituisce lo stesso valore di pixel. Il punto importante è che, variando la scala, vengono richiesti input di immagini diversi.

Quando visualizzi un'immagine aggiungendola alla mappa, Earth Engine determina la scala in base al livello di zoom. Considera il seguente semplice esempio, che mostra semplicemente un'immagine Landsat:

Editor di codice (JavaScript)

var image = ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_044034_20140318');
Map.centerObject(image, 17);
Map.addLayer(image, {bands: ['B4', 'B3', 'B2'], max: 0.35}, 'image');

Configurazione di Python

Per informazioni sull'API Python e sull'utilizzo di geemap per lo sviluppo interattivo, consulta la pagina Ambiente Python.

import ee
import geemap.core as geemap

Colab (Python)

image = ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_044034_20140318')
m = geemap.Map()
m.center_object(image, 17)
m.add_layer(image, {'bands': ['B4', 'B3', 'B2'], 'max': 0.35}, 'image')
m

La mappa inizia con lo zoom massimo, in modo che i pixel della risoluzione nativa siano ben visibili. Se esegui lo zoom indietro a sufficienza, non verranno visualizzati gli stessi pixel, ma livelli più elevati della piramide di immagini. Inoltre, è opportuno notare che l'editor di codice e le mappe geemap utilizzano la proiezione mercatore (EPSG:3857) , pertanto anche il livello appropriato della piramide di immagini deve essere sottoposto a nuova proiezione prima della visualizzazione. Scopri di più su come Earth Engine gestisce le proiezioni dal documento sulle proiezioni.