Sentinel-2: Cloud Probability

COPERNICUS/S2_CLOUD_PROBABILITY
ডেটাসেটের উপলভ্যতা
2015-06-27T00:00:00Z–2026-10-11T00:46:39Z
ডেটাসেট প্রোডিউসার
Earth Engine স্নিপেট
ee.ImageCollection("COPERNICUS/S2_CLOUD_PROBABILITY")
পর্যালোচনা করার ইন্টারভ্যাল
৫ দিন
ট্যাগ
cloud copernicus esa eu msi radiance satellite-imagery sentinel
sentinelhub

বিবরণ

S2 ক্লাউড প্রোবাবিলিটি sentinel2-cloud-detector লাইব্রেরি (LightGBM ব্যবহার করে) দিয়ে তৈরি করা হয়। গ্রেডিয়েন্ট বুস্ট বেস অ্যালগরিদম প্রয়োগ করার আগে, সমস্ত ব্যান্ডকে বিলিনিয়ার ইন্টারপোলেশন ব্যবহার করে ১০ মিটার রেজোলিউশনে আপস্যাম্পেল করা হয় । ফলাফল হিসেবে পাওয়া 0..1 ফ্লোটিং পয়েন্ট সম্ভাবনা 0..100-এ স্কেল করা হয় এবং UINT8 হিসেবে স্টোর করা হয়। যেসব জায়গায় কোনও বা সব ব্যান্ড নেই সেগুলি মাস্ক করা হয়। ভ্যালু বেশি হলে, মেঘ বা অত্যন্ত প্রতিফলিত সারফেস (যেমন, ছাদ বা বরফ) হওয়ার সম্ভাবনা বেশি থাকে।

Sentinel-2 হল একটি ওয়াইড-সোয়থ, হাই-রেজোলিউশন, মাল্টি-স্পেকট্রাল ইমেজিং মিশন যা Copernicus Land Monitoring সংক্রান্ত স্টাডিকে সাহায্য করে, এর মধ্যে রয়েছে গাছপালা, মাটি ও জল সংক্রান্ত কভারের মনিটরিং, সেইসাথে ইনল্যান্ড ওয়াটারওয়ে ও উপকূলীয় এলাকার পর্যবেক্ষণ।

Level-2 ডেটা কালেকশন COPERNICUS/S2_SR_HARMONIZED-এ পাওয়া যাবে। Level-1B ডেটা কালেকশন COPERNICUS/S2_HARMONIZED-এ পাওয়া যাবে। এইসব কালেকশনের অ্যাসেটে অতিরিক্ত মেটাডেটা উপলভ্য।

ক্লাউড মাস্ক কীভাবে প্রয়োগ করতে হয় তা ব্যাখ্যা করে এই টিউটোরিয়াল দেখুন।

ব্যান্ড

ব্যান্ড

পিক্সেল সাইজ: ১০ মিটার (সব ব্যান্ড)

নাম ন্যূনতম সর্বাধিক পিক্সেলের সাইজ বিবরণ
probability 0 100 ১০ মিটার

পিক্সেল মেঘলা হওয়ার সম্ভাবনা।

ব্যবহারের শর্তাদি

ব্যবহারের শর্তাবলী

Sentinel ডেটার ব্যবহার Copernicus Sentinel ডেটার নিয়ম ও শর্তাবলী দ্বারা পরিচালিত হয়।

Earth Engine-এর সাহায্যে এক্সপ্লোর করা

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

var s2Sr = ee.ImageCollection('COPERNICUS/S2_SR_HARMONIZED');
var s2Clouds = ee.ImageCollection('COPERNICUS/S2_CLOUD_PROBABILITY');

var START_DATE = ee.Date('2019-01-01');
var END_DATE = ee.Date('2019-03-01');
var MAX_CLOUD_PROBABILITY = 65;
var region =
    ee.Geometry.Rectangle({coords: [-76.5, 2.0, -74, 4.0], geodesic: false});
Map.setCenter(-75, 3, 12);

function maskClouds(img) {
  var clouds = ee.Image(img.get('cloud_mask')).select('probability');
  var isNotCloud = clouds.lt(MAX_CLOUD_PROBABILITY);
  return img.updateMask(isNotCloud);
}

// The masks for the 10m bands sometimes do not exclude bad data at
// scene edges, so we apply masks from the 20m and 60m bands as well.
// Example asset that needs this operation:
// COPERNICUS/S2_CLOUD_PROBABILITY/20190301T000239_20190301T000238_T55GDP
function maskEdges(s2_img) {
  return s2_img.updateMask(
      s2_img.select('B8A').mask().updateMask(s2_img.select('B9').mask()));
}

// Filter input collections by desired data range and region.
var criteria = ee.Filter.and(
    ee.Filter.bounds(region), ee.Filter.date(START_DATE, END_DATE));
s2Sr = s2Sr.filter(criteria).map(maskEdges);
s2Clouds = s2Clouds.filter(criteria);

// Join S2 SR with cloud probability dataset to add cloud mask.
var s2SrWithCloudMask = ee.Join.saveFirst('cloud_mask').apply({
  primary: s2Sr,
  secondary: s2Clouds,
  condition:
      ee.Filter.equals({leftField: 'system:index', rightField: 'system:index'})
});

var s2CloudMasked =
    ee.ImageCollection(s2SrWithCloudMask).map(maskClouds).median();
var rgbVis = {min: 0, max: 3000, bands: ['B4', 'B3', 'B2']};

Map.addLayer(
    s2CloudMasked, rgbVis, 'S2 SR masked at ' + MAX_CLOUD_PROBABILITY + '%',
    true);

Python সেট-আপ

Python API এবং ইন্ট্যার‍্যাক্টিভ ডেভেলপমেন্টের জন্য geemap ব্যবহার করা সংক্রান্ত তথ্যের জন্য Python এনভায়রনমেন্ট পৃষ্ঠা দেখুন।

import ee
import geemap.core as geemap

Colab (Python)

s2_sr = ee.ImageCollection('COPERNICUS/S2_SR_HARMONIZED')
s2_clouds = ee.ImageCollection('COPERNICUS/S2_CLOUD_PROBABILITY')

start_date = ee.Date('2019-01-01')
end_date = ee.Date('2019-03-01')
max_cloud_probability = 65
region = ee.Geometry.Rectangle(
    coords=[-76.5, 2.0, -74, 4.0], geodesic=False, proj='EPSG:4326'
)


def maskClouds(img):
  clouds = ee.Image(img.get('cloud_mask')).select('probability')
  is_not_cloud = clouds.lt(max_cloud_probability)
  return img.updateMask(is_not_cloud)


# The masks for the 10m bands sometimes do not exclude bad data at
# scene edges, so we apply masks from the 20m and 60m bands as well.
# Example asset that needs this operation:
# COPERNICUS/S2_CLOUD_PROBABILITY/20190301T000239_20190301T000238_T55GDP
def maskEdges(s2_img):
  return s2_img.updateMask(
      s2_img.select('B8A').mask().updateMask(s2_img.select('B9').mask())
  )


# Filter input collections by desired data range and region.
criteria = ee.Filter.And(
    ee.Filter.bounds(region), ee.Filter.date(start_date, end_date)
)
s2_sr = s2_sr.filter(criteria).map(maskEdges)
s2_clouds = s2_clouds.filter(criteria)

# Join S2 SR with cloud probability dataset to add cloud mask.
s2_sr_with_cloud_mask = ee.Join.saveFirst('cloud_mask').apply(
    primary=s2_sr,
    secondary=s2_clouds,
    condition=ee.Filter.equals(
        leftField='system:index', rightField='system:index'
    ),
)

s_2_cloud_masked = (
    ee.ImageCollection(s2_sr_with_cloud_mask).map(maskClouds).median()
)

rgb_vis = {'min': 0, 'max': 3000, 'bands': ['B4', 'B3', 'B2']}

m = geemap.Map()
m.set_center(-75, 3, 12)
m.add_layer(
    s_2_cloud_masked,
    rgb_vis,
    'S2 SR masked at ' + str(max_cloud_probability) + '%',
    True,
)
m
কোড এডিটরে খুলুন