Bildvisualisierung

Es gibt eine Reihe von ee.Image-Methoden, mit denen RGB-visuelle Darstellungen von Bilddaten erstellt werden, z. B.: visualize(), getThumbURL(), getMap(), getMapId() (wird in der Folium-Kartenanzeige von Colab verwendet) und Map.addLayer() (wird in der Kartenanzeige des Code-Editors verwendet, nicht für Python verfügbar). Standardmäßig werden mit diesen Methoden die ersten drei Bänder den Farben Rot, Grün und Blau zugewiesen. Die Standardstreckung basiert auf dem Datentyp in den Bändern (z. B. werden Gleitkommazahlen auf [0, 1] gestreckt, 16‑Bit-Daten auf den gesamten Bereich möglicher Werte). Das ist möglicherweise nicht geeignet. Um die gewünschten Visualisierungseffekte zu erzielen, können Sie Visualisierungsparameter angeben:

Parameter für die Bildvisualisierung
Parameter Beschreibung Typ
bands Durch Kommas getrennte Liste mit drei Bandnamen, die RGB zugeordnet werden sollen list
Min. Werte, die dem Wert „0“ zugeordnet werden sollen Eine Zahl oder eine Liste mit drei Zahlen, eine für jede Band
Max Wert(e), die 255 zugeordnet werden sollen Eine Zahl oder eine Liste mit drei Zahlen, eine für jede Band
gewinnen Wert(e), mit dem bzw. denen jeder Pixelwert multipliziert wird Eine Zahl oder eine Liste mit drei Zahlen, eine für jede Band
Voreingenommenheit Werte, die jeder DN hinzugefügt werden sollen Eine Zahl oder eine Liste mit drei Zahlen, eine für jede Band
Gamma Gammakorrekturfaktor(en) Eine Zahl oder eine Liste mit drei Zahlen, eine für jede Band
palette Liste der CSS-Farbstrings (nur einfarbige Bilder) durch Kommas getrennte Liste von Hexadezimalstrings
opacity Die Deckkraft der Ebene (0,0 = vollständig transparent, 1,0 = vollständig undurchsichtig) Zahl
format Entweder „jpg“ oder „png“ String

RGB-Komposite

Im Folgenden wird gezeigt, wie Sie mithilfe von Parametern ein Landsat 8-Bild als Falschfarbenbild gestalten:

Code-Editor (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');

Python einrichten

Auf der Seite Python-Umgebung finden Sie Informationen zur Python API und zur Verwendung von geemap für die interaktive Entwicklung.

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 diesem Beispiel ist Band 'B5' rot, 'B4' grün und 'B3' blau zugewiesen.

false_color_sf
Landsat 8-Farbbild der San Francisco Bay Area, Kalifornien, USA.

Farbpaletten

Wenn Sie einen einzelnen Farbstreifen eines Bildes anzeigen möchten, legen Sie den Parameter palette mit einer Farbrampe fest, die durch eine Liste von Farbstrings im CSS-Format dargestellt wird. Weitere Informationen finden Sie in diesem Artikel. Im folgenden Beispiel wird gezeigt, wie mit Farben von Cyan ('00FFFF') bis Blau ('0000FF') ein Normalisierter Differenzwasserindex (NDWI) gerendert wird:

Code-Editor (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);

Python einrichten

Auf der Seite Python-Umgebung finden Sie Informationen zur Python API und zur Verwendung von geemap für die interaktive Entwicklung.

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 diesem Beispiel geben die Parameter min und max den Bereich der Pixelwerte an, auf die die Palette angewendet werden soll. Zwischenwerte werden linear gedehnt.

Beachten Sie auch, dass der Parameter show im Code-Editor-Beispiel auf false festgelegt ist. Dadurch ist die Sichtbarkeit der Ebene deaktiviert, wenn sie der Karte hinzugefügt wird. Sie können sie jederzeit über den Ebenenmanager rechts oben in der Code-Editor-Ansicht wieder aktivieren.

ndwi_sf
Landsat 8 NDWI, San Francisco Bay Area, USA. Cyan steht für niedrige Werte, Blau für hohe Werte.

Standardfarbpaletten speichern

Wenn Sie Farbpaletten in einem Klassifizierungsbild speichern möchten, damit Sie sich nicht daran erinnern müssen, sie anzuwenden, können Sie für jeden Klassifizierungsbereich zwei speziell benannte String-Bildeigenschaften festlegen.

Wenn Ihr Bild beispielsweise einen Streifen namens 'landcover' mit den drei Werten 0, 1 und 2 hat, die den Klassen „Wasser“, „Wald“ und „Sonstiges“ entsprechen, können Sie die folgenden Eigenschaften festlegen, damit in der Standardvisualisierung für jede Klasse eine bestimmte Farbe angezeigt wird. Die in der Analyse verwendeten Werte bleiben davon unberührt:

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

Auf der Seite Assets verwalten erfährst du, wie du Asset-Metadaten festlegst.

Maskieren

Mit image.updateMask() können Sie die Deckkraft einzelner Pixel festlegen, je nachdem, wo Pixel in einem Maskenbild einen Wert ungleich 0 haben. Pixel mit dem Wert „0“ in der Maske werden von den Berechnungen ausgeschlossen und die Deckkraft wird für die Anzeige auf „0“ gesetzt. Im folgenden Beispiel wird ein NDWI-Grenzwert verwendet (Informationen zu Grenzwerten finden Sie im Abschnitt Relationale Vorgänge), um die Maske in der zuvor erstellten NDWI-Ebene zu aktualisieren:

Code-Editor (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');

Python einrichten

Auf der Seite Python-Umgebung finden Sie Informationen zur Python API und zur Verwendung von geemap für die interaktive Entwicklung.

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)

Visualisierungsbilder

Mit der image.visualize()-Methode können Sie ein Bild in ein 8‑Bit-RGB-Bild für die Anzeige oder den Export konvertieren. Wenn Sie beispielsweise das Falschfarbenbild und den NDWI in dreifarbige Anzeigebilder umwandeln möchten, verwenden Sie Folgendes:

Code-Editor (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']
});

Python einrichten

Auf der Seite Python-Umgebung finden Sie Informationen zur Python API und zur Verwendung von geemap für die interaktive Entwicklung.

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

Mosaik

Mithilfe von Maskierungen und imageCollection.mosaic() (Informationen zum Mosaikieren finden Sie im Abschnitt zum Mosaikieren) lassen sich verschiedene kartografische Effekte erzielen. Mit der Methode mosaic() werden Ebenen im Ausgabebild gemäß ihrer Reihenfolge in der Eingabesammlung gerendert. Im folgenden Beispiel wird mit mosaic() der maskierte NDWI mit dem Falschfarben-Composite kombiniert, um eine neue Visualisierung zu erhalten:

Code-Editor (JavaScript)

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

Python einrichten

Auf der Seite Python-Umgebung finden Sie Informationen zur Python API und zur Verwendung von geemap für die interaktive Entwicklung.

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 diesem Beispiel wird dem ImageCollection-Konstruktor eine Liste der beiden Visualisierungsbilder übergeben. Die Reihenfolge der Liste bestimmt die Reihenfolge, in der die Bilder auf der Karte gerendert werden.

mosaic_sf
Mosaik aus einem Landsat 8-Farbbild und einem NDWI. San Francisco Bay Area, USA.

Clipping

Die image.clip()-Methode eignet sich gut für kartografische Effekte. Im folgenden Beispiel wird das zuvor erstellte Mosaik auf eine beliebige Pufferzone um die Stadt San Francisco zugeschnitten:

Code-Editor (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');

Python einrichten

Auf der Seite Python-Umgebung finden Sie Informationen zur Python API und zur Verwendung von geemap für die interaktive Entwicklung.

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)

Beachten Sie im vorherigen Beispiel, dass die Koordinaten dem Konstruktor von Geometry übergeben und die Pufferlänge mit 20.000 Metern angegeben wird. Weitere Informationen zu Geometrien finden Sie auf der Seite „Geometrien“.

clipped_sf
Das oben gezeigte Mosaik, zugeschnitten auf einen Puffer um San Francisco, Kalifornien, USA.

Kategorische Karten rendern

Paletten sind auch zum Rendern von Karten mit diskreten Werten nützlich, z. B. einer Bodenbedeckungskarte. Wenn Sie mehrere Kurse haben, verwenden Sie die Palette, um für jeden Kurs eine andere Farbe festzulegen. Die Methode image.remap() kann in diesem Zusammenhang nützlich sein, um beliebige Labels in aufeinanderfolgende Ganzzahlen umzuwandeln. Im folgenden Beispiel werden Kategorien der Bodenbedeckung mithilfe einer Palette gerendert:

Code-Editor (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');

Python einrichten

Auf der Seite Python-Umgebung finden Sie Informationen zur Python API und zur Verwendung von geemap für die interaktive Entwicklung.

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
MODIS-Landbedeckung 2012 mit der IGBP-Klassifizierung.

Deskriptoren für gestylte Ebenen

Sie können einen Styled Layer Descriptor (SLD) verwenden, um Bilder für die Anzeige zu rendern. Geben Sie in image.sldStyle() eine XML-Beschreibung der Symbolisierung und Farbgebung des Bildes an, insbesondere des RasterSymbolizer-Elements. Weitere Informationen zum Element „RasterSymbolizer Wenn Sie beispielsweise die im Abschnitt „Kategorische Karten rendern“ beschriebene Landbedeckungskarte mit einer SLD rendern möchten, verwenden Sie Folgendes:

Code-Editor (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');

Python einrichten

Auf der Seite Python-Umgebung finden Sie Informationen zur Python API und zur Verwendung von geemap für die interaktive Entwicklung.

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)

Wenn Sie ein Visualisierungsbild mit einer Farbrampe erstellen möchten, legen Sie den Typ von ColorMap auf „ramp“ fest. Im folgenden Beispiel werden die Typen „interval“ und „ramp“ für das Rendern einer DEM verglichen:

Code-Editor (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');

Python einrichten

Auf der Seite Python-Umgebung finden Sie Informationen zur Python API und zur Verwendung von geemap für die interaktive Entwicklung.

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)

SLDs eignen sich auch zum Strecken von Pixelwerten, um die Visualisierung kontinuierlicher Daten zu verbessern. Im folgenden Code werden beispielsweise die Ergebnisse einer beliebigen linearen Streckung mit einer Min-Max-Normalisierung und einer Histogramm-Ausgleichung verglichen:

Code-Editor (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');

Python einrichten

Auf der Seite Python-Umgebung finden Sie Informationen zur Python API und zur Verwendung von geemap für die interaktive Entwicklung.

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)

Hinweise zur Verwendung von SLDs in Earth Engine:

  • OGC SLD 1.0 und OGC SE 1.1 werden unterstützt.
  • Das übergebene XML-Dokument kann vollständig sein oder nur das RasterSymbolizer-Element und die nachfolgenden Elemente enthalten.
  • Bänder können anhand ihrer Earth Engine-Namen oder ihres Index (z. B. „1“, „2“) ausgewählt werden.
  • Die Histogramm- und Normalisierungsmechanismen für den Kontrast werden für Bilder mit schwimmenden Punkten nicht unterstützt.
  • Die Deckkraft wird nur berücksichtigt, wenn sie 0,0 (transparent) ist. Werte ungleich Null werden als vollständig undurchsichtig behandelt.
  • Die Definition von „OverlapBehavior“ wird derzeit ignoriert.
  • Der ShadedRelief-Mechanismus wird derzeit nicht unterstützt.
  • Der Mechanismus „ImageOutline“ wird derzeit nicht unterstützt.
  • Das Element „Geometry“ wird ignoriert.
  • Das Ausgabebild enthält die Metadaten „histogram_bandname“, wenn eine Histogramm-Ausgleichung oder ‑Normalisierung angefordert wird.

Miniaturansichten

Mit der Methode ee.Image.getThumbURL() können Sie ein PNG- oder JPEG-Miniaturbild für ein ee.Image-Objekt generieren. Wenn Sie das Ergebnis eines Ausdrucks drucken, der mit einem Aufruf von getThumbURL() endet, wird eine URL ausgegeben. Wenn Sie die URL aufrufen, werden die Earth Engine-Server angewiesen, die angeforderte Miniaturansicht direkt zu generieren. Das Bild wird in einem Browser angezeigt, sobald die Verarbeitung abgeschlossen ist. Sie können es herunterladen, indem Sie im Kontextmenü des Bildes die entsprechenden Optionen auswählen.

thumbnail_in_browser
SRTM-Digitales Höhenmodell, das in einem Browser als PNG-Miniaturbild angezeigt wird.

Die getThumbURL()-Methode enthält Parameter, die in der Tabelle mit den Visualisierungsparametern oben beschrieben sind. Außerdem werden die optionalen Argumente dimensions, region und crs unterstützt, mit denen die räumliche Ausdehnung, Größe und Projektion des Thumbnails gesteuert werden.

Zusätzliche Parameter für ee.Image.getThumbURL() mit Hinweis zum Format
Parameter Beschreibung Typ
Abmessungen Größe des Thumbnails in Pixeln. Wenn eine einzelne Ganzzahl angegeben wird, wird damit die Größe der größeren Seitenverhältnisdimension des Bildes definiert und die kleinere Dimension wird proportional skaliert. Standardmäßig ist für die größere Bildabmessung ein Wert von 512 Pixeln festgelegt. Eine einzelne Ganzzahl oder ein String im Format: 'BREITExHÖHE'
region Die geografische Region des zu rendernden Bildes. Standardmäßig das gesamte Bild oder die Grenzen einer bereitgestellten Geometrie. GeoJSON oder eine 2D-Liste mit mindestens drei Punktkoordinaten, die einen linearen Ring definieren
crs Die Zielprojektion, z.B. „EPSG:3857“. Standardmäßig ist WGS84 (EPSG:4326) festgelegt. String
format Das Miniaturansichtsformat wird als PNG oder JPEG definiert. Das Standard-PNG-Format ist als RGBA implementiert, wobei der Alphakanal gültige und ungültige Pixel darstellt, die durch die mask() des Bildes definiert sind. Ungültige Pixel sind transparent. Das optionale JPEG-Format wird als RGB implementiert, wobei ungültige Bildpixel in den RGB-Kanälen mit Nullen aufgefüllt werden. String; entweder „png“ oder „jpg“

Bei einem einbändigen Bild wird standardmäßig Graustufen verwendet, sofern kein palette-Argument angegeben wird. Bei einem Multibandbild wird standardmäßig die RGB-Visualisierung der ersten drei Bänder verwendet, sofern kein bands-Argument angegeben wird. Wenn nur zwei Bänder angegeben sind, wird das erste Band Rot, das zweite Blau zugeordnet und der grüne Kanal mit Nullen aufgefüllt.

Im Folgenden finden Sie eine Reihe von Beispielen für verschiedene Kombinationen von getThumbURL()-Parameterargumenten. Klicken Sie auf die URLs, die beim Ausführen dieses Scripts ausgegeben werden, um die Miniaturansichten aufzurufen.

Code-Editor (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);

Python einrichten

Auf der Seite Python-Umgebung finden Sie Informationen zur Python API und zur Verwendung von geemap für die interaktive Entwicklung.

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)