REMOTE SENSING

Google Earth Engine: Sentinel-2 위성영상의 분광지수 이미지 생성방법 소개

유병혁 2024. 8. 14. 22:39

안녕하세요? 이번 글은 Google Earth Engine에서 Sentinel-2 위성영상의 분광지수 이미지 생성방법을 소개해 보겠습니다. 여기서는 NDBI, NDVI, NDWI 이미지를 생성해 보겠습니다. Sentinel-2 위성영상의 분광지수 관련해서는 다음 링크를 참고하시면 좋겠습니다.

 

Sentinel-2

A repository of custom scripts that can be used with Sentinel-Hub services.

custom-scripts.sentinel-hub.com

Sentinel-2 위성영상은 아래와 같은 밴드 구성을 가지고 있습니다. NDBI(정규시가화지수)는 SWIR(Band11) - NIR(Band8) / SWIR(Band11) + NIR(Band8)로 계산됩니다. GEE에서 해당 공식을 적용해 주면 됩니다.

 

Sentinel-2 Imagery: Normalized Difference Built-Up Index (NDBI)

Sentinel-2, 10m Multispectral, Multitemporal, 13-band images with visual renderings and indices. This Imagery Layer is sourced from the Sentinel-2 on AWS collections and is updated daily with new imagery. This layer is in beta release.

www.arcgis.com

 

s2_image 위성영상으로부터 NDBI 이미지를 생성해 보겠습니다.

# NDBI 계산
ndbi = s2_image.normalizedDifference(['B11', 'B8']).rename('NDBI')

# NDBI layer
Map = geemap.Map(layout={"height": "400px", "width": "800px"})

vis_params = {
    "bands": ["NDBI"],
    "min": -1,
    "max": 1,
    "palette": ['#2c7bb6', '#d9ef8b', '#d73027'],
}
Map.addLayer(ndbi, vis_params, "NDBI")
Map.add_colorbar(
    vis_params, label="NDBI", orientation="vertical", layer_name="ndbi"
)
Map.centerObject(kor.geometry(), 6)
Map

 

NDBI 특성을 이해하기 위해 시가지지역으로 이동해 봤습니다. 아래와 같이 시가지와 비시가지가 구분되는 것을 확인할 수 있습니다.

 

같은 방식으로 NDVI(Normalized Difference Vegetation Index, 정규식생지수)와 NDWI(Normalized Difference Water Index, 정규수분지수)도 아래 코드로 분광지수 이미지를 생성할 수 있습니다.

# NDVI 계산
ndvi = s2_image.normalizedDifference(['B8', 'B4']).rename('NDVI')

# NDWI 계산
ndwi = s2_image.normalizedDifference(['B3', 'B8']).rename('NDWI')