티스토리 뷰
이번글은 기준파일의 정보에 맞게 기존 파일을 변경하는 과정을 설명한다.
이는 모든 파일이 동일한 좌표계, 해상도, 지리적범위를 갖도록해서
MaxEnt 모델에 사용하기 위한 자료를 만드는 것이다.
여기서 기상자료는
C:/Users/web1m/Downloads/k_data/gis_data/기후자료/MKPRISM21_bio_2000to2019/
폴더에 있고
기준 자료는
C:/maxent_work/making_input/data/ref_raster 폴더에 ref_raster.tif
파일이라고 가정하고 진행하겠다.
1. 우선 필요한 라이브러리를 불러오기
# 라이브러리 불러오기
library(raster)
library(sf)
library(stars)
library(terra)
2. MaxEnt 모델을 위한 기후데이터 준비하고 기준파일 좌표계 부여하기
# 기준 파일과 기후자료가 있는 폴더경로를 반드시 확인한다.
# 현재 폴더 경로 가져오기 : 현재폴더는 C:/maxent_work/making_input 이다.
current_folder<-getwd()
# 출력 폴더이름 지정하기기
output_folder<-"/output"
# 출력 폴더 경로 지정하기
output_path<-paste0(current_folder, output_folder)
# 출력 폴더 생성하기
dir.create(output_path)
# 기상청 기후자료가 있는 폴더 경로 지정하기
kma_bio_current<-"C:\\Users\\web1m\\Downloads\\k_data\\gis_data\\기후자료\\MKPRISM21_bio_2000to2019\\"
# 확장자 지정하기
extension <-"asc"
# 기상청 기후자료가 있는 폴더에서 확자가 asc인 파일목록 만들기
file_list <- list.files(kma_bio_current, pattern = paste0("\\.", extension, "$"), full.names = TRUE)
# 파일목록에서 파일 하나씩 불러와서 좌표계 정보를 확인하고 없으면 부여하기
# 여기서는 epsg:4326로 wgs84 경위도 좌표계를 지정하고 tif파일로 저장
for (file in file_list){
print(file)
raster_file <- raster(file)
before<-projection(raster_file)
print(before)
projection(raster_file)<-CRS("+init=epsg:4326")
after<-projection(raster_file)
print(after)
file_name<- substr(basename(file), 1, nchar(basename(file))-4)
tif_name<-paste0(output_path, "/", file_name, ".tif")
writeRaster(raster_file, tif_name, format = "GTiff", overwrite = TRUE)
cat("출력폴더는", output_path)
}
3. 기준파일에 기후데이터 매칭하기###########################################################+
# 데이터 폴더 지정하기 : C:/maxent_work/making_input/data 이다.
data_folder<-paste0(current_folder, "/data")
# 기준 파일이 있는 폴더경로 선택 (해상도, 크기, 좌표계를 맞출 파일)
reference_file <- paste0(data_folder, "/ref_raster/skorea_bnd_wgs84.tif")
print(reference_file)
# 래스터 파일로 불러 오기
ref_raster<-raster(reference_file)
# 기준 래스터 파일 정보 확인하기
dim<-dim(ref_raster) # 행과 열의 개수 정보
res<-res(ref_raster) # 공간해상도 정보
crs<-crs(ref_raster) # 좌표계 정보
ext<-extent(ref_raster) # 지리적 범위
# 기준파일에 맞춘 asc파일로 저장하기 위한 폴더 경로 지정하기 :
# 저장폴더 : C:/maxent_work/making_input/data/KMA_current_bio_asc
kma_asc_folder<- paste0(data_folder, "/KMA_current_bio_asc")
# 저장 폴더 생성하기
dir.create(kma_asc_folder)
# tif 확장자 지정
tif_ext<-"tif"
# 좌표계 정보가 있는 tif파일이 있는 폴더에서 목록만들기
kma_tif_list<-list.files(output_path, pattern = paste0("\\.", tif_ext, "$"), full.names = TRUE)
# tif 파일을 하나씩 가져와서 기준파일에 맞추고 asc파일로 저장하기
for (kma_tif in kma_tif_list){
print(kma_tif)
kma_raster<-raster(kma_tif)
# 확장자 제외하고 파일이름만 추출
tif_name<- substr(basename(kma_tif), 1, nchar(basename(kma_tif))-4)
# 기준이 되는 래스터 파일의 해상도, 좌료계, 지리적범위로 맞추기
resampled_raster<-resample(kma_raster, ref_raster)
# ASC 파일로 변환하여 저장
writeRaster(resampled_raster, filename = paste0(kma_asc_folder, "/", tif_name,".asc"), format = "ascii")
}