머신러닝 & 딥러닝
python을 이용해서 asc 파일을 tiff 파일로 일괄 변환하기
에코GIS
2023. 4. 7. 13:12
반응형
다음 그림처럼 asc file을 일괄적으로 tif 파일로 변환하는 python coding을 설명하고자 한다.
python 버전이 3.8.12인 아나콘다 가상환경 geo38로 코딩을 진행한다.
1. 관련된 파이썬 패키지를 불러온다
import os
from osgeo import gdal
import pandas as pd
import numpy as np
import glob
2. 입력폴더와 출력폴더를 선언한다.
base_folder = "./data/layers/"
output_folder = "./data/tif_outputs/"
3. asc 파일을 tif파일로 변환하는 함수를 작성한다.
def ascTotiff(in_asc, out_tif=None):
in_asc = in_asc
out_tif = out_tif
print(in_asc)
os.makedirs(output_folder, exist_ok=True)
if out_tif is None:
out_tif = output_folder + in_asc.split('/')[-1].split(".")[0] + ".tif"
drv = gdal.GetDriverByName("GTiff")
ds_in = gdal.Open(in_asc)
print(ds_in)
proj = ds_in.GetProjection()
ds_out = drv.CreateCopy(out_tif, ds_in)
# srs = osr.SpatialReference()
# srs.ImportFromEPSG(4326)
# ds_out.SetProjection(srs.ExportToWkt())
ds_out.SetProjection(proj)
ds_in = None
ds_out = None
4. 폴더 안에 있는 모든 asc파일을 tif 파일로 변환하는 과정을 반복 수행한다.
asc_list = [asc_file for asc_file in os.listdir(
base_folder) if asc_file[-4:] == ".asc"]
for asc in asc_list:
input_asc = base_folder + asc
print(f"{input_asc} 변환 중 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>")
ascTotiff(input_asc)
5. 전체 코드는 다음과 같다.
import os
from osgeo import gdal
import pandas as pd
import numpy as np
import glob
# -----------------------------------------------------------------------------------
base_folder = "./data/layers/"
output_folder = "./data/tif_outputs/"
# asc 파일을 geoTiff 파일로 저장하기
def ascTotiff(in_asc, out_tif=None):
in_asc = in_asc
out_tif = out_tif
print(in_asc)
os.makedirs(output_folder, exist_ok=True)
if out_tif is None:
out_tif = output_folder + in_asc.split('/')[-1].split(".")[0] + ".tif"
drv = gdal.GetDriverByName("GTiff")
ds_in = gdal.Open(in_asc)
print(ds_in)
proj = ds_in.GetProjection()
ds_out = drv.CreateCopy(out_tif, ds_in)
# srs = osr.SpatialReference()
# srs.ImportFromEPSG(4326)
# ds_out.SetProjection(srs.ExportToWkt())
ds_out.SetProjection(proj)
ds_in = None
ds_out = None
in_asc = "./data/layers/alt_110_skorea.asc"
out_tif = "./data/outputs/alt_110_skorea.tif"
ascTotiff(in_asc, out_tif)
asc_list = [asc_file for asc_file in os.listdir(
base_folder) if asc_file[-4:] == ".asc"]
for asc in asc_list:
input_asc = base_folder + asc
print(f"{input_asc} 변환 중 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>")
ascTotiff(input_asc)
반응형