تجسم تصویر، تجسم تصویر

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

پارامترهای تجسم تصویر
پارامتر توضیحات تایپ کنید
باندها فهرستی با کاما از سه نام باند که باید به RGB نگاشت شوند فهرست
دقیقه مقدار(ها) برای نگاشت به 0 شماره یا لیستی از سه عدد، یکی برای هر باند
حداکثر مقدار(های) برای نگاشت به 255 شماره یا لیستی از سه عدد، یکی برای هر باند
به دست آوردن مقدار(هایی) که در آن مقدار هر پیکسل ضرب می شود شماره یا لیستی از سه عدد، یکی برای هر باند
تعصب ارزش(های) برای افزودن به هر DN شماره یا لیستی از سه عدد، یکی برای هر باند
گاما فاکتور(های) تصحیح گاما شماره یا لیستی از سه عدد، یکی برای هر باند
پالت لیست رشته های رنگی به سبک CSS (فقط تصاویر تک باند) لیست رشته های هگزا جدا شده با کاما
کدورت کدورت لایه (0.0 کاملاً شفاف و 1.0 کاملاً مات است) شماره
قالب یا "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');

راه اندازی پایتون

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

import ee
import geemap.core as geemap

کولب (پایتون)

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

راه اندازی پایتون

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

import ee
import geemap.core as geemap

کولب (پایتون)

# 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 در مثال Code Editor روی false تنظیم شده است. این باعث می‌شود وقتی لایه به نقشه اضافه می‌شود، دید آن خاموش باشد. همیشه می توان با استفاده از Layer Manager در گوشه سمت راست بالای نقشه ویرایشگر کد، دوباره آن را روشن کرد.

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

ذخیره پالت های رنگی پیش فرض

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

به عنوان مثال، اگر تصویر شما دارای نواری به نام 'landcover' با سه مقدار 0، 1 و 2 مربوط به کلاس‌های "water"، "forest" و "other" است، می‌توانید ویژگی‌های زیر را تنظیم کنید تا تجسم پیش‌فرض یک رنگ مشخص را برای هر کلاس نشان دهد (مقادیر مورد استفاده در تجزیه و تحلیل تحت تأثیر قرار نمی‌گیرند):

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

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

نقاب زدن

می‌توانید از image.updateMask() برای تعیین کدورت هر پیکسل بر اساس جایی که پیکسل‌ها در یک تصویر ماسک غیرصفر هستند، استفاده کنید. پیکسل های برابر با صفر در ماسک از محاسبات حذف می شوند و کدورت برای نمایش روی 0 تنظیم می شود. مثال زیر از یک آستانه 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');

راه اندازی پایتون

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

import ee
import geemap.core as geemap

کولب (پایتون)

# 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 8 بیتی برای نمایش یا صادرات استفاده کنید. به عنوان مثال، برای تبدیل کامپوزیت با رنگ کاذب و NDWI به تصاویر نمایشگر 3 باند، از موارد زیر استفاده کنید:

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

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

راه اندازی پایتون

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

import ee
import geemap.core as geemap

کولب (پایتون)

image_rgb = image.visualize(bands=['B5', 'B4', 'B3'], max=0.5)
ndwi_rgb = ndwi_masked.visualize(min=0.5, max=1, palette=['00FFFF', '0000FF'])

موزاییک کاری

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

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

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

راه اندازی پایتون

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

import ee
import geemap.core as geemap

کولب (پایتون)

# 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
موزاییک یک کامپوزیت رنگ کاذب لندست 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');

راه اندازی پایتون

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

import ee
import geemap.core as geemap

کولب (پایتون)

# 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 ارائه شده و طول بافر 20000 متر تعیین شده است. در صفحه هندسه درباره هندسه بیشتر بیاموزید.

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

ارائه نقشه های طبقه بندی شده

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

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

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

راه اندازی پایتون

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

import ee
import geemap.core as geemap

کولب (پایتون)

# 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 2012 با استفاده از طبقه بندی IGBP.

توصیفگرهای سبک

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

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

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

راه اندازی پایتون

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

import ee
import geemap.core as geemap

کولب (پایتون)

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)

برای ایجاد یک تصویر تجسم با رمپ رنگی، نوع ColorMap را روی "رمپ" تنظیم کنید. مثال زیر انواع "interval" و "ramp" را برای ارائه یک 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');

راه اندازی پایتون

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

import ee
import geemap.core as geemap

کولب (پایتون)

# 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 ها همچنین برای کشش مقادیر پیکسل برای بهبود تجسم داده های پیوسته مفید هستند. به عنوان مثال، کد زیر نتایج یک کشش خطی دلخواه را با یک 'Normalization' و یک 'Histogram' یکسان سازی می کند:

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

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

راه اندازی پایتون

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

import ee
import geemap.core as geemap

کولب (پایتون)

# 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', ...).
  • مکانیسم‌های کشش کنتراست هیستوگرام و Normalize برای تصاویر ممیز شناور پشتیبانی نمی‌شوند.
  • کدورت فقط زمانی در نظر گرفته می شود که 0.0 (شفاف) باشد. مقادیر کدورت غیر صفر به عنوان کاملاً مات در نظر گرفته می شوند.
  • تعریف OverlapBehavior در حال حاضر نادیده گرفته شده است.
  • مکانیسم ShadedRelief در حال حاضر پشتیبانی نمی شود.
  • مکانیسم ImageOutline در حال حاضر پشتیبانی نمی شود.
  • عنصر هندسه نادیده گرفته می شود.
  • اگر یکسان سازی یا عادی سازی هیستوگرام درخواست شود، تصویر خروجی دارای ابرداده histogram_bandname خواهد بود.

تصاویر بند انگشتی

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

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

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

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

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

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

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

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

راه اندازی پایتون

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

import ee
import geemap.core as geemap

کولب (پایتون)

# 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)