دیداری‌سازی تصویر

تعدادی روش ee.Image وجود دارد که نمایش‌های بصری RGB از داده‌های تصویر تولید می‌کنند، برای مثال: visualize()، getThumbURL()، getMap()، getMapId() (استفاده‌شده در نمایش نقشه Colab Folium) و، Map.addLayer() (استفاده‌شده در نمایش نقشه Code Editor، برای Python دردسترس نیست). به‌طور پیش‌فرض، این روش‌ها سه باند اول را به‌ترتیب به قرمز، سبز، و آبی اختصاص می‌دهند. کشش پیش‌فرض براساس نوع داده در باندها است (برای مثال، اعداد اعشاری در [0, 1] کشیده می‌شوند، داده‌های ۱۶ بیتی به کل محدوده مقادیر ممکن کشیده می‌شوند)، که ممکن است مناسب باشد یا نباشد. برای دستیابی به جلوه‌های دیداری‌سازی مطلوب، می‌توانید پارامترهای دیداری‌سازی را ارائه دهید:

پارامترهای تجسم تصویر
پارامتر شرح نوع
باند فهرست جداشده با کاما از سه نام باند برای نگاشت به RGB فهرست
دقیقه مقدار(هایی) که به ۰ نگاشت می‌شود عدد یا فهرست سه عدد، یکی برای هر باند
max مقدار(ها) برای نگاشت به ۲۵۵ عدد یا فهرست سه عدد، یکی برای هر باند
بهره مقدار(هایی) که هر مقدار پیکسل باید در آن ضرب شود عدد یا فهرست سه عدد، یکی برای هر باند
bias مقدار(هایی) که باید به هر DN اضافه شود عدد یا فهرست سه عدد، یکی برای هر باند
gamma عامل(های) اصلاح گاما عدد یا فهرست سه عدد، یکی برای هر باند
پالت فهرست رشته‌های رنگی سبک CSS (فقط تصاویر تک‌باندی) فهرست جداشده با کاما از رشته‌های بر مبنای شانزده
ماتی ماتی لایه (۰٫۰ کاملاً شفاف و ۱٫۰ کاملاً مات است) شماره
قالب «jpg» یا «png» رشته

ترکیب‌های RGB

مثال زیر نحوه استفاده از پارامترها را برای سبک‌دهی به تصویر Landsat 8 به‌عنوان ترکیب رنگ کاذب نشان می‌دهد:

ویرایشگر کد (جاوا اسکریپت)

// 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

برای اطلاعات درباره Python API و استفاده از geemap برای توسعه تعاملی، به صفحه محیط 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)

در این مثال، باند 'B5' به قرمز، 'B4' به سبز، و 'B3' به آبی اختصاص داده شده است.

false_color_sf
ترکیب رنگ کاذب Landsat 8 از منطقه خلیج سان فرانسیسکو، کالیفرنیا، ایالات متحده.

پالت‌های رنگ

برای نمایش یک باند تصویر به‌صورت رنگی، پارامتر palette را با یک شیب رنگی که با فهرستی از رشته‌های رنگی سبک CSS نشان داده می‌شود، تنظیم کنید. (برای اطلاعات بیشتر، این مرجع را ببینید). مثال زیر نشان می‌دهد که چگونه از رنگ‌های فیروزه‌ای ('00FFFF') تا آبی ('0000FF') برای رندر کردن تصویر شاخص آب تفاوت نرمال‌شده (NDWI) استفاده کنید:

ویرایشگر کد (جاوا اسکریپت)

// 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

برای اطلاعات درباره Python API و استفاده از geemap برای توسعه تعاملی، به صفحه محیط 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)

در این مثال، توجه داشته باشید که پارامترهای min و max نشان‌دهنده محدوده مقادیر پیکسلی هستند که پالت باید روی آن‌ها اعمال شود. مقادیر میانی به‌صورت خطی کشیده می‌شوند.

همچنین توجه داشته باشید که پارامتر show در نمونه «ویرایشگر کد» روی false تنظیم شده است. این کار باعث می‌شود که وقتی لایه به نقشه اضافه می‌شود، رؤیت‌پذیری آن خاموش باشد. همیشه می‌توانید آن را دوباره بااستفاده از مدیر لایه در گوشه بالا سمت چپ نقشه «ویرایشگر کد» روشن کنید.

ndwi_sf
Landsat 8 NDWI، منطقه خلیج سان‌فرانسیسکو، ایالات متحده. فیروزه‌ای نشان‌دهنده مقادیر کم و آبی نشان‌دهنده مقادیر زیاد است.

درحال ذخیره کردن پالت‌های رنگ پیش‌فرض

برای ذخیره کردن پالت‌های رنگ در تصویر طبقه‌بندی به‌گونه‌ای که نیازی به یادآوری برای اعمال آن‌ها نباشد، می‌توانید دو ویژگی تصویر رشته‌ای با نام خاص برای هر باند طبقه‌بندی تنظیم کنید.

برای مثال، اگر تصویر شما دارای باندی به‌نام 'landcover' با سه مقدار ۰، ۱، و ۲ باشد که با کلاس‌های «آب»، «جنگل»، و «غیره» مطابقت دارند، می‌توانید ویژگی‌های زیر را تنظیم کنید تا تجسم پیش‌فرض رنگ مشخصی را برای هر کلاس نشان دهد (مقادیر استفاده‌شده در تجزیه‌وتحلیل تحت‌تأثیر قرار نخواهند گرفت):

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

برای آشنایی با نحوه تنظیم فراداده دارایی، به صفحه مدیریت دارایی‌ها مراجعه کنید.

پوشاندن

می‌توانید از image.updateMask() برای تنظیم کردن میزان ماتی پیکسل‌های تکی براساس جایی که پیکسل‌ها در تصویر ماسک غیرصفر هستند استفاده کنید. پیکسل‌های برابر با صفر در ماسک از محاسبات کنار گذاشته می‌شوند و شفافیت برای نمایش روی ۰ تنظیم می‌شود. مثال زیر از آستانه NDWI (برای اطلاعات درباره آستانه‌ها، به بخش عملیات رابطه‌ای مراجعه کنید) برای به‌روزرسانی ماسک در لایه NDWI که قبلاً ایجاد شده است استفاده می‌کند:

ویرایشگر کد (جاوا اسکریپت)

// 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

برای اطلاعات درباره Python API و استفاده از geemap برای توسعه تعاملی، به صفحه محیط 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)

تصاویر دیداری‌سازی

از روش image.visualize() برای تبدیل تصویر به تصویر RGB‏ ۸ بیتی برای نمایش یا صادر کردن استفاده کنید. برای مثال، برای تبدیل ترکیب رنگ کاذب و NDWI به تصاویر نمایش ۳ باندی، از این کد استفاده کنید:

ویرایشگر کد (جاوا اسکریپت)

// 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

برای اطلاعات درباره Python API و استفاده از geemap برای توسعه تعاملی، به صفحه محیط 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'])

موزاییک‌سازی

می‌توانید از ماسک‌گذاری و imageCollection.mosaic() (برای اطلاعات درباره موزاییک‌کاری، بخش موزاییک‌کاری را ببینید) برای دستیابی به جلوه‌های مختلف نقشه‌نگاری استفاده کنید. روش mosaic() لایه‌ها را در تصویر خروجی براساس ترتیب آن‌ها در مجموعه ورودی رندر می‌کند. مثال زیر از mosaic() برای ترکیب NDWI ماسک‌شده و ترکیب رنگ کاذب و به‌دست آوردن یک تجسم جدید استفاده می‌کند:

ویرایشگر کد (جاوا اسکریپت)

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

راه‌اندازی Python

برای اطلاعات درباره Python API و استفاده از geemap برای توسعه تعاملی، به صفحه محیط 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)

در این مثال، توجه کنید که فهرستی از دو تصویر تجسم به سازنده ImageCollection ارائه شده است. ترتیب فهرست تعیین می‌کند تصاویر به چه ترتیبی در نقشه ارائه شوند.

mosaic_sf
موزاییک ترکیب رنگ کاذب Landsat 8 و NDWI. منطقه خلیج سان فرانسیسکو، ایالات متحده.

درحال برش دادن

روش image.clip() برای دستیابی به جلوه‌های نقشه‌نگاری مفید است. مثال زیر موزاییک ایجادشده قبلی را به یک منطقه حائل دلخواه در اطراف شهر سانفرانسیسکو برش می‌دهد:

ویرایشگر کد (جاوا اسکریپت)

// 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

برای اطلاعات درباره Python API و استفاده از geemap برای توسعه تعاملی، به صفحه محیط 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)

در مثال قبلی، توجه داشته باشید که مختصات به سازنده Geometry ارائه شده است و طول میان‌گیر ۲۰٬۰۰۰ متر مشخص شده است. در صفحه هندسه‌ها درباره هندسه‌ها بیشتر بدانید.

clipped_sf
موزاییک نشان‌داده‌شده در بالا، که به یک حائل در اطراف سانفرانسیسکو، کالیفرنیا، ایالات متحده امریکا، برش داده شده است.

پرداز نقشه‌های طبقه‌بندی‌شده

پالت‌ها همچنین برای رندر کردن نقشه‌های با مقادیر گسسته، مانند نقشه پوشش زمین، مفید هستند. درصورت وجود چند کلاس، از پالت برای ارائه رنگ متفاوت برای هر کلاس استفاده کنید. (روش image.remap() ممکن است در این زمینه برای تبدیل برچسب‌های دلخواه به اعداد صحیح متوالی مفید باشد). مثال زیر از پالت برای رندر کردن دسته‌های پوشش زمین استفاده می‌کند:

ویرایشگر کد (جاوا اسکریپت)

// 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');

راه‌اندازی Python

برای اطلاعات درباره Python API و استفاده از geemap برای توسعه تعاملی، به صفحه محیط Python مراجعه کنید.

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)
landcover_palettized
پوشش زمین MODIS 2012 بااستفاده از طبقه‌بندی IGBP.

توصیف‌کننده‌های لایه سبک‌دارشده

می‌توانید از «توصیف‌کننده لایه سبک‌دار» (SLD) برای پردازش تصاویر برای نمایش استفاده کنید. image.sldStyle() را با شرح XML نمادگذاری و رنگ‌آمیزی تصویر، به‌ویژه عنصر RasterSymbolizer، ارائه دهید. درباره عنصر RasterSymbolizer اینجا بیشتر بدانید. برای مثال، برای ارائه نقشه پوشش زمین شرح‌داده‌شده در بخش «ارائه نقشه‌های طبقه‌بندی‌شده» با SLD، از این کد استفاده کنید:

ویرایشگر کد (جاوا اسکریپت)

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

راه‌اندازی Python

برای اطلاعات درباره Python API و استفاده از geemap برای توسعه تعاملی، به صفحه محیط Python مراجعه کنید.

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 را روی «شیب» تنظیم کنید. مثال زیر انواع «فاصله» و «شیب» را برای ارائه DEM مقایسه می‌کند:

ویرایشگر کد (جاوا اسکریپت)

// 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

برای اطلاعات درباره Python API و استفاده از geemap برای توسعه تعاملی، به صفحه محیط 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)

‫SLDها همچنین برای گسترش مقادیر پیکسل برای بهبود تجسم داده‌های پیوسته مفید هستند. برای مثال، کد زیر نتایج یک کشش خطی دلخواه را با «نرمال‌سازی» حداقل-حداکثر و یکسان‌سازی «هیستوگرام» مقایسه می‌کند:

ویرایشگر کد (جاوا اسکریپت)

// 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

برای اطلاعات درباره Python API و استفاده از geemap برای توسعه تعاملی، به صفحه محیط 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)

نکات قابل‌توجه درخصوص استفاده از SLD در Earth Engine:

  • ‫OGC SLD 1.0 و OGC SE 1.1 پشتیبانی می‌شوند.
  • سند XML ارسال‌شده می‌تواند کامل باشد، یا فقط عنصر RasterSymbolizer و پایین‌تر باشد.
  • باندها را می‌توان براساس نام Earth Engine یا نمایه آن‌ها (‫’۱‘، ’۲‘، ...) انتخاب کرد.
  • سازوکارهای کشش کنتراست «هیستوگرام» و «نرمال‌سازی» برای تصاویر نقطه شناور پشتیبانی نمی‌شوند.
  • کدری فقط زمانی درنظر گرفته می‌شود که ۰٫۰ (شفاف) باشد. مقادیر غیرصفر کدری به‌عنوان کاملاً کدر درنظر گرفته می‌شوند.
  • درحال‌حاضر تعریف OverlapBehavior نادیده گرفته می‌شود.
  • درحال‌حاضر از سازوکار ShadedRelief پشتیبانی نمی‌شود.
  • درحال‌حاضر از سازوکار ImageOutline پشتیبانی نمی‌شود.
  • عنصر Geometry نادیده گرفته می‌شود.
  • اگر یکسان‌سازی یا نرمال‌سازی بافت‌نگاشت درخواست شود، تصویر خروجی دارای فراداده histogram_bandname خواهد بود.

تصاویر کوچک

از روش ee.Image.getThumbURL() برای تولید تصویر ریزعکس PNG یا JPEG برای شیء ee.Image استفاده کنید. چاپ کردن نتیجه عبارتی که با فراخوانی getThumbURL() پایان می‌یابد، منجر به چاپ شدن نشانی وب می‌شود. بازدید از نشانی وب، سرورهای Earth Engine را تنظیم می‌کند تا روی تولید ریزعکس درخواستی درلحظه کار کنند. وقتی پردازش تکمیل شود، تصویر در مرورگر نمایش داده می‌شود. با انتخاب گزینه‌های مناسب از منوِ بافت کلیک‌راست تصویر، می‌توان آن را بارگیری کرد.

thumbnail_in_browser
مدل ارتفاع دیجیتال SRTM که به‌صورت ریزعکس PNG در مرورگر نمایش داده شده است.

روش getThumbURL() شامل پارامترهایی است که در جدول پارامترهای دیداری‌سازی بالا شرح داده شده است. علاوه‌براین، آرگومان‌های اختیاری dimensions، region، و crs را می‌گیرد که گستره فضایی، اندازه، و تصویر نمایش ریزعکس را کنترل می‌کنند.

پارامترهای اضافی برای ee.Image.getThumbURL() با یادداشتی درباره قالب
پارامتر شرح نوع
ابعاد ابعاد ریزعکس به واحد پیکسل. اگر یک عدد صحیح ارائه شود، اندازه بُعد بزرگ‌تر نسبت ابعاد تصویر را تعریف می‌کند و بُعد کوچک‌تر را به‌طور متناسب مقیاس‌بندی می‌کند. به‌طور پیش‌فرض ۵۱۲ پیکسل برای بعد بزرگ‌تر نسبت ابعادی تصویر است. یک عدد صحیح یا رشته در قالب: «WIDTHxHEIGHT»
منطقه منطقه زمین‌مکانی تصویر برای رندر کردن. کل تصویر به‌طور پیش‌فرض، یا مرزهای هندسه ارائه‌شده. GeoJSON یا فهرست دوبعدی از حداقل سه مختصات نقطه‌ای که حلقه خطی را تعریف می‌کند
crs تصویر هدف، مثلاً «EPSG:3857». پیش‌فرض‌ها به WGS84 ('EPSG:4326'). رشته
قالب‌بندی قالب ریزعکس را به‌عنوان PNG یا JPEG تعریف می‌کند. قالب PNG پیش‌فرض به‌صورت RGBA پیاده‌سازی می‌شود که در آن کانال آلفا پیکسل‌های معتبر و نامعتبر را نشان می‌دهد که توسط mask() تصویر تعریف شده است. پیکسل‌های نامعتبر شفاف هستند. قالب اختیاری JPEG به‌صورت RGB پیاده‌سازی می‌شود، که در آن پیکسل‌های نامعتبر تصویر در کانال‌های RGB با صفر پر می‌شوند. رشته؛ «png» یا «jpg»

تصویر تک‌باندی به‌طور پیش‌فرض به مقیاس خاکستری تبدیل می‌شود، مگراینکه آرگومان palette ارائه شود. تصویر چندباندی به‌طور پیش‌فرض به تجسم RGB سه باند اول تبدیل می‌شود، مگراینکه آرگومان bands ارائه شود. اگر فقط دو باند ارائه شود، باند اول به قرمز، باند دوم به آبی نگاشت می‌شود و کانال سبز با صفر پر می‌شود.

در زیر مجموعه‌ای از مثال‌ها آورده شده است که ترکیب‌های مختلفی از آرگومان‌های پارامتر getThumbURL() را نشان می‌دهد. برای مشاهده تصاویر کوچک، روی نشانی‌های وب چاپ‌شده هنگام اجرای این اسکریپت کلیک کنید.

ویرایشگر کد (جاوا اسکریپت)

// 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

برای اطلاعات درباره Python API و استفاده از geemap برای توسعه تعاملی، به صفحه محیط 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)