[실습-02] python 패키지를 이용한 위성 사진 불러오고 저장하기
위성영상을 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()