티스토리 뷰

반응형

1. 위성사진을 이용하여 토지이용 변화를 정량화

위성사진을 이용하여 토지이용 변화를 정량화하는 방법은 다양합니다. 이 중에서 가장 일반적인 방법 중 하나는 Normalized Difference Vegetation Index (NDVI)를 계산하는 것입니다.
NDVI는 녹색 식물 지수로서, 식물 생장의 정도와 토양 수분 함량 등을 나타내는 지수입니다. NDVI를 계산하여 지난 몇 년 동안 토지 이용이 변화한 정도를 측정할 수 있습니다.

 


아래는 파이썬으로 NDVI를 계산하여 토지이용 변화를 정량화하는 예시 코드입니다.
이 코드에서는 Landsat 8 위성에서 제공하는 지상 반사율 데이터를 사용합니다.

import rasterio
import numpy as np

# 파일 경로 설정
before_image_path = "before_image.tif"
after_image_path = "after_image.tif"

# before_image.tif와 after_image.tif의 NDVI를 계산하는 함수
def calculate_ndvi(image_path):
    # 빨강(nir)와 근적외선(red) 밴드의 index를 가져옴
    with rasterio.open(image_path) as src:
        red = src.read(3)
        nir = src.read(4)
        
        # 0으로 나누는 것을 방지하기 위해 작은 수를 더함
        np.seterr(divide='ignore', invalid='ignore')
        
        # NDVI를 계산
        ndvi = (nir.astype(float) - red.astype(float)) / (nir + red + 0.0000000001)
        return ndvi

# NDVI 값을 계산하여 이미지로 저장
before_ndvi = calculate_ndvi(before_image_path)
after_ndvi = calculate_ndvi(after_image_path)

# NDVI 차이 계산
ndvi_difference = after_ndvi - before_ndvi

# NDVI 차이를 이미지로 저장
with rasterio.open(before_image_path) as src:
    profile = src.profile
    profile.update(count=1, dtype=rasterio.float32)
    
    with rasterio.open("ndvi_difference.tif", "w", **profile) as dst:
        dst.write(ndvi_difference.astype(rasterio.float32), 1)

 

이 코드는 before_image.tif와 after_image.tif의 NDVI를 계산하고 NDVI 차이를 계산하여 ndvi_difference.tif 파일로 저장합니다. 이 파일을 열어보면, 빨강색은 NDVI가 증가한 지역을, 파랑색은 NDVI가 감소한 지역을 나타냅니다. 이를 이용하여 토지 이용이 어떻게 변화했는지를 확인할 수 있습니다.

반응형
댓글