데이터 프로젝트/송도 열섬효과 및 계절별 에너지 소비 시뮬레이션

[3] GEE 기반 도시 열환경 분석: NDVI·LST 데이터 수집 및 Python 처리

항해사.K 2025. 5. 8. 20:59

1. GEE(Google Earth Engine)란 무엇인가?

1) 위성 데이터 분석 플랫폼

Google Earth Engine(GEE)은 구글에서 제공하는 대규모 위성 영상 및 지리정보 처리 플랫폼입니다.
MODIS, Landsat, Sentinel-2와 같은 공개 위성 데이터를 웹 브라우저에서 불러오고, 분석하고, 이미지로 저장할 수 있습니다.

  • 웹 기반 – 별도 설치 없이 사용 가능
  • JavaScript 기반 스크립트 환경 제공
  • NDVI, LST 등의 계산 및 시계열 분석 가능

2) 사용 배경

프로젝트를 시작하며 다음과 같은 의문이 있었습니다.
“송도는 해안도시인데 왜 여름에도 더울까?”

이 질문에 답하려면 지표면 온도(LST)식생지수(NDVI)와 같은 숫자 기반의 공간 데이터가 필요했습니다.
하지만 해당 데이터를 수집·전처리하기 위해서는 복잡한 과정이 필요했고, 이를 간단하게 처리할 수 있는 도구로 GEE를 선택했습니다.

2. GEE를 활용한 위성 데이터 수집

1) 수집한 데이터 목록

항목 출처 설명
LST MODIS/006/MOD11A1 지표면 온도 데이터 (일별, 1km 해상도)
NDVI MODIS/006/MOD13A1 식생지수 (16일 간격, 500m 해상도)

2) GEE에서 GeoTIFF 내보내기

  1. 관심지역(송도)을 사각형 영역으로 지정
  2. NDVI / LST 평균값 산출
  3. GeoTIFF 포맷으로 Google Drive에 내보내기
    ※ Windows에서는 로컬 저장이 어려워 Colab에서 실행
  4. QGIS 및 Python에서 후속 분석에 활용

3. Python을 활용한 GeoTIFF 해석

1) 분석 준비: 필요한 패키지 및 데이터 구조

GEE에서 받은 GeoTIFF는 단순한 이미지가 아닌 좌표 + 픽셀 값이 포함된 공간 데이터입니다.
이를 Python의 rasterio, geopandas 패키지를 활용하여 분석하였습니다.

import rasterio
import pandas as pd
from shapely.geometry import Point

2) 분석 격자 생성: 송도 영역 설정

# 분석 범위: 약 6km x 4km
xmin, xmax = 126.60, 126.68
ymin, ymax = 37.37, 37.41
interval = 0.005  # 500m 간격

def frange(start, stop, step):
    while start < stop:
        yield round(start, 6)

points = []
for lon in frange(xmin, xmax, interval):
    for lat in frange(ymin, ymax, interval):
        points.append({'lon': lon, 'lat': lat, 'geometry': Point(lon, lat)})

3) GeoTIFF에서 NDVI/LST 값 추출

import geopandas as gpd

gdf = gpd.GeoDataFrame(points, crs="EPSG:4326")

def get_value(tiff_path, lon, lat):
    with rasterio.open(tiff_path) as src:
        for val in src.sample([(lon, lat)]):
            return val[0]

gdf["ndvi"] = gdf.apply(lambda row: get_value("songdo_ndvi.tif", row.lon, row.lat), axis=1)
gdf["lst"] = gdf.apply(lambda row: get_value("songdo_lst.tif", row.lon, row.lat), axis=1)

4) 결과 저장

gdf.to_file("ndvi_lst_points.geojson", driver="GeoJSON")

4. 요약 및 활용 가능성

1) 분석 결과 정리

이 과정을 통해 송도 지역 전역의 각 지점별 NDVI 및 지표면 온도 값을 확보할 수 있었습니다.
해당 데이터는 QGIS에서의 시각화, Python 기반 통계 분석 등 다양한 후속 활용이 가능합니다.

2) GEE의 의의

GEE는 단순히 위성 데이터를 시각화하는 도구를 넘어서, “도시가 왜 덥고 어디가 시원한지”를 정량적으로 설명할 수 있는 분석 도구였습니다.