티스토리 뷰

반응형

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)
반응형
댓글