Visualisation des images

De nombreuses méthodes ee.Image produisent des représentations visuelles RVB des données d'image, par exemple : visualize(), getThumbURL(), getMap(), getMapId() (utilisé dans l'affichage de la carte Folium de Colab) et Map.addLayer() (utilisé dans l'affichage de la carte de l'éditeur de code, non disponible pour Python). Par défaut, ces méthodes attribuent les trois premières bandes aux couleurs rouge, vert et bleu, respectivement. L'étirement par défaut est basé sur le type de données dans les bandes (par exemple, les nombres à virgule flottante sont étirés dans [0, 1], les données 16 bits sont étirées sur la plage complète des valeurs possibles), ce qui peut être approprié ou non. Pour obtenir les effets de visualisation souhaités, vous pouvez fournir des paramètres de visualisation:

Paramètres de visualisation des images
Paramètre Description Type
bandes Liste des trois noms de bandes à mapper sur RGB, séparés par une virgule list
min Valeur(s) à mapper sur 0 nombre ou liste de trois nombres, un pour chaque bande
max Valeur(s) à mapper sur 255 nombre ou liste de trois nombres, un pour chaque bande
gain Valeur(s) à multiplier par chaque valeur de pixel nombre ou liste de trois nombres, un pour chaque bande
biais Valeur(s) à ajouter à chaque DN nombre ou liste de trois nombres, un pour chaque bande
gamma Facteur(s) de correction de gamma nombre ou liste de trois nombres, un pour chaque bande
palette Liste des chaînes de couleur de style CSS (images à bande unique uniquement) Liste de chaînes hexadécimales séparées par une virgule
opacité Opacité du calque (0,0 correspond à une transparence totale et 1,0 à une opacité totale) Total
mise en forme "jpg" ou "png" chaîne

Composés RVB

L'exemple suivant illustre l'utilisation de paramètres pour styliser une image Landsat 8 en tant que composite en fausses couleurs:

Éditeur de code (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');

Configuration de Python

Consultez la page Environnement Python pour en savoir plus sur l'API Python et l'utilisation de geemap pour le développement interactif.

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)

Dans cet exemple, la bande 'B5' est attribuée au rouge, 'B4' au vert et 'B3' au bleu.

false_color_sf
Composite en fausses couleurs de Landsat 8 de la région de la baie de San Francisco, en Californie, aux États-Unis.

Palettes de couleurs

Pour afficher une seule bande d'une image en couleur, définissez le paramètre palette avec une rampe de couleurs représentée par une liste de chaînes de couleur de style CSS. (Pour en savoir plus, consultez cette page de référence.) L'exemple suivant montre comment utiliser des couleurs allant du cyan ('00FFFF') au bleu ('0000FF') pour afficher une image de l' indice de différence normalisée de l'eau (NDWI):

Éditeur de code (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);

Configuration de Python

Consultez la page Environnement Python pour en savoir plus sur l'API Python et l'utilisation de geemap pour le développement interactif.

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)

Dans cet exemple, notez que les paramètres min et max indiquent la plage de valeurs de pixel auxquelles la palette doit être appliquée. Les valeurs intermédiaires sont étirées de manière linéaire.

Notez également que le paramètre show est défini sur false dans l'exemple de l'éditeur de code. La visibilité de la couche est donc désactivée lorsqu'elle est ajoutée à la carte. Vous pouvez toujours l'activer à nouveau à l'aide du Gestionnaire de calques en haut à droite de la carte de l'éditeur de code.

ndwi_sf
NDWI Landsat 8, région de la baie de San Francisco, États-Unis. Le cyan correspond aux valeurs faibles, et le bleu aux valeurs élevées.

Enregistrer des palettes de couleurs par défaut

Pour enregistrer des palettes de couleurs sur une image de classification afin de ne pas avoir à vous souvenir de les appliquer, vous pouvez définir deux propriétés d'image de chaîne spécialement nommées pour chaque bande de classification.

Par exemple, si votre image comporte une bande nommée 'landcover' avec trois valeurs 0, 1 et 2 correspondant aux classes "eau", "forêt" et "autre", vous pouvez définir les propriétés suivantes pour que la visualisation par défaut affiche une couleur spécifiée pour chaque classe (les valeurs utilisées dans l'analyse ne seront pas affectées):

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

Consultez la page Gérer les éléments pour savoir comment définir les métadonnées des éléments.

Masquage

Vous pouvez utiliser image.updateMask() pour définir l'opacité de pixels individuels en fonction des pixels d'une image de masque qui ne sont pas nuls. Les pixels égaux à zéro dans le masque sont exclus des calculs et l'opacité est définie sur 0 pour l'affichage. L'exemple suivant utilise un seuil NDWI (pour en savoir plus sur les seuils, consultez la section Opérations relationnelles) pour mettre à jour le masque de la couche NDWI créée précédemment:

Éditeur de code (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');

Configuration de Python

Consultez la page Environnement Python pour en savoir plus sur l'API Python et l'utilisation de geemap pour le développement interactif.

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)

Images de visualisation

Utilisez la méthode image.visualize() pour convertir une image en image RVB 8 bits à afficher ou à exporter. Par exemple, pour convertir la composition fausse couleur et l'indice NDWI en images d'affichage à trois bandes, utilisez:

Éditeur de code (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']
});

Configuration de Python

Consultez la page Environnement Python pour en savoir plus sur l'API Python et l'utilisation de geemap pour le développement interactif.

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'])

Mosaïque

Vous pouvez utiliser le masquage et imageCollection.mosaic() (consultez la section "Mosaickage" pour en savoir plus sur la mosaïque) pour obtenir divers effets cartographiques. La méthode mosaic() affiche les calques dans l'image de sortie en fonction de leur ordre dans la collection d'entrée. L'exemple suivant utilise mosaic() pour combiner l'indice NDWI masqué et le composite en fausses couleurs, et obtenir une nouvelle visualisation:

Éditeur de code (JavaScript)

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

Configuration de Python

Consultez la page Environnement Python pour en savoir plus sur l'API Python et l'utilisation de geemap pour le développement interactif.

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)

Dans cet exemple, notez qu'une liste des deux images de visualisation est fournie au constructeur ImageCollection. L'ordre de la liste détermine l'ordre dans lequel les images sont affichées sur la carte.

mosaic_sf
Mosaique d'un composite en fausses couleurs Landsat 8 et d'un NDWI. Baie de San Francisco, États-Unis

Clipping

La méthode image.clip() est utile pour obtenir des effets cartographiques. L'exemple suivant découpe la mosaïque créée précédemment dans une zone tampon arbitraire autour de la ville de San Francisco:

Éditeur de code (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');

Configuration de Python

Consultez la page Environnement Python pour en savoir plus sur l'API Python et l'utilisation de geemap pour le développement interactif.

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)

Dans l'exemple précédent, notez que les coordonnées sont fournies au constructeur Geometry et que la longueur de la mémoire tampon est spécifiée sur 20 000 mètres. Pour en savoir plus sur les géométries, consultez la page sur les géométries.

clipped_sf
Mosaïque présentée ci-dessus, rognée sur une zone tampon autour de San Francisco (Californie, États-Unis).

Rendre des cartes catégorielles

Les palettes sont également utiles pour afficher des cartes à valeurs discrètes, par exemple une carte de l'occupation des sols. Si vous enseignez plusieurs cours, utilisez la palette pour fournir une couleur différente pour chaque cours. (La méthode image.remap() peut être utile dans ce contexte pour convertir des libellés arbitraires en entiers consécutifs.) L'exemple suivant utilise une palette pour afficher les catégories de couverture du sol:

Éditeur de code (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');

Configuration de Python

Consultez la page Environnement Python pour en savoir plus sur l'API Python et l'utilisation de geemap pour le développement interactif.

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
Couverture terrestre MODIS 2012 selon la classification IGBP.

Descripteurs de calques stylisés

Vous pouvez utiliser un descripteur de calque stylisé (SLD) pour afficher des images. Fournissez à image.sldStyle() une description XML de la symbolisation et de la coloration de l'image, en particulier de l'élément RasterSymbolizer. Pour en savoir plus sur l'élément RasterSymbolizer, cliquez ici. Par exemple, pour afficher la carte de l'occupation des sols décrite dans la section "Affichage des cartes catégorielles" avec une SLD, utilisez:

Éditeur de code (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');

Configuration de Python

Consultez la page Environnement Python pour en savoir plus sur l'API Python et l'utilisation de geemap pour le développement interactif.

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)

Pour créer une image de visualisation avec une rampe de couleurs, définissez le type de ColorMap sur "rampe". L'exemple suivant compare les types "intervalle" et "rampe" pour l'affichage d'un DEM:

Éditeur de code (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');

Configuration de Python

Consultez la page Environnement Python pour en savoir plus sur l'API Python et l'utilisation de geemap pour le développement interactif.

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)

Les SLD sont également utiles pour étirer les valeurs de pixel afin d'améliorer les visualisations de données continues. Par exemple, le code suivant compare les résultats d'un étirement linéaire arbitraire avec une "normalisation" min-max et une égalisation "Histogramme" :

Éditeur de code (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');

Configuration de Python

Consultez la page Environnement Python pour en savoir plus sur l'API Python et l'utilisation de geemap pour le développement interactif.

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)

Remarques concernant l'utilisation des SLD dans Earth Engine:

  • Les formats OGC SLD 1.0 et OGC SE 1.1 sont compatibles.
  • Le document XML transmis peut être complet, ou uniquement l'élément RasterSymbolizer et les éléments suivants.
  • Vous pouvez sélectionner les bandes par leur nom ou leur index Earth Engine ("1", "2", etc.).
  • Les mécanismes d'étirement du contraste "Histogramme" et "Normaliser" ne sont pas compatibles avec les images de points flottants.
  • L'opacité n'est prise en compte que lorsqu'elle est égale à 0,0 (transparent). Les valeurs d'opacité non nulles sont traitées comme complètement opaques.
  • La définition de OverlapBehavior est actuellement ignorée.
  • Le mécanisme ShadedRelief n'est actuellement pas compatible.
  • Le mécanisme ImageOutline n'est actuellement pas compatible.
  • L'élément Geometry est ignoré.
  • L'image de sortie contient les métadonnées histogram_bandname si une égalisation ou une normalisation de l'histogramme est demandée.

Images miniatures

Utilisez la méthode ee.Image.getThumbURL() pour générer une image miniature PNG ou JPEG pour un objet ee.Image. L'impression du résultat d'une expression se terminant par un appel à getThumbURL() entraîne l'impression d'une URL. L'accès à l'URL permet aux serveurs Earth Engine de générer la vignette demandée instantanément. L'image s'affiche dans un navigateur une fois le traitement terminé. Pour le télécharger, sélectionnez les options appropriées dans le menu contextuel de l'image (accessible par clic droit).

thumbnail_in_browser
Modèle d'élévation numérique SRTM affiché sous forme de vignette PNG dans un navigateur.

La méthode getThumbURL() inclut des paramètres, décrits dans le tableau des paramètres de visualisation ci-dessus. De plus, il accepte des arguments dimensions, region et crs facultatifs qui contrôlent l'étendue spatiale, la taille et la projection d'affichage de la vignette.

Paramètres supplémentaires pour ee.Image.getThumbURL() avec remarque sur le format
Paramètre Description Type
dimensions Dimensions des miniatures en pixels. Si un seul entier est fourni, il définit la taille de la plus grande dimension de l'image et redimensionne la plus petite dimension proportionnellement. La valeur par défaut est de 512 pixels pour la plus grande dimension de l'image. Un entier ou une chaîne au format : 'LARGEURxHAUTEUR'
region Région géospatiale de l'image à afficher. L'image entière par défaut ou les limites d'une géométrie fournie. GeoJSON ou liste 2D d'au moins trois coordonnées de points définissant un anneau linéaire
crs Projection cible (par exemple, "EPSG:3857"). La valeur par défaut est WGS84 ("EPSG:4326"). Chaîne
format Définit le format de la vignette sur PNG ou JPEG. Le format PNG par défaut est implémenté en tant que RGBA, où le canal alpha représente les pixels valides et non valides, définis par l'mask() de l'image. Les pixels non valides sont transparents. Le format JPEG facultatif est implémenté en RVB, où les pixels d'image non valides sont remplis de zéro sur les canaux RVB. Chaîne : "png" ou "jpg"

Une image monobande s'affiche par défaut en niveaux de gris, sauf si un argument palette est fourni. Une image multibande utilise par défaut la visualisation RVB des trois premières bandes, sauf si un argument bands est fourni. Si seules deux bandes sont fournies, la première bande sera mappée sur le rouge, la deuxième sur le bleu et le canal vert sera rempli de zéros.

Voici une série d'exemples illustrant différentes combinaisons d'arguments de paramètre getThumbURL(). Cliquez sur les URL imprimées lorsque vous exécutez ce script pour afficher les miniatures.

Éditeur de code (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);

Configuration de Python

Consultez la page Environnement Python pour en savoir plus sur l'API Python et l'utilisation de geemap pour le développement interactif.

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)