Sentinel-2: Cloud Probability

COPERNICUS/S2_CLOUD_PROBABILITY
Veri Kümesi Kullanılabilirliği
2015-06-27T00:00:00Z–2026-10-15T23:56:09Z
Veri Kümesi Üreticisi
Earth Engine Snippet'i
ee.ImageCollection("COPERNICUS/S2_CLOUD_PROBABILITY")
Yeniden Ziyaret Aralığı
5 gün
Etiketler
cloud copernicus esa eu msi radiance satellite-imagery sentinel
sentinelhub

Açıklama

S2 bulut olasılığı, sentinel2-cloud-detector kitaplığıyla (LightGBM kullanılarak) oluşturulur. Tüm bantlar, gradyan artırma tabanlı algoritma uygulanmadan önce çift doğrusal interpolasyon kullanılarak 10 m çözünürlüğe yükseltilir. Elde edilen 0..1 kayan nokta olasılığı 0..100 olarak ölçeklendirilir ve UINT8 olarak depolanır. Bantların bir kısmının veya tamamının eksik olduğu alanlar maskelenir. Daha yüksek değerlerin bulut veya yüksek düzeyde yansıtıcı yüzeyler (ör. çatılar veya kar) olma olasılığı daha yüksektir.

Sentinel-2; bitki örtüsü, toprak ve su örtüsünün izlenmesinin yanı sıra iç su yollarının ve kıyı bölgelerinin gözlemlenmesi de dahil olmak üzere Copernicus Arazi İzleme çalışmalarını destekleyen, geniş bantlı, yüksek çözünürlüklü, çok spektrumlu bir görüntüleme görevidir.

2. seviye veriler COPERNICUS/S2_SR_HARMONIZED koleksiyonunda bulunabilir. Seviye 1B verileri COPERNICUS/S2_HARMONIZED koleksiyonunda bulunabilir. Bu koleksiyonlardaki öğelerle ilgili ek meta veriler mevcuttur.

Bulut maskesinin nasıl uygulanacağını açıklayan bu eğitime göz atın.

Bantlar

Bantlar

Piksel boyutu: 10 metre (tüm bantlar)

Ad Min. Maks. Piksel Boyutu Açıklama
probability 0 100 10 metre

Pikselin bulutlu olma olasılığı.

Kullanım Şartları

Kullanım Şartları

Sentinel verilerinin kullanımı Copernicus Sentinel Veri Hüküm ve Koşulları'na tabidir.

Earth Engine ile Keşif

Kod Düzenleyici (JavaScript)

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 kurulumu

Python API ve etkileşimli geliştirme için geemap kullanımı hakkında bilgi edinmek üzere Python Ortamı sayfasını inceleyin.

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
Kod Düzenleyici'de aç