레이블이 위성영상분류인 게시물을 표시합니다. 모든 게시물 표시
레이블이 위성영상분류인 게시물을 표시합니다. 모든 게시물 표시

2026-09-25

토지피복 분류 | 위성으로 땅의 쓰임을 읽는 법 | GeoAI 기초 11편

토지피복 분류 | 위성으로 땅의 쓰임을 읽는 법 | GeoAI 기초 11편

📌 3줄 요약

  • 위성영상으로 땅의 쓰임새를 구분하는 것이 토지피복 분류다.
  • 불투수면 비율은 홍수 유출량 예측의 핵심 입력값으로 쓰인다.
  • 혼동행렬과 카파 계수로 분류 결과의 신뢰도를 숫자로 확인한다.

재난 대응 부서에서 홍수 피해를 예측하려면 "이 유역의 땅이 얼마나 빗물을 흡수하는가"를 먼저 알아야 합니다. 그런데 현장을 일일이 걸어 다닐 수는 없으니, 위성이 찍은 영상을 보고 숲인지, 논밭인지, 아스팔트인지를 구분하는 작업이 필요합니다. 이것이 토지피복 분류입니다.

토지피복 분류는 픽셀 하나하나에 "이 땅은 무엇으로 덮여 있는가"라는 꼬리표를 붙이는 작업입니다. 꼬리표의 종류는 목적에 따라 달라지는데, 재난 분야에서는 도시(불투수면), 식생, 수계, 나지, 농지처럼 물의 흐름과 직결되는 항목으로 나누는 경우가 많습니다. 이 편에서는 분류의 원리, 불투수면과 유출계수의 관계, 그리고 결과의 신뢰도를 어떻게 따지는지까지 차근차근 살펴보겠습니다.

🗺️ 토지피복 분류가 정확히 무엇인가요?

토지피복(land cover)은 땅 표면이 실제로 무엇으로 덮여 있는지를 가리킵니다. 건물·도로처럼 사람이 만든 것, 숲·초지·논처럼 식생이 덮인 것, 강·호수 같은 수면, 흙이나 모래가 드러난 나지 등이 대표적인 항목입니다. 이를 위성영상의 픽셀 단위로 구분하는 것이 토지피복 분류입니다.

비슷한 개념으로 토지이용(land use)이 있는데, 이것은 사람이 그 땅을 어떤 목적으로 쓰는가를 뜻합니다. 같은 녹지라도 공원으로 지정된 곳과 방치된 빈터는 토지이용 측면에서 다르지만, 위성이 보는 표면 반사율은 비슷할 수 있습니다. 분류 결과를 해석할 때 이 차이를 알고 있으면 헷갈리지 않습니다.

분류 방법은 크게 두 갈래입니다. 전문가가 직접 픽셀의 밝기 범위를 정해 구분하는 규칙 기반 방식, 그리고 학습 데이터를 주고 알고리즘이 패턴을 찾게 하는 기계학습 방식입니다. 홍수나 산불 직후 빠르게 피해 범위를 파악할 때는 두 방식을 함께 쓰는 경우도 많습니다.

💧 불투수면과 유출계수는 왜 중요한가요?

불투수면(impervious surface)은 빗물이 스며들지 못하는 표면, 즉 아스팔트·콘크리트·지붕 같은 면을 뜻합니다. 비가 같은 양이 내려도 불투수면이 많을수록 지면 아래로 흡수되지 않고 하천으로 빠르게 몰리는 빗물의 양이 늘어납니다.

유출계수는 강수량 중 실제로 지표를 흘러 하천에 도달하는 비율입니다. 예를 들어 숲은 유출계수가 낮고, 포장도로는 높습니다. 홍수 수문 모형에서 이 계수를 설정할 때 토지피복 분류 결과가 직접 입력됩니다. 도시화가 진행될수록 불투수면 비율이 올라가고, 같은 비가 내려도 첨두유량(강이 가장 높이 불어나는 시점의 유량)이 커지는 이유가 여기 있습니다.

도심 속 내수 침수 취약 지역을 찾거나, 개발 예정지의 홍수 영향을 사전에 평가할 때 토지피복 분류로 산출한 불투수면 비율은 핵심 수치로 활용됩니다.

🤖 위성영상을 어떻게 분류 결과로 만드나요?

분류 과정은 크게 세 단계로 볼 수 있습니다. 첫째, 위성영상을 준비합니다. 광학영상이라면 밴드별 반사율 값이 입력 데이터가 됩니다. 여기에 NDVI(식생지수)나 NDWI(수분지수) 같은 파생 지표를 추가하면 분류 성능이 높아지는 경우가 많습니다(NDVI·NDWI에 대한 자세한 내용은 이 시리즈 4편을 참고하세요).

둘째, 학습 샘플을 만듭니다. 각 항목(도시, 숲, 논, 수계 등)에 해당하는 픽셀을 직접 골라 꼬리표를 붙이는 작업입니다. 9편에서 다룬 라벨링 과정과 같습니다. 샘플의 수와 균형이 결과 품질을 크게 좌우합니다.

셋째, 알고리즘을 돌려 나머지 픽셀에 항목을 배정합니다. 랜덤 포레스트(Random Forest, 여러 개의 결정 트리를 만들어 다수결로 분류하는 기계학습 기법)는 위성영상 분류에서 안정적인 성능을 보여 실무에서 자주 쓰입니다. Google Earth Engine에서는 다음처럼 간단히 호출할 수 있습니다.

var classifier = ee.Classifier.smileRandomForest(100)
  .train({
    features: trainingData,
    classProperty: 'landcover',
    inputProperties: bands
  });
var classified = image.classify(classifier);

이 코드에서 100은 트리 개수, trainingData는 앞서 만든 학습 샘플입니다.

📊 분류 결과가 맞는지 어떻게 확인하나요?

분류를 마쳤다고 바로 쓰면 안 됩니다. 결과가 실제와 얼마나 맞는지를 확인하는 단계가 반드시 필요합니다. 이때 쓰는 도구가 혼동행렬(confusion matrix, 예측 항목과 실제 항목을 표로 맞대어 얼마나 헷갈렸는지 보는 표)입니다.

표의 가로축은 분류 알고리즘이 예측한 항목, 세로축은 실제로 확인된 항목입니다. 대각선이 정확히 맞은 경우고, 나머지 칸은 틀린 경우입니다. 예를 들어 '논'으로 예측했는데 실제로는 '습지'였다면, 그 칸의 수가 클수록 두 항목을 혼동하고 있다는 신호입니다.

전체 정확도(overall accuracy)는 모든 픽셀 중 맞게 분류된 비율입니다. 그런데 항목별 샘플 수가 극단적으로 차이 나면 전체 정확도만으로는 판단이 어렵습니다. 이를 보완하기 위해 카파 계수(Kappa coefficient)를 씁니다. 카파는 0에서 1 사이 값으로, 우연히 맞을 확률을 제외한 뒤 실제 성능을 나타냅니다. 도구에 따라 다르지만 0.8 이상이면 통상적으로 신뢰할 만한 수준으로 봅니다.

해봐야 아는 것이 있습니다. 정확도 수치보다 혼동행렬의 어떤 항목끼리 자주 헷갈리는지를 먼저 봐야 합니다. 재난 분석에서는 불투수면과 나지를 혼동하거나, 수계와 그늘진 경사면을 혼동하는 오류가 자주 나타납니다. 이런 오류가 어느 방향으로 발생하는지 확인한 뒤, 그 항목의 학습 샘플을 보완하거나 분류 후 검토 과정을 추가해야 결과를 신뢰할 수 있습니다.

🏙️ 도시화 모니터링과 재난 대응에는 어떻게 쓰이나요?

토지피복 분류의 실제 쓰임은 단순히 지도 한 장을 만드는 것에 그치지 않습니다. 여러 시점의 분류 결과를 비교하면 어느 지역이 얼마나 빠르게 도시화되었는지를 확인할 수 있습니다. 논이었던 곳이 10년 뒤 공장 부지가 됐다면, 그 면적만큼 불투수면이 늘고 인근 하천의 홍수 위험도가 높아졌다는 뜻입니다.

산사태 위험 지역에서는 산림 피복이 얼마나 건강한지, 벌채나 산불로 나지가 늘었는지를 분류 결과로 주기적으로 확인합니다. 산불 이후 지표가 드러나면 다음 우기에 토사가 쏟아질 가능성이 커지기 때문에, 분류 결과는 사전 대피 계획의 근거 자료로도 씁니다.

분류 결과를 지자체 방재 부서에서 사용할 때는, 지도가 만들어진 시점과 현재 시점 사이에 개발이나 자연 변화가 없었는지 반드시 현장 확인이나 최신 항공사진과 대조해야 합니다. 지도가 아무리 정확해도 시간 차이가 있으면 의사결정에 오류가 생길 수 있습니다.

🖥️ 화면에서 따라하기

따라하기 단계

  1. 영상 불러오기
    Google Earth Engine 코드 편집기에서 ee.ImageCollection을 이용해 분석할 위성영상을 불러오고 Map.addLayer로 화면에 표시한다.
  2. 학습 샘플 그리기
    코드 편집기 왼쪽 패널 상단 도형 도구(점 아이콘)를 선택 후, 항목별로 관심 영역(ROI)을 클릭해 그린다. 각 ROI에 landcover 속성값(예: 0=도시, 1=식생)을 입력한다.
  3. 밴드·지표 선택
    분류에 쓸 밴드 목록을 bands 변수에 배열로 지정한다. NDVI를 추가할 경우 image.normalizedDifference(['B8','B4']).rename('ndvi')로 계산 후 합친다.
  4. 분류 실행
    ee.Classifier.smileRandomForest(100).train(...)으로 모델을 학습시키고, image.classify(classifier)로 전체 영상에 분류를 적용한 뒤 addLayer로 결과를 시각화한다. 메뉴 이름은 GEE 버전에 따라 다를 수 있으니 공식 문서(developers.google.com/earth-engine)에서 최신 함수명을 확인한다.
  5. 정확도 평가
    validationData.classify(classifier)로 검증 샘플을 분류한 뒤 ee.ConfusionMatrix를 호출한다. 결과 객체에서 .accuracy()와 .kappa() 메서드로 수치를 출력해 확인한다.
  6. 오류 항목 검토
    혼동행렬 출력값에서 대각선 외 수치가 큰 항목을 찾아 해당 픽셀이 영상에서 어느 지역인지 Map.addLayer로 직접 눈으로 확인하고, 학습 샘플을 추가 수집할지 결정한다.

※ 프로그램 버전에 따라 메뉴 이름이 조금씩 다를 수 있습니다. 위 그림은 순서를 정리한 도식입니다.

✍️ 그대로 복사해 쓰는 프롬프트

토지피복 분류 결과를 바탕으로 홍수 위험 보고서 초안의 관련 문단을 작성할 때 쓴다.

당신은 방재 분야 보고서 작성을 돕는 전문 보조자입니다.
아래 조건에 맞는 보고서 문단을 작성해 주세요.

[기관명]에서 작성하는 [대상 지역] 홍수 위험 분석 보고서에 들어갈 토지피복 현황 문단입니다.
분류 결과 요약: [분류 항목별 면적 비율, 예: 도시 42%, 식생 30%, 농지 18%, 수계 10%]
분석 목적: 불투수면 비율 산출 및 유출계수 추정
요구 형식: 300자 내외, 공문서 문체, 수치는 반드시 포함
하지 말아야 할 것: 확인되지 않은 수치를 만들어 내지 말 것, 결과를 과장하지 말 것
작성 후 사람이 확인해야 할 항목: 분류 시점과 현장 상황의 일치 여부, 항목별 면적 단위 오류

토지피복 분류의 혼동행렬 수치를 해석하는 방법을 쉽게 설명받을 때 쓴다.

당신은 GIS 초보자에게 공간분석 개념을 쉽게 설명하는 교육 도우미입니다.
아래 혼동행렬 결과를 보고 다음을 설명해 주세요.

혼동행렬: [행렬 수치를 여기에 붙여 넣으세요]
전체 정확도: [수치]
카파 계수: [수치]

설명 요청 항목:
1. 어떤 항목끼리 가장 많이 혼동됐는지
2. 그 혼동이 재난 분석에서 어떤 문제를 일으킬 수 있는지
3. 개선을 위해 어떤 조치를 취할 수 있는지
형식: 항목별 2~3문장, 중학생도 이해할 수 있는 말로, 수치는 그대로 인용
하지 말아야 할 것: 수치를 임의로 바꾸거나 행렬에 없는 결과를 지어내지 말 것

※ 대괄호 부분을 상황에 맞게 바꿔서 쓰세요. 받은 답은 그대로 쓰지 말고 사실 확인을 거치세요.

🧪 직접 해보기

  • Google Earth Engine 코드 편집기(code.earthengine.google.com)에서 공개된 토지피복 데이터셋(예: ESA WorldCover)을 불러와 특정 지역의 항목별 면적 비율을 직접 계산해 본다.
  • QGIS에서 기 제작된 공개 토지피복 래스터를 불러온 뒤, 래스터 > 래스터 분석 > 래스터 계층 통계로 항목별 픽셀 수를 확인하고, 불투수면 항목의 비율을 계산해 본다.
  • 혼동행렬 계산이 낯설다면, 손으로 2×2 표(도시/비도시 두 항목)를 그리고 임의의 숫자를 채워 전체 정확도와 카파 계수를 직접 계산해 보면 개념이 빠르게 잡힌다.

❓ 자주 묻는 질문

Q. 토지피복 분류와 시맨틱 분할(semantic segmentation)은 같은 건가요?
A. 결과는 비슷하지만 맥락이 다릅니다. 시맨틱 분할은 딥러닝 분야의 용어로, 픽셀마다 항목을 예측하는 신경망 구조를 가리킵니다. 토지피복 분류는 GIS·원격탐사 분야의 용어로, 방법론을 특정하지 않고 목적(땅의 피복 항목 구분)을 가리킵니다. 딥러닝으로 토지피복 분류를 수행하면 두 개념이 겹칩니다.

Q. 카파 계수가 높으면 분류 결과를 그냥 써도 되나요?
A. 높은 카파 계수는 좋은 신호지만 충분조건은 아닙니다. 학습 샘플과 검증 샘플이 같은 지역에서 추출됐다면 실제 현장에서의 성능은 더 낮을 수 있습니다. 또한 카파가 높아도 특정 항목(예: 불투수면과 나지)의 혼동이 집중적으로 발생할 수 있으므로, 혼동행렬의 세부 항목을 함께 확인해야 합니다.

Q. 무료로 쓸 수 있는 토지피복 데이터가 있나요?
A. 공개된 글로벌 토지피복 데이터는 여러 기관에서 제공하고 있습니다. 해상도, 갱신 주기, 항목 체계가 데이터마다 다르므로, 분석 목적에 맞는 항목이 있는지, 원하는 지역과 시점이 포함되는지를 먼저 확인하는 것이 좋습니다. 각 데이터의 이용 조건과 정책은 제공 기관 사이트에서 직접 확인해야 합니다.

위성영상으로 땅의 쓰임을 읽는 토지피복 분류는 단순한 지도 만들기가 아닙니다. 홍수 예측 모형에 넣을 불투수면 비율을 계산하고, 산사태 위험 지역의 산림 상태를 주기적으로 감시하며, 개발로 인한 변화를 시계열로 추적하는 일까지, 재난 대응의 여러 단계에서 실질적인 입력값을 제공합니다. 정확도 평가를 생략하고 분류 지도를 그대로 쓰는 것은, 오차가 어느 방향으로 얼마나 있는지 모른 채 의사결정을 내리는 것과 같습니다. 혼동행렬을 보는 습관을 들이는 것만으로도 분석 결과의 신뢰도를 한 단계 높일 수 있습니다. 다음 편에서는 토지피복 분류 결과를 시간 축으로 이어 붙여 변화 탐지를 수행하는 방법, 즉 "같은 장소의 두 장의 지도로 무엇이 달라졌는지를 자동으로 찾는 방법"을 살펴보겠습니다.

GeoAI 기초 시리즈 11편 · 전체 43편


재난안전과 GeoAI 이야기를 더 보고 싶다면 아래 채널도 함께 보세요.

📌 바로가기

GeoAI 위성·드론 영상 분석, 재난대응 산업이 뜬다 | 재난안전과 GeoAI

GeoAI 위성·드론 영상 분석 기술이 재난대응 산업의 중심으로 떠오르고 있다. 누리호 5차 발사, 위성·드론 영상 분석 스타트업, ArcGIS 경사지 위험 분석 서비스까지 오늘의 관련 소식을 정리했다. 📌 3줄 요약 아크넥사는 위성·드론 영상을...