ছবি ভিজ্যুয়ালাইজেশন

অনেকগুলি ee.Image পদ্ধতি আছে যেগুলি ইমেজ ডেটার RGB ভিজ্যুয়াল প্রতিনিধিত্ব তৈরি করে, যেমন: visualize(), getThumbURL(), getMap(), getMapId() (Colab Folium ম্যাপ ডিসপ্লেতে ব্যবহার করা হয়) এবং, Map.addLayer() (Code Editor ম্যাপ ডিসপ্লেতে ব্যবহার করা হয়, Python-এর জন্য উপলভ্য নয়)। ডিফল্ট হিসেবে এই পদ্ধতিগুলি প্রথম তিনটি ব্যান্ডকে যথাক্রমে লাল, সবুজ ও নীল রঙে অ্যাসাইন করে। ডিফল্ট স্ট্রেচ ব্যান্ডে থাকা ডেটার ধরনের উপর নির্ভর করে (যেমন, [০, ১]-এ ফ্লোট স্ট্রেচ করা হয়, ১৬-বিট ডেটা সম্ভাব্য মানের সম্পূর্ণ রেঞ্জে স্ট্রেচ করা হয়), যা উপযুক্ত হতেও পারে আবার নাও হতে পারে। পছন্দসই ভিজ্যুয়ালাইজেশন এফেক্ট পেতে, আপনি ভিজ্যুয়ালাইজেশন প্যারামিটার প্রদান করতে পারেন:

ইমেজ ভিজ্যুয়ালাইজেশন প্যারামিটার
প্যারামিটার বিবরণ ধরন
ব্যান্ড RGB-তে ম্যাপ করার জন্য কমা দিয়ে আলাদা করা তিনটি ব্যান্ডের নামের তালিকা তালিকা
মিনিট 0-তে ম্যাপ করার জন্য ভ্যালু সংখ্যা বা তিনটি সংখ্যার তালিকা, প্রতিটি ব্যান্ডের জন্য একটি করে
সর্বাধিক ২৫৫-এ ম্যাপ করার জন্য ভ্যালু সংখ্যা বা তিনটি সংখ্যার তালিকা, প্রতিটি ব্যান্ডের জন্য একটি করে
লাভ যে ভ্যালু দিয়ে প্রতিটি পিক্সেল ভ্যালু গুণ করতে হবে সংখ্যা বা তিনটি সংখ্যার তালিকা, প্রতিটি ব্যান্ডের জন্য একটি করে
পক্ষপাত প্রতিটি DN-এ যোগ করার জন্য ভ্যালু সংখ্যা বা তিনটি সংখ্যার তালিকা, প্রতিটি ব্যান্ডের জন্য একটি করে
গামা গামা কারেকশন ফ্যাক্টর সংখ্যা বা তিনটি সংখ্যার তালিকা, প্রতিটি ব্যান্ডের জন্য একটি করে
প্যালেট 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 ফলস কালার কম্পোজিট।

রঙ প্যালেট

রঙিন ছবির একটি ব্যান্ড দেখাতে, CSS-স্টাইল কালার স্ট্রিংয়ের তালিকা দ্বারা উপস্থাপিত কালার র‍্যাম্পের সাথে palette প্যারামিটার সেট করুন। (আরও তথ্যের জন্য এই রেফারেন্স দেখুন)। নিম্নলিখিত উদাহরণে দেখানো হয়েছে যে কীভাবে সায়ান ('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' নামের একটি ব্যান্ড থাকে যার তিনটি ভ্যালু 0, 1 এবং 2 যথাক্রমে 'জল', 'জঙ্গল' এবং 'অন্যান্য' ক্লাসকে নির্দেশ করে, তাহলে আপনি নিম্নলিখিত প্রপার্টি সেট করে ডিফল্ট ভিজ্যুয়ালাইজেশন তৈরি করতে পারেন যা প্রতিটি ক্লাসের জন্য একটি নির্দিষ্ট রঙ দেখাবে (বিশ্লেষণে ব্যবহৃত ভ্যালুগুলি প্রভাবিত হবে না):

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

ভিজ্যুয়ালাইজেশন ছবি

ডিসপ্লে বা এক্সপোর্ট করার জন্য কোনও ছবিকে ৮-বিট RGB ছবিতে কনভার্ট করতে image.visualize() পদ্ধতি ব্যবহার করুন। যেমন, ফলস-কালার কম্পোজিট এবং 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() পদ্ধতি ইনপুট সংগ্রহে তাদের ক্রম অনুসারে আউটপুট ছবিতে লেয়ার রেন্ডার করে। নিম্নলিখিত উদাহরণে মাস্ক করা NDWI এবং ফলস কালার কম্পোজিটকে একত্রিত করতে এবং একটি নতুন ভিজ্যুয়ালাইজেশন পেতে mosaic() ব্যবহার করা হয়েছে:

কোড এডিটর (জাভাস্ক্রিপ্ট)

// 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
IGBP ক্লাসিফিকেশন ব্যবহার করে MODIS 2012 ল্যান্ড কভার।

স্টাইল করা লেয়ার ডেসক্রিপ্টর

আপনি স্টাইল করা লেয়ার ডেসক্রিপ্টর (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)

Earth Engine-এ SLD ব্যবহার করার ব্যাপারে কিছু গুরুত্বপূর্ণ বিষয়:

  • OGC SLD 1.0 এবং OGC SE 1.1 কাজ করে।
  • পাস করা XML ডকুমেন্ট সম্পূর্ণ হতে পারে অথবা শুধু RasterSymbolizer এলিমেন্ট এবং ডাউন হতে পারে।
  • ব্যান্ডগুলি তাদের Earth Engine নাম বা সূচক ('১', '২', ...) দ্বারা বেছে নেওয়া যেতে পারে।
  • ফ্লোটিং পয়েন্ট ইমেজারির জন্য হিস্টোগ্রাম ও নরম্যালাইজ কনট্রাস্ট স্ট্রেচ মেকানিজম কাজ করে না।
  • অস্বচ্ছতা শুধুমাত্র তখনই বিবেচনা করা হয় যখন এটি ০.০ (স্বচ্ছ) হয়। শূন্য নয় এমন অস্বচ্ছতা ভ্যালুকে সম্পূর্ণ অস্বচ্ছ হিসেবে বিবেচনা করা হয়।
  • OverlapBehavior-এর সংজ্ঞা বর্তমানে উপেক্ষা করা হয়েছে।
  • ShadedRelief মেকানিজম বর্তমানে কাজ করে না।
  • ImageOutline মেকানিজম বর্তমানে কাজ করে না।
  • জ্যামিতি এলিমেন্ট এড়িয়ে যাওয়া হয়েছে।
  • হিস্টোগ্রাম ইকুয়ালাইজেশন বা নরমালাইজেশনের অনুরোধ করা হলে, আউটপুট ছবিতে histogram_bandname মেটাডেটা থাকবে।

থাম্বনেল ছবি

ee.Image অবজেক্টের জন্য PNG বা JPEG থাম্বনেল ছবি জেনারেট করতে ee.Image.getThumbURL() পদ্ধতি ব্যবহার করুন। getThumbURL()-এ কল করার মাধ্যমে শেষ হওয়া এক্সপ্রেশনের ফলাফল প্রিন্ট করলে, URL প্রিন্ট হয়। URL-এ গেলে Earth Engine সার্ভার অনুরোধ করা থাম্বনেল তৈরি করার জন্য কাজ শুরু করে দেয়। প্রসেসিং সম্পূর্ণ হলে ছবিটি ব্রাউজারে দেখানো হয়। ছবির উপর ডানদিকের বোতামে ক্লিক করে সংশ্লিষ্ট মেনু থেকে উপযুক্ত বিকল্প বেছে নিয়ে এটি ডাউনলোড করা যাবে।

thumbnail_in_browser
SRTM ডিজিটাল এলিভেশন মডেল ব্রাউজারে PNG থাম্বনেল হিসেবে দেখানো হয়েছে।

getThumbURL() পদ্ধতিতে প্যারামিটার অন্তর্ভুক্ত থাকে, যা উপরে ভিজ্যুয়ালাইজেশন প্যারামিটার টেবিলে বর্ণনা করা হয়েছে। এছাড়াও, এটি ঐচ্ছিক dimensions, region এবং crs আর্গুমেন্ট নেয় যা থাম্বনেলের স্থানিক ব্যাপ্তি, সাইজ এবং ডিসপ্লে প্রজেকশন কন্ট্রোল করে।

সম্পর্কে নোট
ee.Image.getThumbURL()-এর জন্য অতিরিক্ত প্যারামিটার, সাথে ফর্ম্যাট
প্যারামিটার বিবরণ ধরন
আকৃতি পিক্সেল ইউনিটে থাম্বনেলের ডাইমেনশন। একটি পূর্ণসংখ্যা প্রদান করা হলে, এটি ছবির বড় অ্যাসপেক্ট ডাইমেনশনের সাইজ নির্ধারণ করে এবং ছোট ডাইমেনশনকে আনুপাতিকভাবে স্কেল করে। বড় ছবির অ্যাস্পেক্ট ডাইমেনশনের জন্য ডিফল্ট হিসেবে ৫১২ পিক্সেল সেট করা থাকে। এই ফর্ম্যাটে একটি পূর্ণসংখ্যা বা স্ট্রিং: 'WIDTHxHEIGHT'
অঞ্চল রেন্ডার করার জন্য ছবির জিওস্পেশিয়াল অঞ্চল। ডিফল্ট হিসেবে সম্পূর্ণ ছবি বা প্রদত্ত জ্যামিতির সীমা। GeoJSON বা অন্তত তিনটি পয়েন্ট কোঅর্ডিনেটের 2-D তালিকা যা একটি লিনিয়ার রিংকে সংজ্ঞায়িত করে
crs টার্গেট প্রোজেকশন যেমন, 'EPSG:3857'। ডিফল্ট হিসেবে WGS84 ('EPSG:4326') সেট করা থাকে। স্ট্রিং
ফর্ম্যাট থাম্বনেল ফর্ম্যাট PNG বা JPEG হিসেবে নির্ধারণ করে। ডিফল্ট PNG ফর্ম্যাট RGBA হিসেবে প্রয়োগ করা হয়, যেখানে আলফা চ্যানেল সঠিক ও ভুল পিক্সেল দেখায়, যা ছবির mask() দ্বারা নির্ধারিত হয়। ভুল পিক্সেলগুলি ট্রান্সপারেন্ট। ঐচ্ছিক JPEG ফর্ম্যাট RGB হিসেবে প্রয়োগ করা হয়, যেখানে ভুল ইমেজ পিক্সেল RGB চ্যানেল জুড়ে শূন্য দিয়ে পূরণ করা হয়। স্ট্রিং; 'png' অথবা 'jpg'

palette আর্গুমেন্ট প্রদান করা না হলে, সিঙ্গেল-ব্যান্ড ছবি ডিফল্ট হিসেবে গ্রেস্কেলে দেখানো হবে। bands আর্গুমেন্ট প্রদান করা না হলে, মাল্টি-ব্যান্ড ছবি ডিফল্ট হিসেবে প্রথম তিনটি ব্যান্ডের RGB ভিজ্যুয়ালাইজেশন দেখাবে। শুধুমাত্র দুটি ব্যান্ড প্রদান করা হলে, প্রথম ব্যান্ডটি লাল, দ্বিতীয়টি নীল এবং সবুজ চ্যানেলটি শূন্য দিয়ে পূরণ করা হবে।

নিচে 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);

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)