안녕하세요? 이번 글은 NOAA CDR OISST v02r01: 최적 보간 해수면 온도 데이터를 소개해 보겠습니다.
NOAA CDR OISST v02r01: Optimum Interpolation Sea Surface Temperature | Earth Engine Data Catalog | Google for Developers
NOAA 1/4도 일일 최적 보간 해수면 온도 (OISST)는 정규 글로벌 그리드에서 다양한 플랫폼 (위성, 선박, 부표)의 편차 보정 관측을 결합하여 구성된 완전한 해양 온도 필드를 제공하며, 간격은 보간으
developers.google.com
OISST 데이터셋
NOAA의 1/4도 일일 최적 보간 해수면 온도(OISST: Optimum Interpolation Sea Surface Temperature)는 전 지구 격자망에서 다양한 플랫폼(위성, 선박, 부이)으로부터 수집된 편향 보정 관측값을 결합하여 구축된 완전한 해수면 온도장을 제공합니다. 이 과정에서 생긴 공백은 보간(interpolation)을 통해 채워집니다.
주요 입력 자료는 고급 초고해상도 방사계(AVHRR: Advanced Very High Resolution Radiometer) 위성 자료이며, 이를 통해 1981년 말부터 현재까지 고해상도의 시·공간적 범위를 포괄할 수 있습니다.
OISST 데이터셋은 하루치 자료가 두 번 처리됩니다.
먼저, 실시간에 가까운 예비 버전이 약 1일 지연으로 배포됩니다. 그 후, 약 14일 지연으로 최종 버전이 배포되며, 이는 예비 버전을 대체합니다. 최종 버전은 추가적인 날짜 자료를 활용하여 평활화(smoothing)를 수행하고, 위도대 편향 보정(zonal bias correction) 도 함께 적용합니다.
geoBoundaries: Political administrative boundaries at Country level (ADM0), v6.0.0 | Earth Engine Data Catalog | Google
geoBoundaries 글로벌 데이터베이스(행정 구역 데이터베이스)는 전 세계 모든 국가의 경계(예: 주, 군)에 대한 온라인 오픈 라이선스 리소스입니다. 현재 195개 UN 회원국, 그린란드, 타이완, 니우에,
developers.google.com
OISST 데이터셋 해수면 온도 시각화
Earth Engine과 geemap 라이브러리를 불러오고, 인증 및 초기화를 수행합니다.
import ee, geemap
# Earth Engine 인증
ee.Authenticate()
# Earth Engine 초기화
ee.Initialize(project='ee-foss4g')
대한민국 경계를 불러오고, 2025년 8월 1일부터 14일까지의 OISST 평균 해수면 온도를 섭씨로 변환해 지도에 시각화합니다.

# 지도 객체
m = geemap.Map(width="800px", height="400px")
# 대한민국 경계
countries = ee.FeatureCollection('WM/geoLab/geoBoundaries/600/ADM0')
kor = countries.filter(ee.Filter.eq('shapeName', 'Korea, South'))
# OISST 데이터셋 (기간 평균)
dataset = (ee.ImageCollection('NOAA/CDR/OISST/V2_1')
.filter(ee.Filter.date('2025-08-01', '2025-08-15')))
sst = dataset.select('sst').mean().multiply(0.01)
# 시각화 파라미터
vis_params = {
'min': -1.8,
'max': 30,
'palette': [
'040274','040281','0502a3','0502b8','0502ce','0502e6',
'0602ff','235cb1','307ef3','269db1','30c8e2','32d3ef',
'3be285','3ff38f','86e26f','3ae237','b5e22e','d6e21f',
'fff705','ffd611','ffb613','ff8b13','ff6e08','ff500d',
'ff0000','de0101','c21301','a71001','911003'
],
}
# 지도 출력
m.addLayer(sst, vis_params, 'OISST')
m.centerObject(kor, 4)
m

대한민국 경계로부터 100km 버퍼 영역을 만들어 해당 지역의 평균 해수면 온도를 계산하고 출력합니다.
# 100km 버퍼 생성
kor_buffer = kor.geometry().buffer(100000)
# 100km 버퍼 영역 평균값 계산
mean_dict = sst.reduceRegion(
reducer=ee.Reducer.mean(),
geometry=kor_buffer,
scale=sst.projection().nominalScale(), # 네이티브 해상도 ≈ 27.8 km
bestEffort=True,
tileScale=2,
maxPixels=1e13
)
# 평균값 가져오기
sst_avg = mean_dict.get('sst').getInfo()
print(f"대한민국 경계 100km 버퍼 내 SST 평균 (°C): {sst_avg:.1f}")