Moments/GIS

[QGIS] Landsat 8/9 활용 1편: NDVI 추출하기 🌿 (Landsat Band 소개/위성이미지 다운로드/래스터 계산기)

행복한 메타몽 2026. 3. 4. 00:35

이번 포스트는 NDVI(Normalized Difference Vegetation Index), 정규화 식생지수를 QGIS에서 추출하는 전 과정을 정리해 보았다.
데이터 다운로드부터 USGS EarthExplorer 사용법, Landsat 밴드 이해, QGIS 래스터 계산기까지 정리할 예정이니 래스터 분석이 처음이라면 차근차근 따라오면 된다. 레츠꼬 🌿

 


 

1. Landsat 위성과 밴드 이해하기

NDVI를 계산하려면 NIR 밴드와 Red 밴드가 필요한데, 이걸 제공하는 대표적인 무료 위성이 Landsat이다.
Landsat은 USGS(미국지질조사국)NASA가 공동으로 운영하는 지구관측 위성 시리즈로 1972년부터 지금까지 지구 전역의 다중 분광 영상을 무료로 제공하고 있다.

 

아래 그림은 Landsat 시리즈별 분광 밴드 비교표다. 위성마다 밴드 번호가 다르기 때문에 어떤 위성을 쓰느냐에 따라 NDVI 계산에 쓰는 밴드 번호가 달라진다.

Landsat 시리즈별 분광 밴드 비교표 (출처: USGS)
Landsat 시리즈별 분광 밴드 비교표 (출처: USGS)

 

 

이 글에서 사용할 Landsat 8/9 OLI의 밴드 구성은 아래와 같다.

 

Landsat 8 OLI/TIRS 밴드 상세 정보 (출처: USGS)
Landsat 8 OLI/TIRS 밴드 상세 정보 (출처: USGS)

 

NDVI 계산에 필요한 밴드는 두 개다.
Band 4 (Red): 파장 0.64~0.67 µm, 해상도 30m
Band 5 (NIR, Near Infrared): 파장 0.85~0.88 µm, 해상도 30m

 

 

2. L1 vs L2 — 어떤 데이터를 받아야 할까?

EarthExplorer에서 데이터를 받을 때 Level-1(L1)Level-2(L2) 중 선택해야 하는데, 이 차이를 알고 가야 한다.

 

구분 Level-1 (L1) Level-2 (L2)
처리 단계 기하 보정만 완료 기하 보정 + 대기 보정 완료
반사율 단위 DN (Digital Number, 원시값) 지표면 반사율 (Surface Reflectance)
지수 계산 시 추가 변환 과정 필요 바로 계산 가능 ✅
파일명 접두어 _B4.TIF, _B5.TIF _SR_B4.TIF, _SR_B5.TIF

 

L2는 대기 보정(Atmospheric Correction)이 완료된 지표면 반사율(Surface Reflectance) 데이터다. 대기 중 수증기, 에어로졸 등의 영향을 제거해서 지표면 실제 반사율에 가깝게 만든 것이다.
NDVI처럼 밴드 간 비율을 계산하는 지수를 구할 때는 L2 데이터를 쓰는 게 좋다. 이 글에서도 L2 데이터를 사용한다.

 

 

3. USGS EarthExplorer에서 Landsat 데이터 다운로드

👉 USGS EarthExplorer 바로가기

 

① 회원가입 및 로그인
EarthExplorer에서 데이터를 다운로드하려면 USGS 계정이 필요하다. 접속 후 우측 상단 Login을 클릭하고, 계정이 없으면 Create New Account로 무료 가입하면 된다.

USGS EarthExplorer 메인 화면 — Search Criteria 탭
USGS EarthExplorer 메인 화면

 

USGS EROS Registration System 로그인 화면
USGS EROS Registration System

 

 

② 검색 지역 설정
로그인 후 Search Criteria 탭에서 분석하고 싶은 지역을 설정한다. 지도를 직접 클릭해서 폴리곤을 그리거나, 좌표를 직접 입력해도 된다.

arthExplorer 지역 설정 — 서울/수도권 중심으로 지도 이동
EarthExplorer 지역 설정

 


아래처럼 Use Map을 누르면 현재 지도 영역 네 꼭짓점 좌표로 분석 범위를 설정할 수 있다.

Use Map 클릭
Use Map 클릭

 

 

③ 운량(Cloud Cover) 설정
지역 설정이 끝나면 Cloud Cover 탭에서 운량 범위를 설정한다. 구름이 많으면 분석에 방해가 되므로 0~20%로 필터링하는 게 좋다. 설정 후 Data Sets 버튼을 클릭한다.

Cloud Cover 탭 → 운량 0~20% 설정 후 Data Sets 이동
Cloud Cover 탭 → 운량 0~20% 설정 후 Data Sets 이동

 

 

④ 데이터셋 선택
Data Sets 탭에서 Landsat 카테고리를 펼치고 Landsat Collection 2 Level-2 안에 있는 Landsat 8-9 OLI/TIRS C2 L2를 체크하면 된다.
L2가 포함된 항목을 선택해야 대기보정 완료된 Surface Reflectance 데이터를 받을 수 있다.

Data Sets 탭 → Landsat Collection 2 Level-2 > Landsat 8-9 OLI/TIRS C2 L2 선택
Data Sets 탭 → Landsat Collection 2 Level-2 > Landsat 8-9 OLI/TIRS C2 L2 선택

 

 

⑤ 검색 결과 확인 및 다운로드
Results 탭으로 이동하면 조건에 맞는 Landsat 영상 목록이 나온다. 발바닥 아이콘을 누르면 지도 위에 각 영상의 footprint(촬영 범위)가 표시되므로 원하는 영역을 커버하는 장면을 골라 다운로드 버튼을 클릭한다.

Results 탭 → Landsat 8-9 OLI/TIRS 검색 결과
Results 탭 → Landsat 8-9 OLI/TIRS 검색 결과

 

다운로드 아이콘 클릭 시 Download Options 팝업이 열린다. Level-2 Surface Reflectance Bands 항목에서 Download All Files Now를 클릭하거나 개별 파일을 선택해 받을 수 있다.

Download Options 팝업 → Level-2 Surface Reflectance Bands 선택
Download Options 팝업 → Level-2 Surface Reflectance Bands 선택

 

전체 번들은 약 800MB 이상이므로 필요한 밴드만 받아도 된다. 하지만 어차피 다운로드하는 김에 다 받는 게 좋다. (나중에 어떤 밴드가 필요해질지 모르기 때문..)

Product Download Options 팝업
Product Download Options 팝업

 

 

4. 다운로드 파일 구조 이해하기

압축을 풀면 여러 파일이 들어 있다. 파일명 규칙은 LC09_L2SP_116034_20260216_20260217_02_T1_SR_B4.TIF 와 같은 식이다.

  • 파일명 구성:
    LC09 → Landsat 9 / L2SP → Level-2 Surface Reflectance Product / 116034 → Path/Row / 20260216 → 촬영 날짜 / SR_B4 → Surface Reflectance Band 4

 

NDVI 계산에 필요한 파일은 딱 두 개다.
_SR_B4.TIF (Red 밴드)와 _SR_B5.TIF (NIR 밴드)

Finder에서 다운로드 폴더 → SR_B4.TIF와 SR_B5.TIF 확인
Finder에서 다운로드 폴더 → SR_B4.TIF와 SR_B5.TIF 확인

 

 

5. NDVI(Normalized Difference Vegetation Index)란?

NDVI(Normalized Difference Vegetation Index)는 위성 영상에서 식생(녹지)의 밀도와 건강 상태를 수치화한 지수다.
수식은 아래와 같다.

 

$$\text{NDVI} = \frac{\text{NIR} - \text{Red}}{\text{NIR} + \text{Red}}$$

 

여기서 NIR은 근적외선(Near Infrared) 밴드, Red는 적색광 밴드를 의미한다.
식물은 엽록소 때문에 적색광은 흡수하고 근적외선은 강하게 반사하는 특성이 있다. 그래서 NIR 반사율이 높고 Red 반사율이 낮을수록 NDVI 값이 높아지고 식생이 풍부하다는 의미다.

 

Landsat 8/9 기준으로 밴드 번호를 대입하면 아래와 같다.

 

$$\text{NDVI} = \frac{\text{Band5} - \text{Band4}}{\text{Band5} + \text{Band4}}$$

 

NDVI 값의 범위는 -1 ~ +1이며, 일반적인 해석은 아래와 같다.

 

NDVI 값 범위 의미
0.6 ~ 1.0 울창한 산림, 밀집 식생
0.3 ~ 0.6 일반 식생 (농경지, 초지)
0.1 ~ 0.3 희박한 식생, 관목
0 ~ 0.1 나지, 암반, 모래
음수 (~0) 수체(강, 호수), 구름, 눈

 

 

6. QGIS에서 밴드 불러오기

QGIS를 열고 SR_B4.TIF와 SR_B5.TIF 파일을 드래그 앤 드롭으로 불러온다.

불러오면서 헷갈리지 않게 이름을 Band4 (Red) Band5 (NIR)로 바꿔줬다. 두 밴드가 동일한 지역을 커버하는지 확인하면 된다.

QGIS에서 Band4(Red)와 Band5(NIR) 불러오기
QGIS에서 Band4(Red)와 Band5(NIR) 불러오기

 

 

7. 래스터 계산기로 NDVI 계산하기

QGIS 상단 메뉴에서 래스터(Raster) → 래스터 계산기(Raster Calculator)를 클릭한다.

QGIS 상단 메뉴 → 래스터 > 래스터 계산기 클릭
QGIS 상단 메뉴 → 래스터 > 래스터 계산기 클릭

 

 

래스터 계산기 창이 열리면 아래 표현식을 입력한다.

 

$$\text{NDVI} = \frac{\text{"Band5 (NIR)@1"} - \text{"Band4 (Red)@1"}}{\text{"Band5 (NIR)@1"} + \text{"Band4 (Red)@1"}}$$

 

("Band5 (NIR)@1" - "Band4 (Red)@1") / ("Band5 (NIR)@1" + "Band4 (Red)@1")

 

@1은 해당 래스터 파일의 첫 번째 밴드를 의미한다. 단일 밴드 TIF 파일을 불러왔을 때는 항상 @1이라고 이해하면 된다.
산출 레이어 경로를 설정하고 OK를 누르면 계산이 시작된다.

QGIS 래스터 계산기 → NDVI 수식 입력 및 산출 레이어 경로 설정
QGIS 래스터 계산기 → NDVI 수식 입력 및 산출 레이어 경로 설정

 

 

8. NDVI 결과 확인 및 색상 적용

계산이 완료되면 NDVI 레이어가 추가된다. 처음에는 흑백으로 표시된다.

NDVI 계산 완료 — 흑백 래스터로 표시된 초기 결과 (값 범위 -0.24 ~ 0.84)
NDVI 계산 완료

 

 

색상을 입히면 식생 분포를 훨씬 직관적으로 확인할 수 있다. NDVI 레이어 선택 → 속성창 → Symbology 탭에서 렌더링 타입을 단일 밴드 유사색상(Singleband pseudocolor)으로 변경한다.
색상표는 내가 정의한 그래디언트로 지정했는데, 자주 쓰는 스타일은 나중에 정리해서 포스팅해 보겠다. 대충 비슷하게 낮은 값은 파란색~오렌지, 높은 값(식생)은 초록으로 표현하면 된다. 

NDVI 색상 적용 결과
NDVI 색상 적용 결과

 

결과를 보면 산림 지역은 짙은 초록(높은 NDVI), 한강 같은 수체는 파란색(낮은 NDVI), 시가지·나지는 오렌지~노란색으로 구분되는 게 바로 보인다. ㅎㅎ

확대한 모습
확대한 모습

 


다음 편에서는 같은 Landsat 데이터를 활용해서 도시 건축물 밀도를 분석하는 NDBI(정규화 건축지수)를 계산하는 방법을 다뤄보겠다. 이상 끝! 🌿