REMOTE SENSING

R 프로그래밍: 위성영상 로딩하기

유병혁 2016. 1. 10. 16:11

이번 글에서는 R 프로그래밍에서 위성영상을 로딩하는 방법을 학습해 보도록 하겠습니다.

 

본 글의 내용은 아래 글을 참고하여 작성하였습니다.

Image Classification with RandomForests in R (and QGIS)
http://amsantac.co/blog/en/2015/11/28/classification-r.html


앞서 저는 QGIS에서 Sentinel-2 위성영상을 다운로드 했는데요,

QGIS에서 Sentinel-2 위성영상 다운로드 소개
http://blog.daum.net/geoscience/899

 

12월 17일 소백산국립공원를 촬영한 4개 밴드들을 *.tif 포맷으로 병합(merge)하였습니다.

B2 (490 nm), B3 (560 nm), B4 (665 nm), B8 (842 nm)

 

파일을 불러오기 위해 rgdal 패키지와 raster 패키지를 각각 설치하고,

 

설치된 패키지 2개를 호출해 보도록 하겠습니다.

 

RasterLayer와 RasterRrick 두 가지 클래스를 비교해 보도록 하겠습니다.

먼저, 아래와 같이 raster 함수를 통해 RasterLayer로 tif 파일을 지정해 보았습니다.

 

아래와 같이 plot 함수를 통해 해당 영상을 그려볼 수 있습니다.

 

이번에는 RasterBrick 방식으로 동일한 영상을 읽어오도록 하겠습니다.

앞서 RasterLayer와 달리 dimensions에 nlayers 항목이 존재하는데요,

 

plotRGB 함수를 통해 위 RasterBrick의 각 밴드를 RGB 합성하여 로딩할 수 있습니다.

 

아래와 같이 stretch 방식을 lin 또는 hist 방식으로 선택할 수도 있습니다.

 

아래는 동일한 영상에 대해 hist 스트레치를 적용한 결과입니다.

 

이번에는 위성영상의 각 밴드명을 지정한 후에, 해당 밴드명을 이용하여 위성영상을 로딩해 보겠습니다.

B2 (490 nm), B3 (560 nm), B4 (665 nm), B8 (842 nm)로 지정한 후, B8, B4, B3로 지정한 결과입니다. 간단하죠?! 

 

실습에서 사용된 R 프로그래밍 코드는 아래와 같습니다.

# rgdal 패키지 설치하기
install.packages("rgdal")
 
# raster 패키지 설치하기
install.packages("raster")
 
# rgdal 패키지 불러오기
library(rgdal)
 
# raster 패키지 불러오기
library(raster)
 
# 래스터레이어 플롯 열기 
RLayer <- raster("D:/ISRS2016/03_SobaeksanNP_S2Data/SobaeksanNP_151217_S2B2348.tif")
RLayer
plot(RLayer)
 
# 래스터브릭 RGB 플롯 열기
RBrick <- brick("D:/ISRS2016/03_SobaeksanNP_S2Data/SobaeksanNP_151217_S2B2348.tif")
RBrick
plotRGB(RBrick, 3, 2, 1, stretch = 'lin')
plotRGB(RBrick, 3, 2, 1, stretch = 'hist')
 
#밴드명 지정 후 RGB 플롯 열기
names(RBrick) <- c("B2", "B3", "B4", "B8")
plotRGB(RBrick, "B8", "B4", "B3", stretch = 'lin')

Created by Pretty R at inside-R.org