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")
فاصله زمانی بازنگری
‫۵ روز
برچسب‌ها
ابر کوپرنیک سازمان فضایی اروپا اتحادیه اروپا تصویربرداری چندطیفی درخشندگی تصویربرداری ماهواره‌ای سنتینل
sentinelhub

شرح

احتمال ابری بودن S2 با کتابخانه sentinel2-cloud-detector ایجاد می‌شود (بااستفاده از LightGBM). همه باندها بااستفاده از درونیابی دوخطی به وضوح ۱۰ متری نمونه‌برداری می‌شوند قبل‌از اینکه الگوریتم پایه تقویت گرادیان اعمال شود. احتمال نقطه شناور 0..1 حاصل به 0..100 مقیاس‌بندی می‌شود و به‌عنوان UINT8 ذخیره می‌شود. نواحی‌ای که فاقد هریک یا همه باندها هستند پوشانده می‌شوند. مقادیر بالاتر احتمال بیشتری دارد که ابر یا سطوح بسیار بازتابنده باشد (مثلاً پشت‌بام یا برف).

‫Sentinel-2 مأموریت تصویربرداری چندطیفی با وضوح بالا و پوشش گسترده است که از مطالعات پایش زمین Copernicus، ازجمله پایش پوشش گیاهی، خاک، و آب، و همچنین مشاهده آبراه‌های داخلی و مناطق ساحلی پشتیبانی می‌کند.

داده‌های سطح ۲ را می‌توانید در مجموعه COPERNICUS/S2_SR_HARMONIZED پیدا کنید. داده‌های «سطح 1B» را می‌توانید در مجموعه COPERNICUS/S2_HARMONIZED پیدا کنید. فراداده‌های اضافی در دارایی‌های موجود در آن مجموعه‌ها دردسترس است.

این آموزش را ببینید که نحوه اعمال ماسک ابری را توضیح می‌دهد.

باند

باند

اندازه پیکسل: ۱۰ متر (همه باندها)

نام دقیقه Max اندازه پیکسل شرح
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
باز کردن در «ویرایشگر کد»