Существует несколько методов ee.Image, которые создают визуальные представления данных изображений в формате RGB, например:
visualize(),
getThumbURL(),
getMap(),
getMapId() (используется для отображения карт Colab Folium) и
Map.addLayer()
(используется для отображения карт в редакторе кода, недоступно для Python). По умолчанию эти методы назначают первые три полосы красному, зеленому и синему цветам соответственно. Растяжение по умолчанию зависит от типа данных в полосах (например, числа с плавающей запятой растягиваются в диапазоне [0, 1], а 16-битные данные – до полного диапазона возможных значений), что может быть как подходящим, так и неподходящим. Чтобы добиться нужного эффекта, можно задать параметры визуализации:
| Параметр | Описание | Тип |
|---|---|---|
| bands | Разделенный запятыми список из трех названий диапазонов, которые будут сопоставлены с RGB. | list |
| мин. | Значения, которые нужно сопоставить с 0 | число или список из трех чисел, по одному для каждого диапазона |
| max | Значения, которые нужно сопоставить с 255 | число или список из трех чисел, по одному для каждого диапазона |
| gain | Значения, на которые умножается значение каждого пикселя. | число или список из трех чисел, по одному для каждого диапазона |
| bias | Значения, которые нужно добавить к каждому DN | число или список из трех чисел, по одному для каждого диапазона |
| gamma | Коэффициенты гамма-коррекции | число или список из трех чисел, по одному для каждого диапазона |
| palette | Список строк цвета в стиле CSS (только для одноканальных изображений) | список шестнадцатеричных строк, разделенных запятыми |
| opacity | Непрозрачность слоя (0.0 – полностью прозрачный, 1.0 – полностью непрозрачный). | число |
| format | JPG или PNG. | string |
Композитные RGB-изображения
Ниже показано, как использовать параметры для стилизации изображения Landsat 8 в виде композитного изображения в ложных цветах:
Редактор кода (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');
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)
В этом примере полоса 'B5' назначена красному цвету, 'B4' – зеленому, а 'B3' – синему.
Цветовая гамма
Чтобы показать одну полосу изображения в цвете, задайте параметр palette с цветовой шкалой, представленной списком строк цвета в стиле CSS. Подробнее об этом рассказывается в справочной статье. В следующем примере показано, как использовать цвета от голубого ('00FFFF') до синего ('0000FF') для визуализации изображения
нормализованного разностного водного индекса (NDWI):
Редактор кода (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);
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)
Обратите внимание, что в этом примере параметры min и max указывают диапазон значений пикселей, к которым должна применяться палитра. Промежуточные значения растягиваются линейно.
Обратите внимание, что в примере для редактора кода параметру show присвоено значение false. В результате слой будет невидимым при добавлении на карту. Его можно снова включить в Менеджере слоев в правом верхнем углу карты редактора кода.
Сохранение цветовых палитр по умолчанию
Чтобы сохранить палитры цветов на изображении классификации и не применять их каждый раз, можно задать два свойства строкового изображения со специальными именами для каждой полосы классификации.
Например, если у вашего изображения есть полоса 'landcover' с тремя значениями (0, 1 и 2), соответствующими классам "вода", "лес" и "другое", вы можете задать следующие свойства, чтобы при визуализации по умолчанию для каждого класса показывался определенный цвет (на значения, используемые в анализе, это не повлияет):
landcover_class_values="0,1,2"landcover_class_palette="0000FF,00FF00,AABBCD"
См. страницу "Объекты", чтобы узнать, как задавать метаданные объектов.
Маски
С помощью image.updateMask() можно задать прозрачность отдельных пикселей на основе того, где пиксели в изображении маски не равны нулю. Пиксели, равные нулю в маске, исключаются из вычислений, а непрозрачность устанавливается равной 0 для отображения. В следующем примере используется пороговое значение NDWI (информацию о пороговых значениях см. в разделе
Операции отношения), чтобы обновить маску на ранее созданном слое NDWI:
Редактор кода (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');
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)
Изображения для визуализации
Используйте метод image.visualize(), чтобы преобразовать изображение в 8-битное RGB-изображение для отображения или экспорта. Например, чтобы преобразовать композитное изображение в ложных цветах и NDWI в трехканальные изображения, используйте следующий код:
Редактор кода (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'] });
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'])
Мозаика
Чтобы добиться различных картографических эффектов, можно использовать маскирование и imageCollection.mosaic() (подробнее об этом рассказывается в разделе Мозаика). Метод mosaic() отрисовывает слои в выходном изображении в соответствии с их порядком во входной коллекции. В следующем примере используется mosaic(), чтобы объединить маскированный NDWI и композит ложных цветов и получить новую визуализацию:
Редактор кода (JavaScript)
// Mosaic the visualization layers and display (or export). var mosaic = ee.ImageCollection([imageRGB, ndwiRGB]).mosaic(); Map.addLayer(mosaic, {}, 'mosaic');
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)
В этом примере конструктору ImageCollection передается список из двух изображений. Порядок элементов в списке определяет порядок отрисовки изображений на карте.
Обрезка
Метод image.clip() позволяет создавать картографические эффекты. В следующем примере мозаика, созданная ранее, обрезается до произвольной буферной зоны вокруг города Сан-Франциско:
Редактор кода (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');
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)
В предыдущем примере обратите внимание, что координаты передаются в конструктор Geometry, а длина буфера задана как 20 000 метров. Подробнее о геометрии…
Отрисовка категориальных карт
Палитры также полезны для рендеринга карт с дискретными значениями, например карт растительного покрова.
Если классов несколько, используйте палитру, чтобы задать для каждого из них свой цвет.
(В этом контексте может быть полезен метод image.remap(), который преобразует произвольные ярлыки в последовательные целые числа). В следующем примере палитра используется для отображения категорий растительного покрова:
Редактор кода (JavaScript)
// Load 2012 MODIS land cover and select the IGBP classification. var cover = ee.Image('MODIS/061/MCD12Q1/2012_01_01') .select('LC_Type1'); // Define a palette for the 17 distinct land cover classes. var igbpPalette = [ '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 'aec3d4' // water ]; // Specify the min and max labels and the color palette matching the labels. Map.setCenter(-99.229, 40.413, 5); Map.addLayer(cover, {min: 1, max: 17, palette: igbpPalette}, 'IGBP classification');
import ee import geemap.core as geemap
Colab (Python)
# Load 2012 MODIS land cover and select the IGBP classification. cover = ee.Image('MODIS/061/MCD12Q1/2012_01_01').select('LC_Type1') # Define a palette for the 17 distinct land cover classes. igbp_palette = [ '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 'aec3d4', # water ] # 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': 1, 'max': 17, 'palette': igbp_palette}, 'IGBP classes' ) display(map_palette)
Дескрипторы стилизованных слоев
Для отрисовки изображений можно использовать дескриптор стилизованного слоя (SLD). Предоставьте image.sldStyle() XML-описание символов и цветов изображения, в частности элемента RasterSymbolizer. Подробнее RasterSymbolizerоб элементе …
Например, чтобы отобразить карту растительного покрова, описанную в разделе "Отрисовка категориальных карт", с помощью SLD, используйте:
Редактор кода (JavaScript)
var cover = ee.Image('MODIS/061/MCD12Q1/2012_01_01').select('LC_Type1'); // Define an SLD style of discrete intervals to apply to the image. var sld_intervals = '<RasterSymbolizer>' + '<ColorMap type="intervals" extended="false">' + '<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="#aec3d4" quantity="17" label="Water"/>' + '</ColorMap>' + '</RasterSymbolizer>'; Map.addLayer(cover.sldStyle(sld_intervals), {}, 'IGBP classification styled');
import ee import geemap.core as geemap
Colab (Python)
cover = ee.Image('MODIS/061/MCD12Q1/2012_01_01').select('LC_Type1') # Define an SLD style of discrete intervals to apply to the image. sld_intervals = """ <RasterSymbolizer> <ColorMap type="intervals" extended="false" > <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="#aec3d4" quantity="17" label="Water"/> </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)
Чтобы создать изображение визуализации с цветовой шкалой, задайте для типа ColorMap значение ramp. В следующем примере сравниваются типы interval и ramp для отрисовки ЦМР:
Редактор кода (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');
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)
SLD также полезны для растягивания значений пикселей, чтобы улучшить визуализацию непрерывных данных. Например, следующий код сравнивает результаты произвольного линейного растяжения с минимально-максимальной нормализацией и выравниванием гистограммы:
Редактор кода (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');
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)
При использовании SLD в Earth Engine следует учитывать следующее:
- Поддерживаются OGC SLD 1.0 и OGC SE 1.1.
- Передаваемый XML-документ может быть полным или содержать только элемент RasterSymbolizer и ниже.
- Каналы можно выбирать по их названиям в Earth Engine или по индексу ('1', '2' и т. д.).
- Механизмы растяжения контраста Histogram и Normalize не поддерживаются для изображений с плавающей запятой.
- Непрозрачность учитывается, только если она равна 0,0 (прозрачный). Ненулевые значения прозрачности обрабатываются как полностью непрозрачные.
- Определение OverlapBehavior в настоящее время игнорируется.
- Механизм ShadedRelief в настоящее время не поддерживается.
- Механизм ImageOutline в настоящее время не поддерживается.
- Элемент Geometry игнорируется.
- Если запрашивается выравнивание или нормализация гистограммы, выходное изображение будет содержать метаданные histogram_bandname.
Значки видео
Используйте метод ee.Image.getThumbURL(), чтобы создать значок в формате PNG или JPEG для объекта ee.Image. Если вы выведете на печать результат выражения, которое заканчивается вызовом getThumbURL(), то будет напечатан URL. При переходе по URL-адресу серверы Earth Engine начинают генерировать запрошенный значок на лету. После завершения обработки изображение будет показано в браузере. Его можно скачать, выбрав нужные параметры в контекстном меню, которое открывается при нажатии правой кнопкой мыши.
Метод getThumbURL() включает параметры, описанные в таблице параметров визуализации выше.
Кроме того, он принимает необязательные аргументы dimensions, region и crs, которые управляют пространственной протяженностью, размером и проекцией отображения значка.
| Параметр | Описание | Тип |
|---|---|---|
| dimensions | Размеры значка в пикселях. Если указано одно целое число, оно определяет размер большей стороны изображения, а меньшая сторона масштабируется пропорционально. По умолчанию для большего размера изображения используется значение 512 пикселей. | Одно целое число или строка в формате: 'WIDTHxHEIGHT' |
| регион | Геопространственный регион изображения для отрисовки. По умолчанию это все изображение или границы предоставленной геометрии. | GeoJSON или двумерный список, содержащий не менее трех координат точек, которые определяют линейное кольцо. |
| crs | Целевая проекция, например EPSG:3857. Значение по умолчанию – WGS84 ('EPSG:4326'). | Строка |
| формат | Определяет формат значка (PNG или JPEG). Формат PNG по умолчанию реализован как RGBA, где альфа-канал представляет действительные и недействительные пиксели, определяемые mask() изображения. Недопустимые пиксели прозрачны. Необязательный формат JPEG реализован как RGB, где недопустимые пиксели изображения заполняются нулями по каналам RGB.
|
Строка; png или jpg |
Одноканальное изображение по умолчанию будет отображаться в оттенках серого, если не указан аргумент palette. Для многоканального изображения по умолчанию используется RGB-визуализация первых трех каналов, если не указан аргумент bands. Если указаны только две полосы, первая будет сопоставлена с красным каналом, вторая – с синим, а зеленый канал будет заполнен нулями.
Ниже приведены примеры различных комбинаций аргументов параметра getThumbURL(). Чтобы посмотреть значки, нажмите на URL, которые появятся после выполнения скрипта.
Редактор кода (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);
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)
Запустить в Google Colab
Посмотреть исходный код на GitHub