Python+GDAL实现ASCII文件转Geotiff

变强没有任何其他原因,只是为了让这个世界待你以善意。

GDAL学习笔记02:GDAL基础知识

  • 前言
    • 1. 版本
    • 2. 摘要
    • 3. 微信公众号GISRSGeography
  • 一、程序


前言

1. 版本

   1.1 天津,2022年10月11日,Version 1

2. 摘要

Python+GDAL实现ASCII文件转Geotiff

3. 微信公众号GISRSGeography

  • 公众号 GISRSGeography的内容涉及GIS,遥感和作物模型等的内容,会坚持更新,
    欢迎大家关注,谢谢!。
    Python+GDAL实现ASCII文件转Geotiff_第1张图片

一、程序

# -*- coding: utf-8 -*-
"""
1. 程序目的
   将ASCII文件转换为Geotiff文件
   
2. 版本
   2.1 天津 2022年10月11日

3. 数据
   3.1 输入数据
   
   3.2 输出数据
   
4. 经验积累
  (1)
   
5. 参考资料
"""
# %% 相关包的导入
import os
import glob
import shutil
from tqdm import tqdm # 运行计时
from osgeo import osr,gdal

# %% 函数定义
  # 1. 转换方式定义
def ascii2tif(
        ascdir: str,
        ) -> None:
    '''
    (1) 功能:ASCII\txt文件(txt)转Geotiff文件
    ------------
    
    (2) 输入参数
        ascdir: str, 存储ascii\txt文件的路径, 需要满足python的路径格式要求
              示例: 'a\\b\\'
    
    (3) 输出
        无
    '''
    
    # (1) 创建输出文件夹
    outpath = ascdir + 'TiffFile'
    if os.path.exists(outpath):
        shutil.rmtree(outpath)
        os.mkdir(outpath)
    else:
        os.mkdir(outpath)
    
    asciifile_all = glob.glob(ascdir+'*.txt') 
    #print(asciifile_all)
    #print('共计%s个ASCII\\txt文件需要进行格式转换.\r\n'%str(len(asciifile_all)))
    
    # (2) 格式转换
    for ascii_file in tqdm(asciifile_all):
        ascii_file_folder,ascii_file_name = os.path.split(ascii_file)
        tif_file_path = outpath + '\\' + \
            ascii_file_name.replace('.txt','.tif') # 输出文件
        ds_in = gdal.Open(ascii_file) # 打开ascii文件
        gtiff_driver = gdal.GetDriverByName('GTiff') # 启动Gtiff驱动
        ds_out = gtiff_driver.CreateCopy(tif_file_path,ds_in)
        
        # 空间参考设置
        srs = osr.SpatialReference()
        # https://www.spatialreference.org/ref/epsg/4326/
        srs.ImportFromEPSG(4326)
        ds_out.SetProjection(srs.ExportToWkt())
        
        ds_in = None
        ds_out = None
        gtiff_driver = None # 关闭驱动
   
    #print('ASCII2TIF格式转换完成.\r\n')     

# %%
if __name__ == '__main__':
    
   asciidir = 'F:\\ASCII2TIF\\'
   ascii2tif(asciidir)
   
   print('Finished')

你可能感兴趣的:(06_地理数据处理技术,python,开发语言)