티스토리 뷰

반응형

위성영상을 python 코딩을 이용해서 불러오고 저장하기 위해서는 rasterio 패키지가 필요하고 설치는 다음 구분으로 실행하면 된다.

pip install rasterio

1. 위성사진 불러오기

import rasterio as rio

 

path = "example-total2.tif"

dataset = rio.open(path )

 

2. 위성사진 시각화하기

 

import rasterio as rio
from rasterio.plot import show

 

show(dataset, cmap="gray")

 

 

3. 위성사진 정보를 일괄적으로 보기

dataset.meta

{'driver': 'GTiff', 'dtype': 'float32', 'nodata': 0.0, 'width': 250, 'height': 250, 'count': 1, 'crs': CRS.from_wkt('PROJCS["WGS 84 / UTM zone 15N",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",-93],PARAMETER["scale_factor",0.9996],PARAMETER["false_easting",500000],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["Easting",EAST],AXIS["Northing",NORTH],AUTHORITY["EPSG","32615"]]'), 'transform': Affine(30.0, 0.0, 462405.0, 0.0, -30.0, 1741815.0)}

4. 위성사진 정보를 개별적으로 보기

1) 파일포맷 :

dataset.driver 

'GTiff'

2) 위성사진 채널수 :

dataset.count

1

3) 위성사진 가로폭 :

dataset.width

250

4) 위성사진 세로폭 :

dataset.height

250

5) 위성사진 좌표정보

dataset.crs

CRS.from_wkt('PROJCS["WGS 84 / UTM zone 15N",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",-93],PARAMETER["scale_factor",0.9996],PARAMETER["false_easting",500000],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["Easting",EAST],AXIS["Northing",NORTH],AUTHORITY["EPSG","32615"]]')

6) 위성사진 데이터 형식

dataset.dtypes

('float32',)

 

7) 위성사진 좌표변환

dataset.transform

Affine(30.0, 0.0, 462405.0, 0.0, -30.0, 1741815.0)

 

6. 위성사진 다름이름으로 저장하기

1) 빈 영상자료 생성

outputdata = rio.open("output.tif", "w",
                      driver="GTiff", 
                      width =dataset.width, 
                      height =dataset.height, 
                      count=1,
                      dtype='float32',
                      transform = dataset.transform
                     )

 

2) 빈 영상자료에 데이터 쓰기

outputdata.write(dataset.read(1), 1)

 

3) 영상자료 닫기

outputdata.close()

반응형
댓글