티스토리 뷰

반응형

이번글은 기준파일의 정보에 맞게 기존 파일을 변경하는 과정을 설명한다.
이는 모든 파일이 동일한 좌표계, 해상도, 지리적범위를 갖도록해서 
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")
  }

반응형
댓글