Python批量压缩TIF文件:基于Rasterio与LZW算法实现

Dylan
Dylan
发布时间:2026-10-12 | 2人浏览过
原创

本文介绍利用Python的Rasterio库批量压缩TIF文件的方法。针对DEM数据体积过大问题,通过读取栅格数据并修改Profile中的compress参数为LZW,实现文件体积减半。文中提供完整代码示例及四川省30m DEM数据从2.23Gb压缩至0.99Gb的实际测试结果,适用于需要节省磁盘空间的大规模地理空间数据处理场景。

前言

在进行DEM(数字高程模型)数据裁剪工作时,我注意到各省的数据量极为庞大。以四川省30米分辨率的DEM数据为例,其原始大小高达2GB。鉴于个人电脑磁盘空间有限,我决定对TIF文件应用LZW压缩算法以减小文件体积。

操作流程

批量压缩代码实现

#文件夹中每个文件都进行压缩
# -*- coding: utf-8 -*-
import rasterio as rio
import rasterio
import os
from tqdm import tqdm
#每个线程选择一个文件夹
Input_path ="输入文件夹"+"\\"
Output_path ="输出文件夹"+"\\"
#文件列表
pathDir= os.listdir(Input_path)
#压缩函数
for i in tqdm(range(len(pathDir))):
    # 读入栅格文件
    rasterfile = Input_path+"\\"+pathDir[i]
    #打开栅格
    rasterdata = rio.open(rasterfile)
    #读取栅格
    rasterdata2= rasterdata.read()
    #获取栅格信息
    profile = rasterdata.profile
    print(profile)
    #选择压缩方式
    profile.update(
        compress='lzw',  #压缩方式:rle,lzw等
        )
    #导出文件路径与名字
    out_put_name=Output_path +"RLE"+pathDir[i]
    #导出
    with rasterio.open(out_put_name, mode='w', **profile) as dst:
        dst.write(rasterdata2)

压缩结果展示

以四川省原始数据为例,未压缩前文件大小为2.23GB,经过LZW压缩处理后,文件大小缩减至0.99GB,压缩率约为50%,有效节省了存储空间。

以上即为使用Python批量压缩TIF文件的详细操作步骤与代码示例,更多关于Python批量处理文件的技巧,请参阅本站其他相关文章。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表