Sentinel-2: Cloud Probability

COPERNICUS/S2_CLOUD_PROBABILITY
데이터 세트 제공
2015-06-27T00:00:00Z–2026-03-25T02:25:49Z
데이터 세트 출처
Earth Engine 스니펫
ee.ImageCollection("COPERNICUS/S2_CLOUD_PROBABILITY")
재관측 간격
5일
태그
클라우드 코페르니쿠스 ESA EU MSI 복사휘도 위성 이미지 sentinel
sentinelhub

설명

S2 클라우드 확률은 sentinel2-cloud-detector 라이브러리 (LightGBM 사용)로 생성됩니다. 모든 대역은 경사 부스트 기본 알고리즘이 적용되기 전에 쌍선형 보간법을 사용하여 10m 해상도로 업샘플링됩니다. 결과 0..1 부동 소수점 확률은 0..100으로 조정되고 UINT8로 저장됩니다. 대역이 일부 또는 전부 누락된 영역은 마스크 처리됩니다. 값이 높을수록 클라우드 또는 반사율이 높은 표면(예: 지붕 또는 눈)일 가능성이 높습니다.

Sentinel-2는 넓은 관측 폭과 고해상도를 갖춘 다중 스펙트럼 이미징 임무로, 식생, 토양, 수역 모니터링을 포함하여 내륙 수로 및 해안 지역 관측 등 코페르니쿠스 지표면 모니터링 연구를 지원합니다.

수준 2 데이터는 컬렉션 COPERNICUS/S2_SR_HARMONIZED에서 확인할 수 있습니다. 수준 1B 데이터는 컬렉션 COPERNICUS/S2_HARMONIZED에서 확인할 수 있습니다. 추가 메타데이터는 이러한 컬렉션의 애셋에서 사용할 수 있습니다.

클라우드 마스크를 적용하는 방법을 설명하는 이 가이드 를 참고하세요.

대역

대역

픽셀 크기: 10m (모든 대역)

이름 최소 최대 픽셀 크기 설명
probability 0 100 10미터

픽셀이 흐릴 확률입니다.

이용약관

이용약관

Sentinel 데이터 사용에는 Copernicus Sentinel 데이터 이용약관이 적용됩니다.

Earth Engine으로 탐색

코드 편집기(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);
코드 편집기에서 열기