티스토리 뷰

반응형

이번 글은 위성 이미지의 대표적인 태그 이미지 파일 형식(.tiff)을 활용도에 따라 Binary MatLab 파일 형식(.mat) 등 다른 파일 형식으로 변환하는 방법을 설명합니다.

 

목차

  1. 소개
  2. .tiff 형식의 위성 이미지 처리
  3. 데이터를 .mat 파일 형식으로 쓰기

1. 소개

태그 이미지 파일 형식(.tiff)은 손실 파일 형식을 피하기 위해

고품질 위성 이미지 데이터를 저장하는 데 널리 사용되는 파일 형식 중 하나입니다.

데이터 처리를 시연하기 위해 2020년 1월 27일 Sentinel-2 위성에서 캡처한 Sundarbans 위성 이미지를 사용합니다.

이 이미지에는 12개의 밴드와 분류 맵 및 다양한 위성 인덱스가 있습니다.

12개 밴드의 시각화는 아래와 같습니다.

 

Bands of the Sundarbans satellite Image — Image by Author

2. TIFF로 위성 이미지 처리


TIFF에서 위성 이미지를 읽기 위해 지형 공간 래스터 데이터에 액세스하고

다양한 작업을 수행할 수 있는 rasterio 공간자료 처리 패키지를 사용합니다.

TIFF에서 위성 이미지를 읽으려면 Python의 표준 open() 메서드와 유사한 방식인 open() 메서드를 사용합니다.

아래 코드는 numpy를 사용하여 여러 위성 대역을 읽고 3차원 배열로 저장하는 방법을 보여줍니다.

 rasterio.open() 메서드를 사용하여 다중 TIFF 위성 데이터를 읽는 방법을 보여줍니다.

 

from glob import glob
import numpy as np
from scipy.io import loadmat
from scipy.io import savemat
import rasterio as rio

path = './Satellite_data/sundarbans_data_11/'

sentinel_bands = glob(f"{path}*B?*.tiff")
sentinel_bands.sort()

l = []
for i in sentinel_bands:
  with rio.open(i, 'r') as f:
    l.append(f.read(1))

# Data
arr_st = np.stack(l)
arr_st = np.moveaxis(arr_st, 0, -1)

print(arr_st.shape)

savemat(file_name='sundarbans_bands.mat', mdict={"data": arr_st })

3. 데이터를 .mat 파일 형식으로 쓰기

반응형


.mat 파일 형식은 데이터를 이진 형식으로 저장하기 위해 지리 공간 데이터 과학 커뮤니티에서 널리 사용됩니다.

단일 또는 다차원 데이터를 MAT 형식으로 변환하려면 scipy 패키지의 savemat 방법을 사용합니다.

savemat() 메서드는 주로 두 개의 매개변수를 사용합니다.
file_name: 쓸 데이터의 파일 이름.
mdict: 매트 파일 변수를 저장하기 위한 사전입니다.


아래 코드는 rasterio.open() 메서드를 사용하여

TIFF에서 위성 이미지를 읽고

파일 이름이 'classification_map.mat'인 scipy.io.savemat() 메서드를 사용하여

데이터를 MAT 파일 형식으로 쓰는 방법을 보여줍니다.

import rasterio as rio

path = 'path = './Satellite_Imagery_Analysis/Data/sundarbans_raw_data/''

filename = f"{path}2020-01-27-00_00_2020-01-27-23_59_Sentinel-2_L2A_Scene_classification_map.tiff"

with rio.open(filename, 'r') as f:
    data = f.read(1)
    
print(f"Size: {data.shape}")

savemat(file_name='classification_map.mat', mdict={"classification_map": data })

 

반응형
댓글