티스토리 뷰
반응형
1. Maxent 모델을 이용해서 생물종 분포모델을 개발할 때 필요한 환경데이터를 만들 때 유용한 코드다.
2. 여기서는 rasterio 공간분석 패키지를 이용하였다.
- pip install rasterio 명령어 설치된다.
3. 파일단위가 아닌 폴더 내 있는 모든 geotiff 파일을 대상으로 일괄 처리된다.
import os
import rasterio
def tif_to_asc(input_folder, output_folder):
# Create the output folder if it doesn't exist
if not os.path.exists(output_folder):
os.makedirs(output_folder)
# List all files in the input folder
for filename in os.listdir(input_folder):
if filename.endswith(".tif"):
# Open the TIF file
tif_path = os.path.join(input_folder, filename)
with rasterio.open(tif_path) as src:
data = src.read(1) # Read raster data as a numpy array
# Get nodata value if it exists
nodata_value = src.nodata
# Save the data as ASC
output_filename = os.path.splitext(filename)[0] + ".asc"
asc_path = os.path.join(output_folder, output_filename)
with open(asc_path, 'w') as asc_file:
# Write ASC header
asc_file.write(f"NCOLS {src.width}\n")
asc_file.write(f"NROWS {src.height}\n")
asc_file.write(f"XLLCORNER {src.bounds.left}\n")
asc_file.write(f"YLLCORNER {src.bounds.bottom}\n")
asc_file.write(f"CELLSIZE {src.res[0]}\n")
if nodata_value is not None:
asc_file.write(f"NODATA_VALUE {nodata_value}\n")
# Write ASC data
for row in data:
for value in row:
asc_file.write(f"{value:.1f} ")
asc_file.write("\n")
print(f"Converted {filename} to {output_filename}")
# Specify the input and output folders: 현재시기
# input_folder = "C:\\표범무늬민달팽이\\env_data\\future_y2040_2060\\env_data"
# output_folder = "C:\\표범무늬민달팽이\\env_data\\future_y2040_2060\\env_data\\asc_file"
# Specify the input and output folders: 미래시기
input_folder = "C:\\표범무늬민달팽이\\env_data\\wc2.1_10m_bio"
output_folder = "C:\\표범무늬민달팽이\\env_data\\wc2.1_10m_bio\\asc_file"
# Convert TIF to ASC
tif_to_asc(input_folder, output_folder)
반응형
'Python for GIS and 원격탐사' 카테고리의 다른 글
MaxEnt 모델을 위한 기준 래스터 파일에 해상도와 지리적 범위 일치시키기 (0) | 2023.11.06 |
---|
댓글