Visualizzazione di immagini

Esistono diversi metodi ee.Image che producono rappresentazioni visive RGB dei dati delle immagini, ad esempio: visualize(), getThumbURL(), getMap(), getMapId() (utilizzato nella visualizzazione della mappa di Folium di Colab) e Map.addLayer() (utilizzato nella visualizzazione della mappa di Code Editor, non disponibile per Python). Per impostazione predefinita, questi metodi assegnano le prime tre bande rispettivamente a rosso, verde e blu. L'intervallo predefinito si basa sul tipo di dati nelle bande (ad es. i valori float vengono estesi in [0, 1], i dati a 16 bit vengono estesi all'intera gamma di valori possibili), che può essere o meno adatto. Per ottenere gli effetti di visualizzazione desiderati, puoi fornire i parametri di visualizzazione:

Parametri di visualizzazione delle immagini
Parametro Descrizione Tipo
bands Elenco separato da virgole di tre nomi di bande da mappare a RGB list
min Valori da mappare a 0 numero o elenco di tre numeri, uno per ogni banda
max Valori da mappare a 255 numero o elenco di tre numeri, uno per ogni banda
guadagno Valori per moltiplicare ogni valore del pixel numero o elenco di tre numeri, uno per ogni banda
bias Valori da aggiungere a ogni DN numero o elenco di tre numeri, uno per ogni banda
gamma Fattori di correzione gamma numero o elenco di tre numeri, uno per ogni banda
palette Elenco di stringhe di colore in stile CSS (solo immagini a banda singola) elenco di stringhe esadecimali separate da virgole
opacity L'opacità del livello (0,0 è completamente trasparente e 1,0 è completamente opaco) numero
formato Può essere "jpg" o "png" stringa

Compositi RGB

Di seguito viene illustrato l'utilizzo dei parametri per applicare uno stile a un'immagine Landsat 8 come composito a falsi colori:

Editor di codice (JavaScript)

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

// Define the visualization parameters.
var vizParams = {
  bands: ['B5', 'B4', 'B3'],
  min: 0,
  max: 0.5,
  gamma: [0.95, 1.1, 1]
};

// Center the map and display the image.
Map.setCenter(-122.1899, 37.5010, 10); // San Francisco Bay
Map.addLayer(image, vizParams, 'false color composite');

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)

# Load an image.
image = ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_044034_20140318')

# Define the visualization parameters.
image_viz_params = {
    'bands': ['B5', 'B4', 'B3'],
    'min': 0,
    'max': 0.5,
    'gamma': [0.95, 1.1, 1],
}

# Define a map centered on San Francisco Bay.
map_l8 = geemap.Map(center=[37.5010, -122.1899], zoom=10)

# Add the image layer to the map and display it.
map_l8.add_layer(image, image_viz_params, 'false color composite')
display(map_l8)

In questo esempio, la banda 'B5' è assegnata al rosso, 'B4' è assegnata al verde e 'B3' è assegnata al blu.

false_color_sf
Composto in falso colore di Landsat 8 della Baia di San Francisco, California, Stati Uniti.

Tavolozze dei colori

Per visualizzare una singola banda di un'immagine a colori, imposta il parametro palette con una rampa di colori rappresentata da un elenco di stringhe di colore in stile CSS. (consulta questo riferimento per maggiori informazioni). L'esempio seguente illustra come utilizzare i colori dal verde acqua ('00FFFF') al blu ('0000FF') per visualizzare un'immagine Normalized Difference Water Index (NDWI):

Editor di codice (JavaScript)

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

// Create an NDWI image, define visualization parameters and display.
var ndwi = image.normalizedDifference(['B3', 'B5']);
var ndwiViz = {min: 0.5, max: 1, palette: ['00FFFF', '0000FF']};
Map.addLayer(ndwi, ndwiViz, 'NDWI', false);

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)

# Load an image.
image = ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_044034_20140318')

# Create an NDWI image, define visualization parameters and display.
ndwi = image.normalizedDifference(['B3', 'B5'])
ndwi_viz = {'min': 0.5, 'max': 1, 'palette': ['00FFFF', '0000FF']}

# Define a map centered on San Francisco Bay.
map_ndwi = geemap.Map(center=[37.5010, -122.1899], zoom=10)

# Add the image layer to the map and display it.
map_ndwi.add_layer(ndwi, ndwi_viz, 'NDWI')
display(map_ndwi)

In questo esempio, tieni presente che i parametri min e max indicano l'intervallo di valori dei pixel a cui applicare la tavolozza. I valori intermedi vengono allungati in modo lineare.

Tieni inoltre presente che il parametro show è impostato su false nell'esempio di Editor di codice. Di conseguenza, la visibilità del livello viene disattivata quando viene aggiunto alla mappa. Può essere riattivato in qualsiasi momento utilizzando il Gestore dei livelli nell'angolo in alto a destra della mappa dell'editor di codice.

ndwi_sf
Indice NDWI di Landsat 8, area della baia di San Francisco, Stati Uniti. Il ciano indica i valori bassi, il blu quelli alti.

Salvare le tavolozze di colori predefinite

Per salvare le tavolozze di colori in un'immagine di classificazione in modo da non dover ricordare di applicarle, puoi impostare due proprietà di immagini di stringa con nomi speciali per ogni fascia di classificazione.

Ad esempio, se l'immagine ha una banda denominata 'landcover' con tre valori 0, 1 e 2 corrispondenti alle classi "acqua", "foresta" e "altro", puoi impostare le seguenti proprietà per fare in modo che la visualizzazione predefinita mostri un colore specificato per ogni classe (i valori utilizzati nell'analisi non saranno interessati):

  • landcover_class_values="0,1,2"
  • landcover_class_palette="0000FF,00FF00,AABBCD"

Consulta la pagina Gestione delle risorse per scoprire come impostare i metadati delle risorse.

Mascheramento

Puoi utilizzare image.updateMask() per impostare l'opacità dei singoli pixel in base alla posizione dei pixel in un'immagine maschera diversi da zero. I pixel uguali a zero nella maschera sono esclusi dai calcoli e l'opacità è impostata su 0 per la visualizzazione. L'esempio seguente utilizza una soglia NDWI (consulta la sezione Operazioni relazionali per informazioni sulle soglie) per aggiornare la maschera sul livello NDWI creato in precedenza:

Editor di codice (JavaScript)

// Mask the non-watery parts of the image, where NDWI < 0.4.
var ndwiMasked = ndwi.updateMask(ndwi.gte(0.4));
Map.addLayer(ndwiMasked, ndwiViz, 'NDWI masked');

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)

# Mask the non-watery parts of the image, where NDWI < 0.4.
ndwi_masked = ndwi.updateMask(ndwi.gte(0.4))

# Define a map centered on San Francisco Bay.
map_ndwi_masked = geemap.Map(center=[37.5010, -122.1899], zoom=10)

# Add the image layer to the map and display it.
map_ndwi_masked.add_layer(ndwi_masked, ndwi_viz, 'NDWI masked')
display(map_ndwi_masked)

Immagini di visualizzazione

Utilizza il metodo image.visualize() per convertire un'immagine in un'immagine RGB a 8 bit per la visualizzazione o l'esportazione. Ad esempio, per convertire la composizione a falsi colori e l'Indice di vegetazione a differenza normale in immagini di visualizzazione a tre bande, utilizza:

Editor di codice (JavaScript)

// Create visualization layers.
var imageRGB = image.visualize({bands: ['B5', 'B4', 'B3'], max: 0.5});
var ndwiRGB = ndwiMasked.visualize({
  min: 0.5,
  max: 1,
  palette: ['00FFFF', '0000FF']
});

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_rgb = image.visualize(bands=['B5', 'B4', 'B3'], max=0.5)
ndwi_rgb = ndwi_masked.visualize(min=0.5, max=1, palette=['00FFFF', '0000FF'])

Mosaico

Puoi utilizzare il mascheramento e imageCollection.mosaic() (consulta la sezione relativa al mosaico per informazioni sul mosaico) per ottenere vari effetti cartografici. Il metodo mosaic() esegue il rendering degli strati nell'immagine di output in base al loro ordine nella raccolta di input. L'esempio seguente utilizza mosaic() per combinare l'Indice di vegetazione normalized mascherato e la composizione a falsi colori per ottenere una nuova visualizzazione:

Editor di codice (JavaScript)

// Mosaic the visualization layers and display (or export).
var mosaic = ee.ImageCollection([imageRGB, ndwiRGB]).mosaic();
Map.addLayer(mosaic, {}, 'mosaic');

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)

# Mosaic the visualization layers and display (or export).
mosaic = ee.ImageCollection([image_rgb, ndwi_rgb]).mosaic()

# Define a map centered on San Francisco Bay.
map_mosaic = geemap.Map(center=[37.5010, -122.1899], zoom=10)

# Add the image layer to the map and display it.
map_mosaic.add_layer(mosaic, None, 'mosaic')
display(map_mosaic)

In questo esempio, tieni presente che un elenco delle due immagini di visualizzazione viene fornito al costruttore ImageCollection. L'ordine dell'elenco determina l'ordine in cui le immagini vengono visualizzate sulla mappa.

mosaic_sf
Mosaico di un'immagine composita in falso colore di Landsat 8 e dell'indice NDWI. Baia di San Francisco, Stati Uniti.

Clip

Il metodo image.clip() è utile per ottenere effetti cartografici. Il seguente esempio ritaglia il mosaico creato in precedenza in una zona cuscinetto arbitraria intorno alla città di San Francisco:

Editor di codice (JavaScript)

// Create a circle by drawing a 20000 meter buffer around a point.
var roi = ee.Geometry.Point([-122.4481, 37.7599]).buffer(20000);

// Display a clipped version of the mosaic.
Map.addLayer(mosaic.clip(roi), null, 'mosaic clipped');

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)

# Create a circle by drawing a 20000 meter buffer around a point.
roi = ee.Geometry.Point([-122.4481, 37.7599]).buffer(20000)
mosaic_clipped = mosaic.clip(roi)

# Define a map centered on San Francisco.
map_mosaic_clipped = geemap.Map(center=[37.7599, -122.4481], zoom=10)

# Add the image layer to the map and display it.
map_mosaic_clipped.add_layer(mosaic_clipped, None, 'mosaic clipped')
display(map_mosaic_clipped)

Nell'esempio precedente, tieni presente che le coordinate vengono fornite al costruttore Geometry e la lunghezza del buffer è specificata come 20.000 metri. Scopri di più sulle geometrie nella pagina Geometrie.

clipped_sf
Il mosaico mostrato sopra, tagliato in base a un buffer intorno a San Francisco, California, Stati Uniti.

Visualizzazione di mappe categoriche

Le tavolozze sono utili anche per il rendering di mappe con valori discreti, ad esempio una mappa della copertura del suolo. In caso di più corsi, utilizza la tavolozza per fornire un colore diverso per ogni corso. In questo contesto, il metodo image.remap() può essere utile per convertire etichette arbitrarie in interi consecutivi. L'esempio seguente utilizza una tavolozza per visualizzare le categorie di copertura del suolo:

Editor di codice (JavaScript)

// Load 2012 MODIS land cover and select the IGBP classification.
var cover = ee.Image('MODIS/051/MCD12Q1/2012_01_01')
  .select('Land_Cover_Type_1');

// Define a palette for the 18 distinct land cover classes.
var igbpPalette = [
  'aec3d4', // water
  '152106', '225129', '369b47', '30eb5b', '387242', // forest
  '6a2325', 'c3aa69', 'b76031', 'd9903d', '91af40',  // shrub, grass
  '111149', // wetlands
  'cdb33b', // croplands
  'cc0013', // urban
  '33280d', // crop mosaic
  'd7cdcc', // snow and ice
  'f7e084', // barren
  '6f6f6f'  // tundra
];

// Specify the min and max labels and the color palette matching the labels.
Map.setCenter(-99.229, 40.413, 5);
Map.addLayer(cover,
             {min: 0, max: 17, palette: igbpPalette},
             'IGBP classification');

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)

# Load 2012 MODIS land cover and select the IGBP classification.
cover = ee.Image('MODIS/051/MCD12Q1/2012_01_01').select('Land_Cover_Type_1')

# Define a palette for the 18 distinct land cover classes.
igbp_palette = [
    'aec3d4',  # water
    '152106',
    '225129',
    '369b47',
    '30eb5b',
    '387242',  # forest
    '6a2325',
    'c3aa69',
    'b76031',
    'd9903d',
    '91af40',  # shrub, grass
    '111149',  # wetlands
    'cdb33b',  # croplands
    'cc0013',  # urban
    '33280d',  # crop mosaic
    'd7cdcc',  # snow and ice
    'f7e084',  # barren
    '6f6f6f',  # tundra
]

# Define a map centered on the United States.
map_palette = geemap.Map(center=[40.413, -99.229], zoom=5)

# Add the image layer to the map and display it. Specify the min and max labels
# and the color palette matching the labels.
map_palette.add_layer(
    cover, {'min': 0, 'max': 17, 'palette': igbp_palette}, 'IGBP classes'
)
display(map_palette)
landcover_palettized
Copertura del suolo MODIS 2012 che utilizza la classificazione IGBP.

Descrittori dei livelli stilizzati

Puoi utilizzare un descrittore di livello stilizzato (SLD) per eseguire il rendering delle immagini per la visualizzazione. Fornisci a image.sldStyle() una descrizione XML della simbolizzazione e della colorazione dell'immagine, in particolare dell'elemento RasterSymbolizer. Scopri di più sull'elemento RasterSymbolizer qui. Ad esempio, per eseguire il rendering della mappa della copertura del suolo descritta nella sezione Rendering delle mappe categoriche con un SLD, utilizza:

Editor di codice (JavaScript)

var cover = ee.Image('MODIS/051/MCD12Q1/2012_01_01').select('Land_Cover_Type_1');

// Define an SLD style of discrete intervals to apply to the image.
var sld_intervals =
'<RasterSymbolizer>' +
  '<ColorMap type="intervals" extended="false">' +
    '<ColorMapEntry color="#aec3d4" quantity="0" label="Water"/>' +
    '<ColorMapEntry color="#152106" quantity="1" label="Evergreen Needleleaf Forest"/>' +
    '<ColorMapEntry color="#225129" quantity="2" label="Evergreen Broadleaf Forest"/>' +
    '<ColorMapEntry color="#369b47" quantity="3" label="Deciduous Needleleaf Forest"/>' +
    '<ColorMapEntry color="#30eb5b" quantity="4" label="Deciduous Broadleaf Forest"/>' +
    '<ColorMapEntry color="#387242" quantity="5" label="Mixed Deciduous Forest"/>' +
    '<ColorMapEntry color="#6a2325" quantity="6" label="Closed Shrubland"/>' +
    '<ColorMapEntry color="#c3aa69" quantity="7" label="Open Shrubland"/>' +
    '<ColorMapEntry color="#b76031" quantity="8" label="Woody Savanna"/>' +
    '<ColorMapEntry color="#d9903d" quantity="9" label="Savanna"/>' +
    '<ColorMapEntry color="#91af40" quantity="10" label="Grassland"/>' +
    '<ColorMapEntry color="#111149" quantity="11" label="Permanent Wetland"/>' +
    '<ColorMapEntry color="#cdb33b" quantity="12" label="Cropland"/>' +
    '<ColorMapEntry color="#cc0013" quantity="13" label="Urban"/>' +
    '<ColorMapEntry color="#33280d" quantity="14" label="Crop, Natural Veg. Mosaic"/>' +
    '<ColorMapEntry color="#d7cdcc" quantity="15" label="Permanent Snow, Ice"/>' +
    '<ColorMapEntry color="#f7e084" quantity="16" label="Barren, Desert"/>' +
    '<ColorMapEntry color="#6f6f6f" quantity="17" label="Tundra"/>' +
  '</ColorMap>' +
'</RasterSymbolizer>';
Map.addLayer(cover.sldStyle(sld_intervals), {}, 'IGBP classification styled');

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)

cover = ee.Image('MODIS/051/MCD12Q1/2012_01_01').select('Land_Cover_Type_1')

# Define an SLD style of discrete intervals to apply to the image.
sld_intervals = """
<RasterSymbolizer>
  <ColorMap  type="intervals" extended="false" >
    <ColorMapEntry color="#aec3d4" quantity="0" label="Water"/>
    <ColorMapEntry color="#152106" quantity="1" label="Evergreen Needleleaf Forest"/>
    <ColorMapEntry color="#225129" quantity="2" label="Evergreen Broadleaf Forest"/>
    <ColorMapEntry color="#369b47" quantity="3" label="Deciduous Needleleaf Forest"/>
    <ColorMapEntry color="#30eb5b" quantity="4" label="Deciduous Broadleaf Forest"/>
    <ColorMapEntry color="#387242" quantity="5" label="Mixed Deciduous Forest"/>
    <ColorMapEntry color="#6a2325" quantity="6" label="Closed Shrubland"/>
    <ColorMapEntry color="#c3aa69" quantity="7" label="Open Shrubland"/>
    <ColorMapEntry color="#b76031" quantity="8" label="Woody Savanna"/>
    <ColorMapEntry color="#d9903d" quantity="9" label="Savanna"/>
    <ColorMapEntry color="#91af40" quantity="10" label="Grassland"/>
    <ColorMapEntry color="#111149" quantity="11" label="Permanent Wetland"/>
    <ColorMapEntry color="#cdb33b" quantity="12" label="Cropland"/>
    <ColorMapEntry color="#cc0013" quantity="13" label="Urban"/>
    <ColorMapEntry color="#33280d" quantity="14" label="Crop, Natural Veg. Mosaic"/>
    <ColorMapEntry color="#d7cdcc" quantity="15" label="Permanent Snow, Ice"/>
    <ColorMapEntry color="#f7e084" quantity="16" label="Barren, Desert"/>
    <ColorMapEntry color="#6f6f6f" quantity="17" label="Tundra"/>
  </ColorMap>
</RasterSymbolizer>"""

# Apply the SLD style to the image.
cover_sld = cover.sldStyle(sld_intervals)

# Define a map centered on the United States.
map_sld_categorical = geemap.Map(center=[40.413, -99.229], zoom=5)

# Add the image layer to the map and display it.
map_sld_categorical.add_layer(cover_sld, None, 'IGBP classes styled')
display(map_sld_categorical)

Per creare un'immagine di visualizzazione con una rampa di colori, imposta il tipo di ColorMap su "rampa". L'esempio seguente confronta i tipi "intervallo" e "rampa" per il rendering di un DEM:

Editor di codice (JavaScript)

// Load SRTM Digital Elevation Model data.
var image = ee.Image('CGIAR/SRTM90_V4');

// Define an SLD style of discrete intervals to apply to the image. Use the
// opacity keyword to set pixels less than 0 as completely transparent. Pixels
// with values greater than or equal to the final entry quantity are set to
// fully transparent by default.
var sld_intervals =
  '<RasterSymbolizer>' +
    '<ColorMap type="intervals" extended="false" >' +
      '<ColorMapEntry color="#0000ff" quantity="0" label="0 ﹤ x" opacity="0" />' +
      '<ColorMapEntry color="#00ff00" quantity="100" label="0 ≤ x ﹤ 100" />' +
      '<ColorMapEntry color="#007f30" quantity="200" label="100 ≤ x ﹤ 200" />' +
      '<ColorMapEntry color="#30b855" quantity="300" label="200 ≤ x ﹤ 300" />' +
      '<ColorMapEntry color="#ff0000" quantity="400" label="300 ≤ x ﹤ 400" />' +
      '<ColorMapEntry color="#ffff00" quantity="900" label="400 ≤ x ﹤ 900" />' +
    '</ColorMap>' +
  '</RasterSymbolizer>';

// Define an sld style color ramp to apply to the image.
var sld_ramp =
  '<RasterSymbolizer>' +
    '<ColorMap type="ramp" extended="false" >' +
      '<ColorMapEntry color="#0000ff" quantity="0" label="0"/>' +
      '<ColorMapEntry color="#00ff00" quantity="100" label="100" />' +
      '<ColorMapEntry color="#007f30" quantity="200" label="200" />' +
      '<ColorMapEntry color="#30b855" quantity="300" label="300" />' +
      '<ColorMapEntry color="#ff0000" quantity="400" label="400" />' +
      '<ColorMapEntry color="#ffff00" quantity="500" label="500" />' +
    '</ColorMap>' +
  '</RasterSymbolizer>';

// Add the image to the map using both the color ramp and interval schemes.
Map.setCenter(-76.8054, 42.0289, 8);
Map.addLayer(image.sldStyle(sld_intervals), {}, 'SLD intervals');
Map.addLayer(image.sldStyle(sld_ramp), {}, 'SLD ramp');

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)

# Load SRTM Digital Elevation Model data.
image = ee.Image('CGIAR/SRTM90_V4')

# Define an SLD style of discrete intervals to apply to the image.
sld_intervals = """
    <RasterSymbolizer>
      <ColorMap type="intervals" extended="false" >
        <ColorMapEntry color="#0000ff" quantity="0" label="0"/>
        <ColorMapEntry color="#00ff00" quantity="100" label="1-100" />
        <ColorMapEntry color="#007f30" quantity="200" label="110-200" />
        <ColorMapEntry color="#30b855" quantity="300" label="210-300" />
        <ColorMapEntry color="#ff0000" quantity="400" label="310-400" />
        <ColorMapEntry color="#ffff00" quantity="1000" label="410-1000" />
      </ColorMap>
    </RasterSymbolizer>"""

# Define an sld style color ramp to apply to the image.
sld_ramp = """
    <RasterSymbolizer>
      <ColorMap type="ramp" extended="false" >
        <ColorMapEntry color="#0000ff" quantity="0" label="0"/>
        <ColorMapEntry color="#00ff00" quantity="100" label="100" />
        <ColorMapEntry color="#007f30" quantity="200" label="200" />
        <ColorMapEntry color="#30b855" quantity="300" label="300" />
        <ColorMapEntry color="#ff0000" quantity="400" label="400" />
        <ColorMapEntry color="#ffff00" quantity="500" label="500" />
      </ColorMap>
    </RasterSymbolizer>"""

# Define a map centered on the United States.
map_sld_interval = geemap.Map(center=[40.413, -99.229], zoom=5)

# Add the image layers to the map and display it.
map_sld_interval.add_layer(
    image.sldStyle(sld_intervals), None, 'SLD intervals'
)
map_sld_interval.add_layer(image.sldStyle(sld_ramp), None, 'SLD ramp')
display(map_sld_interval)

Gli SLD sono utili anche per estendere i valori dei pixel al fine di migliorare le visualizzazioni dei dati continui. Ad esempio, il seguente codice confronta i risultati di uno stretching lineare arbitrario con una "Normalizzazione" minima e massima e un'equalizzazione "Istogramma":

Editor di codice (JavaScript)

// Load a Landsat 8 raw image.
var image = ee.Image('LANDSAT/LC08/C02/T1/LC08_044034_20140318');

// Define a RasterSymbolizer element with '_enhance_' for a placeholder.
var template_sld =
  '<RasterSymbolizer>' +
    '<ContrastEnhancement><_enhance_/></ContrastEnhancement>' +
    '<ChannelSelection>' +
      '<RedChannel>' +
        '<SourceChannelName>B5</SourceChannelName>' +
      '</RedChannel>' +
      '<GreenChannel>' +
        '<SourceChannelName>B4</SourceChannelName>' +
      '</GreenChannel>' +
      '<BlueChannel>' +
        '<SourceChannelName>B3</SourceChannelName>' +
      '</BlueChannel>' +
    '</ChannelSelection>' +
  '</RasterSymbolizer>';

// Get SLDs with different enhancements.
var equalize_sld = template_sld.replace('_enhance_', 'Histogram');
var normalize_sld = template_sld.replace('_enhance_', 'Normalize');

// Display the results.
Map.centerObject(image, 10);
Map.addLayer(image, {bands: ['B5', 'B4', 'B3'], min: 0, max: 15000}, 'Linear');
Map.addLayer(image.sldStyle(equalize_sld), {}, 'Equalized');
Map.addLayer(image.sldStyle(normalize_sld), {}, 'Normalized');

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)

# Load a Landsat 8 raw image.
image = ee.Image('LANDSAT/LC08/C02/T1/LC08_044034_20140318')

# Define a RasterSymbolizer element with '_enhance_' for a placeholder.
template_sld = """
<RasterSymbolizer>
  <ContrastEnhancement><_enhance_/></ContrastEnhancement>
  <ChannelSelection>
    <RedChannel>
      <SourceChannelName>B5</SourceChannelName>
    </RedChannel>
    <GreenChannel>
      <SourceChannelName>B4</SourceChannelName>
    </GreenChannel>
    <BlueChannel>
      <SourceChannelName>B3</SourceChannelName>
    </BlueChannel>
  </ChannelSelection>
</RasterSymbolizer>"""

# Get SLDs with different enhancements.
equalize_sld = template_sld.replace('_enhance_', 'Histogram')
normalize_sld = template_sld.replace('_enhance_', 'Normalize')

# Define a map centered on San Francisco Bay.
map_sld_continuous = geemap.Map(center=[37.5010, -122.1899], zoom=10)

# Add the image layers to the map and display it.
map_sld_continuous.add_layer(
    image, {'bands': ['B5', 'B4', 'B3'], 'min': 0, 'max': 15000}, 'Linear'
)
map_sld_continuous.add_layer(image.sldStyle(equalize_sld), None, 'Equalized')
map_sld_continuous.add_layer(
    image.sldStyle(normalize_sld), None, 'Normalized'
)
display(map_sld_continuous)

Aspetti da tenere presenti in merito all'utilizzo degli SLD in Earth Engine:

  • Sono supportati OGC SLD 1.0 e OGC SE 1.1.
  • Il documento XML passato può essere completo o solo l'elemento RasterSymbolizer e gli elementi successivi.
  • I canali possono essere selezionati in base ai relativi nomi o all'indice di Earth Engine ("1", "2" e così via).
  • I meccanismi di stretching dell'istogramma e della normalizzazione del contrasto non sono supportati per le immagini con punti fluttuanti.
  • L'opacità viene presa in considerazione solo se è pari a 0,0 (trasparente). I valori di opacità diversi da zero vengono considerati completamente opachi.
  • Al momento la definizione OverlapBehavior viene ignorata.
  • Il meccanismo ShadedRelief non è attualmente supportato.
  • Il meccanismo ImageOutline non è attualmente supportato.
  • L'elemento Geometry viene ignorato.
  • L'immagine di output avrà i metadati histogram_bandname se viene richiesta l'equalizzazione o la normalizzazione dell'istogramma.

Miniature

Utilizza il metodo ee.Image.getThumbURL() per generare un'immagine di miniatura PNG o JPEG per un oggetto ee.Image. La stampa del risultato di un'espressione che termina con una chiamata a getThumbURL() comporta la stampa di un URL. La visita all'URL imposta i server Earth Engine per lavorare alla generazione della miniatura richiesta al volo. L'immagine viene visualizzata in un browser al termine dell'elaborazione. Può essere scaricato selezionando le opzioni appropriate dal menu contestuale del tasto destro del mouse dell'immagine.

thumbnail_in_browser
Modello digitale dell'elevazione SRTM visualizzato come miniatura PNG in un browser.

Il metodo getThumbURL() include i parametri descritti nella tabella dei parametri di visualizzazione sopra. Inoltre, accetta gli argomenti facoltativi dimensions, region e crs che controllano l'estensione spaziale, le dimensioni e la proiezione della visualizzazione della miniatura.

Parametri aggiuntivi per ee.Image.getThumbURL() con nota sul formato
Parametro Descrizione Tipo
dimensions Dimensioni delle miniature in pixel. Se viene fornito un singolo numero intero, vengono definite le dimensioni della dimensione dell'aspetto più grande dell'immagine e la dimensione più piccola viene ridimensionata proporzionalmente. Il valore predefinito è 512 pixel per la dimensione dell'aspetto dell'immagine più grande. Un singolo numero intero o una stringa nel formato: 'LARGHEZZAxALTEZZA'
region La regione geospaziale dell'immagine da eseguire in rendering. Per impostazione predefinita, l'intera immagine o i limiti di una geometria fornita. GeoJSON o un elenco 2D di almeno tre coordinate di punti che definiscono un anello lineare
crs La proiezione di destinazione, ad esempio "EPSG:3857". Il valore predefinito è WGS84 ("EPSG:4326"). Stringa
format Definisce il formato della miniatura come PNG o JPEG. Il formato PNG predefinito è implementato come RGBA, dove il canale alfa rappresenta i pixel validi e non validi, definiti dal mask() dell'immagine. I pixel non validi sono trasparenti. Il formato JPEG facoltativo è implementato come RGB, dove i pixel dell'immagine non validi vengono riempiti con zero nei canali RGB. Stringa; "png" o "jpg"

Per impostazione predefinita, un'immagine a banda singola sarà in scala di grigi, a meno che non venga fornito un argomento palette. Per un'immagine multibanda, per impostazione predefinita viene visualizzata la visualizzazione RGB delle prime tre bande, a meno che non venga fornito un argomento bands. Se vengono fornite solo due bande, la prima verrà mappata al rosso, la seconda al blu e il canale verde verrà completato con zero.

Di seguito è riportata una serie di esempi che mostrano varie combinazioni di parametri getThumbURL(). Fai clic sugli URL stampati quando esegui questo script per visualizzare le miniature.

Editor di codice (JavaScript)

// Fetch a digital elevation model.
var image = ee.Image('CGIAR/SRTM90_V4');

// Request a default thumbnail of the DEM with defined linear stretch.
// Set masked pixels (ocean) to 1000 so they map as gray.
var thumbnail1 = image.unmask(1000).getThumbURL({
  'min': 0,
  'max': 3000,
  'dimensions': 500,
});
print('Default extent:', thumbnail1);

// Specify region by rectangle, define palette, set larger aspect dimension size.
var thumbnail2 = image.getThumbURL({
  'min': 0,
  'max': 3000,
  'palette': ['00A600','63C600','E6E600','E9BD3A','ECB176','EFC2B3','F2F2F2'],
  'dimensions': 500,
  'region': ee.Geometry.Rectangle([-84.6, -55.9, -32.9, 15.7]),
});
print('Rectangle region and palette:', thumbnail2);

// Specify region by a linear ring and set display CRS as Web Mercator.
var thumbnail3 = image.getThumbURL({
  'min': 0,
  'max': 3000,
  'palette': ['00A600','63C600','E6E600','E9BD3A','ECB176','EFC2B3','F2F2F2'],
  'region': ee.Geometry.LinearRing([[-84.6, 15.7], [-84.6, -55.9], [-32.9, -55.9]]),
  'dimensions': 500,
  'crs': 'EPSG:3857'
});
print('Linear ring region and specified crs', thumbnail3);

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)

# Fetch a digital elevation model.
image = ee.Image('CGIAR/SRTM90_V4')

# Request a default thumbnail of the DEM with defined linear stretch.
# Set masked pixels (ocean) to 1000 so they map as gray.
thumbnail_1 = image.unmask(1000).getThumbURL({
    'min': 0,
    'max': 3000,
    'dimensions': 500,
})
print('Default extent:', thumbnail_1)

# Specify region by rectangle, define palette, set larger aspect dimension size.
thumbnail_2 = image.getThumbURL({
    'min': 0,
    'max': 3000,
    'palette': [
        '00A600',
        '63C600',
        'E6E600',
        'E9BD3A',
        'ECB176',
        'EFC2B3',
        'F2F2F2',
    ],
    'dimensions': 500,
    'region': ee.Geometry.Rectangle([-84.6, -55.9, -32.9, 15.7]),
})
print('Rectangle region and palette:', thumbnail_2)

# Specify region by a linear ring and set display CRS as Web Mercator.
thumbnail_3 = image.getThumbURL({
    'min': 0,
    'max': 3000,
    'palette': [
        '00A600',
        '63C600',
        'E6E600',
        'E9BD3A',
        'ECB176',
        'EFC2B3',
        'F2F2F2',
    ],
    'region': ee.Geometry.LinearRing(
        [[-84.6, 15.7], [-84.6, -55.9], [-32.9, -55.9]]
    ),
    'dimensions': 500,
    'crs': 'EPSG:3857',
})
print('Linear ring region and specified crs:', thumbnail_3)