티스토리 뷰

반응형

Landsat이나 Sentinel 위성사진 자료를 python 으로 불러오기 위해서는 필요한 패키지를 설치해야 한다.
이 글에서는 가장 편하게 쓸수 있는 rasterio패키지를 설치하고 sentinel 위성사진 자료를 불러오는 코딩을 실습할 것이다.

우선 rasterio 설치는 다음구문으로 설치한다.

pip install rasterio


설치가 잘 되었는지 패키지를 불러오고 버전을 확인한다.
rasterio버전이 오류없이 확인 되면 설치가 잘 된것이다.

import rasterio as rio
rio.__version__

이제 위성사진 자료를 불러오는 과정을 설명한다.
예를 들어 c:\python_work\satellite_data 폴더내 있는 모든 위성사진자료인 tif파일을 불러오기 위해서는 다음 구문처럼 glob() 함수를 이용한다.

 

반응형

 

1) 위성사진 자료를 불러오기 위한 다양한 패키지 로드(load)하기

import rasterio as rio  # 위성사진 자료 tif파일 불러오기 패키지
import glob # 위성사진 자료목록을 list 형태로 저장하는 패키지
import numpy as np # list 자료를 하나씩 층층 쌓아 저장하고, 배열의 차수를 변경하는 패키지
import pandas as pd # 배열을 데이터 프레임으로 만드는 패키지

2) 위성사진 자료가 있는 폴도 경로를 sat_path 변수에 저장하기

sat_path = r"C:\python_work\Satellite_data"

3) 폴더 내 있는 tiff 파일형태의 위성사진 자료의 경로를 목록으로 만들기

tif_paths = glob.glob(sat_path + "/" + "*.tiff")

4) 폴더 내 있는 tiff 파일형태의 위성사진 자료를 list 형태로 만들기

tif_list = []

col_names = []
for tif_path in tif_paths:
    col_names.append(tif_path.split("_")[-2])
    tif = rio.open(tif_path)
    tif_list.append(tif.read(1))

5) list 형태의 파일로 변경된 모든 tiff 파일을 ndarray 형태로 변환하기

np_stack = np.stack(tif_list)

6) ndarray 형태의 배열 차수 확인하기

np_stack.shape
(15, 954, 298)

7) np.moveaxis()함수를 이용해서 15 X954x298 차수의 배열을 954x298x15 차수의 배열 변환하기

  • np.moveaxis(변환하고자하는 배열, 바꿀 축, 바뀐 축) 이므로 아래구문은 np_stack 자료의 첫번째 축인 15를 마지막 축으로 변경해서 (954, 298, 15) 형태로 변환
np_stack_moveaxis = np.moveaxis(np_stack, 0 ,-1)

8) 바뀐 ndarray 형태의 배열 차수 확인하기

np_stack_moveaxis
(954, 298, 15)

8) 954x298 배열의 15개 ndarray 자료를 판다스 데이터프레임 자료로 변환하기

df = pd.DataFrame(np_stack_moveaxis.reshape(-1, 15),columns=col_names)
df.head()

결과





반응형
댓글